69
1 Introdução à Programação Linguagem C Prof. Gustavo S. Cantarelli

Aula Revisao

Embed Size (px)

Citation preview

Page 1: Aula Revisao

1

Introdução à Programação

Linguagem C

Prof. Gustavo S. Cantarelli

Page 2: Aula Revisao

2

Diretivas para o processador - Bibliotecas

• Diretiva #include permite incluir uma biblioteca

• Bibliotecas contêm funções pré-definidas, utilizadas nos programas

• Exemplos

Funções de texto#include <string.h>

Funções matemáticas#include <math.h>

Funções padrão#include <stdlib.h>

Funções de entrada e saída#include <stdio.h>

Page 3: Aula Revisao

3

Dicas

• Termine todas as linhas com ;• Sempre salve o programa antes de compilar• Sempre compile o programa antes de executar• Quando ocorrer um erro de compilação, dê um duplo

clique sobre a mensagem de erro para destacar o comando errado no programa

• Verifique também a linha anterior, que pode ser a responsável pelo erro, especialmente se faltar o ;

• Use comentários, iniciados por //

Page 4: Aula Revisao

4

Template (Exemplo 1)

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

printf ("Alo mundo!");

system("PAUSE"); return(0);

return(0);

}

Page 5: Aula Revisao

5

Declarações

• Declaram as variáveis e seus tipos• Os nomes das variáveis devem conter apenas letras, dígitos e o símbolo _

• Os principais tipos são: int, float e char• Exemplos

int n;

int quantidade_valores;

float x, y, somaValores;

char sexo;

char nome[40];

C diferencia letras maiúsculas de minúsculas!int n, N;n é diferente de N!

Page 6: Aula Revisao

6

Algoritmo

Real: n1, n2, n3, media

Na Linguagem C...

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

float n1, n2, n3, media;

system("PAUSE");

return(0);

}

Page 7: Aula Revisao

7

Comando de atribuição

• Atribui o valor da direita à variável da esquerda

• O valor pode ser:– uma constante,– uma variável ou – uma expressão

• Exemplosx = 4; --> lemos x recebe 4

y = x + 2;

y = y + 4;

valor = 2.5;

sexo = 'F'

Page 8: Aula Revisao

8

Entrada e Saída de Dados

Page 9: Aula Revisao

9

Entrada de Dados

• Função scanf scanf ("formatos", &var1, &var2,...)

Exemplos:

int i, j;

float x;

char c;

scanf("%d", &i);

scanf("%d %f", &j, &x);

scanf("%c", &c);

scanf("%s", nome);

%d inteiro

%f float

%c char

%s palavra

Page 10: Aula Revisao

10

Entrada de Dados (Exemplo 2)Algoritmo

Real: n1, n2, n3, media

Na Linguagem C...

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

float n1, n2, n3, media;

scanf ("%f",&n1);

scanf ("%f",&n2);

scanf ("%f",&n3);scanf ("%f %f %f",&n1, &n2, &n3);

system("PAUSE");

return(0);

}

ler n1

ler n2

ler n3

ler n1, n2, n3

Page 11: Aula Revisao

11

Operadores Matemáticos

Decrementa em 1 o valor de xx----

Incrementa em 1 o valor de xx++++

Resto da divisão de x por yx % y %

Divide x por yx / y /

Multiplica x e yx * y*

Subtrai y de xx – y -

Soma x e yx + y+

ComentárioExemploOperador

Page 12: Aula Revisao

12

Entrada de Dados (exemplo 3)

Real: n1, n2, n3, media

Na Linguagem C...

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

float n1, n2, n3, media;

scanf ("%f %f %f",&n1, &n2, &n3);

media=(n1+n2+n3)/3;

system("PAUSE");

return(0);

}

ler n1, n2, n3

media=(n1+n2+n3)/3

Algoritmo

Page 13: Aula Revisao

13

Saída de Dados

• Função printfprintf ("formatos", var1, var2,...)

Exemplos:

int i, j;

float x;

char c;

printf("%d", i);

printf("%d, %f", j, x);

printf("%c", c);

printf("%s", nome);

%d inteiro

%f float

%c char

%s palavra

Page 14: Aula Revisao

14

Saída de Dados (Exemplo 4)

#include <stdio.h>#include <stdlib.h>int main(void){

int i, j;float x;char c;char nome [10];i = 1; j = 2; x = 3; printf("%d", i);printf("%d, %f", j, x);system("PAUSE"); return(0);

}

Page 15: Aula Revisao

15

Saída de Dados (Exemplo 5)

