#1 INTRODUÇÃO A LINGUAGEM DE PROGRAMACAO EM C

 

1.1. A ORIGEM DA LINGUAGEM C

A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie e implementada pela primeira vez num computador DEC PDP-11 que usava o sistema operacional UNIX. Ela é o resultado da evolução de uma linguagem de programação mais antiga, denominada BCPL, desenvolvida por Martin Richards. Tendo sido desenvolvida por programadores, e para programadores, C tornou-se rapidamente uma ferramenta de programação bastante difundida entre os profissionais da área.

A popularidade da linguagem C deve-se, principalmente, ao fato dela ser uma linguagem flexível, portátil e eficiente. Sua flexibilidade lhe permite ser utilizada no desenvolvimento de diversos tipos de aplicação, desde simples jogos eletrônicos até poderosos controladores de satélites. Graças à sua portabilidade, os programas codificados em C podem ser executados em diversas plataformas, praticamente, sem nenhuma alteração. E, finalmente, sua eficiência proporciona alta velocidade de execução e economia de memória.

1.2. O AMBIENTE PARA PROGRAMAR EM C

O Dev ++ é o ambiente no qual desenvolveremos nossos programas. Ele é composto por um editor de textos, um compilador e um linkeditor que, juntos, nos permitem criar programas executáveis a partir de textos escritos em C. Os recursos oferecidos nesse ambiente poderão ser explorados à medida que estivermos mais familiarizados com a linguagem C.

Para quem não possui poderá nos acompanhar com o aplicativo para androide Movel C que possui todas características para executar um programa em C.

BAIXANDO E INTALANDO DEV++

Faca download do programa no site oficial do programa clicando AQUI, basta clicar em DOWNLOAD, como mostra a imagem;

Apos baixar abra o programa para iniciar a instalação;

Escolha a sua linguagem, e clica em ok;

Selecione a opção aceito, para aceitar os Termos da licença;

Selecione e seguinte;

Clica em instalar;

Selecione terminar e o programa será executado.

Esta será a tela do ambiente integrado DEV++.

NO CASO DO ANDROID

Basta acessar a Play Store e pesquisar por MOVEL C e baixar o aplicativo ilustrado na imagem.

1.3. A ESTRUTURA BÁSICA DOS PROGRAMAS

Um programa C consiste de funções sendo que, necessariamente, uma delas deve ser denominada main. Essa é a função principal, por onde inicia-se a execução do programa, e sem ela o programa não pode ser executado.

 

Exemplo 1. Uma pessoa é obesa se seu índice de massa corporal é superior a 30, tal índice é a razão entre seu peso e o quadrado da sua altura.

/* OBESO.C – informa se uma pessoa está ou não obesa */

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define LIMITE 30

main() {

 float peso, altura, imc;

clrscr() ;

 printf("\n Qual o seu peso e altura? ");

 scanf("%f %f", &peso, &altura);

 imc = (peso/(pow(altura,2)));

 printf("\n Seu i.m.c. é %f", imc);

 if( imc <= LIMITE )

 printf("\n Você não está obeso!");

 else 

printf("\n Você está obeso!");

 getch();

}

 

Como esse programa é muito simples, ele consiste de uma única função: main. Essa função solicita os dados da pessoa, calcula o seu índice de massa corpórea e informa se ela está obesa ou não.

Alguns pontos desse primeiro exemplo devem ser ressaltados:

  • Todo texto delimitado por /* e */ é considerado como comentário, isto é, serve apenas para esclarecer algum ponto específico do programa.
  • A diretiva #include causa a inclusão de arquivos de cabeçalho contendo declarações necessárias à compilação. Os arquivos stdio.h, conio.h e math.h declaram, respectivamente, comandos de E/S padrão, E/S console e funções matemáticas. A diretiva #define declara constantes simbólicas.
  • Os parênteses após o nome de uma função, como em main(), são obrigatórios. Além disso, o compilador distingue maiúsculas e minúsculas e, portanto, o nome main é reservado, mas Main não o é.
  • As chaves { e } servem para delimitar um bloco de instruções. As variáveis devem ser declaradas antes de serem usadas, logo no início do bloco.
  • A função clrscr() serve para limpar a tela e as funções scanf() e printf() realizam entrada e saída de dados padrão.
  • Cálculos e comparações são efetuados com os operadores aritméticos, funções matemáticas e operadores relacionais convencionais. A atribuição de valores às variáveis é realizada pelo operador =.
  • A função getch() aguarda que uma tecla seja pressionada para que a execução do programa seja concluída. Isso permite que o usuário veja a saída do programa, antes de voltar à tela do ambiente integrado.

