You are on page 1of 19

Programao bsica em C

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"); }

Este programa Contm apenas a funo main(), que obrigatria


que no retorna nada (void) que no tem parmetros (outra vez void)

A funo main contm apenas uma instruo: a chamada a printf()


uma funo da biblioteca standard que escreve no cran Neste caso escreve uma cadeia de caracteres ( string)

N
MRibeiro

Nota : Alguns dos elementos podem no existir

Dever existir sempre uma funo main()

Nota: no final de cada instruo existe sempre um ;


19

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

Existem 4 tipos elementares de variveis


char int float double

char

armazena um caracter Exemplo


char letra; letra=a; atribui o caracter a varivel l e t r a

MRibeiro

20

MRibeiro

21

Programao bsica em C

Programao bsica em C

float

armazena um real Exemplo


float decimal; decimal = 1.32F decimal = 1.32e1F decimal = -1.32e1F atribui o valor 1 .32 varivel d e c i m a l atribui o valor 1.32 x10 1 varivel decimal atribui o valor - 1.32 x10 1 varivel decimal

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

decimal = -1.32e-1F atribui o valor -1.32 x10 - 1 varivel d e c i m a l

double

armazena um real, com preciso dupla Classes de reais


atribui o valor 1.32 varivel d e c i m a l atribui o valor 1.32 x10 varivel d e c i m a l
1

Exemplo
double decimal; decimal = 1.32 decimal = 1.32e1 decimal = -1.32e1 decimal = -1.32e-1

float double long double

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

Tipos de dados simples pr-definidos no C

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

Nota: podem existir algumas diferenas em funo do compilador utilizado.

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 (m ais ineficiente):


float sum; int bigsum; char ch; void main(void) { sum = 0.0; bigsum = 0; ch = 'A'; }

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

Entrada e sada do valor de variveis


As seguintes funes da biblioteca standard permitem a entrada/sada de dados:
printf() permite escrever no cran o valor de variveis scanf()permite ler do teclado o valor de variveis

Alguns dos tipos suportados so:


% c - char % d - int % f - float

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)

Na string de formatao indica-se:


o local e o tipo de um valor de varivel

Exemplo
printf(Introduza a sua idade: ); scanf(%d, &idade); dobro = 2*idade; printf("O dobro da sua idade %d, dobro);

atravs do carcter % seguido de uma letra indicadora do tipo

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:

+ * / %

Adio Subtraco Multiplicao Diviso Mdulo

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

* / % tm prioridade sobre os operadores + e -

Utilizao dos operadores aritmticos


Operador mdulo (%)
Tem como resultado o resto da diviso inteira

Exemplo
i = 4; ch = 'y'; ordenado = base + vendas*0.03; diasVida = ( Ano AnoNascimento ) * 365; restoArrob as = Producao % 15; ordenadoNovembro = (base + vendas*0.03) * 2;

S pode ser utilizado com valores inteiros positivos

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;

sqrt (x) fabs (x)

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

Esta possibilidade elimina a necessidade de funes de truncagem ou arredondamento: Exemplo


(int) x; (int) (x+0.5); /* truncagem de um real */ /* arredondamento deum real */

int y= (int) (x+0.5) ;

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

Ateno: A inicializao de um caracter faz -se usando plicas e no aspas

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

Operadores de Incremento e Decremento


Outros operadores aritmticos so os operadores de incremento e decremento

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)

Os operadores relacionais existentes em C so:


== != > < >= <=

igual a diferente de maior que menor que maior ou igual a menor ou igual a

Ateno: Numa comparao no possvel efectuar testes mltiplos

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