#include <stdio.h>#include <stdlib.h>int main(void){

// definicao de variaveisdouble n1, n2, n3, media;// entrada de dadosscanf ("%lf %lf %lf",&n1, &n2, &n3);

// operacaomedia=(n1+n2+n3)/3;

// saida de dadosprintf("%f", n1);printf("%f", n2);printf("%f", n3);printf("%f", media);

system("PAUSE"); return(0);

}

Page 16: Aula Revisao

16

Saída de Dados (Exemplo 6)

#include <stdio.h>#include <stdlib.h>int main(void){

// definicao de variaveisint i, j;float x;char c;char nome[30];//entrada de dadosscanf("%d", &i);scanf("%d %f", &j, &x);scanf("%c", &c);scanf("%s", nome);// exibicao de dadosprintf("%d", i);printf("%d, %f", j, x);printf("%c", c);printf("%s", nome);system("PAUSE"); return(0);

}

Page 17: Aula Revisao

17

Exemplo 7#include <stdio.h>#include <stdlib.h>int main(void){

//declaracao de variaveisint n;int quantidade_valores;float x, y, somaValores;char sexo;char nome[40];// operacaosomaValores =1+1;

//saida de dadosprintf("somaValores=%f", somaValores);

system("PAUSE"); return(0);}

Page 18: Aula Revisao

18

Exemplo 8

#include <stdio.h>#include <stdlib.h>int main(void){

// definicao de vairiaveisint n;

int quantidade_valores;float x, y, somaValores;char sexo;char nome[40];x = 1; y = 2;//atribuicaosomaValores = x + y;// mostra mensagem de texto na telaprintf("alo mundo");// mostra valor na telaprintf("somaValores=%f", somaValores);

system("PAUSE"); return(0);

}

Page 19: Aula Revisao

19

Entrada e SaídaExemplo 10

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

double n1, n2, n3, media;

printf("Digite 3 notas: ");

scanf ("%lf %lf %lf",&n1, &n2, &n3);

media=(n1+n2+n3)/3;

printf ("Media: %.2lf",media);

system("PAUSE"); return(0);

}

Exemplo 9

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

double n1, n2, n3, media;

scanf ("%lf %lf %lf",&n1, &n2, &n3);

media=(n1+n2+n3)/3;

printf ("%lf",media);

system("PAUSE"); return(0);

}

Page 20: Aula Revisao

20

Exemplo 11

1) Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um programa que calcule seu peso ideal, utilizando a seguinte fórmula: peso ideal = (72.7*h) – 58

#include <stdio.h>#include <stdlib.h>#include <conio.h>int main(void){

float altura, pesoIdeal;char sexo;printf ("\nDigite sua altura em metros: ");scanf ("%f",&altura);printf ("\nDigite seu sexo (F/M): ");sexo=getche();pesoIdeal=(72.7*altura)-58;printf ("\nO sexo digitado foi %c e o peso ideal desta pessoa eh %.2f quilos\n", sexo, pesoIdeal);

system("PAUSE"); return(0);}

Page 21: Aula Revisao

21

Operadores de Atribuição

Equivale a x = x % yx %= y%=

Equivale a x = x / yx /= y /=

Equivale a x = x * yx *= y *=

Equivale a x = x – yx -= y-=

Equivale a x = x + yx += y +=

Atribui o valor de y a xx = y=

ComentárioExemploOperador

Page 22: Aula Revisao

22

Funções Matemáticas

Tangente de xtan(x)tan

Raiz quadrada de xsqrt(x)sqrt

Seno de xsin(x)sin

Calcula x elevado à potência ypow(x, y)pow

Logaritmo decimal de xlog10(x)log10

Logaritmo natural de xlog(x)log

Arredonda o número deal para baixo; floor(3.2) é 3floor(x)floor

Valor absoluto de xfabs(x)fabs

e elevado à potencia xexp(x)exp

Cosseno de x (x em radianos)cos(x)cos

Arredonda o número real para cima; ceil(3.2) é 4ceil(x)ceil

ComentárioExemploFunção

#include <math.h>

Page 23: Aula Revisao

23

Exemplo 122) Construa um programa que tendo como entrada dois pontos

quaisquer do plano P(x1,y1) e Q(x2,y2), imprima a distância entre eles. A fórmula da distância é:

#include <stdio.h>#include <stdlib.h>#include <math.h>int main(void){

