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.