Buscar

Estrutura Condicional em C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
LINGUAGEM E TÉCNICA DE PROGRAMAÇÃO I 
 
Profa. Gisele Busichia Baioco 
gisele@ft.unicamp.br 
 
 
Algoritmos Estruturados e 
Linguagem de Programação Estruturada 
 
Estrutura Condicional em C 
1 Estrutura Condicional Unidirecional em C 
A estrutura condicional unidirecional consiste de um teste de uma condição 
representada por uma expressão lógica, que determina se um comando ou um conjunto de 
comandos deve ou não ser executado. 
Sintaxe em C: 
if (condição) 
 comando; 
onde: 
if: é a palavra reservada de C para a estrutura condicional; 
condição: é uma expressão lógica que, se for verdadeira, fará com que o comando seja 
executado; 
comando: qualquer instrução válida em C. 
 Caso seja necessária a execução de um conjunto de comandos, denominado bloco de 
comandos, a sintaxe é a seguinte: 
if (condição) 
{ 
 comando1; 
 ... 
 comandoN; 
 } 
 
 Considerando o seguinte algoritmo: 
Algoritmo 
 início 
 declare N1, N2, M: numérico real; 
 escreva(“Digite as duas notas”); 
 leia(N1); 
leia(N2); 
 M ← (N1 + N2)/2; 
 se (M ≥ 5) 
 então 
escreva(“Aprovado”); 
fim 
 
 2 
Em C fica: 
 #include <stdio.h> 
 main() 
 { 
 float N1, N2, M; 
 printf(“Digite duas notas”); 
 scanf(“%f”, &N1); 
 scanf(“%f”, &N2); 
 M = (N1 + N2)/2; 
 if (M >= 5) 
 printf(“Aprovado”); 
 } 
2 Estrutura Condicional Bidirecional em C 
A estrutura condicional bidirecional consiste de um teste de uma condição 
representada por uma expressão lógica, se o resultado for verdadeiro, um comando ou um 
bloco de comandos deve ser executado, caso contrário, outro comando ou bloco de comandos 
deve ser executado. 
Sintaxe em C: 
if (condição) 
 comando1; 
 else 
 comando2; 
onde: 
if e else: são as palavras reservadas de C para a estrutura condicional; 
condição: é uma expressão lógica que, se for verdadeira, fará com que o comando1 seja 
executado. Se for falsa, fará com que o comando2 seja executado; 
comando1 e comando2: qualquer instrução válida em C. 
 Caso seja necessária a execução de um bloco de comandos, a sintaxe é a seguinte: 
if (condição) 
{ 
 comando1; 
 comando2; 
} 
 else { 
 comando3; 
 comando4; 
 comando5; 
 } 
Considerando o seguinte algoritmo: 
Algoritmo 
 início 
 declare N1, N2, M: numérico real; 
 escreva(“Digite as duas notas”); 
 leia(N1); 
leia(N2); 
 M ← (N1 + N2)/2; 
 se (M ≥ 5) 
 então 
escreva(“Aprovado”); 
 senão 
escreva(“Reprovado”); 
fim 
 3 
Em C fica: 
 #include <stdio.h> 
 main() 
 { 
 float N1, N2, M; 
 printf(“Digite duas notas”); 
 scanf(“%f”, &N1); 
 scanf(“%f”, &N2); 
 M = (N1 + N2)/2; 
 if (M >= 5) 
 printf(“Aprovado”); 
 else 
 printf(“Reprovado”); 
} 
3 Bloco de Comandos 
De maneira geral, todo bloco de comandos em C deve ser delimitado pelas símbolos { 
e }. 
Sintaxe em C: 
 { 
 comando1; 
 comando2; 
 ... 
 comandoN; 
 } 
4 Estruturas Condicionais Aninhadas 
Uma estrutura condicional está aninhada quando é utilizada dentro de outra estrutura 
condicional. 
 Formato geral: 
 if (condição1) 
 if (condição2) 
 ... 
 else 
 if (condição3) 
 ... 
 else 
 ... 
 else 
 if (condição4) 
 ... 
Considerando o seguinte algoritmo: 
Algoritmo 
 início 
 declare A, B, C: numérico real; 
 escreva(“Digite três números”); 
 leia(A); 
leia(B); 
leia(C); 
 se (A > B) 
 então 
se (A > C) 
então 
escreva(“O maior número é ”, A); 
 4 
 senão 
 escreva(“O maior número é ”, C); 
 senão 
se (B > C) 
 então 
 escreva(“O maior número é ”, B); 