float x1, y1, x2, y2;float distancia;printf ("\nDigite o valor de x1: ");scanf ("%f",&x1);printf ("\nDigite o valor de y1: ");scanf ("%f",&y1);printf ("\nDigite o valor de x2: ");scanf ("%f",&x2);printf ("\nDigite o valor de y2: ");scanf ("%f",&y2);distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));printf ("\nA distancia entre os pontos P1 e P2 eh %.2f\n", distancia);system("PAUSE"); return(0);

}

Page 24: Aula Revisao

24

Exercicio I

3) Construa um programa que calcule a quantidade de latas de tinta necessárias e o custo para pintar tanques cilíndricos de combustível, onde são fornecidos a altura e o raio desse cilindro.

Sabendo que:- a lata de tinta custa R$20,00- cada lata contém 5 litros- cada litro de tinta pinta 3 metros quadrados.Sabendo que:Área do cilindro=3.14*raio2 + 2*3.14*raio*alturae que raio e altura são dados de entrada.

Page 25: Aula Revisao

25

Resposta do Exercício I

#include <stdio.h>#include <stdlib.h>#include <math.h>int main(void){

float altura, raio, areaCilindro, qtdadeLitros, qtdadeLatas, custo;printf ("\nDigite o valor da altura em metros: ");scanf ("%f",&altura);printf ("\nDigite o valor do raio em metros: ");scanf ("%f",&raio);areaCilindro=3.14*raio*raio + 2*3.14*raio*altura;printf ("\nA area do cilindro eh %.2f metros quadrados", areaCilindro);qtdadeLitros=areaCilindro/3;printf ("\nA qtidade de litros necessaria eh de %.2f ", qtdadeLitros);qtdadeLatas=qtdadeLitros/5;printf ("\nA qtidade de latas necessaria eh de %.2f ", qtdadeLatas);custo=qtdadeLatas*20;printf ("\nO valor total das tintas eh de R$ %.2f \n", custo);system("PAUSE"); return(0);

}

Page 26: Aula Revisao

26

Operadores Relacionais

O conteúdo de x é maior que o de yx > y>

O conteúdo de x é menor que o de yx < y <

O conteúdo de x é maior ou igual ao de yx >= y >=

O conteúdo de x é menor ou igual ao de yx <= y<=

O conteúdo de x é diferente do de yx != y !=

O conteúdo de x é igual ao de yx == y==

ComentárioExemploOperador

As expressões relacionais em C retornam :• 1 se verdadeiro e;• 0 se falso.

Page 27: Aula Revisao

27

Operadores Lógicos• && (E lógico): retorna verdadeiro se ambos os

operandos são verdadeiros e falso nos demais casos.Exemplo: if( a>2 && b<3).

• || (OU lógico): retorna verdadeiro se um ou ambos os operandos são verdadeiros e falso se ambos são falsos.Exemplo: if( a>1 || b<2).

• ! (NÃO lógico): usada com apenas um operando. Retorna verdadeiro se o operando é falso e vice-versa.Exemplo: if( !var ).

Page 28: Aula Revisao

28

Operadores Lógicos

F ou F → FF e F → F

F ou V → VF e V → F

Não V → FV ou F → VV e F → F

Não V → FV ou V → VV e V → V

Tabela NÃOTabela OUTabela E

Page 29: Aula Revisao

29

Estrutura condicional simples

• Comando ifif (condição)

comando;

if (condição) {

comando1;

comando2;

comando3;

}

if (a<menor)

menor=a;

if (a<menor) {

menor=a;

printf (“%d”, menor);

}

em pseudo-código:

se (a<menor) entao menor=a;

Page 30: Aula Revisao

30

Estrutura condicional composta

• Comando if...elseif (condição)

comando;

else

comando;

if (condição) {

comando1;

comando2;

}

else {

comando3;

comando4;

}

if (peso= =peso_ideal)printf (“Vc está em forma!”);

else printf (“Necessário fazer dieta!”);

em pseudo-código:se (peso= =peso_ideal)

entao exibir “Vc está em forma!”senao exibir “Necessário fazer dieta!”

Executa o comando se a condição for qualquer coisa diferente de zero!

Page 31: Aula Revisao

31

Estrutura SWITCH

switch (numero){case 1: printf ("Janeiro\n"); break;case 2: printf ("Fevereiro\n"); break;case 3: printf ("Marco\n"); break;case 4: printf ("Abril\n"); break;case 5: printf ("Maio\n"); break;case 6: printf ("Junho\n"); break;case 7: printf ("Julho\n"); break;case 8: printf ("Agosto\n"); break;case 9: printf ("Setembro\n"); break;case 10: printf ("Outubro\n"); break;case 11: printf ("Novembro\n"); break;case 12: printf ("Dezembro\n"); break;default: printf (“Mes invalido\n");

}

Page 32: Aula Revisao

32

Exercício 1

1) Dados dois números A e B, some 100 ao maior número e imprima.

