Você está na página 1de 26

PROGRAMAÇÃO PARA

ENGENHARIA

Ano lectivo 2022-23


Tema #03:
- Comandos de controlo de fluxo de execução do programa

João José da Costa


joao.costa@isptec.co.ao

Coordenação de Engenharia Informática


Departamento de Engenharias e Tecnologias
Instituto Superior Politécnico de Tecnologias e Ciências
Sumário
1. Comando if, if-else, if-else
if,…
2. Comando switch

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 2


Comandos de Controlo de Fluxos.
“Comandos de Selecção”

“Quem conduz a sua vida é você mesmo(a). Os outros apenas orientam,


induzem, instruem, etc. Portanto você é causador(a) das graças e
desgraças em sua vida.”
Anónimo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 3


Comandos de selecção

 Permitem indicar quais as circunstâncias em que


determinada instrução ou conjunto de instruções
devem ser executada.

 Mecanismo utilizado para definir a instrução (ou bloco


de instruções) a ser realizada mediante uma
determinada condição, expressão ou valor.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 4


Comandos de selecção
 C suporta dois tipos de comandos de selecção: if e
switch. Além disso, o operador ? é uma alternativa ao if
em certas circunstâncias.

Lembrete:
A forma geral do comando if é: • Valor lógico (inteiro???)
if(condição) comando1; • = vs ==
else comando2;

◦ Comando pode ser um único comando, um bloco de comandos


ou nada (no caso de comandos vazios).
◦ A cláusula else é opcional.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 5


Comandos de selecção
 Sempre que exista instrução if-else aninhadas, cada
componente else pertence sempre ao último if (que
ainda não tenha um else associado).

if(condição_1)
if(condição_2)
if(condição_3)
instrução1
else
instrução2
else
instrução3
else
instrução4

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22


Comandos de selecção
 Exemplo
#include <stdio.h>
int main(){
float p1,p2,pj,ex;
printf("Notas: ");
scanf("%f%f%f%f",&p1,&p2,&pj,&ex);
int logico = (p1>=0 && p1<=20)&&(p2>=0 && p2<=20);
if(logico && (pj>=0 && pj<=20)&&(ex>=0 && ex<=20))
{
printf("As notas estão entre 0 e 20 de facto.\n\n");
float nf = (((p1+p2+pj)/3)*0.4+ex*0.6);
if(nf >= 10)
printf("Estudante aprovado.\n");
else
printf("Estudante reprovado.\n");
}else printf("As notas nao estão entre 0 e 20.\n\n");
return 0;
}

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 7


Comandos de selecção
 Podemos utilizar o operador ? para substituir o comandos if-
else na forma geral:
if(condicao) expressao;
else expressao;

 Os corpos de if e else devem ser uma expressão simples -


nunca um outro comando de C.

 O ? é chamado de operador ternário porque ele requer três


operandos. A sua forma geral é:
Exp1 ? Exp2 : Exp3;
◦ onde Exp1, Exp2 e Exp3 são expressões. Note o uso e o
posicionamento dos dois pontos.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 8


Comandos de selecção
 Exemplo
