Buscar

Aula02 Sequencial12011

Prévia do material em texto

INF01202INF01202INF01202INF01202
Algoritmos e ProgramaçãoAlgoritmos e ProgramaçãoAlgoritmos e ProgramaçãoAlgoritmos e Programação
Prof. Anderson Maciel
amaciel@inf.ufrgs.br 
Aula 2 – Algoritmos sequenciais
Elaboração de um ProgramaElaboração de um ProgramaElaboração de um ProgramaElaboração de um Programa
Problema Análise
AlgoritmoPrograma Algoritmo
2
Operações
sobreDados de Saídas
P bl
os dadosEntrada
Problema
é uma relação entre entradas para saídas aceitáveis. 
Exemplo:
ENTRADA j t d l i t iENTRADA: um conjunto de valores inteiros, 
todos diferentes entre si 
SAÍDA: o menor dos valores de entrada
U Al ritm l bl 
SAÍDA: o menor dos valores de entrada 
Um Algoritmo resolve um problema 
se produz uma saída aceitável para QUALQUER entrada. 
3
Otimização: quando a saída é a melhor solução
Programas Programas sequenciaissequenciaisProgramas Programas sequenciaissequenciais
• conceito de programa• conceito de programa
t t d l it• estrutura de um algoritmo
l it i l• algoritmo sequencial
• estrutura de programa sequencial
• programa C sequencial
4
E1 E4E3E2 E5
E6 E9E8E7 E10
E11 E14E13E12 E15
E16 E19E18E17 E20
Escaninhos
Asd45ert6
876 gjgpoij
876trrtyrfg
mn, ffgh45
Qweqweq
wewerwr
tyutu6
hjhk567
x
x x x
x x
x
x x x
x
x
x
x
5
123456
E1 E4E3E2 E5
E6 E9E8E7 E10
E11 E14E13E12 E15
E16 E19E18E17 E20E16 E19E18E17 E20
Escaninhos
1 Pegue uma folha e coloque no escaninho E11. Pegue uma folha e coloque no escaninho E1
2. Pegue a próxima folha e coloque no escaninho E2
3. Faça a soma dos valores das folhas nos escaninhos3. Faça a soma dos valores das folhas nos escaninhos 
E1 e E2 e coloque o resultado no escaninho E3
4. Escreva o valor contido no escaninho E3
5. Terminar 
6
Asd45ert6
876 gjgpoij
876trrtyrfg
mn, ffgh45
Qweqweq
wewerwr
tyutu6
hjhk567
x
x x x
x x
x
x x x
x
x
x
x
123456
ALGORITMOALGORITMOALGORITMOALGORITMO
um conjunto finito de ações que, quando executadas 
na ordem estabelecida, atingem um objetivo
determinado, em um tempo finito.
Um algoritmo é construído para resolver UM 
ú i bl ( ã d l )único problema (programação modular).
1. Pegue uma folha e coloque no escaninho E1
2. Pegue a próxima folha e coloque no escaninho E2
3. Faça a soma dos valores das folhas nos escaninhos E1 e E2 e coloque o 
resultado no escaninho E3
4. Escreva o valor contido no escaninho E3
7
5. Terminar 
Partes principais do computadorPartes principais do computador
M ó i Memória Memória Memória 
secundária
Unidade Central UnidadeUnidade Unidade Central 
de 
Processamento
Unidade
de
Saída
Unidade
de
Entrada Processamento SaídaEntrada
Unidade 
Aritmética e 
8
Aritmética e 
Lógica
E1 E4E3E2 E5
E6 E9E8E7 E10
Memória
E6 E9E8E7 E10
E11 E14E13E12 E15
E16 E19E18E17 E20E16 E19E18E17 E20
Escaninhos
Unidade 
d 
Unidade 
l d 
de 
Saída
Unidade de 
central de 
processamento
entrada
876 gjgpoij
876trrtyrfg
mn, ffgh45
wewerwr
tyutu6
hjhk567
x
x x x
x x
x x x
x
x
x
xUnidade 
aritmética 
Unidade 
de 
9
Asd45ert6Qweqweq
x
123456e lógica entrada
E1 E4E3E2PseudoPseudo--linguagemlinguagem
E6 E9E8E7
E11 E14E13E121. Pegue uma folha e coloque no escaninho E1
g gg g
E16 E19E18E17
Escaninhos
2. Pegue a próxima folha e coloque no escaninho E2
3. Faça a soma dos valores das folhas nos escaninhos 
E1 e E2 e coloque o resultado no escaninho E3
4. Escreva o valor contido no escaninho E3
5. Terminar 
{
1. Ler E1
2 L E2
Algoritmo
{...
scanf ("%d",&E1);
scanf ("%d" &E2);2. Ler E2
3. E3 ← E1 + E2
4 Escrever E3
scanf ( %d ,&E2); 
E3 = E1 + E2;
printf(“%d”, E3);
10
4. Escrever E3
5. Terminar. 
printf( %d , E3);
}C
1. início
Variável Variável -- DadosDados
2. ler val1
3. ler val2
4 soma ← val1 + Valor informado: 4. soma ← val1 + 
val2
5. escrever soma
6 fi
Valor informado
5
6. fim.
Memória: Escaninhos
Dados: NOME 
identificador
E1 E4E3E2 E5
E6 E9E8E7 E10
val1 somaval2 Associa nome a 
espaço de 
5
E11 E14E13E12 E15
E16 E19E18E17 E20
espaço de 
memória
1. início
2 l l1
Variável Variável -- DadosDados
2. ler val1
3. ler val2
4. soma ← val1 + Valor informado:
val2
5. escrever soma
6 fim
13
6. fim.
Memória: Escaninhos
D d s: NOME 
E1 E4E3E2 E5
E6 E9E8E7 E10
Dados: NOME 
identificador
5 13
E11 E14E13E12 E15
E16 E19E18E17 E20
Associa nome a 
espaço de espaço de 
memória
1. início
2 l l1
Variável Variável -- DadosDados
2. ler val1
3. ler val2
4. soma ← val1 + 
val2
5. escrever soma
6 fim6. fim.
Valor resultante:
18
Escaninhos D d s: NOME Memória: Escaninhos Dados: NOME 
identificador
val1 E4somaval2 E55 13 18
Memória:
Associa nome a 
espaço de 
vE6 E9E8E7 E10
E11 E14E13E12 E15 espaço de 
memóriaE16 E19E18E17 E20
1. início
2 l l1
Variável Variável -- DadosDados
2. ler val1
3. ler val2
4. soma ← val1 + val2
5. escrever soma
6. fim.
Valor mostrado:
18
Memória: Escaninhos D d s: NOME 
E1 E4E3E2 E5
Memória: Escaninhos
val1 E4somaval2 E5
Dados: NOME 
identificador5 13 18
E6 E9E8E7 E10
E11 E14E13E12 E15
vE6 E9E8E7 E10
E11 E14E13E12 E15
Associa nome a 
espaço de 
E16 E19E18E17 E20E16 E19E18E17 E20
espaço de 
memória
Variáveis e ConstantesVariáveis e Constantes
N1 + N2 + (N3 X 2)N1 + N2 + (N3 X 2)
4
Constante: valor 
não se modifica
Variável: conteúdo
se modifica
não se mod f ca
Variáveis: Tipos de dadosVariáveis: Tipos de dados
• Componente da linguagem de programação, determina o 
tipo de conteúdo e tamanho de área de memória
pp
tipo de conteúdo e tamanho de área de memória
reservada para um dado.
• No C, os tipos básicos de dados são:
Tipo Tamanho Valores Válidos
h 1 b d ód 
No C, os tipos básicos de dados são
char 1 byte Caracteres do Código ASCII
int 2 bytes * -32768 a +32767
float 4 bytes -3.4e38 a +3.4e38
double 8 bytes -1.7e308 a +1.7e308
* No C: ocupa 4 bytes.
AlgoritmoAlgoritmoAlgoritmoAlgoritmo
Algoritmo Soma2
{ Calcula e informa a soma de 2 valores lidos do teclado }{ Calcula e informa a soma de 2 valores lidos do teclado }
entradas: dois valores
saídas: a soma dos 2 valores lidossaídas: a soma dos 2 valores lidos 
1. Ler o primeiro valor
2. Ler o segundo valorg
3. Efetuar a soma
4. Informar a soma
5. Terminar.
17
Algoritmo Algoritmo --
Algoritmo Soma2
{ Calcula e informa a soma de 2 valores lidos do 
teclado }
refinamentosrefinamentos
}
entradas: dois valores
saídas: a soma dos 2 valores lidos 
1. Ler o primeiro valor1. Ler o primeiro valor
2. Ler o segundo valor
3. Efetuar a soma
4 Informar a soma
Algoritmo Soma2()
4. Informar a soma
5. Terminar. 
{ Calcula e informa a soma de 2 valores lidos do teclado }
entradas: E1, E2 (valores lidos ) {especifica os valores}
íd E3 ( )saídas: E3 (soma )
1. Ler E1
2 Ler E22. Ler E2
3. E3 ← E1 + E2
4 Escrever E3
18
4. Escrever E3
5. Terminar. 
Variáveis Variáveis -- Algoritmo Soma2()Variáveis Variáveis --
nomes adequadosnomes adequados
{ Calcula e informa a soma de 2 valores
entradas: E1, E2 (valores lidos )
saídas: E3 (soma )nomes adequadosnomes adequados 1. Ler E1
2. Ler E2
3. E3 ← E1 + E2
Algoritmo Soma2()
{ C l l i f d 2 l lid d t l d }
4. Escrever E3
5. Terminar. 
{ Calcula e informa a soma de 2 valores lidos do teclado }
entradas: Valor1, Valor2 {atribui nomes significativos}
saídas: Somasaídas: Soma
1. Ler Valor1
2 Ler Valor22. Ler Valor2
3. Soma ← Valor1 + Valor2
4 Escrever Soma
19
4. Escrever Soma
5. Terminar.
/*calcula a soma de 2 valores inteiros lidos 
Algoritmo Soma2{ Calcula e informa a som
valores lidos do teclado 
CodificaçãoCodificação
/ calcula a soma de 2 valores inteiros lidos 
no teclado*/
#include <stdio.h> // biblioteca com operações de I/O
valores lidos do teclado 
entradas: val1, val2
saídas: soma
1. início
2 ler val1p ç
int main()
{
2. ler val1
3. ler val2
4. soma ← val1 + val2
5. escrever soma
6 fim{
int val1, val2; // declaração tipo das variáveis informadas
int soma; // declaração tipo da variável resultante
6. fim.
printf("Valor 1: "); // mensagem impressa na tela
scanf("%d", &val1); // leitura da informação digitada
printf("Valor 2: ");
scanf("%d", &val2); 
soma al1 + al2 // arma ena res ltado em somasoma = val1 + val2; // armazena resultado em soma
printf("Resultado da soma: %d\n", soma); // mostra
return 0; // encerra o programa e retorna zero ao Sist Opreturn 0; // encerra o programa e retorna zero ao Sist Op
}
Mostrar exemplo no Code::Blocks Æ
Normas Normas importantesimportantes para algoritmospara algoritmosNormas Normas importantesimportantes para algoritmospara algoritmos
• identificar claramente a FINALIDADE do 
algoritmo, e suas ENTRADAS e SAÍDASg
• a execução do algoritmo deve sempre, em g p
algum momento, terminar 
• o fluxo de execução deve seguir os passos 
sequencialmente, sem NUNCA voltar atrás ou 
saltar passos, através de algum comando do 
tipo ´Vá para passo X´ - PROGRAMAÇÃO 
21
p p p
ESTRUTURADA
Problema
Dado o preço de um produto em reais, converter 
este valor para o equivalente em dólares. O p q
programa deverá ler do teclado o preço do 
produto e a taxa de conversão para o dólar. 
Algoritmo ConversãoParaDolar
p p
{ Calcula e conversão de um valor de Real para Dolar }
entradas: Preço, Taxa de conversão
saídas: Preço em Dolar
1. Obtém valor do preço
O é2. Obtém valor da taxa de conversão
3. Calcula o preço em dolar
4 I f d l
22
4. Informa o preço em dolar
5. Terminar.
Algoritmo ConversãoParaDolar
{ Calcula e conversão de um valor de Real para Dolar }
entradas: Preço, Taxa de conversão
saídas: Preço em Dolar
1. Obtém valor do preço
2. Obtém valor da taxa de conversão
3. Calcula o preço em dolar
4. Informa o preço em dolar
5. Terminar.
Algoritmo ConversãoParaDolar()g ()
{ Calcula e conversão de um valor de Real para Dolar }
entradas: Preço, Taxa
saídas: PreçoEmDolar
1. Ler Preço
2. Ler Taxa
3. PreçoEmDolar← Preço ∗ Taxa
4 E P E D l
23
4. Escrever PreçoEmDolar
5. Terminar.
Conversão ao Dolar Conversão ao Dolar Algoritmo ConversãoParaDo
{ Calcula e conversão de um val
/* Calcula e conversão de Real para Dolar */
#include <stdio.h> // biblioteca com operações de I/O
{
Real para Dolar }
entradas: Preço, Taxa
saídas: PreçoEmDolar
1. Ler Preço
int main()
{
1. Ler Preço
2. Ler Taxa
3. PreçoEmDolar← Preço ∗ Taxa
4. Escrever PreçoEmDolar
5 T ifloat Preco, Taxa; // Valores em real declarados float
float PrecoEmDolar; // tipo da variável resultante
5. Terminar.
printf("Valor em real: "); // mensagem impressa na tela
scanf("%f", &Preco); // leitura da informação digitada
printf(“Taxa conversao: ");printf(“Taxa conversao: ");
scanf("%f", &Taxa); 
PrecoEmDolar = Preco *Taxa;PrecoEmDolar Preco Taxa;
printf(“Preco em dolar: %f\n", PrecoEmDolar); // mostra
return 0; // encerra o programa e retorna zero ao Sist Op
}
Mostrar exemplo no Code::Blocks Æ
Problema
C l l i ã btid d dCalcular a comissão obtida por um vendedor em 
uma venda efetuada.
Escrever um algoritmo que lê o número de um vendedor, 
o valor da venda efetuada e o percentual sobre a venda. 
Fornecer número do vendedor e sua comissão. 
Algoritmo Comissão()g ()
{ Calcula a comissão de um vendedor }
entradas: NumVendedor, ValorVenda, Percentual
saídas: Comissao
1. Ler NumVendedor, ValorVenda
2. Ler Percentual
3. Comissão ← ValorVenda ∗ Percentual ∗ 0,01
25
4. Escrever NumVendedor, Comissão
5. Terminar.
Exercícios propostos
Fazer algoritmo e programa C para g p g p
resolver os seguintes problemas:
1. Fornecer a soma e o produto de três 
valores lidos do tecladovalores lidos do teclado
 l l 2. Calcular o preço a ser pago em uma 
loja, sendo informado o preço do produto j , p ç p
comprado e o número de unidades 
adquiridas (1 só produto - várias unidades 
26
adquiridas (1 só produto várias unidades 
deste produto)

Continue navegando