#include <stdio.h>#include <stdlib.h>int main(void){

int A, B, soma;printf ("Digite o valor de A: ");scanf ("%d", &A);printf ("Digite o valor de B: ");scanf ("%d", &B);if (A>B)soma=A+100;

else soma=B+100;

printf ("O maior valor adicionado de 100 resulta em %d\n", soma);system("PAUSE"); return(0);

}

Page 33: Aula Revisao

33

Exercício 2

2) Escreva um algoritmo para determinar se uma pessoa é maior ou menor de idade.

#include <stdio.h>#include <stdlib.h>main (){int idade;printf ("Digite a idade da pessoa: ");scanf ("%d", &idade);if (idade>=18)printf ("Pessoa eh maior de idade.\n");

else printf ("Pessoa eh menor de idade.\n");

system("PAUSE"); return(0);}

Page 34: Aula Revisao

34

Exercício 3

Ou utilizando boolean:

#include <stdio.h>#include <stdlib.h>main (){int idade;bool status;printf ("Digite a idade da pessoa: ");scanf ("%d", &idade);if (idade>=18)status=true;

elsestatus=false;

if (status)printf ("Pessoa eh maior de idade.\n");

else printf ("Pessoa eh menor de idade.\n");

system("PAUSE"); return(0);}

Page 35: Aula Revisao

35

Exercícios

4) Faça um algoritmo que leia a quantidade comprada de um produto e o preço unitário deste produto.

- Se o preço total a ser pago for inferior a R$ 100, então forneça um desconto de 5%.

- Se o preço total a ser pago ficar entre 100 e 1000, então forneça um desconto de 5% e armazene um bônus de 5% em cima do valor total.

- Se o preço total a ser pago for superior a 1000, então forneça um desconto de 10%, armazene um bônus de 5% em cima do valor total e escreva na tela que o cliente será cadastrado como ‘Cliente Vip’.

Page 36: Aula Revisao

36

#include <stdio.h>#include <stdlib.h>int main(void){

int qtdade;float preco, valorTotal, descontado, bonus;printf ("\nDigite a qtdade: ");scanf ("%d", &qtdade);printf ("\nDigite o preco unitario: ");scanf ("%f", &preco); valorTotal=qtdade*preco;if (valorTotal<100)descontado=valorTotal*0.95;

else if (valorTotal>=100 && valorTotal<=1000){

descontado=valorTotal*0.95;bonus=valorTotal*0.05;

} else if (valorTotal>1000)//poderia ser soh: else{

descontado=valorTotal*0.90;bonus=valorTotal*0.05;printf ("\n Cliente vip!\n");

} printf ("\n Valor Total eh %.2f\n", valorTotal);printf ("\n Valor com desconto eh %.2f\n", descontado);printf ("\n Bonus eh %.2f\n", bonus);system("PAUSE"); return(0);

}

Page 37: Aula Revisao

37

Estrutura de repetição

• Comando forfor (var=valor inicial; condição; incremento)

comando;

for (var=valor inicial; condição; incremento)

{

comando1;

comando2

comando3;

}

Exemplo:for (cont=3; cont<=11; cont++)

printf (“%d”,cont);

Page 38: Aula Revisao

38

Exercícios

Escrever um algoritmo que lê 5 valores, e conta quantos destes valores são negativos, escrevendo esta informação.

#include <stdio.h>#include <stdlib.h>int main(void){int numero, cont, neg=0;for (cont=0; cont<5; cont++){

printf ("\nDigite um numero inteiro: ");scanf ("%d", &numero);if (numero<0)neg++;

}printf ("\nO numero de valores negativos eh %d\n", neg);system("PAUSE"); return(0);}

Page 39: Aula Revisao

39

Estrutura de repetição

• Comando while

while (condição)

comando;

while (condição) {

comando1;

comando2

comando3;

}

Pseudo-código:MAIOR = 0 N = 1Enquanto (N <> 0) repetir

Ler NSe (N > MAIOR) então MAIOR = N

Mostrar MAIOR

Exemplo:MAIOR=0;N=1;

while (N != 0) {

scanf ("%d",&N);

if (N > MAIOR) MAIOR = N;

}

printf ("O numero maior eh %d\n", MAIOR);

system("PAUSE"); return(0);

Page 40: Aula Revisao

40

Outra solução:

Escrever um algoritmo que lê 5 valores, e conta quantos destes valores são negativos, escrevendo esta informação.

#include <stdio.h>#include <stdlib.h>int main(void){int numero, cont=0, neg=0;while (cont<5){

printf ("\nDigite um numero inteiro: ");scanf ("%d", &numero);if (numero<0)neg++;

cont++;}printf ("\nO numero de valores negativos eh %d\n", neg);system("PAUSE"); return(0);}

Page 41: Aula Revisao

41

Estrutura de repetição

• Comando do...whiledo {

comando

} while (condição);

do {

comando1;

comando2

comando3;

} while (condição);

Em pseudo-código:CONTADOR = 0Repetir

CONTADOR = CONTADOR + 1exibir CONTADOR

enquanto CONTADOR < 10

Exemplo:cont=0;do {

cont = cont + 1;

printf("%d\n",cont);

} while (cont < 10);

Page 42: Aula Revisao

42

Outra solução:

Escrever um algoritmo que lê 5 valores, e conta quantos destes valores são negativos, escrevendo esta informação.

#include <stdio.h>#include <stdlib.h>int main(void){int numero, cont=0, neg=0;do{

printf ("\nDigite um numero inteiro: ");scanf ("%d", &numero);if (numero<0)neg++;

cont++;}while (cont<5);printf ("\nO numero de valores negativos eh %d\n", neg);system("PAUSE"); return(0);}

Page 43: Aula Revisao

43

Outros exemplos

Page 44: Aula Revisao

44

1. Construir um algoritmo que calcule a média aritmética de vários valores inteiros positivos,

lidos externamente. O final da leitura acontecerá quando for lido um valor negativo.

#include <stdio.h>#include <stdlib.h>int main(void){int numero, cont=0, soma=0;float media;printf ("\nDigite um valor inteiro positivo. Digite um negativo para encerrar a execucao: ");scanf ("%d", &numero);while (numero>=0){soma=soma+numero;cont++;printf ("\nDigite um valor inteiro positivo. Digite um negativo para encerrar a execucao: ");scanf ("%d", &numero);}if (cont>0){media=(float)soma/cont;printf ("\nA media eh %.2f\n", media);

}else

printf ("\nNenhum valor foi digitado");system("PAUSE"); return(0);}

Page 45: Aula Revisao

45

Outra solução:#include <stdio.h>#include <stdlib.h>int main(void){int numero, cont=0, soma=0;float media;printf ("\nDigite um valor inteiro positivo. Digite um negativo para encerrar a execucao:

");scanf ("%d", &numero);if (numero >=0){do{soma=soma+numero;cont++;printf ("\nDigite um valor inteiro positivo. Digite um negativo para encerrar a execucao: ");scanf ("%d", &numero);}while(numero>=0);if (cont>0) {

media=(float)soma/cont; printf ("\nA media eh %.2f\n", media);

}}//ifsystem("PAUSE"); return(0);}

Page 46: Aula Revisao

46

2. Escreva um algoritmo que calcule a média aritmética das 3 notas dos alunos de uma classe. O algoritmo deverá ler, além das notas, o código do aluno e deverá ser encerrado quando o código for igual a zero.

#include <stdio.h>#include <stdlib.h>int main(void){int codigo;float media, nota, soma=0;printf ("\nDigite o codigo do aluno. Digite zero para encerrar a execucao: ");scanf ("%d", &codigo);while (codigo!=0){

soma=0;for (int cont=0; cont<3; cont++){

printf ("\nDigite nota: ");scanf ("%f", &nota);soma=soma+nota;

}//formedia=soma/3;printf ("\nA media do aluno %d eh %.2f", codigo, media);printf ("\nDigite o codigo do aluno. Digite zero para encerrar a execucao: ");scanf ("%d", &codigo);

}//whilesystem("PAUSE"); return(0);}

Page 47: Aula Revisao

47

Outra solução

#include <stdio.h>#include <stdlib.h>int main(void){int codigo;float media, nota, soma=0;printf ("\nDigite o codigo do aluno. Digite zero para encerrar a execucao: ");scanf ("%d", &codigo);do {

soma=0;for (int cont=0; cont<3; cont++){

printf ("\nDigite nota: ");scanf ("%f", &nota);soma=soma+nota;

}//formedia=soma/3;printf ("\nA media do aluno %d eh %.2f", codigo, media);printf ("\nDigite o codigo do aluno. Digite zero para encerrar a execucao: ");scanf ("%d", &codigo);

}while (codigo!=0);system("PAUSE"); return(0);}

Page 48: Aula Revisao

48

