TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 5 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 1 Agenda Operador condicional Switch Precedência de Operadores Lógicos Precedência de Operadores Relacionais Switch Estruturas de repetição: do...while Estruturas de repetição: for Desenvolvimento teórico e prático: Exercícios com todas as estruturas, sequenciais, compostas e de repetição. 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 2 http:professorleomir.wordpress.com 1
Operador Condicional -? Único operador Ternário em C, indica a espera de três argumentos. Sintaxe : condição? Expressao1 : expressao2 Funcionamento Condição é avaliada Se resultado for verdade, o resultado de toda a expressão é o valor devolvido por expressão1 Se resultado for falso, o resultado de toda a expressão é o valor devolvido por expressão2 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 3 Operador Condicional? Exemplos #include <stdio.h> int main() float salario; printf("qual o Salario: "); scanf("%f",&salario); if (salario <= 0) printf ("Salario: Valor Invalido"); if (salario > 1000) printf ("Imposto = %2f\n", salario*1.10); else printf ("Imposto = %2f\n", salario*1.05); system("pause"); #include <stdio.h> int main() float salario; printf("qual o Salario: "); scanf("%f",&salario); salario = salario > 1000? salario*1.10 : salario*1.05; printf("novo Salário: %.2f\n",salario); system("pause"); 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 4 http:professorleomir.wordpress.com 2
Operador Condicional? Considerações embora pareça semelhante a instrução if-else o operador condicional? Funciona de forma diferente, enquanto o operador condicional devolve sempre um resultado o if-else determina quais instruções deve ser executadas 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 5 Switch Quando existem algumas condições diferentes possíveis para o mesmo valor torna-se impraticável o uso de if-else. Para essa situação a linguagem C fornece uma instrução que permite a seleção do código a executar a partir de um conjunto de valores possíveis para uma determinada expressão 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 6 http:professorleomir.wordpress.com 3
Switch A instrução switch é usada em tomada de decisões em que o numero de possibilidades é elevado para reduzir a complexidade do if-else, sintaxe: Switch (expressão) case constante1: instruções1; case constante2: instruções2;... break; [dfault: instruções;] Expressão representa valor numérico dos tipos char, int ou long., é avaliada e em seguida o switch compara o resultado com valor de cada constante que segue cada um dos case. Instrução break para execução dentro so switch e manda para intrução posterior ao switch O conjunto de todos os valores possíveis para a expressão é colocado entre chaves 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 7 Switch Funcionamento Se o Valor da expressão for igual a alguma das constantes que seguem os varios case, então são executadas as instruções que seguem o case correspondente Se o valor da expressão não for igual a nenhuma das constantes apresentadas pelos case, então são executadas as instruções que seguem o parâmetro default Após realizar teste de expressão e encontrar valor correspondente todas as linhas de código são executadas até a instrução break O parâmetro default é opcional, caso não seja mencionado nada é executado caso o valor da expressão não seja igual a nehum dos case Em cada case do switch só uma única constante do tipo char, int ou long pode estar presente para avaliação 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 8 http:professorleomir.wordpress.com 4
Switch Exemplo prog0312.c : Incorreto : #include <stdio.h> main() char Est_Civil; printf( Qual estado Civil: ); scanf( %c,&est_civil); switch(est_civil) case C : printf( Casado\n ); case S : printf( Solteiro\n ); case D : printf( Divorciado\n ); case V : printf( Viuvo\n ); default : printf( Estado Civil incorreto\n ); #include <stdio.h> main() char Est_Civil; printf( Qual estado Civil: ); scanf( %c,&est_civil); switch(est_civil) case C : printf( Casado\n ); case S : printf( Solteiro\n ); case D : printf( Divorciado\n ); case V : printf( Viuvo\n ); break; default : printf( Estado Civil incorreto\n ); 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 9 Precedência de operadores Lógicos Existem circunstâncias em que uma condição simples nâo é suficiente para tomar uma decisão, é necessario a interligação de duas ou mais condições lógicas 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 10 http:professorleomir.wordpress.com 5
Precedência de operadores Lógicos Permitem a combinação de duas ou mais expressões lógicas numa única expressão que devolve um único valor lógico (Verdadeiro ou Falso) 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 11 Precedência de operadores Relacionais Em C, como na maioria das linguagens de programação uma expressão nem sempre é avaliada (lida pelo compilador/interpretador) da esquerda para direita, Exemplo: 2 + 3 * 4 = 14 (2 +3) * 4 = 12 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 12 http:professorleomir.wordpress.com 6
Precedência de operadores Relacionais Para definir a ordem pela qual as operações são executadas existe a tabela de precedências. Ocupam patamares Diferentes na hierarquia. Seta indica maior precedência 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 13 Estruturas de repetição: do...while Laço while Implementa uma estrutura de repetição controlada pela verificação de uma condição. Sintaxe : While (condição) OU While (condição) <instrução>; <instrução>; <instrução> Ao final da ultima instrução no corpo do comando avalia se a condição continua verdadeira, caso continua repete as instruções dentro do corpo até que a condição não seja mais verdadeira 14 http:professorleomir.wordpress.com 7
Estruturas de repetição: do...while Laço while continuação Ex.: int Ndia =1 while (ndia<=7) printf ( Dia : %d\n",ndia); Ndia++; Execução do laço pode ser interrompida por quebra de condição ou comando Break que causa a saida do laço para a proxima instrução após o laço (). 15 Estruturas de repetição: do...while O comando Break afeta apenas o laço interno a ele no caso de laços aninhados Lacos Aninhados : while (true) int ncont = 1000; int npara=0; printf("\n Entre com o numero de parada "); scanf("%d", &npara); while (ncont > 0) ncont--; cout << "\n \n" << ncont << "\n"; if(ncont==npara) break; 16 http:professorleomir.wordpress.com 8
Estruturas de repetição: do...while O comando CONTINUE força a proxima iteração do laço e pula o codigo que estiver abaixo dele, ou seja força a avaliação da expressão de teste e depois continua o laço Ex.: Imprime caracteres digitados que são diferentes de digitos 17 Estruturas de repetição: do...while O comando CONTINUE força a proxima iteração do laço e pula o codigo que estiver abaixo dele, ou seja força a avaliação da expressão de teste e depois continue o laço Ex.: Imprime caracteres digitados que são diferentes de digitos 18 http:professorleomir.wordpress.com 9
Estruturas de repetição: do...while A estrutura DO-WHILE, similar a estrura WHILE, faz a verificação de teste no final da estrura, bom para situações em que instruções no corpo devam ser excutadas antes da verificação, com sintaxe no exemplo a seguir: 19 Estruturas de repetição: for Usada para implementar estrutura de controle de repetição de forma similar ao while/do-while Três expressões separadas por ponto e virgula regulam seu funcionamento 20 http:professorleomir.wordpress.com 10
Implemente : Programa prog0313.c, utilizando switch, que indique o estado Civil através da primeira letra do mesmo.,letras maiúsculas e minúsculas (Casado, Solteiro,Divorciado e Viúvo) Prog0314.c, utilizando switch, calculando o imposto pago por mulheres e homens, sendo 10% para mulheres e 5% a mais para homes do que o percentual pago pelas mulheres. Prog0316.c, utilizando switch, leia uma operacao binaria entre dois inteiros e apresent em seguida o resultado (calculadora) 21 22 http:professorleomir.wordpress.com 11
23 24 http:professorleomir.wordpress.com 12
25 26 http:professorleomir.wordpress.com 13
27 28 http:professorleomir.wordpress.com 14
29 Escreva um programa (prog0403.c) que coloque na tela a tabuada do 5, utilizando a estrutura de controle while. Reescreva o programa anterior como programa0404.c de forma a apresentar a tabuada de qualquer numero introduzido. 30 http:professorleomir.wordpress.com 15
Bibliografia BIBLIOGRAFIA BÁSICA 1 DAMAS, Luís. Linguagem C. 10ª Edição. São Paulo: LTC, 2007. 2 FEOFILOFF, P. Algoritmos de Janeiro: Elsevier, 2009. MIZRAHI, Victorine Viviane. Treinamento 2ª Edição. São Paulo: Pearson Education, 2008. 3 4 ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi. Fundamentos da Programação de Computadores. 2ª Edição. São Paulo: Pearson Education, 2007. BIBLIOGRAFIA COMPLEMENTAR DASGUPTA, Sanjoy; UMESH, Vazirani, PAPADIMITRIOU Christos, Algoritmos. 1ª Edição. São Paulo: 1 McGraw-Hill, 2009. LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Edição. São Paulo: Brasport, 2008. 2 3 4 5 PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais Conceitos e Aplicações. 7ª Edição. São Paulo: Érica, 2008. SOUZA, Marco Antonio Furlan et al. Algoritmos e Lógica de Programação. São Paulo: Cengage Learning, 2008. ZIVIANI, Nívio. Projeto de Algoritmos com Implementações em Pascal e C. 3ª Edição. São Paulo: Cengage Learning, 2010. RECURSOS DIDÁTICOS 1 TV/VÍDEO/DVD 4 LABORATÓRIO Software Turbo C ou Dev C++ 2 DATASHOW 5 Aula expositiva em laboratório 3 RETRO-PROJETOR 6 Exercícios em laboratório 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com http://professorleomir.wordpress.com 31 http:professorleomir.wordpress.com 16