Execute o programa obeso.c usando o DEV++.

1.4. TIPOS DE DADOS

Programas servem essencialmente para manipular dados: ao executarmos um programa, fornecemo-lhes dados e esperamos que ele faça alguma coisa com eles. Os dados podem se apresentar em duas formas distintas: como constantes ou variáveis. No programa do exemplo 1, o número 30 é um dado constante, enquanto o peso e a altura da pessoa são dados variáveis, isto é, são dados cujos valores variam de uma execução para outra. Além da distinção entre as formas em que os dados podem se apresentar, existe também uma distinção entre os tipos de dados que o computador é capaz de manipular; como, por exemplo, números, letras, palavras, etc.

A linguagem C oferece cinco tipos de dados básicos:

Tipo

Espaço

Escala

char

1 byte

−128 a +127

int

2 byte

−32768 a +32767

float

4 byte

3.4e−38 a 3.4e+38

double

8 byte

1.7e−308 a 1.7e+308

void

nenhum

nenhuma

 

Em C não existe muita distinção entre a representação gráfica de um caracter e o seu código ASCII. Como sabemos, o computador somente é capaz de manipular números. Então, quando atribuímos um caracter a uma variável, estamos na verdade armazenando o seu código ASCII (que na tabela padrão varia de 0 a 127). É por este motivo que a escala de valores do tipo char varia no intervalo de –128 a +127. Para representar um caracter constante, basta escrevê-lo entre apóstrofos como, por exemplo, ‘A’.

As variáveis do tipo int podem armazenar números maiores que as variáveis do tipo char, mas também gastam mais espaço de memória. Valores fracionários podem ser armazenados em variáveis do tipo float ou double, conforme a necessidade. Já o tipo void é um tipo especial, que tem aplicação mais avançada, e seu uso será visto mais adiante. A declaração de uma variável consiste em um tipo e um identificador. O tipo determina o espaço de memória que deverá ser alocado para ela e o identificador permitirá que ela seja referenciada no restante do programa.

Todo identificador deve iniciar-se com letra (maiúscula ou minúscula) e ser composto exclusivamente por letras, dígitos e sublinhas.

 

Exemplo 2. Declaração de variáveis.

char tecla, opcao;

int x, y, z;

float comissao, desconto, salario;

 

1.4.1. TIPOS DE DADOS MODIFICADOS

Além dos tipos básicos, C oferece também alguns tipos de dados modificados:

Tipo

Espaço

Escala

unsigned char

1 byte

0 a 255

unsigned int

2 bytes

0 a 65535

long int

4 bytes

−2 147 483 648 a +2 147 483 647

 

O bit mais à esquerda em uma variável do tipo char ou int, denominado bit de sinal, é normalmente utilizado pelo computador para distinguir entre valores positivos e negativos: se esse bit é zero, então o valor é positivo; caso contrário, ele é negativo. Usando o modificador unsigned, estamos informando ao compilador que somente valores sem sinal serão usados e que, portanto, não é necessário ter um bit de sinal. Com isso, podemos usar esse bit para representar valores e, consequentemente, a escala de valores dobra. Há também o modificador signed, que indica que os valores devem ser sinalizados; mas, como este é o caso normal, raramente ele é utilizado. Se a palavra unsigned (ou signed) é usada isoladamente, o compilador assume o tipo int.

O bit de sinal numa variável do tipo char

O modificador long faz com que o espaço de memória reservado para uma variável do tipo int seja duplicado e, conseqüentemente, aumenta a capacidade de armazenamento da variável. Já o modificador short, em algumas máquinas, faz com que esse espaço caia para a metade.

Exemplo 3. Algumas variáveis de tipos modificados.

unsigned char contador;

unsigned int a, b, c;

long int tam_arquivo;

 

 

Os modificadores podem prefixar apenas os tipos char e int. A única exceção feita é long float, que equivale ao tipo double e por isso é raramente utilizado.

 

1.5. ENTRADA E SAÍDA DE DADOS FORMATADA

