Upload
daiane-regacon
View
44
Download
1
Embed Size (px)
Citation preview
1
Introdução à Programação
Linguagem C
Prof. Gustavo S. Cantarelli
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>
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 //
4
Template (Exemplo 1)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf ("Alo mundo!");
system("PAUSE"); return(0);
return(0);
}
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!
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);
}
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'
8
Entrada e Saída de Dados
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
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
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
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
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
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);
}
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);
}
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);
}
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);}
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);
}
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);
}
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);}
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
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>
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);
}
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.
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);
}
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.
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 ).
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
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;
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!
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");
}
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);
}
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);}
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);}
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’.
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);
}
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);
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);}
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);
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);}
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);
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);}
43
Outros exemplos
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);}
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);}
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", ¬a);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);}
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", ¬a);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);}
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);}
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);}
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.
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);}
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;
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]
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
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
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
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]
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])
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];
60
• int v[10];
0
1
2
3
4
5
6
7
8
9
V[5]=10;
10
printf (“%d”,V[5]);
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);
}
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);
}
63
Exemplos
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);
}
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);
}
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);
}
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); }
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);
}
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); }