Baixe o app para aproveitar ainda mais
Prévia do material em texto
TÉCNICAS DE PROGRAMAÇÃO 1 INTRODUÇÃO À LING C ESTRUTURA DE CONTROLE 1- CONDICIONAIS Geiza Maria Hamazaki da Silva 2013.1 Tópicos Para a codificação dos algoritmos é necessário o conhecimentos dos comandos na linguagem C relacionados com a : Tomada de decisão - é fundamental ter meios para tomar decisões que se baseiem em condições avaliadas em tempo de execução - mecanismos para a construção de procedimentos iterativos; Construções com laços - procedimentos que repetem a execução de uma sequência de comandos um determinado número de vezes; e Seleção. Controle de fluxo Na linguagem C, as construções fundamentais de controle de fluxo necessárias para programas bem estruturados são: if-else (tomada de decisão) ; while, for (laços com teste de encerramento no início) ou do-while(laços com teste de encerramento no fim); switch (seleção de um dentre um conjunto de possíveis casos); e Agrupamentos de comandos. • Exemplo 1: – Programa para dado um número identificar se este número é par ou impar: se o número for divisível por 2, isto é, se o resto da divisão do número por 2 for igual a 0, então o número é par. se o número não for divisível por 2, isto é, se o resto da divisão do número por 2 for diferente de 0, então o número é impar. Tomada de Decisão Tomada de Decisão Comando “if” (se <condição> então <comando 1>) : Comando básico para codificar tomada de decisão se condição (cond) for verdadeira ( 0), executa o comando1 e o comando2; se condição (cond) for falsa (= 0), executa diretamente o comando2. Uma das boas práticas de programação é garantir a Legibilidade. Para respeitar essa boa prática utilize a indentação no seu código! if ( cond) comando1 comando2 Tomada de Decisão /* Verifica se o número par*/ #include <stdio.h> int main (void) { int a; printf(“Insira um número inteiro: "); scanf("%d", &a); if ((a%2)==0) printf(" O número %d é par. \n“, a); if ((a%2)!=0) printf(" O número %d é impar. \n“, a); return 0; } • Exemplo 1, na linguagem C: Programa para dado um número identificar se este número é par ou impar: Tomada de decisão Exemplo 2: if (nota >= 90) printf(“Parabens!”); printf(“Sua nota %d”, nota); Ao ser executado o este trecho de código a mensagem de parabéns é impressa somente quando a nota for maior ou igual a 90 . O segundo printf(), que imprime qual é a nota, sempre é executado. Tomada de decisão Exemplo 3: if (y != 0.0) x = x/y; Ao ser executado o este trecho de código se y for diferente de 0, a divisão de x por y é realizada e é armazenada em x. Esse código serve para evitar a divisão de um número por 0. Tomada de decisão Exemplo 4: if c == a area = area * a; Este exemplo está correto? Tomada de decisão Exemplo 4: if c == a area = area * a; Este exemplo está correto? Não! Falta os parênteses na expressão! Tomada de decisão Exemplo 4: if c == a area = area * a; Este exemplo está correto? Não! Falta os parênteses na expressão! Código Correto: if (c == a) area = area * a; Estruturas de bloco Exemplo 4: if (c == a) area = area * a; Quando uma única instrução está associada ao comando if, no exemplo acima “area = area * a;”, as chaves não são necessárias. Mas se tivesse duas ou mais instruções, como delimitar os comandos associados ao if? Estruturas de bloco Exemplo 4: if (c == a) area = area * a; Quando um único instrução está associada ao comando if, no exemplo acima “area = area * a;”, as chaves não são necessárias. Mas se tivesse duas ou mais instruções, como delimitar os comandos associados ao if? Neste caso tem-se um Bloco de Comandos. Estruturas de bloco Blocos de comando são um grupo de comandos relacionados que são tratados como uma unidade. É uma série de declarações ou comandos entre chaves. Comando “if” com bloco de comandos: se condição (cond) for verdadeira ( 0), executa o bloco de comandos 1 e bloco de comandos 2. se condição (cond) for falsa (= 0), executa diretamente o bloco de comandos 2. if ( cond) { bloco de comandos 1 } bloco de comandos 2 Estruturas de bloco Exemplo 5: float area =5; ... if (c == a) { area = area * a; printf( “ %d\n”, area); } Estruturas de bloco Geralmente, o bloco de comandos é executado, processando-se cada declaração e comando em ordem, um de cada vez a execução termina quando a última declaração ou comando foi executado é possível sair de um bloco de comandos antes do seu término usando os comandos break, return ou continue. Estes comandos serão apresentados nos próximos conjuntos de slides. Estruturas de bloco Em ANSI C, as declarações de variáveis só podem ocorrer no início do corpo da função ou no início de um bloco, isto é, devem seguir uma chave aberta. Uma variável declarada dentro de um bloco é válida apenas dentro do bloco. Após o término do bloco, a variável deixa de existir. if ( n > 0 ) { int i; ... ... } ... /* a variável i não existe neste ponto do programa */ Tomada de Decisão Comando “if”(se <condição> então <bloco 1> senão <bloco 2>) comando básico para codificar tomada de decisão se condição (cond) for verdadeira ( 0), executa o bloco de comandos 1; se condição (cond) for falsa (= 0), executa o bloco de comandos 2. if ( cond) { bloco de comandos 1 } else { bloco de comandos 2 } Tomada de Decisão Comando “if”: Se dentro de um bloco tiver apenas um comando a ser executado, as chaves podem ser omitidas (na verdade, deixa de ser um bloco e passa a ser um comando) if ( cond) comando 1 else comando 2 Tomada de Decisão /* Programa que verifica se o número par*/ #include <stdio.h> int main (void) { int a; printf(“Insira um número inteiro: "); scanf("%d", &a); if ((a%2)==0) printf(" O número %d é par. \n“, a); else printf(" O número %d é impar. \n“, a); return 0; } Tomada de Decisão Exemplo1: Programa para qualificar a temperatura: se a temperatura estiver entre 20oC e 30oC, então está agradável; Tomada de Decisão se a temperatura estiver entre 20oC e 30oC, então está agradável /* Programa que verifica se temperatura está agradável */ #include <stdio.h> int main (void) { int temp; printf ( "Digite a temperatura: " ); scanf ( "%d", &temp ); if ( temp < 30 ) if ( temp > 20 ) printf ( " Temperatura agradável \n" ); else printf ( " Temperatura quente \n" ); return 0; } Tomada de Decisão Considere o valor 5 para temp Observando o código do programa, pode-se pensar que nenhuma mensagem seria fornecida, pois o primeiro if daria resultado verdadeiro e então seria avaliado o segundo if. Neste caso, teria-se um resultado falso e como, aparentemente, não há um comando else associado, nada seria impresso. PURO ENGANO!! if ( temp < 30 ) if ( temp > 20 ) printf ( " Temperaturaagradável \n" ); else printf ( " Temperatura quente \n" ); Tomada de Decisão Considere o valor 5 para temp a indentação utilizada pode nos levar a erros de interpretação resultado para o valor 5 seria a mensagem Temperatura quente Na linguagem C, um else é associado ao último if que não tiver seu próprio else, logo o programa está INCORRETO! if ( temp < 30 ) if ( temp > 20 ) printf ( " Temperatura agradável \n" ); else printf ( " Temperatura quente \n" ); Tomada de decisão Para os casos em que a associação entre if e else não está clara, recomenda-se a criação explícita de blocos mesmo contendo um único comando Se reescrevermos o programa, podemos obter o efeito desejado Tomada de Decisão se a temperatura estiver entre 20oC e 30oC, então está agradável /* Programa que verifica se temperatura está agradável (versao 2) */ #include <stdio.h> int main (void) { int temp; printf ( "Digite a temperatura: " ); scanf ( "%d", &temp ); if ( temp < 30 ) { if ( temp > 20 ) printf ( " Temperatura agradável \n" ); } else printf ( " Temperatura quente \n" ); return 0; } Tomada de Decisão Exemplo2: Aumentando um pouco a complexidade do Exemplo 1 Programa para qualificar a temperatura: se a temperatura for menor do que 20oC, então está frio; se a temperatura estiver entre 20oC e 30oC, então está agradável; se a temperatura for maior do que 30oC, então está quente. /* Programa para qualificar a temperatura */ #include <stdio.h> int main (void) { int temp; printf("Digite a temperatura: "); scanf("%d", &temp); if (temp < 20) printf(" Temperatura fria \n"); else if (temp < 30) printf("Temperatura agradável \n"); else printf("Temperatura quente \n"); return 0; } Tomada de Decisão Inserindo na análise temperatura fria e muito fria. Tomada de decisão Essa regra de associação do else propicia a construção do tipo else-if, sem que se tenha o comando else if explicitamente na gramática da linguagem. Na Linguagem C, constrói-se estruturas else-if com if ’s aninhados O exemplo a seguir é válido e funciona como esperado Tomada de decisão /* Programa para qualificar a temperatura ( versao 2)*/ #include <stdio.h> int main (void){ int temp; printf("Digite a temperatura: "); scanf("%d", &temp); if (temp < 20) printf(" Temperatura fria \n"); else if (temp < 30) printf("Temperatura agradavel \n"); else printf("Temperatura quente \n"); return 0; } Tomada de decisão Exemplo:Verificação se os dois números digitados são pares: #include <stdio.h> int main (void) { int a, b; printf(“Digito dois numeros inteiros:"); scanf(“ %d %d",&a,&b); if (a%2 == 0){ if (b%2 == 0){ printf(“Foram digitados dois numeros pares!\n"); } } return 0; } Tomada de decisão Outra construção para este mesmo exemplo simples pode ser int main (void){ int a, b; printf("Digite dois numeros inteiros:"); scanf(“ %d %d",&a,&b); if ((a%2 == 0) && (b%2 == 0)){ printf(“Foram digitados dois numeros pares!\n"); } return 0; } O uso das chaves é opcional. • Exemplo: Retorna o máximo de dois números if ( a > b ) maximo = a; else maximo = b; Tomada de decisão Tomada de Decisão Operador condicional: formato geral: se a condição for verdadeira, a expressão1 é avaliada; caso contrário, a expressão2 é avaliada. exemplo: comando comando “if” equivalente maximo = a > b ? a : b ; condição ? expressão1 : expressão2; if ( a > b ) maximo = a; else maximo = b; Exercício 1. Faça um programa em C que leia dois números inteiros se o primeiro número for maior ou igual ao segundo verificar se o segundo divide exatamente o primeiro e imprimir mensagem “O segundo numero divide exatamente o primeiro numero.” ou “Os numeros não são divisiveis.” verificar se eles são iguais e imprimir mensagem “Os numeros são iguais.” senão imprimir mensagem “O segundo número é maior!” TESTE SEU PROGRAMA! Exercício Teste 1: Digite dois numeros inteiros. Primeiro numero: 10 Segundo numero: 2 O segundo numero divide exatamente o primeiro numero. Teste 2: Digite dois numeros inteiros. Primeiro numero: 2 Segundo numero: 2 Os numeros sao iguais. Exercício Teste 3: Digite dois numeros inteiros. Primeiro numero: 1 Segundo numero: 2 O segundo numero eh maior! Teste 4: Digite dois numeros inteiros. Primeiro numero: 3 Segundo numero: 2 Os numeros nao sao divisiveis. 38 Referências W. Celes, R. Cerqueira e J.L. Rangel, Introdução a Estruturas de Dados - com técnicas de programação em C, Ed. Campus, 2004 A. Kelley, A Book on C, Benjamin Cummings, 1995 Notas de aulas do curso presencial de Técnicas de Programação1- UNIRIO - Desenvolvidos pelas professoras: Geiza Maria Hamazaki da Silva e Adriana C. F Alvim – primeiro semestre de 2011.
Compartilhar