Você está na página 1de 8

Aula 4 – Lab.

de informática e
computadores (14205)
Prof. Gabriel Carneiro
gabrielc@utad.pt

1
Na aula passada
• Palavras-chave: ou, e, if, else, else if,
case
• Estruturas de decisão (if-else e case)
• Expressões e operadores
• Exercícios 6,7,8,9 if (x% 2 == 0) {
printf("x é par");
}
else if (x % 3 == 0) {
printf("x é divisível por 3");
}
else {
printf("x não é par e nem é divisível por
3");
} 3
Objetivos de hoje
Let’s
• Estruturas de controlo de fluxo do programa do this!
• Estruturas de repetição (ciclos): while, dowhile,
for
• Geração de números inteiros

• Palavras-chave: while, do while, for, rand


4
Números aleatórios em C
• Função rand //variável utilizada para salvar o número
int x;
• 3 passos:
• Inclusão da livraria time.h //inicializa o gerador de números aleatórios
como uma semente
• Inicializa o gerador com a srand(time(NULL));
função srand e a variável //gera os números aletório entre 0 e 6 e
time_t soma 1
• Gera o número utilizando a x = (rand() % 7) + 1;
função rand

5
int x;
srand(time(NULL));
x = (rand() % 7) + 1;
Exercício 10 switch (x)
{
case 1: printf("domingo\n");
break;
Escreva um programa que case 2: printf("segunda feira\n");
gere aleatoriamente um break;
case 3: printf("terça feira\n");
inteiro designativo do dia break;
da semana (1 a 7) e case 4: printf("quarta feira\n");
break;
apresente no ecrã a case 5: printf("quinta feira\n");
break;
designação desse dia. case 6: printf("sexta feira\n");
Exemplo: 6 deve aparecer break;
case 7: printf("sábado\n");
sexta break;
default: printf("ERRO: o inteiro não é valido\n");
}

OBS: #include<time.h> return 1;

6
int hora, min, seg, cent;

setlocale(LC_ALL, "Portuguese");
printf("Insira a duração no formato (h:m:s): ");

Exercício 11 scanf("%d:%d:%d", &hora, &min, &seg);

//se os segundos forem maior que 0 o sistema considera que um novo


minuto aconteceu
Uma empresa de telecomunicações if (seg > 0)
min++; // min = min + 1;
cobra a utilização de uma linha
//primeiro caso: menos que uma hora de duração
dedicada para transmissão de dados if (hora == 0)
de acordo com a duração dessa cent = min * 2;
// segundo caso menos que 6 horas de duração
utilização, segundo a seguinte tabela else if (hora <= 6)
//primeira hora + (valor de horas - primeira hora )*60 + qtd de
de preços: minutos
cent = 120 + ((hora-1) * 60 + min);
//terceiro caso mais de 6 horas de duração
else
cent = 120 + 6 * 60 + ( ((hora-7) * 60 + min) / 2);

//ALERNATIVA 1
float euros;
euros = cent / 100.0;
printf("Valor a pagar: %.2f euros\n", euros);
Escreva um programa que, partindo
//ALTERNATIVA 2
da duração da estadia (hora, euro = cent / 100;
cent = cent % 100;
minutos e segundos) calcule o valor printf("Valor a pagar: %d euros e %d cêntimos\n", euro, cent);
7
a ser cobrado. return 1;
Ciclos
• Leitura obrigatória:
https://www.dcc.fc.up.pt/~pbv/aulas/progimp/teoricas/teorica06.ht
ml
• Instrução que executa VÁRIAS VEZES outras estruturas (repetição)
• São controlados por uma expressão lógica
• Em C FALSE == 0, and TRUE != 0

8
Exercício 13 #define N 20

int main()
{
Um grupo de 20 alunos fez int i,count=0;
um exame. Escreva um float nota;

programa que apresente no for (i = 0; i < N; i++)


ecrã o número de alunos que {
printf("Introduza a nota do aluno %d: ",
passaram no exame (>= 9,5). i+1);
scanf("%f",&nota);
if (nota >= 9.5)
count++;
}
printf("Passaram %d alunos\n",count);

return 1;
}

Você também pode gostar