3. Escreva um algoritmo que calcule a média dos números digitados pelo usuário, se eles forem pares. Termine a leitura se o usuário digitar zero (0).

#include <stdio.h>#include <stdlib.h>int main(void){int num, soma=0, cont=0;float media;printf ("\nDigite um numero inteiro. Digite zero para encerrar a execucao: ");scanf ("%d", &num);do {

if (num%2==0){cont++;soma=soma+num;}printf ("\nDigite um numero inteiro. Digite zero para encerrar a execucao: ");scanf ("%d", &num);

}while (num!=0);media=(float)soma/cont;printf ("\nA media eh %.2f", media);

system("PAUSE"); return(0);}

Page 49: Aula Revisao

49

Outra solução

#include <stdio.h>#include <stdlib.h>int main(void){int num, soma=0, cont=0;float media;printf ("\nDigite um numero inteiro. Digite zero para encerrar a execucao: ");scanf ("%d", &num);while (num!=0){if (num%2==0){soma=soma+num;cont++;

} printf ("\nDigite um numero inteiro. Digite zero para encerrar a execucao: ");scanf ("%d", &num);}if (cont>0){media=(float)soma/cont;printf ("\nA media eh %.2f\n", media);

}else

printf ("\nNenhum valor foi digitado");system("PAUSE"); return(0);}

Page 50: Aula Revisao

50

Mais um exemplo...

4. Faça um programa que realize a venda de produtos a clientes. • Cada cliente pode comprar vários produtos. • Sobre cada produto comprado por cada cliente, leia a quantidade de unidades compradas e o preço unitário. • Encerre a entrada de produtos para um cliente quando o código do produto lido for -1. • Mostre, para cada cliente, o valor total da sua compra. • Encerre a entrada de clientes quando o código do cliente lido for zero.

Page 51: Aula Revisao

51

#include <stdio.h>#include <stdlib.h>int main(void){int codProd, codCli, qtdade;float precoUnit, valorTotal=0;printf ("\nDigite o codigo do cliente. Digite zero para encerrar a execucao: ");scanf ("%d", &codCli);while (codCli!=0){

valorTotal=0;printf ("\n\tDigite o codigo do produto. Digite -1 para encerrar a execucao: ");scanf ("%d", &codProd);while (codProd!=-1){

printf ("\n\tDigite a qtdade comprada pelo cliente %d do produto %d: ", codCli, codProd);scanf ("%d", &qtdade);printf ("\n\tDigite o valor unitario do produto %d: ", codProd);scanf ("%f", &precoUnit);valorTotal=valorTotal+qtdade*precoUnit;printf ("\n\n\tDigite o codigo do produto. Digite -1 para encerrar a execucao: ");scanf ("%d", &codProd);

}printf ("\nO cliente %d deve pagar R$ %.2f", codCli, valorTotal);printf ("\n\nDigite o codigo do cliente. Digite zero para encerrar a execucao: ");scanf ("%d", &codCli);

}//whilesystem("PAUSE"); return(0);}

Page 52: Aula Revisao

52

Vetores

• Estrutura de Dado:– tipo construído a partir da composição de tipos primitivos.

• Declaração:– tipo IDENTIFICADOR = vetor [LI ...LF] de <tipo>– IDENTIFICADOR: lista de variáveis;

– Exemplo:– tipo TIPO_VETOR = vetor [1..10] de inteiro– TIPO_VETOR: v;

Page 53: Aula Revisao

53

– tipo TIPO_VETOR = vetor [1..10] de inteiro– TIPO_VETOR: v;

1

2

3

4

5

6

7

8

9

10

V[5]=10

10

exibir V[5]

Page 54: Aula Revisao

54

Quando usar?

• Calcular a média da nota de 5 alunos e verificar

quantos conseguiram nota acima da média:

inteiro: cont, soma;

real: media, num

para cont=1 até 5 repetir

receber num

soma = soma + num

media = soma/cont

Como verificar se a nota de cada aluno é maior que a média??

inteiro: cont, contA;real: media, n1, n2, n3, n4, n5receber n1, n2, n3, n4, n5media = (n1+ n2 + n3 + n4 + n5)/5if (n1>media) contA=contA+1if (n2>media) contA=contA+1if (n3>media) contA=contA+1if (n4>media) contA=contA+1if (n5>media) contA=contA+1exibir media, contA

Page 55: Aula Revisao

55

inteiro: cont, contA;

real: media

tipo TIPO_VETOR = vetor [1..5] de inteiro

TIPO_VETOR: v;

para cont=1 até 5 repetir