#include <stdio.h>
int main(){
float n1,n2, maior;
printf(“Números: ");
scanf("%f%f",&n1,&n2);
maior = (n1 >= n2) ? n1 : n2; //Utilizou o ?
printf(“O maior entre %f e %f é %f.\n\n“,n1,n2,maior);
return 0;
}

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 9


Perguntas

“Quem conduz a sua vida é você mesmo(a). Os outros apenas orientam,


induzem, instruem, etc. Portanto você é causador(a) das graças e
desgraças em sua vida..
Anónimo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 10


Comandos de selecção
 C tem um comando interno de selecção múltipla,
switch.

 O switch testa sucessivamente o valor de uma


expressão contra uma lista de constantes inteiras ou de
caratere.

 Quando o valor coincide, os comandos associados


àquela constante são executados.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 11


Comandos de selecção
 A forma geral do comando switch é:

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 12


Comandos de selecção
 O default é opcional e, se não estiver presente,
nenhuma acção será realizada se todos os testes
falharem.

 O padrão ANSI C especifica que um switch pode ter


pelo menos 257 comandos case.

 Para obter mais eficiência devemos limitar o número de


comandos case a uma quantidade menor.

 O comando break é um dos comandos de desvio em


C.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 13


Comandos de selecção
 Quando um break é encontrado em um switch, a
execução do programa "salta" para a linha de código
seguinte ao comando switch.

 Exemplo:
#include<stdio.h>
main(){
int n;
printf(“Valor: ”); scanf(“%d”,&n);
switch(n){ case 2: printf(“Acertou”);break; case 7:
printf(“Acertou”);break; default: printf(“Errou”);}
}

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 14


Comandos de selecção
 Há três aspectos importante a saber sobre o comando
switch:

1. O comando switch difere do comando if. porque o switch só


pode testar, enquanto o if pode avaliar uma expressão lógica
ou relacional.

2. Duas constantes case no mesmo switch não podem ter


valores idênticos.

3. Se constantes de caractere são utilizados em um comando


switch, elas são automaticamente convertidas para seus
valores inteiros.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 15


Comandos de selecção
 Podemos ter um switch como parte de uma sequência
de comandos de um outro switch o que chamamos de
switch aninhados.

 Mesmo se as constantes dos cases dos switchs


interno e externo possuírem valores comuns, não
ocorrerão conflitos.
Switch(x){
case 1: switch(y){
case 1: printf(“Ola mundo!”);
}
}

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 16


Perguntas

“Quem conduz a sua vida é você mesmo(a). Os outros apenas orientam,


induzem, instruem, etc. Portanto você é causador(a) das graças e
desgraças em sua vida..
Anónimo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 17


Exercícios
 Elaborar um programa que lê 2 valores A e B (inteiros) e informa
se A é divisível por B ou não.

 Um vendedor precisa de um programa que calcule o preço total


devido por um cliente. O algoritmo deve ler o código de um
produto e a quantidade comprada. Calcular o preço total, usando a
tabela abaixo. Mostre uma mensagem no caso de código inválido.

Código Preço unitário


100 500,23kzs
150 800,00kzs
200, 201, 202 999,87kz

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 18


Capítulo 3:
Comandos de Controlo de Fluxos.
“Comandos de Iteração”

“Quem conduz a sua vida é você mesmo(a). Os outros apenas orientam,


induzem, instruem, etc. Portanto você é causador(a) das graças e
desgraças em sua vida.”
Anónimo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 19


Comandos de iteração

 Comandos de iteração (também chamados laços)


permitem que um conjunto de instruções seja
executado até que ocorra uma certa condição.

 Essa condição pode ser pre-definida (como no laço for)


ou com o final em aberto (como nos laços while e do-
while).

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 20


Comandos de iteração
O Laço for

 O for encontra-se na maioria das linguagens de


programação baseadas em procedimentos, mas em C
tem-se maior flexibilidade e capacidade surpreendentes.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 21


Comandos de iteração
 O Laço for
 A forma geral do comando for é:
for(inicialização; condição; incremento)
comando;
◦ A inicialização é, geralmente, um comando de atribuição que é
utilizado para colocar um valor na variável de controlo do laço.
◦ A condição é uma expressão relacional que determina o
número de iteração.
◦ O incremento define como a variável de controlo do laço
varia cada vez que o laço é repetido.
◦ Deve-se separar as três secções anterior por pontos-e-vírgulas.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 22


Comandos de iteração
Sintaxe Ex: Fazer um programa que mostra
todos os números de 1 até 100
<inicialização> #include <stdio.h>
#include <stdlib.h>
while (condição)
{ main()
<instruções> {
<incremento ou decremento> int i;
i=1; //inicialização
}
while (i<=100) //condição
{ //instrução
printf("\n numero %d" , i);
i++; //incremento
}
system("PAUSE");
}

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 23


Comandos de iteração
Sintaxe Ex: Fazer um programa que mostra
todos os números de 1 até 100
<inicialização> #include <stdio.h>
#include <stdlib.h>
do
{ main()
<instruções> {
<incremento ou decremento> int i;
i=1;
do
} while (condição) {
//intrução
printf("\n numero %d" , i);
i++; //incremento
}while(i<=100);

system("PAUSE");
}

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 24


Exercícios
 Escreva o programa que recebe um número,
verifica se é positvo, caso seja apresenta a
tabuada de deste número.

 Foi feita uma pesquisa entre os habitantes de


uma região. Foram coletados os dados de
idade, sexo (1- mas/2-fem) e salário. Faça um
programa que informe:
◦ a média de salário do grupo;
◦ maior e menor idade do grupo;
◦ quantidade de mulheres com salário até 200usd.

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 25


8. Exercícios de aplicação

 Resolver os exercícios proposto.

“Quem conduz a sua vida é você mesmo(a). Os outros apenas orientam,


induzem, instruem, etc. Portanto você é causador(a) das graças e
desgraças em sua vida..
Anónimo

joao.costa@isptec.co.ao (João José da Costa) @ ISPTEC 2021-22 26

Você também pode gostar