senão 
escreva(“O maior número é ”, C); 
fim 
Em C fica: 
#include <stdio.h> 
 main() 
 { 
 float A, B, C; 
 printf(“Digite três números”); 
 scanf(“%f”, &A); 
 scanf(“%f”, &B); 
 scanf(“%f”, &C); 
 if (A > B) 
 if (A > C) 
 printf(“O maior número é %f”, A); 
 else 
 printf(“O maior número é %f”, C); 
 else 
if (B > C) 
 printf(“O maior número é %f”, B); 
else 
 printf(“O maior número é %f”, C); 
} 
Em relação ao problema de determinar a qual if um else pertence em estruturas 
condicionais aninhadas, C usa a seguinte regra implícita: o else fecha sempre o if mais 
próximo. 
Outra alternativa para solucionar o problema é o uso de delimitadores de blocos de 
comandos { e }, da mesma maneira que se faz em algoritmos. 
5 Estrutura Condicional N-Direcional (ou Múltipla) em C 
A estrutura condicional n-direcional permite a escolha de um comando ou bloco de 
comandos entre qualquer número de comandos ou blocos de comandos. 
Existem duas formas possíveis de estruturas condicionais n-direcionais: 
1) Seqüência de expressões lógicas (booleanas): a primeira condição verdadeira 
determina o comando ou bloco de comandos a ser executado. Pode ser implementada 
em C com o encadeamento de estruturas condicionais bidirecionais, ou seja, com 
seqüências de comandos if-else-if. Formato geral: 
if (condição1) 
 comando1; 
 else 
 if (condição2) 
 comando2; 
else 
if ... 
 
else 
 comandoN; 
 5 
Considerando o seguinte algoritmo: 
 Algoritmo 
 início 
 declare N1, N2, M: numérico real; 
 escreva(“Digite as duas notas”); 
 leia(N1); 
leia(N2); 
 M ← (N1 + N2)/2; 
 se (M ≥ 7) 
 então 
escreva(“Aprovado”); 
 senão 
se (M ≥ 5) 
 então 
 escreva(“Exame Final”); 
senão 
escreva(“Reprovado”); 
fim 
Em C fica: 
#include <stdio.h> 
 main() 
 { 
 float N1, N2, M; 
 printf(“Digite duas notas”); 
 scanf(“%f”, &N1); 
 scanf(“%f”, &N2); 
 M = (N1 + N2)/2; 
 if (M >= 7) 
 printf(“Aprovado”); 
 else 
 if (M >= 5) 
 printf(“Exame Final”); 
 else 
 printf(“Reprovado”); 
} 
 
2) Comando CASE: avalia uma condição de igualdade e executa o comando ou bloco de 
comandos correspondente. Sintaxe em C: 
switch (variável) 
{ 
 case valor1: 
comando1 ou lista de comandos1; 
 break; 
 case valor2: 
comando2 ou lista de comandos2; 
 break; 
 ... 
 case valorN: 
comandoN ou lista de comandosN; 
 break; 
 } 
onde: 
switch(variável) avalia o valor de uma variável para decidir qual case será executado; 
cada case está associado a um possível valor da variável; 
 6 
break deve ser utilizado para impedir que sejam executados os comandos definidos nos cases 
subseqüentes. 
Devido à utilização do break, a execução de um comando ou de uma lista de 
comandos obedecem a mesma sintaxe, ou seja, não há necessidade da utilização de 
delimitadores de blocos de comandos nos cases. 
 Pode ser necessária a execução de um comando ou lista de comandos caso nenhuma 
das outras opções seja satisfeita. Para isso utiliza-se a opção default. Sintaxe em C: 
switch (variável) 
{ 
 case valor1: 
comando1 ou lista de comandos1; 
 break; 
 case valor2: 
comando2 ou lista de comandos2; 
 break; 
 ... 
 case valorN: 
comandoN ou lista de comandosN; 
 break; 
 default: 
comando ou lista de comandos; 
 } 
Considerando o seguinte algoritmo: 
Algoritmo 
início 
declare op, X, Y: numérico inteiro; 
escreva(“Entre com a opção: ”); 
leia(op); 
escolha (op) 
início 
 caso 1: início 
 X ← 10; 
 Y ← 20; 
 fim 
 caso 2: inicio 
 X ← 100; 
 Y ← 0; 
 fim 
 senão: início 
 X ← 0; 
 Y ← 0; 
 fim 
 fim 
 escreva(“O valor de X é: “, X); 
 escreva(“O valor de Y é: “, Y); 
fim 
 7 