receber num

soma = soma + num

media = soma/cont

para cont=1 até 5 repetir

se (v[cont]>media)

então contA=contA+1

exibir media

exibir contA

inteiro: cont, contA;real: media, n1, n2, n3, n4, n5receber n1, n2, n3, n4, n5media = (n1+ n2 + n3 + n4 + n5)/5if (n1>media) contA=contA+1if (n2>media) contA=contA+1if (n3>media) contA=contA+1if (n4>media) contA=contA+1if (n5>media) contA=contA+1exibir media, contA

Page 56: Aula Revisao

56

Exemplo

Faça um algoritmo que efetue a leitura de 5 elementos para um vetor A. No final, apresentar a soma de todos os elementos que sejam ímpares.

Inteiro: soma, iTipo X: vetor[1..5] de inteiroX: A Soma =0PARA i=1 ATE 5 REPETIR

ler A[i]PARA i=1 ATE 5 REPETIRSE ((A[i] mod 2) <> 0) ENTAO

soma = soma + A[i]Mostrar soma

Page 57: Aula Revisao

57

Exemplo

Soma de dois vetores

Tipo V: vetor [1..50] de inteiroV: vetA, vetB, vetXInteiro: xPARA x=1 ATE 50 REPETIR

lê vetA[i]lê vetB[i]calcula vetX[i] = vetA[i] + vetB[i]Mostra vetX[i]

Page 58: Aula Revisao

58

Exemplo

Desenvolver um algoritmo que efetue a leitura de 10 elementos inteiros de um vetor V. Para construir o vetor V2 do mesmo tipo, observa-se a seguinte regra de formação: se o valor do índice for par, o valor do elemento deverá ser multiplicado por 5; se for ímpar, deverá ser somado 5. Ao final, mostrar o conteúdo dos dois vetores.

V, V2 : vetor [1..10] de inteirosInteiro: iPara i = 1 até 10 Faça

Ler v[i]Para i =1 até 10 Faça

Se ( i mod 2 = 0 ) Entãov2[i] =v[i] * 5

Senãov2[i] = v[i] + 5

Para i = 1 até 10 FaçaMostrar (v[i], v2[i])

Page 59: Aula Revisao

59

Vetores (array)

• Trata-se de automatizar a declaração de um grande número de dados de ummesmo tipo simples. As variáveis assim declaradas se acessam através de umíndice de tipo int.

• Declaração:

– int v[100];

– primeira posição =0;

– última posição=99;

• Atribuição:

– v [9] = 87;

• Acessar um valor:

– a = v[9];

Page 60: Aula Revisao

60

• int v[10];

0

1

2

3

4

5

6

7

8

9

V[5]=10;

10

printf (“%d”,V[5]);

Page 61: Aula Revisao

61

Quando usar?

• Calcular a média da nota de 5 alunos e verificar quantos conseguiram nota acima da média:

inteiro: cont, soma;real: media, numpara cont=1 até 5 repetir

receber numsoma = soma + num

media = soma/cont

Como verificar se a nota de cada aluno é maior que a média??

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int contA=0;

double media, n1, n2, n3, n4, n5;

scanf ("%lf %lf %lf %lf %lf",

&n1, &n2, &n3, &n4, &n5);

media = (n1+ n2 + n3 + n4 + n5)/5;

if (n1>media) contA=contA+1;

if (n2>media) contA=contA+1;

if (n3>media) contA=contA+1;

if (n4>media) contA=contA+1;

if (n5>media) contA=contA+1;

printf ("%lf %d", media, contA);

system("PAUSE"); return(0);

}

Page 62: Aula Revisao

62

#include <stdio.h>#include <stdlib.h>int main(void){int i, contA=0;double soma=0, media;double v[5];

for (i=0;i<5;i++) {scanf ("%lf", &v[i]);soma = soma + v[i];

}media = soma/i;for (i=0;i<5;i++) {

if (v[i]>media) contA=contA+1;}printf ("%lf %d\n", media, contA);system("PAUSE"); return(0);

}

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int contA=0;

double media, n1, n2, n3, n4, n5;

scanf ("%lf %lf %lf %lf %lf",

&n1, &n2, &n3, &n4, &n5);

media = (n1+ n2 + n3 + n4 + n5)/5;

if (n1>media) contA=contA+1;

if (n2>media) contA=contA+1;

if (n3>media) contA=contA+1;

if (n4>media) contA=contA+1;

if (n5>media) contA=contA+1;

printf ("%lf %d", media, contA);

system("PAUSE"); return(0);

}

