1. Algoritmos e Estruturas de Dados
Prof. M.Sc. Carlos Bezerra
algoritmos@carlosbezerra.com
Linguagem C
Linguagem C
- Estruturas de Controle -
- Estruturas de Controle -
2. Estruturas Condicionais ou de Seleção
Estruturas Condicionais ou de Seleção
Simples
Simples
Composta
Composta
Múltipla escolha
Múltipla escolha
Estruturas de Repetição
Estruturas de Repetição
Por condição no início
Por condição no início
Por condição no fim
Por condição no fim
Por contagem
Por contagem
Estruturas de Controle
Estruturas de Controle
3. Realizam a execução de um conjunto de
Realizam a execução de um conjunto de
comandos de acordo com o
comandos de acordo com o valor de uma
valor de uma
expressão
expressão.
.
Servem para
Servem para alterar o fluxo
alterar o fluxo de execução de um
de execução de um
programa baseado no valor, verdadeiro ou falso,
programa baseado no valor, verdadeiro ou falso,
de uma expressão lógica.
de uma expressão lógica.
Estrutura Condicional ou de Seleção
Estrutura Condicional ou de Seleção
6. if (<expressão>)
{
if (<expressão>)
{
<comandos1>
}
else
{
<comandos2>
}
}
else
{
if (<expressão>)
{
<comandos3>
}
else
{
<comandos4>
}
} 23
22
Estrutura Condicional Composta
Estrutura Condicional Composta
:: Comando
:: Comando if-else
if-else
Quando temos estruturas condicionais presentes
Quando temos estruturas condicionais presentes
em blocos de comandos de outras estruturas
em blocos de comandos de outras estruturas
condicionais, chamamos de estruturas
condicionais, chamamos de estruturas aninhadas
aninhadas
ou
ou encadeadas
encadeadas:
:
7. x = 2;
if (x < 2)
if (x >= -3)
printf("n x está entre [-3;1]");
else printf("x é maior que 1");
24
x = 2;
if (x < 2)
{
if (x >= -3)
printf("n x está entre [-3;1]");
}
else printf("x é maior que 1");
Estrutura Condicional Composta
Estrutura Condicional Composta
:: Comando
:: Comando if-else
if-else
Ambigüidade:
Ambigüidade: na falta de chaves, a linguagem C
na falta de chaves, a linguagem C
associa o
associa o else
else sempre ao último
sempre ao último if
if.
.
Portanto, para que a construção funcione como
Portanto, para que a construção funcione como
desejado, pode-se resolver o problema usando
desejado, pode-se resolver o problema usando
bloco.
bloco.
8. O operador ternário
O operador ternário ?
? possui a seguinte sintaxe:
possui a seguinte sintaxe:
Exp1
Exp1 é avaliada:
é avaliada:
Se for
Se for verdadeira
verdadeira,
, Exp2
Exp2 é avaliada se torna o seu valor
é avaliada se torna o seu valor
da instrução.
da instrução.
Se for
Se for falsa
falsa,
, Exp3
Exp3 é avaliada se torna o seu valor da
é avaliada se torna o seu valor da
instrução.
instrução.
Exp1
Exp1 ?
? Exp2
Exp2 :
: Exp3;
Exp3;
25
Operador Condicional:
Operador Condicional: ?
?
9. Operador Condicional:
Operador Condicional: ?
?
Equivale ao seguinte código
Equivale ao seguinte código if-else
if-else:
:
26
if
if (Exp1)
(Exp1)
Exp2;
Exp2;
else
else
Exp3;
Exp3;
Exp1
Exp1 ?
? Exp2
Exp2 :
: Exp3;
Exp3;
10. ex01
Considere um par de valores
Considere um par de valores (x, y)
(x, y)
Eles representam as coordenadas de um
Eles representam as coordenadas de um
ponto no plano
ponto no plano
Determinar:
Determinar:
o quadrante ao qual pertence o ponto, ou
o quadrante ao qual pertence o ponto, ou
se está sobre um dos eixos cartesianos
se está sobre um dos eixos cartesianos
Exercício
Exercício
12. 27.1
27
Estrutura Condicional de Múltipla Escolha
Estrutura Condicional de Múltipla Escolha
:: Comando
:: Comando switch-case
switch-case
Funcionamento do comando
Funcionamento do comando switch
switch:
:
Analisa a
Analisa a expressão
expressão ou
ou valor
valor.
.
Caso seja igual a
Caso seja igual a Constante1
Constante1, então executa
, então executa
“
“comandos1
comandos1” e vai para o final do
” e vai para o final do switch
switch.
.
Caso seja
Caso seja Constante2
Constante2, então executa
, então executa
“
“comandos2
comandos2” e vai para o final do
” e vai para o final do switch
switch.
.
Assim sucessivamente...
Assim sucessivamente...
Caso não seja nenhuma das alternativas, vai
Caso não seja nenhuma das alternativas, vai
para o
para o default
default,
, executa “
executa “comandosN
comandosN” e
” e
encerra o
encerra o switch
switch.
.
13. 28
Estrutura Condicional de Múltipla Escolha
Estrutura Condicional de Múltipla Escolha
:: Comando
:: Comando switch-case
switch-case
O parâmetro do
O parâmetro do switch
switch deve ser
deve ser int
int ou
ou char
char.
.
O valor após o
O valor após o case
case dever ser uma
dever ser uma constante
constante
(não pode ser uma variável).
(não pode ser uma variável).
Instrução
Instrução break
break:
:
Faz com que aconteça a
Faz com que aconteça a saída imediata
saída imediata daquela
daquela
estrutura (no caso, o comando
estrutura (no caso, o comando switch
switch).
).
A execução do programa continua com a primeira
A execução do programa continua com a primeira
instrução depois da estrutura.
instrução depois da estrutura.
Sua ausência faz o controle passar ao próximo
Sua ausência faz o controle passar ao próximo case
case, o
, o
que não é desejado
que não é desejado.
.
14. ex02
Exercício
Exercício
Os funcionários de uma empresa
Os funcionários de uma empresa
receberam um aumento de salário:
receberam um aumento de salário:
Técnicos: 50%
Técnicos: 50%
Gerentes: 30%
Gerentes: 30%
Demais: 20%
Demais: 20%
Escrever um programa que receba como
Escrever um programa que receba como
entrada o salário atual e o cargo do
entrada o salário atual e o cargo do
funcionário, e apresente o novo salário
funcionário, e apresente o novo salário
após o aumento.
após o aumento.
16. Funcionamento:
Funcionamento:
1.
1.Testar a condição.
Testar a condição.
2.
2.Se a condição for
Se a condição for falsa
falsa, então sair do laço.
, então sair do laço.
3.
3.Se a condição for
Se a condição for verdadeira
verdadeira, então executar
, então executar
cada um dos comandos do interior do laço.
cada um dos comandos do interior do laço.
4.
4.Após executar o último comando do laço
Após executar o último comando do laço
while
while, voltar ao passo
, voltar ao passo 1
1.
.
Repetição por condição no início
Repetição por condição no início
:: Comando
:: Comando while
while
17. O
O while
while deve ser usado sempre que:
deve ser usado sempre que:
Não soubermos exatamente quantas vezes o
Não soubermos exatamente quantas vezes o
laço deve ser repetido
laço deve ser repetido
O teste deva ser feito antes de iniciar a
O teste deva ser feito antes de iniciar a
execução de um bloco de comandos
execução de um bloco de comandos
Houver casos em que o laço não deva ser
Houver casos em que o laço não deva ser
repetido nenhuma vez antes do teste da
repetido nenhuma vez antes do teste da
condição
condição
Atenção:
Atenção:
As variáveis usadas no teste devem ser
As variáveis usadas no teste devem ser
inicializadas
inicializadas antes do teste.
antes do teste.
29
Repetição por condição no início
Repetição por condição no início
:: Comando
:: Comando while
while
19. Repetição por condição no fim
Repetição por condição no fim
:: Comando
:: Comando do-while
do-while
Funcionamento:
Funcionamento:
1.
1.Executar os comando dentro do bloco
Executar os comando dentro do bloco do-
do-
while
while.
.
2.
2.Testar a condição.
Testar a condição.
3.
3.Se a condição for
Se a condição for falsa
falsa, então sair do laço.
, então sair do laço.
4.
4.Se a condição for
Se a condição for verdadeira
verdadeira, então retornar
, então retornar
para o
para o passo 1
passo 1.
.
20. O comando
O comando do-while
do-while deve ser usado
deve ser usado
sempre que:
sempre que:
Não soubermos exatamente
Não soubermos exatamente quantas vezes o
quantas vezes o
laço deve ser repetido
laço deve ser repetido
O teste deva ser feito
O teste deva ser feito depois da execução
depois da execução de
de
um bloco de comandos
um bloco de comandos
O bloco de comandos deve se
O bloco de comandos deve se executado pelo
executado pelo
menos uma vez
menos uma vez
30
Repetição por condição no fim
Repetição por condição no fim
:: Comando
:: Comando do-while
do-while
21. Ler um número e verificar se este é ou
Ler um número e verificar se este é ou
não um número primo.
não um número primo.
Dada uma
Dada uma dívida de 10 mil reais
dívida de 10 mil reais que
que
cresce a juros de
cresce a juros de 2,5% ao mês
2,5% ao mês e uma
e uma
aplicação de 1.500 reais
aplicação de 1.500 reais com rendimento
com rendimento
de
de 4% ao mês
4% ao mês, escrever um algoritmo que
, escrever um algoritmo que
determine o numero de meses
determine o numero de meses
necessários para pagar a dívida.
necessários para pagar a dívida.
ex03
ex04
Exercícios
Exercícios
22. for
for (comandos_inic; condição_teste; incre/decremento)
(comandos_inic; condição_teste; incre/decremento)
{
{
<comandos_a_repetir>
<comandos_a_repetir>
}
}
<comandos_após_laço_for>;
<comandos_após_laço_for>;
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Permite que um certo trecho de programa
Permite que um certo trecho de programa
seja executado um
seja executado um número determinado
número determinado
de vezes
de vezes.
.
24. Funcionamento:
Funcionamento:
1.
1.Executar os comandos de inicialização.
Executar os comandos de inicialização.
2.
2.Testar a condição.
Testar a condição.
3.
3.Se a condição for
Se a condição for falsa
falsa então sair do laço
então sair do laço for
for.
.
4.
4.Se a condição for
Se a condição for verdadeira
verdadeira então executar
então executar
os comandos que estão subordinados ao
os comandos que estão subordinados ao for
for.
.
5.
5.Executar os comandos de
Executar os comandos de
incremento/decremento.
incremento/decremento.
6.
6.Voltar ao
Voltar ao passo 2
passo 2.
.
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
25. Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Observações:
Observações:
Os comandos de
Os comandos de inicialização
inicialização são executados
são executados
apenas uma vez
apenas uma vez.
.
O contador é incrementado/decrementado
O contador é incrementado/decrementado
sempre ao
sempre ao final da execução
final da execução do bloco.
do bloco.
O teste é feito sempre
O teste é feito sempre antes do início
antes do início da
da
execução do bloco de comandos.
execução do bloco de comandos.
26. 31
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
O comando
O comando for
for deve ser usado sempre
deve ser usado sempre
que:
que:
Soubermos
Soubermos exatamente quantas vezes
exatamente quantas vezes o laço
o laço
deve ser repetido.
deve ser repetido.
O teste deva ser feito
O teste deva ser feito antes
antes da execução de
da execução de
um bloco de comandos.
um bloco de comandos.
Houver casos em que o laço
Houver casos em que o laço não deva
não deva ser
ser
repetido nenhuma vez
repetido nenhuma vez.
.
27. 32
for
for ( ; condição_teste; incre/decremento)
( ; condição_teste; incre/decremento)
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Flexibilidade do comando
Flexibilidade do comando for
for
Se nenhuma inicialização é necessária,
Se nenhuma inicialização é necessária,
comandos_inic
comandos_inic pode ser omitido.
pode ser omitido.
28. 33
for
for (comandos_inic; ; incre/decremento)
(comandos_inic; ; incre/decremento)
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Flexibilidade do comando
Flexibilidade do comando for
for
Se
Se condição_teste
condição_teste é omitida, o comando
é omitida, o comando for
for
pode ficar em um laço infinito.
pode ficar em um laço infinito.
29. 34
for
for (comandos_inic; condição_teste; )
(comandos_inic; condição_teste; )
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Flexibilidade do comando
Flexibilidade do comando for
for
Se
Se incre/decremento
incre/decremento é omitido, deve-se,
é omitido, deve-se,
atualizar a variável de laço em um comando
atualizar a variável de laço em um comando
dentro do laço.
dentro do laço.
30. 35
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Flexibilidade do comando
Flexibilidade do comando for
for
Duas ou mais variáveis (separadas por vírgula)
Duas ou mais variáveis (separadas por vírgula)
podem ser inicializadas e/ou
podem ser inicializadas e/ou
incre/decrementadas
incre/decrementadas ao mesmo tempo
ao mesmo tempo.
.
31. Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Comandos
Comandos for
for aninhados
aninhados
Um comando
Um comando for
for pode ser utilizado dentro de
pode ser utilizado dentro de
outro comando
outro comando for
for.
.
Cuidados devem ser tomados para não
Cuidados devem ser tomados para não
aumentar o tempo de execução do algoritmo.
aumentar o tempo de execução do algoritmo.
33. Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Cálculo de séries
Cálculo de séries
1.
1.Determinar o termo geral.
Determinar o termo geral.
2.
2.Determinar valor inicial do contador.
Determinar valor inicial do contador.
3.
3.Determinar valor final do contador
Determinar valor final do contador.
.
34. ex06
S =1−
1
33
+
1
53
−
1
73
+⋯, π =
3
√S×32
S=
2
50
+
2
2
48
+
2
3
46
+⋯+
2
25
2
ex05
Repetição por contagem
Repetição por contagem
:: Comando
:: Comando for
for
Exercícios
Exercícios
1.
1.Calcular o valor de S:
Calcular o valor de S:
1.
1.Calcular o valor de
Calcular o valor de π
π com
com precisão de
0,001:
: