Buscar

Algoritmos I Parte 1a

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 41 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 41 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 41 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

Algoritmos I
Algoritmos I - Prof. Mauro Gil
mgil@unicarioca.edu.br
@maurocgil
Algoritmos I
Conteúdo Programático
• Unidade 1: Elementos básicos da pseudolinguagem
• Noção de Algoritmos
• Constantes e Variáveis
• Operadores Aritméticos, Relacionais e Lógicos
• Unidade 2: Estruturas de Programação
• Estrutura Sequencial
• Estrutura Condicional Simples
• Estrutura Condicional Composta
Algoritmos I
Conteúdo Programático
• Unidade 3: Estruturas de Repetição
• Estrutura de Repetição PARA
• Estrutura de Repetição Enquanto
• Estrutura de Repetição REPITA
• Unidade 4: Subrotinas
• Conceitos de Modularização
• Procedimentos
• Funções
Algoritmos I
Bibliografia
• Básica:
• FARRER, H. et al. Algoritmos Estruturados. Rio de Janeiro: LTC, 1999.
• FORBELLONE, V.; EBERSPACHE, F. Lógica de Programação. São Paulo: Makron Books, 2000.
• GUIMARAES, A. M. Algoritmos e Estrutura de Dados. Rio de Janeiro: LTC, 1994.
• Complementar:
• HOLZNER, S. C: Programação: o guia prático para a programação eficiente. Rio de Janeiro: Campus, 1993.
• KERNIGHAN, Brian W, RITCHIE, Dennis M. C: a linguagem de programação padrão ANSI. Rio de Janeiro: Campus, 1989.
• MANZANO, J. A. N. G. Estudo dirigido de algoritmos. 13.ed. rev, atual e ampl. São Paulo: Érica, 2010.
• SCHILDT, H. C completo e total. 3. ed. rev. e atual. São Paulo: Makron Books, 2009.
• TREMBLAY, J.P. Ciência dos computadores: uma abordagem algorítmica. São Paulo: McGrawn-Hill, 1986.
Algoritmos I
Algoritmos no Dia a Dia: 
• indicações de como chegar a uma determinada rua;
• receita de culinária;
• planta do projeto de construção de um edifício;
• instruções de montagem de um brinquedo;
• substituição de uma lâmpada:
1. remova a lâmpada queimada;
2. coloque a nova lâmpada.
As instruções parecem suficientes para um 
operador humano, mas e se a tarefa fosse 
desempenhada por um robô?
Algoritmos I
Algoritmos no Dia a Dia: 
Exemplo (substituição de uma lâmpada): 
• Refinamento 1:
1. posicione a escada debaixo da lâmpada queimada;
2. escolha uma nova lâmpada de mesma potência da queimada;
3. suba na escada até que a lâmpada possa ser alcançada;
4. gire a lâmpada queimada no sentido anti-horário até que ela se solte;
5. posicione a nova lâmpada no soquete;
6. gire-a no sentido horário até que ela se firme;
7. desça a escada.
Algoritmos I
• Refinamento 2:
1. posicione a escada debaixo da lâmpada queimada;
2. selecione uma nova lâmpada para substituição;
se a potência não for a mesma da queimada, então repita até encontrar uma que sirva
descarte a lâmpada selecionada;
selecione uma nova;
3. enquanto a lâmpada não puder ser alcançada
suba um degrau da escada;
4. repita até que a lâmpada fique livre do soquete
gire a lâmpada no sentido anti-horário;
5. posicione a nova lâmpada no soquete;
6. repita até que a lâmpada esteja firme no soquete
gire a lâmpada no sentido horário;
7. desça a escada.
o detalhamento pode continuar 
quase que indefinidamente
Algoritmos I
Algoritmos em Computação: 
• computadores, infelizmente, só fazem aquilo que se manda, e não necessariamente o
que se deseja que eles façam;
• um conjunto de instruções pode ser facilmente entendido por um ser humano, mas
deve ser mais bem especificado para que seja executado por um computador;
• as instruções fornecidas ao computador devem ser expressas de forma clara e sem
qualquer ambiguidade;
• computadores manipulam um conjunto muito limitado de instruções e um algoritmo
deve ser expresso nos termos dessas instruções.
Algoritmos I
Algoritmos em Computação: 
• o refinamento sucessivo é um bom método para a elaboração de um algoritmo:
• começa-se com uma afirmação genérica da solução do problema;
• refina-se a solução até o algoritmo final.
• um algoritmo representa melhor o raciocínio envolvido na lógica de programação e
abstrai detalhes computacionais que são adicionados mais tarde;
• uma vez concebida uma solução algorítmica para um problema, esta pode ser
traduzida para qualquer linguagem de programação;
• a solução escrita em linguagem de programação é transformada em um programa de
computador.
Algoritmos I
Algoritmos em Computação: 
• o processo de solução de um problema por meio de um programa de 
computador:
problema solução do 
problema
implementação
Adaptado de TREMBLAY, BUNT (1983)
implementação 
(passo difícil)
solução como 
um programa de 
computador
solução em forma 
de algoritmo
elaboração de um 
algoritmo para 
resolver o problema
tradução do algoritmo 
para uma linguagem 
de programação
Algoritmos I
Algoritmos
• Definições: 
“... uma sequência ordenada, e sem ambiguidade, de passos que levam à solução de um dado
problema.”
TREMBLAY, BUNT (1983)
“... é a descrição de um padrão de comportamento, expresso em termos de um repertório bem
definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas.”
GUIMARÃES, LAGES (1994)
é uma sequência finita de instruções não ambíguas que, quando executadas, produzem
o resultado esperado.
Algoritmos I
Linguagens para Algoritmos: 
• tanto a fraqueza quanto o poder de uma linguagem natural se devem ao seu caráter vago e à sua
imprecisão;
• um algoritmo escrito em uma linguagem formal afasta a possibilidade de ambiguidade, tal que, para
uma situação inicial, a sua execução sempre leva ao mesmo estado final, percorrendo o mesmo
caminho;
• através de um conjunto básico de primitivas é possível pensar no problema e não na máquina que
executará o algoritmo, porém, sem se distanciar muito da máquina;
• algumas opções:
• linguagem textual: PORTUGOL;
• linguagem natural: DESCRIÇÃO NARRATIVA
• linguagem gráfica: FLUXOGRAMA.
Algoritmos I
Linguagens para Algoritmos: 
• DESCRIÇÃO NARRATIVA
• A descrição narrativa consiste em analisar o enunciado do problema e escrever, 
utilizando uma linguagem natural, os passos a serem seguidos para a sua resolução.
• Vantagem: não é necessário aprender nenhum conceito.
• Desvantagem: a língua natural abre espaço para várias interpretações, o que 
posteriormente dificultará a transcrição desse algoritmo para um programa.
Algoritmos I
Linguagens para Algoritmos: 
• FLUXOGRAMA
• Consiste em analisar o enunciado do problema e escrever, utilizando símbolos 
gráficos predefinidos, os passos para sua solução.
• Vantagem: o entendimento de elementos gráficos é mais simples que o entendimento 
de textos.
• Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além disso, o 
algoritmo resultante não apresenta muitos detalhes, dificultando a sua transcrição 
para um programa.
Algoritmos I
Linguagens para Algoritmos: 
• FLUXOGRAMA
• Conjunto de símbolos utilizados no fluxograma.
Algoritmos I
Linguagens para Algoritmos: 
• PORTUGOL
• O pseudocódigo ou portugol consiste em analisar o enunciado do problema e 
escrever, por meio de regras predefinidas, os passos a serem seguidos para sua 
solução.
• Vantagem: a passagem do algoritmo para qualquer linguagem de programação é 
quase imediata, bastando conhecer as palavras reservadas da linguagem que será 
utilizada.
• Desvantagem: é necessário aprender as regras do pseudocódigo.
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
um identificador é uma sequência de símbolos
(caracteres) que dá nome a uma entidade (variável, tipo
de dado, etc.) que é parte da descrição de um
algoritmo;
OBS.: letras maiúsculas e minúsculas são tratadasde forma
diferente, ou seja, os identificadores MEDIA e MeDiA são
diferentes.
Exemplos de identificadores válidos:
A
a
nota
NOTA
X5
nota_1
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
Exemplos de identificadores inválidos:
5b -por começar com número;
e 12 -por conter espaço em branco;
x-y -por conter o caracter especial -;
prova 2n -por conter espaço em branco;
nota(2) -por conter o caracteres especiais ();
case –por ser uma palavra reservada;
SET –por ser uma palavra reservada;
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
um tipo estabelece a natureza (característica) do dado
que é manipulado por um algoritmo;
tipos de dados básicos (PORTUGOL): 
inteiro: 13, – 6, 7830, – 295; 
real: 23.8, 3.6752, – 8.910, 3738.72, 32.0; 
caractere: “Teste”, “111 + 222 = 333”; 
lógico: FALSO, VERDADEIRO; 
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
- uma variável é uma entidade que armazena um valor
(dado) de um tipo e é conhecida pelo seu identificador;
- tecnicamente, uma variável corresponde a uma área
na memória do computador que armazena um tipo
específico de conteúdo.
- o conteúdo de uma variável pode ser modificado
durante a execução do algoritmo.
sintaxe da declaração (definição) de uma variável
(PORTUGOL):
inteiro: VALOR;
real: R1, R2;
caractere: FRASE;
lógico: TEM;
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
uma constante é uma entidade com características 
semelhantes às de uma variável, porém, o seu valor 
nunca muda durante a execução do algoritmo.
sintaxe da declaração (definição) de uma constante
(PORTUGOL):
const PI 3.14;
const PHI 1.618;
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
um operador é um símbolo que é associado a um valor
(constante ou variável) ou a um par de valores para
formar uma expressão;
– tipos de operadores: 
• aritméticos 
adição: +
multiplicação: *
potenciação: pot (x,y) x elevado a y
radiciação: rad (x) raiz quadrada de x
subtração: -
divisão: /
mod (m mod n): resto da divisão de m por n
div (m div n): quociente da divisão de m por n
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
– tipos de operadores: 
• relacionais 
igual: =
maior: >
maior ou igual >=
diferente: <>
menor: <
menor ou igual : <=
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
– tipos de operadores: 
• lógicos
e: (∧) ou: (∨) não: (⌐) 
tabela verdade
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
– tipos de operadores: 
• atribuição de valor. 
um tipo especial de operador, denominado operador de
atribuição, representa o armazenamento do resultado
de uma expressão em uma variável;
exemplos:
VALOR ← 42;
R1← 1.73;
FRASE ← “UNICARIOCA”;
TEM ← VERDADEIRO;
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
precedência:
• parênteses e funções;
• exponenciação;
• multiplicação, divisão, mod e div;
• adição e subtração;
• comparações;
• não;
• e;
• ou;
• atribuição.
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
– uma expressão é uma combinação de valores,
operadores e parênteses que, quando avaliada, produz
um novo valor;
– a avaliação de uma expressão deve levar em
consideração a precedência dos operadores envolvidos;
– a avaliação de uma expressão deve levar em
consideração também os tipos das variáveis (ou
constantes) envolvidas;
– a conversão de um tipo para outro pode resultar em
um erro ou em um valor incorreto;
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
– um bloco é um conjunto de comandos com uma
função bem definida;
– um bloco também define o escopo das variáveis, ou
seja, a região do algoritmo em que são conhecidas;
Algoritmos I
Elementos de Algoritmos: 
• identificadores; 
• tipos de dados; 
• variáveis e constantes; 
• operadores; 
• expressões; 
• blocos; 
• controle de fluxo de execução (estruturas básicas e complementares); 
(Estrutura Sequencial): 
uma estrutura sequencial é um conjunto de comandos
que são executados numa sequência linear de cima
para baixo;
(Estrutura de Decisão):
uma estrutura de decisão permite decidir qual ação
deve ser executada com base no resultado de um teste;
Algoritmos I
Boas Práticas:
algumas dicas para escrever algoritmos de qualidade: 
1. algoritmos devem ser feitos para serem lidos por seres humanos;
2. escreva comentários quando estiver escrevendo o algoritmo;
3. escreva comentários que acrescentem alguma informação útil;
4. use comentários no prólogo;
5. utilize espaços em branco para melhorar a legibilidade;
Algoritmos I
Boas Práticas:
cont... 
6. escolha nomes representativos para as suas variáveis;
7. escreva um comando por linha;
8. utilize parênteses para aumentar a legibilidade das expressões;
9. utilize endentação para mostrar a estrutura lógica do algoritmo;
10. os comentários devem ser alterados quando o algoritmo é alterado.
Algoritmos I
Exemplos: 
1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números
Algoritmos I
Exemplos: 
1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números
Algoritmo em descrição narrativa:
Passo 1 – Receber dois números que serão multiplicados.
Passo 2 – Multiplicar os números.
Passo 3 – Mostrar o resultado obtido na multiplicação.Algoritmos I
Exemplos: 
1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números
Algoritmo em fluxograma:
Algoritmos I
Exemplos: 
1. Faça um algoritmo para mostrar o resultado da multiplicação de dois números
Algoritmo em pseudocódigo:
ALGORITMO
DECLARE N1, N2, M NUMÉRICO
ESCREVA “Digite dois números”
LEIA N1, N2
M ←N1 * N2
ESCREVA “Multiplicação = ”, M
FIM_ALGORITMO
Algoritmos I
Exemplos: 
2. Faça um algoritmo para mostrar o resultado da divisão de dois números
Algoritmos I
Exemplos: 
2. Faça um algoritmo para mostrar o resultado da divisão de dois números
Algoritmo em descrição narrativa:
Passo 1 – Receber dois números que para a divisão.
Passo 2 – Se o segundo número for igual a zero, não poderá ser feita a divisão, pois não
existe divisão por zero; caso contrário, dividir os números e mostrar o resultado da
divisão.
Algoritmos I
Exemplos: 
2. Faça um algoritmo para mostrar o resultado da divisão de dois números
Algoritmo em fluxograma:
Algoritmos I
Exemplos: 
2. Faça um algoritmo para mostrar o resultado da divisão de dois números
Algoritmo em pseudocódigo:
ALGORITMO
DECLARE N1, N2, D NUMÉRICO
ESCREVA “Digite dois números”
LEIA N1, N2
SE N2 = 0
ENTÃO ESCREVA “Impossível dividir”
SENÃO INÍCIO
D←N1 / N2
ESCREVA “Divisão = ”, D
FIM
FIM_ALGORITMO

Outros materiais