Page 63: Aula Revisao

63

Exemplos

Page 64: Aula Revisao

64

1. Armazenar 10 valores inteiros num vetor de 10 posições e mostrar os valores armazenados

#include<stdio.h>#include<stdlib.h>int main(void){

int vetor[10], cont;for (cont=0; cont<10; cont++){printf ("\nDigite um valor inteiro: ");scanf ("%d", &vetor[cont]);}for (cont=0; cont<10; cont++)

printf ("\nO valor armazenado na posicao %d eh %d\n", cont, vetor[cont]);system("PAUSE"); return(0);

}

Page 65: Aula Revisao

65

2. Armazenar 10 valores inteiros num vetor de 10 posições. Após, leia o vetor e mostre os valores armazenados, adicionando em 10 unidades qdo forem números positivos.

#include<stdio.h>#include<stdlib.h>int main(void){

int vetor[10], cont;for (cont=0; cont<10; cont++){printf ("\nDigite um valor inteiro: ");scanf ("%d", &vetor[cont]);}for (cont=0; cont<10; cont++){

if (vetor[cont]>0)printf ("\nO valor armazenado na posicao %d eh %d\n", cont,

vetor[cont]+10);elseprintf ("\nO valor armazenado na posicao %d eh %d\n", cont, vetor[cont]);

}system("PAUSE"); return(0);

}

Page 66: Aula Revisao

66

3. Faca um algoritmo q leia 5 idades de 5 pessoas e escreva o numero de pessoas que são maiores de idade. Armazene as idades num vetor.

#include<stdio.h>#include<stdlib.h>int main(void){

int pessoas[5];int i=0, numMaiorIdade=0;while (i<5){

printf ("\nDigite uma idade: ");scanf ("%d", &pessoas[i]);if (pessoas[i]>=18)numMaiorIdade++;

i++; }printf ("\nO numero de pessoas com mais de 18 anos eh %d\n",

numMaiorIdade);system("PAUSE"); return(0);

}

Page 67: Aula Revisao

67

4. Faca um programa q armazene em um vetor de inteiros as qtdades compradas de 5 produtos. Em outro vetor de reais, armazene o valor unitário de cada produto. O programa deve, ao final, mostrar o valor total a ser pago por cada produto. Considere q o índice do vetor corresponde ao código do produto

#include<stdio.h>#include<stdlib.h>int main(void){

int quantidade[5], i;float precoUnitario[5];for (i=0; i<5; i++){

printf ("\nDigite a qtidade comprada do produto %d ", i);scanf ("%d", &quantidade[i]);printf ("\nDigite o preco unitario do produto %d ", i);scanf ("%f", &precoUnitario[i]);

}for (i=0; i<5; i++)

printf ("\nO valor total do produto %d eh %.2f\n", i, quantidade[i]*precoUnitario[i]);

system("PAUSE"); return(0); }

Page 68: Aula Revisao

68

5. De um modo geral, as ligações telefônicas são cobradas pelas suas durações. O sistema registra os instantes em que a ligação foi iniciada e concluída. É acionado um programa que determina o intervalo de tempo decorrido entre aqueles dois instantes dados. Faça um programa que receba dois instantes dados em horas e minutos e determine o intervalo de tempo (em horas e minutos) decorrido entre eles.

#include <stdio.h>#include <stdlib.h>int main(void){

int h1, min1, h2, min2, h, min;puts("Digite o instante inicial (horas e minutos)");scanf("%d %d", &h1, &min1);scanf("%d %d", &h2, &min2);h = h2 - h1;min = min2 - min1;if ((h < 0) || ((h == 0) && (min < 0)))

puts("\aDados invalidos! O segundo instante é anterior ao primeiro");else{

if (min < 0){h = h - 1;min = min + 60;

}printf( "Entre os instantes %dh %dmin e %dh %dmin passaram-se %dh %dmin", h1,

min1, h2, min2, h, min);}system("PAUSE"); return(0);

}

Page 69: Aula Revisao

69

6. Faça um programa para ordenar três números lidos.

#include <stdio.h>#include <stdlib.h>int main(void){

float x, y, z, Aux;printf("Digite os tres numeros");scanf("%f %f %f", &x, &y, &z);printf("Numeros dados: %f , %f , %f \n", x, y, z);if (x > y){

Aux = x;x = y;y = Aux;

}if (x > z){

Aux = x;x = z;z = Aux;

}if (y > z){

Aux = y;y = z;z = Aux;

}printf("Numeros ordenados: %f , %f , %f \n", x, y, z);system("PAUSE"); return(0); }