IEC081
Introdução à Ciência dos Computadores
Estruturas Condicionais em Linguagem C
Turma: 01A / 01B / 01C
Professor: Fabíola Nakamura
E-mail: [email protected]
Página: iccufam.weebly.com
Resolução de Problemas
Algorítmicos
Início
1
Identificar o problema
2
Definir as entradas e as
saídas
Decompor
3
Projetar o algoritmo
4
Converter o algoritmo em
declarações da linguagem de
programação
5
Testar o programa
resultante
Refinar
passo a passo
Conteúdo
Estruturas de Programação

Qualquer programa de computador pode ser
escrito combinando-se os três tipos básicos de
estruturas de programação:
Sequencial
Condicional
Repetiçã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/ baixo
p/ esquerda
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,
 Falsidade
ou
?
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?
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
delta ← b**2 – 4*a*c
delta < 0
F
if (delta < 0){
printf(“Nao tem raizes reais”);
}
fim
V
Não tem
raízes reais
Estrutura Condicional Simples
:: Em C
início
a, b, c
delta ← b**2 – 4*a*c
delta < 0
F
fim
v
Não tem
raízes
reais
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
delta ← b**2 – 4*a*c
delta < 0
V
F
Tem raiz
real
fim
Não tem
raízes
reais
Estruturas Condicionais Compostas
:: Em C
início
a, b, c
delta ← b**2 – 4*a*c
delta < 0
F
Tem
raiz
real
fim
V
Não tem
raízes
reais
Indentação

O comando else deve estar alinhado com o
comandos if correspondente.

Todos os comandos de um mesmo bloco deverão
ter o mesmo recuo.
Não confunda
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.

Qual marca tem o melhor preço?
Problema 1
2 – Definir entradas e saídas
Entradas
Saídas
Grandeza
Unidade de medida
Faixa de valores
PrecoA
R$
8.39
PesoA
kg
0.4
PrecoB
R$
20.30
PesoB
kg
1.0
Marca
---
{“A”, “B”}
Problema 1
3 – Projetar algoritmo
início
PrecoA, PesoA
PrecoB, PesoB
rA ← PrecoA/PesoA
rB ← PrecoB/PesoB
rA > rB
F
marca ← “A”
marca
fim
V
marca ← “B”
Problema 1
4 – Codificar em C
Problema 2
y
R
x
Problema 2
2 – Definir entradas e saídas
Entradas
Saídas
Grandeza
Unidade de medida
Faixa de valores
Raio
---
>=0
Coordenada X de P
---
Real
Coordenada Y de P
---
Real
Localização de P
---
{interior, exterior, na
circunferencia}
Problema 2
3 – Projetar algoritmo
X**2 + Y**2 == R**2
V
F
Na
circunferência
X**2 + Y**2 < R**2
V
P é interno
F
P é externo
Problema 2
3 – Projetar algoritmo
início
C1 X**2 + Y**2 == R**2
R, X, Y
C1
V
Na
circunferência
C2
F
C2
X**2 + Y**2 < R**2
F
V
Interno
fim
Externo
Problema 2
4 – Codificar
Problema 3

Projete um algoritmo para uma máquina caçaníquel que gere 3 números aleatórios entre 1 e 10.

Se os três números forem iguais, o jogador ganha.
Caso contrário, ele perde.
Problema 3
2 – Definir entradas e saídas
Entradas
Saídas
Grandeza
Unidade de medida
Faixa de valores
N1
---
[1,10]
N2
---
[1,10]
N3
---
[1,10]
Sucesso no jogo
---
{Perdeu, Ganhou}
Problema 3
3 – Projetar algoritmo
N1 == N2
F
V
perdeu
N2 == N3
F
perdeu
V
ganhou
Problema 3
3 – Projetar algoritmo
início
Gerar N1, N2, N3
N1 == N2
F
V
N2 == N3
F
V
Ganhou!
Perdeu!
Perdeu!
fim
Problema 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
Entradas
Saídas
Saídas
Grandeza
Unidade de medida
Faixa de valores
X
m
>0
Y
m
>0
Z
m
>0
---
“Não é triângulo”,
“Triângulo equilátero”,
“Triângulo isósceles”,
“Triângulo escaleno”
mensagem
Problema 4
3 – Projetar algoritmo
início
X, Y, Z
C1
V
Não é
triângulo
F
C2
V
Equilátero
fim
F
C3
V
Isósceles
C1
(X >= Y + Z) OU (Y >= Z +
X) OU (Z >= X + Y)
C2
(X == Y) E (Y == Z)
C3
(X == Y) OU (Y == Z) OU
(Z == X)
F
Escaleno
Problema 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
confusão.
Estruturas Condicionais
Encadeadas :: Exemplo
Δ<0
V
F
Δ=0
V
F
Calcular
r1 e r2
fim
Calcular
r1
Sem
solução
Problema 5

Escrever um script em Python que leia um ângulo
entre 0 e 360° e informe o ponto cardeal
correspondente.
0°
Problema 5
2 – Definir entradas e saídas
Entradas
Saídas
Grandeza
Unidade de medida
Faixa de valores
Ângulo
graus
[0; 360]
Ponto Cardeal
---
{N, S, L, O}
Problema 5
3 – Projetar algoritmo
Problema 5
4 – Codificar
Problema 6
Problema 6
2 – Definir entradas e saídas
Entradas
Saídas
Saídas
Grandeza
Unidade de medida
Ano
---
Mensagem
---
Faixa de valores
{bissexto,
não bissexto}
Problema 6
3 – Projetar algoritmo – versão 1
ano % 400 == 0
F
V
Bissexto
ano % 100 == 0
F
V
Não
bissexto
ano % 4 == 0
V
Bissexto
F
Não
bissexto
Problema 6
3 – Projetar algoritmo – versão 1
início
C1 ano % 400 == 0
ano
C2 ano % 100 == 0
C1
V
F
C3
C2
V
Bissexto
F
C3
V
Não
bissexto
fim
Bissexto
F
Não
bissexto
ano % 4 == 0
Problema 6
4 – Codificar – versão 1
Problema 6
3 – Projetar algoritmo – versão 2
ano % 400 == 0
F
V
Bissexto
ano % 100 == 0
F
V
Não
bissexto
ano % 4 == 0
V
Bissexto
Bissexto:
ano % 400 == 0 OU
F
Não
bissexto
(ano % 100 ≠ 0) E (ano % 4 == 0)
Problema 6
3 – Projetar algoritmo – versão 2
C1
início
(ano % 400 == 0)
OU
((ano % 100 ≠ 0) E (ano % 4 == 0))
ano
V
C1
F
Não
bissexto
Bissexto
fim
Problema 6
4 – Codificar – versão 2
Dúvidas?
Download

File - Introdução a Ciência dos Computadores