Académique Documents
Professionnel Documents
Culture Documents
Programao bsica em C
3. Programao bsica em C
A estrutura de um programa em C
Estrutura genrica de um programa em C:
Comandos do pr-processador Definies de tipos Prottipos de funes - declarao dos tipos de retorno e dos tipos dos parmetros das funes Variveis globais Funes
Exemplo
void main(void) { printf("Eu gosto do C \n"); }
N
MRibeiro
18
MRibeiro
Programao bsica em C
Programao bsica em C
Variveis
So localizaes de memria, s quais foi atribudo um nome So usadas para guardar valores Uma varivel s pode guardar valores de um determinado tipo Tm que ser declaradas antes de serem usadas A declarao especifica o nome da varivel e o tipo de dados que vai ser armazenado
Tipos de variveis
int armazena um inteiro, na forma decimal, octal(comea com 0) ou hexadecimal (comea com 0x) Exemplo
i nt num ; num=16 ; num =051; num= 0x1A ; atribui o valor 1 6 varivel num atribui o valor 51 (em base octal) varivel num atribui o valor 1 A varivel num
char
MRibeiro
20
MRibeiro
21
Programao bsica em C
Programao bsica em C
float
Classes de inteiros
short int ocupa menos espao de memria que um int deve ser usado quando h problemas de memria int long int deve ser usado quando h necessidade de velocidade nas operaes aritmticas ocupa mais espao de memria que um int
double
Exemplo
double decimal; decimal = 1.32 decimal = 1.32e1 decimal = -1.32e1 decimal = -1.32e-1
deve ser usado quando h problemas de memria ocupa mais espao de memria que um float ocupa mais espao de memria que um double deve ser usado quando h necessidade de representao com maior preciso
atribui o valor - 1.32 x101 varivel d e c i m a l atribui o valor -1.32 x10 - 1 varivel deci m a l
MRibeiro
22
MRibeiro
23
Programao bsica em C
Programao bsica em C
Qualificador unsigned Qualquer dos tipos apresentados pode ser qualificado com o prefixo unsigned No altera a memria necessria O seu uso permite alterar o domnio de valores representado pela varivel O bit usado nos signed para o sinal usado nos unsigned para duplicar o valor representado
O quadro seguinte apresenta um pequeno resumo da memria ocupada por cada um dos tipos e respectiva gama de valores
Exemplo
char a; unsigned char b ; A varivel a pode assumir valores entre 128 e 128 A varivel b pode assumir valores entre 0 e 255
Tipo de dados Tamanho (bytes) Limite inferior Limite superior Char 1 -128 127 unsigned char 1 0 255 short int 2 -32768 32767 unsigned short int 2 0 65535 int 4 -231 +231 - 1 long int 4 -231 +231 - 1 float double 4 8 -3.21038 -1.710308 +3.21038 +1.710308
MRibeiro
24
MRibeiro
25
Programao bsica em C
Programao bsica em C
Declarao de variveis Para declarar variveis em C, de um dado tipo, usa-se a seguin te regra: tipo_das_variveis lista_de_variveis ;
Definio de variveis globais As variveis globais so visveis em todas as funes de um programa declaram -se fora e antes de todas as funes (s so visveis a partir do local da declarao)
Exemplo
int idade, num; float altura, peso; char inicial; double quociente; short int iteracoes; unsigneg long int y; (ou apenas short x) (ou apenas unsigned long y)
Exemplo
short number, sum; int bignumber, bigsum; char letter; void main(void) { }
MRibeiro
26
MRibeiro
27
Programao bsica em C
Programao bsica em C
Inicializao de Variveis Tambm possvel inicializar as variveis globais no momento da declarao. Usa-se para isso o operador de atribuio =
Exemplo
float sum = 0.0; int bigsum = 0; char ch = 'A'; void main(void) {
O C tambm permite mltiplas atribuies (colocar o mesmo valor em vrias variveis ao mesmo tempo):
a = b = c = d = 3;
MRibeiro
28
MRibeiro
29
Programao bsica em C
Programao bsica em C
Estas funes
tm como primeiro parmetro uma string especificando o formato e a ordem das variveis a escrever ou a ler Seguem -se como parmetros as prprias variveis pela ordem especificada
A combinao \ n no fim da string indica uma mudana de linha (o carcter new line ou line feed)
Exemplo
printf(Introduza a sua idade: ); scanf(%d, &idade); dobro = 2*idade; printf("O dobro da sua idade %d, dobro);
MRibeiro
30
MRibeiro
31
Programao bsica em C
Programao bsica em C
Exemplo
printf(Introduza a inicial do seu nome: ); scanf(%c, &letra); printf(\nIntroduza o seu peso: ); scanf(%f, &peso); printf(" \nA %c pesa %f quilos, letra, peso);
Operaes Aritmticas
O C suporta as quatro operaes aritmticas standard, atravs dos seguintes operadores:
+ * / %
Exemplo
printf(Introduza a inicial do seu nome e o seu peso: ); scanf(%c, %f, &letra, &peso); printf(" \nA %c pesa %f quilos, letra, quilos);
Alm destas operaes aritmticas, a atribuio considerada uma operao aritmtica, representada no C pelo operador:
N
MRibeiro
Ateno: Na funo scanf Na lista de variveis obrigatrio usar o operador & antes de cada varivel;
=.
Atribuio
32
MRibeiro
33
Programao bsica em C
Programao bsica em C
Prioridades
Os operadores , e
Exemplo
i = 4; ch = 'y'; ordenado = base + vendas*0.03; diasVida = ( Ano AnoNascimento ) * 365; restoArrob as = Producao % 15; ordenadoNovembro = (base + vendas*0.03) * 2;
Exemplo
x = 10 % 3; desperdicio = Producao % 1000;
MRibeiro
34
MRibeiro
35
Programao bsica em C
Programao bsica em C
O operador de diviso ( / )
pode ser usado com inteiros e reais No entanto, se ambos os operandos forem inteiros o resultado a diviso inteira Exemplo
x = 7 / 2; Neste caso, x toma o valor 3, mesmo que x seja float ou double
Operadores de atribuio
As expresses do tipo varivel = varivel operao (expresso) podem ser abreviadas para qualquer coisa como v a r i v e l operao = expresso Os operadores de atribuio existentes so (alm do =):
+= -= *= /=
/* As seguintes expresses so equivalentes */ x += 2; x = x + 2;
Para colocar em x o resultado correcto da diviso real (se x for float ou double) pelo menos um dos operandos tem que ser real Exemplo
x = 7.0 / 2; y = 7 / 2.0; z = 7.0 / 2.0; /*o numerador real */ /* o denominador real */ /* ambos os operandos so reais */
Exemplo
MRibeiro
36
MRibeiro
37
Programao bsica em C
Programao bsica em C
Exemplo
/* As seguintes expresses so equivalentes */ x = x / (y + 2); x/ = y + 2; /* A expresso seguinte diferente das anteriores */ x = x / y + 2;
F u n e s Aritmticas
Existem funes aritmticas na biblioteca standard math.h que podem ser usadas em expresses aritmticas Para poder usar essas funes num programa, basta incluir a biblioteca matemtica #include <math.h> Entre outras, a biblioteca inclui as seguintes funes:
sin (x) cos (x) calcula o valor do seno de x calcula o valor do coseno de x calcula o valor da raz quadrada de x calcula o valor absoluto de x (sendo x um float)
Exemplo
/* As seguintes expresses so equivalentes */ x = x + y * 2; x + = y * 2;
MRibeiro
38
MRibeiro
39
Programao bsica em C
Programao bsica em C
Exemplo
#include <stdio.h> #include <math.h> void main(void) { int a, b, c; float x1, x2, aux ; printf (Introduza o valor de a, b e c: ); scanf(%d, %d, %d, &a, &b, &c) ; aux= b*b 4 * a * c; x1= (-b+ sqrt (aux) ) / 2.0 *a ; x2= (-b- sqrt (aux) ) / 2.0 *a ; printf (As razes do polinmio so %f e %f, x1, x2); }
Converses de tipo
Converses por atribuio Quando se atribui o valor de uma varivel a uma varivel b, o tipo de b automaticamente convertido para o tipo de a (se possvel) Deve ter-se em ateno se a varivel que muda de tipo tem capacidade para suportar o novo tipo Exemplo
int pequeno; long int grande; pequeno = grande; /*esta atribuio dar origem a problemas */ /* a memria reservad a para a varivel pequeno */ /*no suficiente para albergar o valor atribudo */
MRibeiro
40
MRibeiro
41
Programao bsica em C
Programao bsica em C
Converses aritmticas No clculo de expresses que incluam variveis de diversos tipos, seguem-se as seguintes regras:
Se um dos operandos long double, os outros so convertidos para long double; Se um dos operandos double, os outros so convertidos paradouble; Se um dos operandos float, os outros so convertidos para float ; Converte qualquer operando short ou char para um int. Se algum dos operandos for unsigned long, os outros so convertidos paraunsigned long; Se um dos operandos long e outro unsigned int este ltimo convertido para long, se possvel. , Se no, so ambos convertidos para unsigned long; Se um dos operandos long, os outros so convertidos para long; Se um dos operandos forunsigned int, os outros so convertidos para unsigned int;
type cast
possvel obrigar uma expresso a assumir um determinado tipo Este processo designa-se casting Para proceder a este processo basta preceder a expresso em causa pelo tipo desejado entre parntesis:
(tipo) expresso
MRibeiro
42
MRibeiro
43
Programao bsica em C
Programao bsica em C
Caracteres
Os caracteres so armazenados como inteiros pequenos inteiros positivos (8 bits) Existe uma correspondncia directa entre cada caracter e um inteiro entre 0 e 255 Os caracteres podem ser operados como inteiros Exemplo
char c1, c2; c1=a; c2=9; printf(o cdigo ASCII do caracter %c o numero %d, c2, (int) c2);
Caracteres especiais
A maior parte dos caracteres que se pretendem utilizar esto presentes no teclado Par usar um caracter basta coloc-lo entre plicas para inicializ -lo No entanto, existem caracteres muito teis, mas que no esto disponveis no teclado Exemplo
char c1, c2; c1=n; c2=\n; /* o caracter c1 assume o valor n */ /* o caracter c2 assume o valor de n e w l i n e */
N
MRibeiro
Para usar esses caracteres, necessrio colocar uma barra ( \ ) seguida de um caracter que corresponde ao efeito pretendido (alm das aspas)
44
MRibeiro
45
Programao bsica em C
Programao bsica em C
Tabela de caracteres especiais Caracter \7 \a \b \n \r \t \v \\ \ \ \? \ooo \xyy Descrio Bell (sinal sonoro do comutador) Bell (sinal sonoro do comutador) BackSpace Nem Line (mudana de linha) Carriage Return Tabulao Horizontal Tabulao Vertical Caracter \ Caracter (plica) Caracter (aspas) Caracter ? (ponto de interrogao) Caracter cujo cgigo ASCII em octal ooo Caracter cujo cgigo ASCII em hexadecimal yy
Leitura de caracteres
A leitura de caracteres pode ser efectuada sem recurso funo scanf Pode ser usada a funo getchar() criada unicamente para leitura de um caracter Exemplo
#include <stdio.h> # include <conio.h> main() { char ch; printf (Introduza um caracter: ); ch = getchar(); printf(O caracter introduzido foi %c o, ch); getch(); }
MRibeiro
46
MRibeiro
47
Programao bsica em C
Programao bsica em C
Em geral, geram cdigo mais eficiente do que a soma ou subtraco de 1 unidade Os operadores ++ e -- podem ser:
psfixos colocam-se aps a varivel a incrementar ou decrementar prfixos colocando-se antes da varivel a incrementar ou decrementar
++ --
incremento decremento
Exemplo
/* As seguintes expresses so equivalentes */ /* x incrementado em 1 unidade */ x = x +1; x++; x+=1;
Quando o operador psfixo a expresso x++ tem como valor o contedo de x antes deste ser incrementado,
com o operador prfixo a expresso ++x representa j o valor de x depois de incrementado (em ambos os casos x incrementado, o que muda o valor que a combinao x++ ou ++x representa como conjunto).
MRibeiro
48
MRibeiro
49
Programao bsica em C
Programao bsica em C
Exemplo
int x, z, w; void main(void) { x = ((++z) - (w--)) % 100; }
Constantes
possvel de finir constantes atravs da atribuio de um nome simblico Aps definida a constante, o seu nome pode ser usado em qualquer parte do programa em vez do seu valor A utilizao de constantes torna o programa mais flexvel e facilita a alterao Exemplo
#define PI 3.14159 void main(void) { int raio; float perimetro; perimetro= 2* PI * raio ; ... }
Exemplo (equivalente )
int x, z, w; void main(void) { z = z + 1; x = (z - w) % 100; w = w - 1; }
MRibeiro
50
MRibeiro
51
Programao bsica em C
Programao bsica em C
Operadores relacionais
Estes operadores permitem comparar elementos, obtendo:
o valor1 , se o resultado da comparao for verdadeira o valor0 , se o resultado da comparao for falso
Ateno: muito comum trocar o teste de igualdade pelo operador de atribui o (s um =). Este lapso conduz invariavelmente a erros difceis de detectar.
Exemplo
/*Neste caso, o resultado sempre verdadeiro, pois o valor de j atribudo a i, ficando ambos com o mesmo valor. Quando feita a comparao o resultado obviamente verdadeiro */ if (i = j)
igual a diferente de maior que menor que maior ou igual a menor ou igual a
Exemplo
/*Neste caso, o resultado da comparao entre a e c (a==c), que pode dar 1 ou 0, depois comparado com c */ if (a = = b = = c)
MRibeiro
52
MRibeiro
53
Programao bsica em C
Programao bsica em C
O peradores lgicos
Permitem construir condies lgicas compostas a partir de outras mais simples Os operadores lgicos servem para combinar resultados de comparaes So habitualmente utilizados nas instrues condicionais Os trs operadores lgicos do C s o:
Exemplo
if ((nota >=9.5) && (nota <14))
printf (Obteve classificao suficiente, com nota %f, nota);
Exemplo
if (( continuar!=S) && ( continuar!=s)) printf (Ate a proxima J);
! && ||
not and or
Exemplo
if (( !continuar) || final) printf (O programa terminou);
O operador ! ( n o t ) tem prioridade sobre os operadores && (and) e || (or) As condies lgicas so avaliadas da esquerda para a direita
MRibeiro
54
MRibeiro
55