IEC081
Introdução à Ciência dos Computadores
Estruturas Condicionais em Linguagem C
Turma: 01A / 01B / 01C
Professor: Fabíola Nakamura
E-mail: fabiola@icomp.ufam.edu.br
Página: iccufam.weebly.com
Resolução de Problemas
Algorítmicos
Definir as entradas e as saídas Fim Identificar o problema Início Converter o algoritmo em declarações da linguagem de programação Projetar o algoritmo Decompor Refinar passo a passo Testar o programa resultante 1 2 3 4 5Estruturas de Programação
Qualquer programa de computador pode ser
escrito combinando-se os três tipos básicos de
estruturas de programação:
Estruturas de Programação
Teorema provado em
1966 por Corrado
Böhm (1923-) e
Giuseppe Jacopini
(1936-2001) no artigo:
“Flow Diagrams,
Turing Machines And
Languages With Only
Two Formation Rules”.
Estrutura Sequencial
É a estrutura de programação mais simples.
O fluxo de comandos do algoritmo segue a mesma
sequência linear da nossa escrita:
De cima para baixo
Da esquerda para direita
p/ esquerda
p/ baixo
a = 3
b = 4
m = (a + b)/2
print(m
)
Estrutura Condicional
Permite alterar o fluxo de execução, de forma a
selecionar qual parte do algoritmo deve ser
executada.
Essa decisão é tomada a partir de uma condição,
que pode resultar apenas em:
Verdade, ou
Falsidade
Condição verdadeira, condição
falsa
Verdadeiro ou falso são valores lógicos. São
atributos da expressão condicional.
O funcionamento correto do seu script não está
condicionado a resultados lógicos com valor
verdadeiro.
quebro u?
if (delta < 0){
printf(“Nao tem raizes reais”); }
Estrutura Condicional Simples
Quando a condição é
verdadeira, o “bloco
verdade” é executado.
Quando a condição é
falsa, o “bloco
verdade” não é
executado.
início a, b, c fim delta < 0 F Não tem raízes reais V delta ← b**2 – 4*a*cEstrutura Condicional Simples
:: Em C
início a, b, c fim delta < 0F Não tem raízes
reais
v
Estruturas Condicionais Compostas
Quando a condição é
verdadeira, o “bloco
verdade” é executado.
Quando a condição é
falsa, o “bloco
falsidade” é executado.
início a, b, c fim delta < 0 F Não tem raízes reais V delta ← b**2 – 4*a*c Tem raiz realEstruturas Condicionais Compostas
:: Em C
início a, b, c fim delta < 0 F Não tem raízes reais V delta ← b**2 – 4*a*c Tem raiz realIndentação
O comando else deve estar alinhado com o
comandos if correspondente.
Todos os comandos de um mesmo bloco deverão
Problema 1
Uma lata de leite em pó da marca A, com 400g,
custa R$ 8,39.
Um saco de leite em pó da marca B, com 1kg, custa
R$ 20,30.
Problema 1
2 – Definir entradas e saídas
Grandeza Unidade de medida Faixa de valores
Entradas
Saídas
Grandeza Unidade de medida Faixa de valores
Entradas
PrecoA R$ 8.39
PesoA kg 0.4
PrecoB R$ 20.30
PesoB kg 1.0
Problema 1
3 – Projetar algoritmo
F V início PrecoA, PesoA PrecoB, PesoB fim marca ← “A” rA > rB marca ← “B” rA ← PrecoA/PesoA rB ← PrecoB/PesoB marcaProblema 1
Problema 2
y
x
R
Problema 2
2 – Definir entradas e saídas
Grandeza Unidade de medida Faixa de valores Entradas
Raio --- >=0
Coordenada X de P --- Real
Coordenada Y de P --- Real
Problema 2
3 – Projetar algoritmo
X**2 + Y**2 == R**2 X**2 + Y**2 < R**2 Na circunferênciaV
P é internoF
P é externoV
F
Problema 2
3 – Projetar algoritmo
V F fim Externo C2 Interno V F início R, X, Y Na circunferência C1 X**2 + Y**2 == R**2C1
X**2 + Y**2 < R**2C2
Problema 2
4 – Codificar
Problema 3
Projete um algoritmo para uma máquina
caça-níquel que gere 3 números aleatórios entre 1 e 10.
Se os três números forem iguais, o jogador ganha.
Problema 3
2 – Definir entradas e saídas
Grandeza Unidade de medida Faixa de valores Entradas
Saídas
Grandeza Unidade de medida Faixa de valores Entradas
N1 --- [1,10]
N2 --- [1,10]
N3 --- [1,10]
Problema 3
3 – Projetar algoritmo
N1 == N2
N2 == N3
perdeu
F
perdeu
V
ganhou
F
V
Problema 3
3 – Projetar algoritmo
V F F início Gerar N1, N2, N3 Ganhou! fim N1 == N2 Perdeu! Perdeu! N2 == N3 VProblema 3
4 – Codificar
Problema 4
Dados três valores X, Y e Z, verifique:
Se eles podem ser os comprimentos dos lados de um
triângulo.
Caso positivo, se o triângulo é equilátero, isósceles ou
escaleno.
Problema 4
1 – Identificar o problema
Propriedade básica de um triângulo:
O comprimento de cada lado de um triângulo é menor
do que a soma dos comprimentos dos demais lados.
Problema 4
2 – Definir entradas e saídas
Grandeza Unidade de medida Faixa de valores Entradas
Saídas
Grandeza Unidade de medida Faixa de valores Entradas X m > 0 Y m > 0 Z m > 0 Saídas mensagem ---“Não é triângulo”, “Triângulo equilátero”, “Triângulo isósceles”, “Triângulo escaleno”
Problema 4
3 – Projetar algoritmo
V F fim C2 Equilátero V F início X, Y, Z Não é triângulo C1 (X >= Y + Z) OU (Y >= Z + X) OU (Z >= X + Y)C1
(X == Y) E (Y == Z)C2
(X == Y) OU (Y == Z) OU (Z == X)C3
V F Escaleno C3 IsóscelesProblema 4
4 – Codificar
Estruturas Condicionais
Encadeadas
Estruturas condicionais encadeadas (ou aninhadas)
são estruturas condicionais dentro de outras
estruturas condicionais.
Quando um problema exige um longo
encadeamento de ifs e elses, a criação de
diversos níveis deslocados poderia causar
Estruturas Condicionais
Encadeadas :: Exemplo
Calcular r1 e r2Δ<0
F V Sem solução Calcular r1Δ=0
V F fimProblema 5
Escrever um script em Python que leia um ângulo
entre 0 e 360° e informe o ponto cardeal
correspondente.
Problema 5
2 – Definir entradas e saídas
Grandeza Unidade de medida Faixa de valores Entradas
Saídas
Grandeza Unidade de medida Faixa de valores
Entradas Ângulo graus [0; 360]
Problema 5
Problema 5
4 – Codificar
Problema 6
2 – Definir entradas e saídas
Grandeza Unidade de medida Faixa de valores Entradas
Saídas
Grandeza Unidade de medida Faixa de valores
Entradas Ano
Problema 6
3 – Projetar algoritmo – versão 1
ano % 400 == 0 ano % 100 == 0 Bissexto V Não bissexto F V F ano % 4 == 0
Bissexto bissextoNão
Problema 6
3 – Projetar algoritmo – versão 1
V F fim C2 Não bissexto V F início ano Bissexto C1 ano % 400 == 0
C1
ano % 100 == 0C2
ano % 4 == 0C3
V F Não bissexto C3 BissextoProblema 6
Problema 6
3 – Projetar algoritmo – versão 2
ano % 400 == 0 ano % 100 == 0 Bissexto V Não bissexto F V F ano % 4 == 0
Bissexto bissextoNão
V F
Problema 6
3 – Projetar algoritmo – versão 2
fim Não bissexto V F início ano Bissexto C1 (ano % 400 == 0) OU ((ano % 100 ≠ 0) E (ano % 4 == 0))