Formador: Henrique Fidalgo
LINGUAGEM C
783 - Programação em C/C++ ciclos e
decisões
Formador: Henrique Fidalgo
Valores Lógicos – Verdadeiro e Falso
Como vimos anteriormente o C possui 4 tipos de dados (int,
float, char, double), não existe assim nenhum tipo que guarde
um valor lógico:
• Verdadeiro
• Falso
Em C o valor falso é representado por 0 (Zero)
Todos os outros valores representam o verdadeiro.
Formador: Henrique Fidalgo
Operadores Relacionais
Operador
Nome
Exemplo
significado
==
Igualdade
a == b
a é igual b ?
>
Maior que
a>b
a é maior que b?
>=
Maior ou igual que
a >= b
a é maior ou igual que
b?
<
Menor que
a<b
a é menor que b?
<=
Menor ou igual que
a <= b
a é menor ou igual
que b ?
!=
Diferente de
a != b
a é diferente de b?
Formador: Henrique Fidalgo
Nota importante
a = b é diferente de a == b
O operador == verifica se duas expressões são iguais,
enquanto que o operador = é utilizado para a atribuição
de valores a variáveis.
Formador: Henrique Fidalgo
A instrução if - else
A instrução if-else, é uma das instruções de controlo de
fluxo da linguagem C.
Permite indicar quais as circunstâncias em que
determinada instrução ou conjunto de instruções deve ser
executada.
A sua sintaxe é:
if (condição)
Instrução1;
else instrução2;
Formador: Henrique Fidalgo
A instrução if - else
if (condição)
Instrução1;
else instrução2;
A componente else do if é facultativa
Formador: Henrique Fidalgo
Exemplo:
# include <stdio.h>
main()
{
int x;
printf (“Introduza um número”);
scanf (“%d”, & x);
if (x>=0)
printf (“Número positivo\n”);
else
printf (“Número negativo\n”);
}
O programa permite
após a introdução de
um número dizer se
este é positivo, caso
seja igual ou maior
que zero ou negativo,
caso este seja menor
que zero.
Formador: Henrique Fidalgo
Exercício 10-C:
Desenvolva um programa que controle a temperatura de um
frigorifico através da introdução da temperatura:
•Caso a temperatura seja maior ou igual a zero este deverá
devolver a mensagem “LIGAR”
•Caso contrário deverá devolver a mensagem “PARAR”
Formador: Henrique Fidalgo
Exercício 11-C:
1. Elabore um software que permita ao introduzir a nota de
uma disciplina informar se o aluno está aprovado ou
reprovado na disciplina.
2. Considere uma escala de 0 a 20 em que de 9,5 a 20 o
aluno deverá transitar.
Formador: Henrique Fidalgo
Exercício 12-C:
1. Elabore um software que ao introduzir as notas das
disciplinas de Matemática, de Português e de Inglês de
determinado aluno informe qual a sua média e se a sua
média é positiva ou negativa.
2. Considere uma escala de 0 a 20 em que de 9,5 a 20 a
média é positiva.
Formador: Henrique Fidalgo
Exercício 13-C:
1. Elabore um software que adicione 50€ ao salário de um
funcionário, caso este seja igual ou inferior a 500€.
Formador: Henrique Fidalgo
Correcção - Exercício 13-C:
#include <stdio.h>
main()
{
float salario;
printf("Introduza o salario\n");
scanf("%f", & salario);
if(salario<=500)
{
salario=salario+50;
printf("O salario e: %.2f ", salario);
}
else
{
printf("Nao tem direito a subsidio por ultrapassar os 500 euros de ordenado\n");
}
system("PAUSE");
}
Formador: Henrique Fidalgo
Correcção(outra versão) - Exercício 13-C:
#include <stdio.h>
main()
{
float salario;
printf("Introduza o salario\n");
scanf("%f", & salario);
if(salario<=500)
printf("O salario e: %.2f ", salario+50);
//a instrução %.2f permite limitar o número de casas decimais a duas neste caso
else
printf("Nao tem direito a subsidio por ultrapassar os 500 euros de ordenado\n");
system("PAUSE");
}
Formador: Henrique Fidalgo
Instruções if-else encadeadas
Existem situações em que o teste de uma condição não é
suficiente para tomar uma decisão. Pode ser necessário testar
mais do que uma condição.
Exemplo: Escreva um programa que solicite um salário ao
utilizador e mostre o imposto a pagar…
•
Se o salário for negativo ou zero mostre que o utilizador errou ao
introduzir os dados
•
Se o salário for maior que 1000 para 10% de imposto, senão paga
apenas 5%.
Formador: Henrique Fidalgo
Instruções if-else encadeadas
#include <stdio.h>
#include <stdlib.h>
main()
{
float salario;
printf("Qual o salario? \n");
scanf("%f", & salario);
if (salario<=0)
printf("Valor inválido\n");
else
if (salario>1000)
printf("Imposto = %.2f\n", salario*0.10);
else
printf("Imposto = %.2f \n", salario*0.05);
system("PAUSE");
}
Formador: Henrique Fidalgo
Exercício 14-C:
1. Elabore um software que através da introdução de um
salário calcule quanto o funcionário terá de pagar de
imposto tendo em atenção a seguinte tabela:
Salário
Taxa
<1000
5%
>=1000 e < 5000
11%
>= 5000
35%
Formador: Henrique Fidalgo
Exercício 15-C:
1. Elabore um software que permita informar qual o
escalão a que pertence um jogador de futebol através
da introdução da sua idade:
Infantis <=10 anos
Iniciados <=12 anos
Juvenis <= 16 anos
Juniores <= 18 anos
Séniores > 18 anos
Formador: Henrique Fidalgo
Exercício 16-C:
1. Elabore um software que permita informar pela
introdução da idade de um individuo se este é criança
(menor que 13 anos), adolescente (menor que 18
anos), adulto (maior que 18).
Formador: Henrique Fidalgo
Exercício 17-C:
• Escreva um programa capaz de identificar se uma pessoa
é anã, gigante ou de estatura normal. As condições são
as seguintes:
• Altura<1.40m (Anã)
• 1.40m=<Altura<=2.00m (Estatura normal)
• Altura>2.00m (Gigante)
Formador: Henrique Fidalgo
Exercício 18-C:
• Implemente um programa que receba o peso de uma
pessoa e o seu sexo, e indique o seu estado actual:
Masculino
Feminino
Peso
Estado actual
Peso
Estado actual
..50
Muito Magro
..40
Muito Magra
51..60
Magro
41..50
Magra
61..80
Equilibrado
51..65
Equilibrada
81..90
Gordo
66..80
Gorda
91..
Muito Gordo
81..
Muito Gorda
Formador: Henrique Fidalgo
A instrução switch
A instrução switch adapta-se à tomada de decisões em
que o número de possibilidades é elevada (em geral maior
do que 2, senão usa-se o if-else), de forma a reduzir a
complexidade de if-else consecutivos.
Formador: Henrique Fidalgo
Sintaxe - switch
switch (expressão)
{
case item_1: instrução_1; break;
case item_2: instrução_2; break;
}
Formador: Henrique Fidalgo
Sintaxe - switch
#include <stdio.h>
#include <stdlib.h>
main()
{
char est_civil;
printf("C - Casado \n");
printf("S - Solteiro \n");
printf("V - Viuvo \n");
printf("D - Divorciado \n");
printf("Introduza a letra correspondente ao seu estado Civil\n");
scanf("%c", & est_civil);
switch(est_civil)
{
case 'c':printf(" CASADO\n");break;
case 's':printf(" SOLTEIRO\n");break;
case 'v':printf(" VIUVO\n");break;
case 'd':printf(" DIVORCIADO\n");break;
default:printf(" Estado civil incorrecto\n");
}
system("PAUSE");
}
Formador: Henrique Fidalgo
Exercício 19-C:
Elabore um programa que permita ler o seu peso na terra,
escolher um planeta, e calcular o seu peso nesse planeta. A
relação de planetas é:
A fórmula de cálculo da gravidade é:
PesoNoPlaneta = PesoNaTerra / 10 * GravidadeRelativa
Formador: Henrique Fidalgo
Exercício 20-C:
Elabore um programa que calcule através da introdução do
salário, o imposto pago por mulheres e por homens, sabendo
que as mulheres pagam 10% de imposto e que os homens
pagam 15%.
Formador: Henrique Fidalgo
Exercício 21-C:
Escreva um programa que indique o número de dias de
determinado mês, através da introdução do mês.
Formador: Henrique Fidalgo
Exercício 22-C:
Elabore um programa que calcule através da introdução do
número do menu o montante a pagar pelo cliente:
N.º
Menu
Preço
1
Mini Hamburger
5,35 €
2
Mega Hamburger
6,15 €
3
Giga Hamburger
7,50 €
4
Tera Hamburger
8,00 €
5
Mega Salada
4,50 €
6
Giga Salada
5,00 €
Formador: Henrique Fidalgo
Exercício 23-C:
Elabore um programa que calcule através da introdução da
da marca de um automóvel e da distância de determinada
viagem, qual o consumo esperado.
N.º
Carro
Consumo
(L/100)
1
Opel Corsa CDTI
4,5
2
Peugeot 207 HDI
5,5
3
Skoda Fabia TD
5,6
4
Mercedes C220 D
7
5
Renault Mégane CDI
5
6
Seat Ibiza TDI
5,5
Formador: Henrique Fidalgo
Exercício 24-C (calculadora):
Construa um programa que lê do teclado dois números e uma
opção carácter que representa uma opção aritmética (+ - * /), e
faça a operação aritmética pretendida e escreva o resultado no
monitor.
A – Soma
S – Subtracção
M – Multiplicação
D – Divisão
Tenha em atenção que não pode fazer divisão por zero, pelo que o
deve imprimir uma mensagem de erro.
Formador: Henrique Fidalgo
Exercício 25-C :
Construa um programa que permite calcular a área de determinada
figura geométrica escolhida pelo utilizador:
N.º
Figura
Fórmula de cálculo
1
Quadrado - Rectângulo
area = lado*lado2
2
Triângulo
Area = base*altura/2
3
Circunferência
Area = 3,14*raio*raio
Formador: Henrique Fidalgo
Exercício 26-C :
Construa um programa que permite calcular o câmbio entre a
moeda euro e as unidades monetárias do quadro abaixo:
N.º
Moeda
Câmbio
A
Franco Suíço
1,465
B
Dólar
1,367
C
Pesos
18,013
D
Reais
2,568
Formador: Henrique Fidalgo
Exercício 27-C :
Construa um programa que permita converter uma temperatura
introduzida em Celsius para outra escala, conforme a tabela
abaixo:
N.º
Unidade
Fórmula
A
Fahrenheit
graus × 1,8 + 32
B
Kelvin
graus + 273,15
C
Rankine
graus× 1,8 + 32 + 459,67
D
Réaumur
graus × 0,8
Formador: Henrique Fidalgo
Exercício 28-C :
A empresa XPTO necessita de um programa que calcule qual o desconto
a aplicar a determinado cliente conforme a tabela abaixo e o montante
final a pagar pelo cliente: (Nota: Utilize o “switch” e “if-else”.)
N.º
Unidade
Compra
Desconto
A
Óptimo
Cliente
>250€
>100€
outras
40%
25%
15%
B
Bom Cliente
>250€
>100€
outras
30%
15%
10%
C
Cliente
Razoável
>250€
>100€
outras
20%
10%
5%
D
Cliente
Normal
>250€
>100€
outras
10%
5%
-
Formador: Henrique Fidalgo
Ciclos – while
A instrução while (enquanto), executa uma instrução ou
bloco de instruções enquanto determinada condição for
verdadeira. A sua sintaxe é:
…
while (condição)
{
contador;
instruções;
}
Formador: Henrique Fidalgo
Contador
• A instrução matemática contador é definida com a
seguinte estrutura:
contador = contador + 1;
A sua função permite contar o número de vezes que o ciclo se
repete e é essencial no ciclo “while”.
Pode ainda ser representada com a seguinte estrutura:
contador ++;
Formador: Henrique Fidalgo
Acumulador
• A par do contador o acumulador é uma fórmula
matemática muito utilizada dentro dos ciclos.
acumulador = acumulador + variável;
A sua função permite ir somando valores dentro do ciclo:
Utilizador introduz o valor 10:
acumulador = acumulador + 10; (acumulador passa a ser 10)
Utilizador introduz o valor 5:
acumulador = 10 + 5; (acumulador passa a ser 15)
…
Formador: Henrique Fidalgo
Ciclos - while
Exemplo
…
while (numero<10)
{
numero = numero + 1;
printf(“Isto é um ciclo”);
}
...
Formador: Henrique Fidalgo
Ciclos - while
Exemplo:
Escreva um programa que coloque no ecrã os primeiros 10
números inteiros. (1, 2, 3, …,10)
Formador: Henrique Fidalgo
Ciclos - while
Resolução:
#include <stdio.h>
main()
{
int i=1;
while (i<=10)
{
printf(“%d\n”, i);
i=i+1;
}
}
Formador: Henrique Fidalgo
Exercício 29-C:
Implemente um programa que permita ler 10 números inteiros
e que no final da leitura apresente a soma de todos eles e a
sua média. Utilize para isso uma estrutura de repetição while.
Formador: Henrique Fidalgo
Exercício 29-C:(resolução)
#include <stdio.h>
#include <stdlib.h>
main()
{
int n=1;
float num=0,soma=0;
while(n<=10)
{
printf("Introduza um inteiro:");
scanf("%f",&num);
soma=soma+num;
n=n+1;
}
printf ("A soma e %f e a sua media e %f", soma, soma/10);
system("PAUSE");
}
Formador: Henrique Fidalgo
Exercício 30-C:
Construa um conversor electrónico que permita ler um valor
em euros e o converta para dólares.
Este programa deve permitir fazer quantas conversões o
utilizador quiser, devendo apenas terminar quando for inserido
o valor zero no campo das moedas.
1 € = 1,428 dólar
Formador: Henrique Fidalgo
Exercício 30-C: (Resolução)
#include <stdio.h>
#include <stdlib.h>
main()
{
int valor,cambio;
while(valor!=0)
{
printf("Introduza o valor a calcular:");
scanf("%d",&valor);
cambio=valor*1.428;
printf ("o valor em dolares e %d\n", cambio);
}
system("PAUSE");
}
Formador: Henrique Fidalgo
Exercício 31-C
Elabore um programa que permita calcular a média de vários
números introduzidos pelo utilizador.
Formador: Henrique Fidalgo
Exercício 32-C:
Faça um programa que escreve no monitor a mesma frase 10
vezes. E depois faça com que o programa mostre o número de
cada linha no início e no final da linha, conforme ex:
1 Sou um programa C! 1
2 Sou um programa C! 2
3 Sou um programa C! 3
Formador: Henrique Fidalgo
Exercício 33-C:
Faça um programa que mostra no monitor os números de 1
ate 1000.
Formador: Henrique Fidalgo
Exercício 34-C:
Faça um programa que calcula a tabuada de um número
introduzido pelo utilizador.
Formador: Henrique Fidalgo
Exercício 35-C:
Elabore um programa que calcule o total a pagar por determinado cliente através
da introdução do número do menu.
O software deverá permitir a soma de vários menus e deverá terminar se for
introduzido o número 0.
N.º
Menu
Preço
1
Mini Hamburger
5,35 €
2
Mega Hamburger
6,15 €
3
Giga Hamburger
7,50 €
4
Tera Hamburger
8,00 €
5
Mega Salada
4,50 €
6
Giga Salada
5,00 €
0
SAIR
Formador: Henrique Fidalgo
Exercício 36-C:
Elabore um programa que permite efectuar operações de crédito ou débito numa
conta bancária. O programa deverá perguntar qual o saldo inicial da conta e qual a
operação que o utilizador pretende efectuar (débito ou crédito), assim como o
montante a debitar, actualizando o saldo da conta sempre que se efectue uma
operação. No final deverá devolver o saldo da conta.
Opcão
Menu
Cálculo
D
Débito
saldo - montante
C
Crédito
saldo + montante
S
Sair
-
Formador: Henrique Fidalgo
Exercício 37-C:
Elabore um programa que calcule o total a pagar por determinado cliente através
da introdução da letra correspondente do produto.
O software deverá permitir a soma de vários produtos e no final deverá permitir
aplicar determinado desconto segundo uma tabela de descontos
N.º
Menu
Preço
1
CAMISOLA
15,00€
2
CALÇA
20,00 €
3
CAMISA
17,50 €
4
CASACO
50,00 €
5
SAPATOS
30,50 €
6
MEIA
5,00 €
0
SAIR
Opção
DESCONTO
1
10%
2
20%
3
30%
4
40%
5
50%
0
0%
Formador: Henrique Fidalgo
Exercício 38-C: (Revisão)
Um ciclone tropical consiste em uma tempestade muito violenta que, sob
determinadas condições, adquire um movimento de rotação em torno de uma
região de baixa pressão atmosférica. Um ciclone pode atingir um diâmetro de
até 500 km. Furacões são os mais violentos desses ciclones e chegam a
produzir ventos de até 320 km/h. Na tabela abaixo, são apresentados alguns
dados relativos à classificação dos furacões segundo a escala Saffir-Simpson:
classificação
velocidade dos ventos
(km/h)
tempestade tropical
62 a 118
furacão de categoria 1
119 a 153
furacão de categoria 2
154 a 177
furacão de categoria 3
178 a 209
furacão de categoria 4
210 a 249
furacão de categoria 5
maior que 249
Escreva um programa que leia a
velocidade do vento aferida durante
uma tempestade e apresente ao
utilizador a classificação do furacão
caso a tempestade possa ser
classificada como tal.
Formador: Henrique Fidalgo
Exercício 39-C: (Revisão)
Numa competição de ginástica olímpica a nota é determinada
por um painel de seis juízes. Cada um dos juízes atribui uma
nota entre zero e dez para o desempenho do atleta e é
calculada a média. Escreva um programa que leia 6 notas entre
zero e dez e calcule a nota a atribuir ao atleta.
Formador: Henrique Fidalgo
Exercício 40-C: (Revisão)
Construa um programa que calcule o valor e a gravidade de contra-ordenações de
velocidade através da leitura da velocidade a que o veículo foi detectado assim
como da localização.
São contra-ordenações leves:
Excesso de velocidade até 30km/h fora das localidades;
Excesso de velocidade até 20km/h dentro das localidades;
Valor da coima: de 60€ a 300€;
Sem sanção inibitória
São contra-ordenações graves:
Excesso de velocidade superior a 30km/h fora das localidades;
Excesso de velocidade superior a 20km/h dentro das localidades;
Valor da coima: de 120€ a 300€
Sanção inibitória: de 1 mês a 1 ano;
São contra-ordenações muito graves:
Excesso de velocidade superior a 60km/h fora das localidades;
Excesso de velocidade superior a 40km/h dentro das localidades;
Valor da coima: de 300€ a 1500€
Sanção inibitória: de 2 meses a 2 anos.
Formador: Henrique Fidalgo
Exercício 41-C: (Revisão)
Desenvolva um programa em C para ler uma quantidade N de
alunos. Ler a nota de cada um dos N alunos e calcular a média
aritmética das notas. Contar quantos alunos estão com a nota
acima de 10.
Obs.: Se nenhum aluno tirou nota acima de 10, mostrar
mensagem: Não há nenhum aluno com nota acima de 10.
A escala será de 0 a 20.
Formador: Henrique Fidalgo
Exercício 42-C: (Revisão)
Desenvolva um programa em C que solicite a idade de
várias pessoas e mostre:
Total de pessoas com menos de 21 anos.
Total de pessoas com mais de 50 anos.
O programa termina quando idade for = 0.
Formador: Henrique Fidalgo
Exercício 43-C: (Revisão)
Desenvolva um programa em C que permita calcular o resultado de
um questionário aplicado a um determinado número de famílias. O
programa deverá responder aos seguintes requisitos:
Perguntar ao utilizador quantas famílias responderam ao questionário.
Para cada família perguntar:
Residência: (1: continente 2:Açores 3:Madeira)
Idade do pai:
Idade da mãe:
Quantos filhos:
Rendimento familiar:
Os resultados das seguintes consultas devem ser apresentados após a fase de recolha
dos dados:
•Quantas familias residem no continente e em cada uma das ilhas.
•Qual número médio de filhos por casal
•Rendimento médio familiar dos casais com 2 filhos ou menos
•Quantidade de familias com mais do que dois filhos
•Idade media dos pais.
Formador: Henrique Fidalgo
Caracteres ASCII
A ASCII (American Standard Code for Information Interchange), que em
português significa "Código Padrão Americano para o Intercâmbio de
Informação") é uma codificação de caracteres de sete bits baseada no
alfabeto inglês. Os códigos ASCII representam texto em computadores,
equipamentos de comunicação, entre outros dispositivos que trabalham com
texto.
Exemplo de uma tabela:
http://www.computerhope.com/ascii.gif
Formador: Henrique Fidalgo
Caracteres ASCII
/*Exemplo de um programa que converte um número decimal em código
ASCII*/
#include <stdio.h>
main()
{
int numero;
printf("Introduza o numero a converter para ASCII!\n");
scanf("%d", & numero);
printf("%d=%c",numero,numero);
system("PAUSE");
}
Formador: Henrique Fidalgo
Caracteres ASCII
Elabore através de código e utilizando os caracteres ASCII a seguinte
figura:
Formador: Henrique Fidalgo
Caracteres ASCII
• Utilizando os caracteres ASCII aplique uma moldura a um
menu de um exercício à sua escolha.
1 – Calça
2 – Camisola
…
Formador: Henrique Fidalgo
CICLO “FOR”
Formador: Henrique Fidalgo
Ciclo “for”
A instrução for, adapta-se particularmente a situações em
que o número de interacções é conhecido à partida. A
sintaxe é:
for (inicializações; condição; pós-instrução)
instrução;
Formador: Henrique Fidalgo
Ciclo “for”
Consideremos o programa que escreve 10 números de 1
a 10 no monitor com o ciclo while:
#include <stdio.h>
main()
{
int numero=1;
while (numero<=10)
{
printf(“%d\n“,i);
i=i+1;
}
system("PAUSE");
}
Formador: Henrique Fidalgo
Ciclo “for”
Vejamos agora como fica com o ciclo “for”:
#include <stdio.h>
main()
{
int i;
for( i=1; i<=10; i++)
printf(“%d\n“,i);
system("PAUSE");
}
Formador: Henrique Fidalgo
Exercício 45-C:
Desenvolva um programa em C que permita calcular a
média das notas de um número de alunos introduzido pelo
utilizador.
Nota: Utilize o ciclo “for”
Formador: Henrique Fidalgo
Exercício 46-C:
Faça um programa que calcula a tabuada de um número
introduzido pelo utilizador.
Nota: Utilize o ciclo “for”
Formador: Henrique Fidalgo
Exercício 47-C:
Elabore um programa que permita introduzir 10 notas de
alunos com uma escala de 0 a 20 em que as notas acima
de 10 são positivas e abaixo negativas. O programa
deverá devolver o número de negativas e positivas
introduzidas.
Nota: Utilize o ciclo “for”
Formador: Henrique Fidalgo
GERAR NÚMEROS
ALEATÓRIOS
random
Formador: Henrique Fidalgo
rand
Sintaxe
#include <time.h>
srand ( time(NULL) );
alea=rand()%100;
Formador: Henrique Fidalgo
Exemplo
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int alea;
srand ( time(NULL) );
alea=rand()%100;
printf ("Um numero aleatorio e %d\n", alea);
system("PAUSE");
return 0;
}
Formador: Henrique Fidalgo
Exercício 48-C:
Elabore um jogo que gera um número aleatório entre 0 e
100 em que o utilizador terá de descobrir o número gerado
através das indicações do computador que deverá mostrar
os avisos:
“O número é maior” – sempre que o número introduzido
seja maior do que o introduzido
“O número é menor” – sempre que o número introduzido
seja menor que o introduzido
Se o número for igual deverá mostrar o seguinte:
“PARABÉNS” “Acertou em X tentativas” em que X é o
número de tentativas.
Formador: Henrique Fidalgo
FUNÇÕES
Formador: Henrique Fidalgo
Funções
• Embora ainda sem saber como escrever uma
função, já as temos utilizado ao longo dos nossos
programas. São exemplos as funções printf,
scanf, getchar.
• É absolutamente indispensável que um
programador de C domine completamente a
escrita de programas de forma modelar, através
de procedimentos e também funções.
Formador: Henrique Fidalgo
Funções
• Escreva o seguinte programa, utilizando o ciclo “for” que
permite colocar uma linha de 20 asteriscos no ecrã.
#include <stdio.h>
main ()
{
int i;
for (i=1; i<20; i++)
putchar ('*');
getchar();
}
Formador: Henrique Fidalgo
Funções
#include <stdio.h>
linha()
{
int i;
for (i=1; i<20; i++)
putchar ('*');
printf("\n");
}
main ()
{
linha();
printf (" Funcao Linha\n");
linha();
getchar();
}
Formador: Henrique Fidalgo
Vectores
Um vector (vulgarmente conhecido por Array) não é mais
que um conjunto de elementos consecutivos, todos do
mesmo tipo, que podem ser acedidos individualmente a
partir de um único nome.
Exemplo de um vector que representa as comissões de um empregado ao
longo do ano:
100
200
300
150
450
120
300
320
120
230
400
200
Janeiro
Fevereiro
Março
Abril
Maio
Junho
Julho
Agosto
Setembro
Outubro
Novembro
Dezembro
Formador: Henrique Fidalgo
Vectores
Como declarar variáveis do tipo vector?
Sintaxe:
Tipo nome_variável [nº de elementos]
Em código:
int comissoes [12];
int – tipo de dados do vector (neste caso inteiros)
comissoes – nome do vector
[12] – número de posições do vector (neste caso 12)
100
200
300
150
450
120
300
320
120
230
400
200
Janeiro
Fevereiro
Março
Abril
Maio
Junho
Julho
Agosto
Setembro
Outubro
Novembro
Dezembro
Formador: Henrique Fidalgo
Vectores
Como introduzir valores nas posições do vector?
Vamos colocar o valor 300 no mês de Março:
comissoes [3] = 300;
Um caso mais prático:
printf ("Qual a comissao do mês de Março?\n");
scanf("%d",& marco);
comissao[3]=marco;
300
Janeiro
Fevereiro
Março
Abril
Maio
Junho
Julho
Agosto
Setembro
Outubro
Novembro
Dezembro
Formador: Henrique Fidalgo
Vectores
Mostrar valores das posições do vector:
printf (“A comissão do mês de Março é: %d\n”, comissao [3]);
300
Janeiro
Fevereiro
Março
Abril
Maio
Junho
Julho
Agosto
Setembro
Outubro
Novembro
Dezembro
Formador: Henrique Fidalgo
Vectores – A sintaxe completa
#include <stdio.h>
#include <stdlib.h>
main()
{
int marco,comissao[12];
printf ("Qual a comissao do mês de Março?\n");
scanf("%d",& marco);
comissao[3]=marco;
printf (" A comissao de Marco e: %d\n", comissao[3]);
system("PAUSE");
return 0;
}
Formador: Henrique Fidalgo
Vectores
Efectuar cálculos com as posições do vector:
Se considerar-mos que a comissão do mês de Abril é o dobro da
comissão de Março, como a representamos no vector?
comissao[4] = comissao[3] * 2;
Janeiro
Fevereiro
300
600
Março
Abril
Maio
Junho
Julho
Agosto
Setembro
Outubro
Novembro
Dezembro
Formador: Henrique Fidalgo
Vectores de caracteres
Também podemos utilizar vectores de caracteres:
Exemplo de um vector que permita a introdução das vogais:
char vogal [5];
vogal [0] = ‘a’;
vogal [1] = ‘e’;
vogal [2] = ‘i’;
vogal [3] = ‘o’;
vogal [4] = ‘u’;
a
e
i
o
u
vogal [0]
vogal [1]
vogal [2]
vogal [3]
vogal [4]
Os índices de um vector variam entre 0 e n-1, em que n é o número de
índices que queremos dimensionar o vector.
Formador: Henrique Fidalgo
Exercício 49-C
Escreve um programa que realize a leitura dos salários
pagos a um individuo durante um ano. Em seguida deverá
mostrar os valores mensais e o total anual.
Nota: Utilize um vector
Formador: Henrique Fidalgo
Exercício 50-C
Escreve um programa que realize a leitura das notas de 6
disciplinas de um aluno e que no final devolva as notas de
cada disciplina e a sua média.
Nota: Utilize um vector
Formador: Henrique Fidalgo
Vectores
• E quando a dimensão do vector é definida pelo utilizador?
main()
{
int i, n, notas;
printf ("Quantas notas quer inserir?\n");
scanf("%d",& n);
int vector[n];
for (i=0; i<n; i++)
{
printf ("Quais as notas?\n");
scanf("%d",& vector[i]);
}
Formador: Henrique Fidalgo
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, n, notas;
printf ("Quantas notas quer
inserir?\n");
scanf("%d",& n);
int vector[n];
for (i=0; i<n; i++)
{
printf ("Quais as notas?\n");
scanf("%d",& vector[i]);
}
for (i=0; i<n; i++)
{
printf ("Notas\n %d\n",
vector[i]);
}
system("PAUSE");
return 0;
}
Formador: Henrique Fidalgo
Exercício 51-C
• Durante uma corrida de automóveis com N voltas de
duração foram anotados para um piloto, na ordem, os
tempos registados em cada volta. Elabore um programa
em C para ler os tempos das voltas e calcular:
• Tempo médio das voltas;
• Mostrar todos os tempos das voltas
Nota: Utilize um vector
Formador: Henrique Fidalgo
Vectores Multi – Dimensionais / Matrizes
Até agora vimos como trabalhamos com vectores com uma
única dimensão. Vamos agora ver como se podem usar
vectores com mais do que uma dimensão.
Formador: Henrique Fidalgo
Vectores Multi – Dimensionais / Matrizes
A declaração de um vector com várias dimensões é
realizada através da seguinte sintaxe:
tipo vector [dim1] [dim2]
Formador: Henrique Fidalgo
Vectores Multi – Dimensionais / Matrizes
A título de exemplo, vamos observar como poderíamos
implementar o famoso Jogo do Galo recorrendo a um
vector como tabuleiro de jogo.
x
O
x
O
Formador: Henrique Fidalgo
Vectores Multi – Dimensionais / Matrizes
Cada quadrícula vai conter um “X”, ou um “O” ou um
espaço em branco, assim trata-se de um vector de
caracteres.
A declaração deverá ser realizada do seguinte modo:
char galo[3][3]
x
O
x
O
Formador: Henrique Fidalgo
Vectores Multi – Dimensionais / Matrizes
No caso anterior aquilo que declarámos não foi uma matriz
mas antes um vector de 3 posições (galo[3]), em que cada
uma destas posições é formada por um vector de 3
posições.
galo [0]
galo [1]
galo [2]
x
O
x
O
Formador: Henrique Fidalgo
Vectores Multi – Dimensionais / Matrizes
Se declararmos um vector:
int vector [3] [4]
vector [0]
vector [1]
vector [2]
Formador: Henrique Fidalgo
Exercício 52-C
• Elabore um programa que permita introduzir o índice da
disciplinas:
P – Português
I – Inglês
M – Matemática
E – Educação Física
As notas das respectivas disciplinas e a média das mesmas.
Nota: Utilize um vector multi-dimensional
Exemplo:
P
I
M
nota
nota
nota
E
nota
Formador: Henrique Fidalgo
Exercício 53 - C
• Elabore um programa que permita calcular as ajudas de custo
mensais relativas a deslocações em veículo próprio de determinado
colaborador.
• As ajudas de custo são calculadas por Km e têm um custo de
0,35€/Km
• kms efectuados*0.35
• O programa deverá permitir a entrada tanto dos dias como dos kms
efectuados em cada dia e calcular automáticamente o valor mensal a
pagar ao colaborador.
• Exemplo:
1
2
3
…
120
80
150
…
• Nota: Poderá utilizar menus para permitir a introdução de dados, a
leitura dos mesmos e sair do programa.
Formador: Henrique Fidalgo
Exercício 54 - C
• Uma empresa de informática presta os seguintes serviços com os
respectivos preços:
1 – Assistência ao Domicilio – 50€
2 – Assistência na Loja – 30€
3 – Formatação – 30€
4 – Recuperação de dados – 100
5 – Remoção de vírus
6 – Instalação de software – 25
7 – Deslocação km – 0,35€
Vector
• Utilizando os vectores elabore um programa que permita calcular o
total a pagar pelo cliente conforme os serviços prestados.
• O programa deverá ainda mostrar o IVA a pagar pelo cliente e o
montante final com IVA.
• Nota: O cliente poderá ter mais do que um serviço.
Download

LINGUAGEM C - jorgeplacido