Em C fica: 
#include <stdio.h> 
main() 
{ 
 int op, X, Y; 
 printf(“Entre com a opção: ”); 
 scanf(“%d”, &op); 
 switch (op) 
 { 
 case 1: 
 X = 10; 
 Y = 20; 
 break; 
 case 2: 
X = 100; 
Y = 0; 
 break; 
 default: 
X = 0; 
Y = 0; 
 } 
 printf(“O valor de X é: %d“, X); 
 printf(“O valor de Y é: %d“, Y); 
} 
 
 8 
6 Exemplos de Programas C 
1) Faça um algoritmo e programa C que receba um número inteiro e verifique se esse 
número é par ou ímpar. 
Algoritmo 
início 
 /*Declaração de variáveis */ 
 declare num, r: numérico inteiro; 
 /* Entrada de dados */ 
 escreva(“Digite um número inteiro: ”); 
 leia(num); 
/* Processo – obtém o resto da divisão de num por 2 */ 
r ← resto(num, 2); 
/* Saída de dados */ 
se (r = 0) 
então 
escreva(“O número é par”); 
senão 
escreva(“O número é ímpar”); 
fim 
 
#include <stdio.h> 
 
main() 
{ 
 /* Declaração de variáveis */ 
 int num, r; 
 /* Entrada de dados */ 
 printf(“Digite um número inteiro: ”); 
 scanf(“%d”, &num); 
 /* Processo – obtém o resto da divisão de num por 2 */ 
 r = num % 2; 
 /* Saída de dados */ 
 if (r == 0) 
 printf(“O número é par”); 
 else 
 printf(“O número é ímpar”); 
} 
 9 
2) A nota final de um estudante é calculada a partir de três notas: laboratório, avaliação 
semestral e exame final, com os pesos 2, 3 e 5, respectivamente. Faça um algoritmo 
que leia três notas de um estudante, calcule e mostre a média ponderada e o conceito 
correspondente, de acordo com: 
 
Média ponderada Conceito 
≥ 8.0 A 
≥ 7.0 e < 8.0 B 
≥ 6.0 e < 7.0 C 
≥ 5.0 e < 6.0 D 
< 5.0 E 
 
Algoritmo 
início 
 /* Declaração de variáveis */ 
 declare laboratorio, semestral, exame, media: numérico real; 
 /* Entrada de dados */ 
 escreva(“Digite a nota de laboratório: ”); 
 leia(laboratorio); 
 escreva(“Digite a nota da avaliação semestral: ”); 
 leia(semestral); 
 escreva(“Digite a nota do exame final: ”); 
leia(exame); 
/* Processo – cálculo da média ponderada */ 
media ← (laboratório * 2 + semestral * 3 + exame * 5) / 10; 
/* Saída de dados */ 
escreva(“Média ponderada = ”, media); 
se (media ≥ 8.0) 
então 
escreva(“Conceito A”); 
senão 
se (media ≥ 7.0) 
 então 
escreva(“Conceito B”); 
 senão 
se (media ≥ 6.0) 
 então 
escreva(“Conceito C”); 
 senão 
se (media ≥ 5.0) 
 então 
escreva(“Conceito D”); 
 senão 
escreva(“Conceito E”); 
fim 
 
 10 
#include <stdio.h> 
 
main() 
{ 
 /* Declaração de variáveis */ 
 float laboratorio, semestral, exame, media; 
 /* Entrada de dados */ 
 printf(“Digite a nota de laboratório: ”); 
 scanf(“%f”, &laboratorio); 
 printf(“Digite a nota da avaliação semestral: ”); 
 scanf(“%f”, &semestral); 
 printf(“Digite a nota do exame final: ”); 
 scanf(“%f”, &exame); 
 /* Processo – cálculo da média ponderada */ 
 media = (laboratorio * 2 + semestral * 3 + exame * 5) / 10; 
 /* Saída de dados */ 
 printf(“Média ponderada = %f”, media); 
 if (media >= 8.0) 
 printf(“Conceito A”); 
 else 
 if (media >= 7.0) 
 printf(“Conceito B”); 
 else 
 if (media >= 6.0) 
 printf(“Conceito C”); 
 else 
if (media >= 5.0) 
 printf(“Conceito D”); 
 else 
 printf(“Conceito E”); 
} 
 
 11 
3) Faça um algoritmo que mostre o menu de opções a seguir, receba a opção do usuário e 
os dados necessários para executar cada operação. 
Menu de opções: 
1. Somar dois números 
2. Raiz quadrada de um número 
Algoritmo 
início 
/* Declaração de variáveis */ 
declare op: numérico inteiro; 
 num1, num2, resultado: numérico real; 
