estruturas de controle em linguagem c -...
TRANSCRIPT
![Page 1: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/1.jpg)
Estruturas de Controle em Linguagem C
Introdução à Ciência da Computação
Rosane Minghim
Apoio na confecção: Carlos Elias A. Zampieri
Danilo Medeiros Eler
Rogério Eduardo Garcia
Renato Rodrigues
Baseado na Apostila: Curso Introdutório de Computação por R. Minghim e G. P. Telles1
![Page 2: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/2.jpg)
Blocos de Comandos
Os delimitadores { e } são necessários toda vez que existe mais de um comando num bloco
{ comandos;}
2
![Page 3: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/3.jpg)
Escolha Simples
Pode-se selecionar a sequência de comandos a ser executada
Formato:
if (condição)
{
Comandos;
}
?simnão
3
![Page 4: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/4.jpg)
Exemplo de Escolha Simples
if (empregado == diarista)
salario = salario_base + dias_trabalhados
* valor_do_dia;
if (empregado == diarista)
{
diarista = diarista + 1;
adicional = dias_trabalhados * valor_do_dia;
salario = salario_base + adicional;
}
4
![Page 5: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/5.jpg)
Escolha Composta
Formato:
if (condição)
comandos;
else
comandos;?
simnão
5
![Page 6: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/6.jpg)
Exemplo
if (empregado == diarista)
{
salario = salario_base +
dias_trabalhados * valor_do_dia;
}
else
{
complemento = fator*complemento_basico;
salario = salario_base + complemento;
}
6
![Page 7: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/7.jpg)
Regras Básicas
if (empregado == diarista){ salario = salario_base + dias_trabalhados * valor_do_dia;}else{ adicional = dias_trabalhados * valor_do_dia; salario = salario_base + adicional;}
Usar sempre '{', '}' e ';' mesmo que seja redundante para definir os comandos a serem executados dentro da escolha e fim de comando
Atenção com os ';' (ponto e vírgula) ao programar Sempre abra e feche as chaves ('{' e '}') ao iniciar um bloco de
comandos, isto evita esquecer de adicioná-los
7
![Page 8: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/8.jpg)
Exemplo#include <stdio.h>
int main(){ int numero1,numero2,numero3,maior; printf(“Digite o numero 1: ”); scanf(“%d”,&numero1); printf(“Digite o numero 2: ”); scanf(“%d”,&numero2); printf(“Digite o numero 3: ”); scanf(“%d”,&numero3); if (numero1>numero2) { if ((numero2>numero3)||(numero2==numero3)) { maior = numero1; } else { if (numero1>numero3) { maior = numero1; } else { maior = numero3; } } }
8
else { if ((numero2>numero3)||(numero2==numero3)) { maior = numero2; } else { maior = numero3; } } printf(“Maior: %d\n“,maior); return 0;}
![Page 9: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/9.jpg)
Exemplo - Simplificado#include <stdio.h>
int main(){ int numero1,numero2,numero3,maior; printf("Digite o numero 1: "); scanf("%d",&numero1); printf("Digite o numero 2: "); scanf("%d",&numero2); printf("Digite o numero 3: "); scanf("%d",&numero3);
maior = numero1; if (numero2 > maior) {
maior = numero2; } if (numero3 > maior) { maior = numero3; } printf("Maior: %d\n",maior); return 0;}
9
![Page 10: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/10.jpg)
Escolhas Múltiplas Permite escolher uma entre várias alternativas Formato:
switch (expressão)} case constante1: comandos; break; case constante2:
comandos;
break; ... case constanteN: comandos; break; default: comandos;}
![Page 11: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/11.jpg)
Exemplo#include <stdio.h> #define FATOR_CATEGORIA_1 1.0#define FATOR_CATEGORIA_2 0.8#define FATOR_CATEGORIA_3 0.6#define FATOR_GERAL 0.2#define TAXA_BASICA 20.00
int main(){ int categoria; float taxa;
scanf("%d",&categoria);
taxa = TAXA_BASICA;
switch (categoria) {
case 1:
taxa = taxa - (TAXA_BASICA *
FATOR_CATEGORIA_1); break; case 2: taxa = taxa - (TAXA_BASICA * FATOR_CATEGORIA_2); break; case 3: taxa = taxa - (TAXA_BASICA * FATOR_CATEGORIA_3); break; default: taxa = taxa - (TAXA_BASICA * FATOR_GERAL); } printf("%.3f\n",taxa);}
![Page 12: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/12.jpg)
Preocupações:
1 - Maior – sempre fazer o algoritmo antes
2 - Organização do código - nomes apropriados de variáveis e constantes - definir, adotar e manter um padrão pra o nome de variáveis - inicializações devidas - comentários adequados
3 - Diálogo com o usuário - mensagens adequadas de entrada e saída - formatação que facilite a leitura - cuidados com maiúsculas e minúsculas, além de outros caracteres ambíguos.
4 - Checagem de erros12
![Page 13: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/13.jpg)
Repetição por Condição
Uma das formas de repetir um conjunto de comandos de um algoritmo é subordiná-los a um comando de repetição usando uma estrutura da forma:
?sim
não
13
while (condição)
{
bloco de comandos;
}
![Page 14: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/14.jpg)
Exemplo
Algoritmo calcula_senos
variável n, i: inteiro
leia(n) i ← 0 enquanto i ≤ n faça escreva(seno(i)) i ← i + 1 fim enquantofim
#include <stdio.h>#include <math.h>
int main(){ int n,i; float angulo; scanf(“%d”,&n); i=0; while (i <= n) { //Converte angulo i para //radianos angulo = i * M_PI / 180; printf(“seno de %.1f graus= %.2f\n”,angulo,sin(angulo)); i = i + 1; } return 0;}
14
![Page 15: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/15.jpg)
Repetição por Condição 2
Outra forma de repetir um conjunto de comandos de um algoritmo, muito parecida a estrutura enquanto, é utilizando o seguinte comando de repetição:
?
sim
não
15
do
{
bloco de comandos;
} while (condição);
Observe que nesta estrutura primeiro é executado o bloco de comandos e somente após é feito o teste condicional!
![Page 16: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/16.jpg)
Exemplo#include <stdio.h>#include <math.h>
int main(){ int n,i; float angulo; scanf(“%d”,&n); i=0; do { //Converte angulo i para //radianos angulo = i * M_PI / 180; printf(“seno de %.1f graus= %.2f\n”,angulo,sin(angulo)); i = i + 1; } while (i <= n); return 0;}
16
Algoritmo calcula_senos
variável n, i: inteiro
leia(n) i ← 0 repita escreva(seno(i)) i ← i + 1 até (i ≤ n)fim
![Page 17: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/17.jpg)
Repetição por Contagem
Na iteração baseada em contagem, sabe-se antecipadamente quantas vezes um conjunto de comandos vai ser repetido.
Formato:
17
int var;
for (var=valor_inicial;var<valor_final;var+=valor_do_passo)
{
bloco de comandos;
}
![Page 18: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/18.jpg)
Exemplo 1
#include <stdio.h>
int main(){ int n,i; printf(“Digite o final da contagem: “); scanf(“%d”,&n); for (i=1;i<=n;i++) { printf(“%d\n”,i);
} return 0;} 18
![Page 19: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/19.jpg)
Exemplo 2#include <stdio.h>
int main(){ int i,n;
printf(“Conta decrescente\n”); printf(“Digite o valor do inicio da contagem: “); scanf(“%d”,&n);
for (i=n;i>=1;i--) {
printf(“%d\n”,i); } return 0;} 19
![Page 20: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/20.jpg)
Exemplo 3#include <stdio.h>
int main(){ int i,n,meio; printf(“Digite o final da contagem: “); scanf(“%d”,&n);
meio = n/2; for (i=1;i<=meio;i++) { printf(“%d\n”,i*2-1);
} return 0;}
20
![Page 21: Estruturas de Controle em Linguagem C - USPwiki.icmc.usp.br/images/2/26/SCC0120_Rosane-04-algoritmos_contr… · Estruturas de Controle em Linguagem C Introdução à Ciência da](https://reader034.vdocuments.pub/reader034/viewer/2022052101/603bb35b3f95f254154a359e/html5/thumbnails/21.jpg)
Mais exemplos
Nos códigos-exemplo que acompanham esses slides
Tarefa:– Estudar, reproduzir e modificar os códigos
exemplo que acompanham esses slides.
FIM DOS SLIDES
21