A função scanf() permite que um valor seja lido do teclado e armazenado numa variável. Sua sintaxe consiste numa cadeia de formatação seguida de uma lista de argumentos, cada um deles sendo o endereço de uma variável:

scanf(“formatação”, arg1, arg2, ..., argn);

 

A cadeia de formatação é composta por códigos especiais, denominados especificadores de formato, que indicam a quantidade e os tipos dos dados que serão lidos pela função.

Exemplo 4. Lendo dados com a função scanf().

int idade;

char sexo; ...

scanf(“%d %c”, &idade, &sexo);

 

Como podemos observar, a cada especificação de formato na cadeia de formatação corresponde um endereço de variável na lista de argumentos.

O operador & informa o endereço de memória em que uma variável foi alocada.

Especificador

Representa

%c

um único caracter

%o, %d, %x

um número inteiro em octal, decimal ou hexadecimal

%u

um número inteiro em base decimal sem sinal

%ld

um número inteiro longo em base decimal

%f, %lf

um número real de precisão simples ou dupla

%s

uma cadeia de caracteres (string)

%%

um único sinal de porcentagem

 

A função printf( ) nos permite exibir informações formatadas no vídeo. A sua sintaxe é essencialmente idêntica àquela da função scanf(). A principal diferença é que agora a lista de argumentos deve conter os valores a serem exibidos e não seus endereços:

printf(“formatação”, arg1, arg2, ..., argn);

 

Além disso, a cadeia de formatação pode conter também texto, que é exibido normalmente, e caracteres de controle, cuja exibição causa efeitos especiais.

Os principais caracteres de controle utilizados com a função printf( ) são:

Caracter de controle

Efeito

\a

soa o alarme do microcomputador

\b

o cursor retrocede uma coluna

\f

alimenta página na impressora

\n

o cursor avança para uma nova linha

\r

o cursor retrocede para a primeira coluna da linha

\t

o cursor avança para próxima marca de tabulação

\”

exibe uma única aspa

\’

exibe um único apóstrofo

\\

exibe uma única barra invertida

 

Desses caracteres, o mais usado é ‘\n’. Através dele podemos indicar quando uma nova linha deve ser utilizada ao se exibir alguma informação na tela.

Exemplo 5. Exibindo dados com a função printf().

#include  <stdio.h>

#define PI 3.1415

main() {

double raio, perim;

getch();

printf("\n Qual a medida do raio?");

scanf("%lf", &raio); perim = 2*PI*raio;

printf("\n O perímetro da circunferência é %lf", perim);

getch(); }

 

1.5.1. FORMATAÇÃO DE CAMPOS PARA EXIBIÇÃO

A função printf() permite que os campos de exibição sejam formatados. As formatações mais usadas são o preenchimento com zeros à esquerda, para inteiros, e a especificação do número de casas decimais, para reais.

Exemplo 6. Formatação de campos com printf()

int a = 678;

float b = 12.3456;

...

printf("\n|%5d|",a);

printf("\n|%06d|",a);

printf("\n|%7.3d|",b);

printf("\n|%7.2d|",b);

...

 

A saída produzida pela execução desse trecho de programa é

| 678|

|000678|

| 12.346|

| 12.34|

 

1.6. OPERADORES ARITMÉTICOS

C oferece operadores para as quatro operações aritméticas e também um operador para calcular o resto da divisão entre dois números inteiros.

Operador

Resultado

+

soma de dois números quaisquer

diferença entre dois números quaisquer

produto de dois números quaisquer

/

quociente da divisão de dois números

%

resto da divisão de dois número inteiros

 

Destes operadores, apenas dois merecem atenção especial. Os demais funcionam conforme as regras usuais estabelecidas na matemática básica.

  • Divisão: o operador de divisão fornece resultado inteiro apenas quando ambos os operandos são inteiros. Por exemplo, 7 / 2 ⇒ 3 e 7.0 / 2 ⇒5.
  • Resto: o operador de resto somente pode ser utilizado com operandos inteiros. Por exemplo, 7 % 2 ⇒ 1 e 7.0 % 2 ⇒

 

Exercícios

Dadas as duas notas de um aluno , informe a sua média final.

Dada um temperatura em graus Fahrenheit, informe o valor correspondente em graus Celsius. [Dica: C = (F – 32) ∗ (5 / 9)].