/* Entrada de Dados Geral */ 
escreva(“Menu”); 
escreva(“1. Somar dois números”); 
escreva(“2. Raiz quadrada de um número”); 
escreva(“Digite sua opção: ”); 
leia(op); 
/* Entrada de Dados específicos e processo */ 
escolha (op) 
início 
 caso 1: início 
 escreva(“Digite dois números para a soma: ”); 
 leia(num1); 
 leia(num2); 
 resultado ← num1 + num2; 
 fim 
 caso 2: início 
 escreva(“Digite um número para a raiz quadrada: ”); 
 leia(num1); 
 resultado ← √num1 
 fim 
 senão: início 
resultado ← 0; 
escreva(“Opção inválida”); 
 fim 
 fim 
 escreva(“Resultado = “, resultado); 
fim 
 
 12 
#include <stdio.h> 
#include <math.h> 
 
main() 
{ 
 /* Declaração de variáveis */ 
 int op; 
 float num1, num2, resultado; 
 /* Entrada de Dados Geral */ 
 printf(“Menu”); 
 printf(“1. Somar dois números”); 
 printf(“2. Raiz quadrada de um número”); 
 printf(“Digite sua opção: ”); 
 scanf(“%d”, &op); 
 /* Entrada de Dados específicos e processo */ 
 switch (op) 
 { 
case 1: 
printf(“Digite dois números para a soma: ”); 
 scanf(“%f”, &num1); 
 scanf(“%f”, &num2); 
 resultado = num1 + num2; 
break; 
case 2: 
 printf(“Digite um número para a raiz quadrada: ”); 
 scanf(“%f”, &num1); 
 resultado = sqrt(num1); 
break; 
default: 
resultado = 0; 
printf(“Opção inválida”); 
 } 
 printf(“Resultado = %f“, resultado); 
} 
 
 13 
7 Exercícios de Fixação 
1) Faça um algoritmo e programa C que leia dois números X e Y, calcule Z = (X + Y)/2 e 
mostre o resultado de Z somente se Z ≠ 0. 
2) Dados dois número inteiros, faça um algoritmo e programa C que mostre-os em ordem 
crescente. 
3) Faça um algoritmo e programa C para ler os comprimentos dos três lados de um 
triângulo (S1, S2 e S3) e determinar que tipo de triângulo é formado, com base nos 
seguintes casos. Seja A o maior dos lados de S1, S2 e S3, e B e C os outros dois, 
então: 
Se A ≥ B + C nenhum triângulo é formado; 
Se A2 = B2 + C2 um triângulo retângulo é formado; 
Se A2 > B2 + C2 um triângulo obtusângulo é formado; 
Se A2 < B2 + C2 um triângulo acutângulo é formado. 
4) Uma empresa decidiu dar a seus funcionários uma gratificação de Natal. A 
gratificação é baseada em dois critérios: número de horas extras trabalhadas 
(horas_extras) e números de horas que o funcionário faltou ao trabalho (horas_faltas). 
A seguinte fórmula é utilizada para calcular o número de horas do funcionário: 
horas = horas_extras – 2/3 * horas_faltas 
A gratificação é distribuída de acordo com a seguinte tabela: 
 
Horas gratificação 
> 40 horas R$ 500.00 
> 30 mas ≤ 40 horas R$ 400.00 
> 20 mas ≤ 30 horas R$ 300.00 
> 10 mas ≤ 20 horas R$ 200.00 
≤ 10 horas R$ 100.00 
 
Faça um algoritmo e programa C que leia o número de horas extras e número de horas 
de faltas de um funcionário, calcule e mostre a gratificação correspondente. 
5) Faça um algoritmo e programa C que apresente o menu de opções a seguir, permita ao 
usuário escolher a opção desejada, receba os dados necessários para executar a 
operação e mostre o resultado. Verifique a possibilidade de opção inválida. 
Menu de opções: 
1. Imposto 
2. Novo salário 
3. Classificação 
Na opção 1, ler o salário de um funcionário, calcular e mostrar o valor do imposto, 
usando as regras a seguir: 
Salário Percentual do imposto 
menor que R$ 500.00 5% 
de R$ 500.00 a R$ 850.00 10% 
acima de R$850.00 15% 
 
Na opção 2, ler o salário de um funcionário, calcular e mostrar o salário com aumento, 
usando as regras a seguir: 
Salário Aumento 
maior que R$1500.00 R$ 25.00 
de R$ 750.00 (inclusive) a R$ 1500.00 R$ 50.00 
 14 
de R$ 450.00 (inclusive) a R$ 750.00 R$ 75.00 
menor que R$ 450.00 R$ 100.00 
 
 Na opção 3, ler o salário de um funcionário e mostrar sua classificação, de acordo com 
a tabela seguinte: 
Salário Classificação 
até R$ 700.00 (inclusive) Mal remunerado 
maior que R$ 700.00 Bem remunerado

Outros materiais