A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aula 6 - Estruturas de Controle

Apresentações semelhantes


Apresentação em tema: "Aula 6 - Estruturas de Controle"— Transcrição da apresentação:

1 Aula 6 - Estruturas de Controle
Ameliara Freire

2 Tipos primitivos Variaveis, constantes, leitura e escrita ainda não são suficientes para formar uma linguagem completa para descricao de programas. Cada programa/algoritmo tem um fluxo de execucao que pode ser definido usando termos especificos de uma linguagem Estrutura sequencial Estrutura de selecao Estrutura de repeticao

3 Estrutura sequencial Impõe uma ordem de cima para baixo e da esquerda para a direita na execucao de um algoritmo. As acoes são separadas por “;” Formato geral: //declaracao de variaveis //corpo do algoritmo acao 1; acao 2; ...

4 Estruturas de selecao/decisao
Permite o uso de condicoes para escolher entre execucoes de diferentes blocos Condicoes são expressoes lógicas relacionais que, quando avaliadas, produzem valor lógico (booleano) Comandos: if if – else switch - case

5 if-else Forma geral if(condicao){
//sequencia de comandos se verdadeiro }else{ // o else é opcional //sequencia de comandos se falso } if(media > 7.0){ printf(“Aprovado”); }else{ printf(“Final ou reprovado”); }

6 Fluxo do if-else condicao if (condicao) { C1; C2; ... Cn; }else { D1;
Dm; } D1; D2; ... Dn; F C1; C2; ... Cn; V

7 Exercicio Altere a funcao que lê as notas do aluno e imprime a média para que a mensagem impressa se comporte da seguinte maneira: Se a média foi maior ou igual a 7.0 a mensagem deve ser “Aprovado”. Caso contrário a mensagem deve ser “Estude mais para a final”.

8 Exercicio O que o programa abaixo faz? #include <stdio.h>
main(){ int a,b; printf(“Digite 2 números: “); scanf(“%d %d”,&a,&b); if (b){ printf(“%f”,a/b); }else { printf(“Não posso fazer a divisao”); }

9 Variacoes do if-else if(condicao 1){ if(condicao 2){ if(condicao 1){
... } if(condicao 1){ C1 }else if (condicao 2){ C2 }else if(condicao 3){ C3 }else{ C4 } if(condicao 1){ ... } if(condicao 2){ if(condicao 3){

10 Importância da indentação
Cada código que estiver dentro de um bloco deve estar um nível a mais de indentação à direita do bloco mais externo. Indentar o código é FUNDAMENTAL para compreensão do escopo de código (identificar onde começa e onde termina). if(condicao 1){ if(condicao 2){ if(condicao 3){ ... }

11 Simplificando selecoes
Como simplificar a seguinte selecao aninhada? if (condicao1) { if (condicao2) { if (condicao3) { if (condicao4) { W; } if (condicao1 && condicao2 && condicao3 && condicao4){ W; }

12 Simplificando selecoes
if (X == V1) { C1; } if (X == V2) { C2; if (X == V3) { C3; if (X == V4) { C4; if (X == V1) { C1; }else if (X == V2) { C2; }else if (X == V3) { C3; }else if (X == V4) { C4; } Como diminuir o numero de testes? Qual a sequencia de comparacoes para atingir C4?

13 Análise de fluxo Que comandos são executados quando A=B=V e C=F?
int A,B,C; if (A != 0){ C1; }else{ if (B != 0){ if (C != 0){ C2; C3; C4; } C5; C6;

14 Análise de fluxo Que comandos são executados quando A=B=V e C=F? {
int A,B,C; if (A != 0){ C1; }else{ if (B != 0){ if (C != 0){ C2; C3; C4; } C5; C6;

15 Análise de fluxo Que comandos são executados quando A=C=F e B=V? {
int A,B,C; if (A != 0){ C1; }else{ if (B != 0){ if (C != 0){ C2; C3; C4; } C5; C6;

16 Análise de fluxo Que comandos são executados quando A=C=F e B=V? {
int A,B,C; if (A != 0){ C1; }else{ if (B != 0){ if (C != 0){ C2; C3; C4; } C5; C6;

17 Análise de fluxo Que comandos são executados quando A=C=F e B=V? {
int A,B,C; if (A != 0){ C1; }else{ if (B != 0){ if (C != 0){ C2; C3; C4; } C5; C6;

18 Análise de fluxo Que comandos são executados quando A=C=F e B=V? {
int A,B,C; if (A != 0){ C1; }else{ if (B != 0){ if (C != 0){ C2; C3; C4; } C5; C6;

19 Exercício Escreva um programa que lê a idade de um usuario e em seguida diz se o usuário é ou não maior de idade. Escreva um programa que lê um número inteiro e diz se o número é par ou ímpar. Escreva um programa que lê tres numeros e em seguida imprime quantos deles são iguais. Escreva um programa que lê três número s inteiros e em seguida imprime os números em ordem crescente.

20 Switch-case Multipla escolha: quando se tem um conjunto de valores discretos a serem testados, onde cada valor corresponde a uma acao. Otimizacao das escolhas se-senao-se switch (<variável>) { case <valor 1>: <instruções>; [break;] case <valor 2> : < instruções>; ... [default:<instruções>;] } OBS: “ variável” deve ser int ou char; “break” serve para implementar escolha disjunta

21 Switch-case (exemplo)
#include <stdio.h> int main ( ) { char op; float num1, num2;  printf(“Digite um número, um operador e um número:”); scanf (“ %f %c %f”, &num1, &op, &num2); switch (op) { case ‘+’: printf (“ = %f”, num1 + num2); break; case ‘-’: printf (“ = %f”, num1 - num2); default: printf (“ Operador inválido!”) } Escreva um programa C que receba 2 números e um caractere operador (+, -, * ou /) do teclado, realize a operação determinada entre eles e imprima na tela o resultado

22 Exercicio Escreva uma funcao que solicita o usuario digitar um numero de 1 à 7. Em seguida a funcao imprime uma mensagem de acordo com o numero digitado: 1 – “Voce pertence ao curso de Agronomia” 2 – “Voce pertence ao curso de Veterinária” 3 – “Voce pertence ao curso de Zootecnia” 4 – “Voce pertence ao curso de Pedagogia” 5 – “Voce pertence ao curso de Letras” 6 – “Voce pertence ao curso de Engenharia de Alimentos” 7 – “Voce pertence ao curso de CIENCIA DA COMPUTACAO!” Qualquer outro numero - “Voce nao pertence a curso algum da UAG”

23 Estruturas de repeticao
Imagine um procedimento (algoritmo) pronto para calcular a média de um aluno. O que fazer para calcular a média de todos os alunos de uma turma?

24 Laços ou comandos de repeticao
São construcoes que permitem descrever acoes repetitivas Também conhecido por loop. O numero de repeticoes pode ser indeterminado? O número de repeticoes pode ser infinito? Repeticao com numero de vezes indeterminado Laço com teste no inicio (while) Laço com teste no final (do-while) Repeticao com numero de vezes determinado Laço (for)

25 Repeticao com teste no início
Antes de cada execucao dos comandos de uma repeticao, a condicao é testada condicao valida while (condicao) { C1; C2; ... Cn; } while comandos condicao invalida Segue o fluxo

26 Repeticao com teste no início
Exemplos int i = 0; while (i < 10) { printf(“Valor de i: %d ”, i); i++; } int i = 0; while (i < 10) { printf(“Valor de i: %d ”, i); }

27 Exercicio Como seria um programa para calcular a média de 50 alunos da uma turma? Escreva um programa que calcula o produto de dois números lidos sem usar o operador de multiplicação (‘*’). Construa um algoritmo que fica lendo indefinidamente numeros positivos. Caso o numero lido seja igual a 0 o algoritmo pára de ler números e imprime a média dos números pares lidos anteriormente.

28 Exercicio-desafio Escreva um programa que lê um número e em seguida calcula e imprime seu fatorial.

29 Repeticao com teste no final
Depois de cada execucao dos comandos de uma repeticao, a condicao é testada Os comandos são executados pelo menos uma vez do { C1; C2; ... Cn; }while (condicao); do comandos while condicao valida condicao invalida Segue o fluxo

30 Exercício Como ficaria o algoritmo para calcular a média dos 50 alunos com teste no final usando o comando do-while?

31 Repeticao fixa O numero de vezes da repeticao é determinado.
Possui uma variavel de controle cujo valor varia de um valor inicial a um valor final, de acordo com um determinado passo A condicao de parada é o numero de vezes da repeticao.

32 Repeticao fixa Inicialização: Teste de Condição: Incremento:
for(inicializacao;condicao;incremento ){ C1; ... Cn; } Inicialização: Expressão de atribuição. Sempre é executada uma única vez. Teste de Condição: Condição que controla a execução do laço. É sempre avaliada a cada execução. Se Verdadeiro continua a execução. Se falso pára a execução. Incremento: Define como a variável de controle será alterada. É sempre executada após a execução do corpo do laço.

33 Repeticao fixa i = 1 int i; for(i= 0;i < 10;i++){ printf(“%d”,i); }
for(i= 0;i < 10;i=i+2){ printf(“%d”,i); } printf(“%d”,i); i = 11

34 Exercicio Como ficaria o algoritmo para calcular a media dos 50 alunos usando repeticao fixa? Escreva um algoritmo que lê 50 números inteiros e em seguida mostra a soma de todos os ímpares lidos. Altere o algoritmo anterior para que ele considere apenas a soma dos ímpares que estejam entre 100 e 200. Construa um algoritmo que leia um conjunto de 20 numeros inteiros e mostre qual foi o maior e o menor valor fornecido.

35 Comparacao entre repeticoes
Lacos são equivalentes se (numero de vezes é conhecido){ usa-se o for }senao{ se (teste precisa ser feito no inicio){ usa-se while usa-se do-while }


Carregar ppt "Aula 6 - Estruturas de Controle"

Apresentações semelhantes


Anúncios Google