Sei sulla pagina 1di 28

Algoritmos I

• Semestre letivo: 2017.1


• Professor: Fabio Henrique Silva
• Ementa: Introdução à Lógica de Programação. Pseudo-
linguagem. Programação estruturada. Tipos de dados simples.
Estruturas de controle. Funções e Procedimentos.

1
Objetivos da Disciplina

• Os objetivos dessa disciplina são:

Apresentar as técnicas de programação estruturada, tipos de dados


simples, estruturas de controle e modularização.
Conceituar algoritmos e programas.
Reconhecer operadores aritméticos, relacionais, funcionais e lógicos.
Construir algoritmos utilizando estruturas de controles sequenciais,
condicionais e de repetição.
Reconhecer a necessidade de utilizar subrotinas.

Conteúdo Programático
Unidade 1: Elementos básicos da pseudolinguagem
1.1 Noção de Algoritmos
1.2 Constantes e Variáveis
1.3 Operadores Aritméticos, Relacionais e Lógicos

2
Conteúdo Programático
Unidade 2: Estruturas de Programação
2.1 Estrutura Sequencial
2.2 Estrutura Condicional Simples
2.3 Estrutura Condicional Composta

Conteúdo Programático
Unidade 3: Estruturas de Repetição
3.1 Estrutura de Repetição PARA
3.2 Estrutura de Repetição Enquanto
3.3 Estrutura de Repetição REPITA

3
Conteúdo Programático
Unidade 4: Subrotinas
4.1 Conceitos de Modularização
4.2 Procedimentos
4.3 Funções

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.

4
Referências Adicionais
• Apresentação “Lógica de Programação - Forbellone / Eberspacher”
• SEBESTA, R. W. Conceitos de linguagens de programação. 9. ed. Porto Alegre: Bookman, 2011.
• Apresentação “Algoritmos I”, prof. Jorge Viana Doria Junior
• Apresentação “Programação Estruturada (Modularização/Subprogramação)”, prof. Fabíola
Gonçalves, UFU
• Apostila “Algoritmos”, prof. Helio Gouvea Prado

UNIDADE 1:
ELEMENTOS BÁSICOS
DA
PSEUDOLINGUAGEM

5
1.1 Noção de Algoritmos

George Boole

• Filósofo britânico (1815-1864)


que criou a álgebra booleana,
fundamental para o
desenvolvimento da computação
moderna
• Se dedicou a "entender os
processos de pensamento da
mente humana"

6
George Boole

Se você hoje usa um


computador digital
agradeça também a
mim ;)

Lógica
• Além da aplicação na matemática...
‒Busca a "correção do pensamento", determinar quais
operações são válidas e quais não são fazendo análise das
formas e leis do pensamento
‒Procura saber por que pensamos assim e não de outro jeito

7
Lógica no dia-a-dia
• Kaiton é um país do planeta Stix.
Todos os Xinpins são de Kaiton.
Logo, todos os Xinpins são Stixianos.

• A gaveta está fechada.


A caneta está dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a
caneta.

Lógica de Programação

Uso das leis do pensamento, da "ordem da razão" e de processos


de raciocínio e simbolização formais na programação de
computadores

• Objetiva a racionalidade e o desenvolvimento de


técnicas que cooperem para a produção de soluções
logicamente válidas e coerentes, que resolvam com
qualidade os problemas que se deseja programar

8
Algoritmo
• O objetivo principal da Lógica de Programação é a
construção de algoritmos coerentes e válidos

• Algoritmo é uma sequência de passos que visam


atingir um objetivo bem definido
‒Na medida em que especificamos uma sequência de
passos, usamos a ordem ("pensamos com ordem"), logo
usamos a lógica
‒O algoritmo sempre produz uma ou mais saídas, sem
necessariamente exigir dados de entrada

Exercício 1
• Pense e escreva em um papel, aplicativo notepad (ou
apenas na mente) as ações necessárias para que você
execute uma tarefa, cotidiana ou não

• Sugestões:
Trocar uma lâmpada
Fazer um cupcake
Voltar para casa de trem

https://static.pexels.com/photos/45227/bulb-electricity-energy-glass-45227.jpeg; https://pixabay.com/p-1270278/?no_redirect; https://pixabay.com/p-1464837/?no_redirect

9
Exercício 2
• Imagine que, por exemplo, na sua volta para casa de
trem, as seguintes situações podem ocorrer:
‒O trem estar quebrado
‒N trens estarem quebrados ("N" definido)
‒N trens estarem quebrados ("N" indefinido)

• Como você reescreveria suas ações do Exercício 1


para situações análogas às relatadas acima?

Programa
• Qualquer pessoa com suas experiências pode resolver
os problemas esperados e inesperados na prática
• Um programa de computador tradicional não tem
conhecimento prévio nem adquire experiências
• Devemos determinar em detalhes todas as ações que
ele deve executar, prevendo obstáculos e formas de
transpô-los
‒Tal atividade é realizada pelos programadores

10
Representação de Algoritmos
• Lembrando: Algoritmo é uma linha de raciocínio

• Formas de representar algoritmos incluem:


‒Texto
‒Gráfico
* Fluxograma
* Chapin

início

ir para o primeiro soquete posicionar escada


não F
acendeu?
buscar lâmpada nova
soquetes F
restantes < 10 V
acionar o interruptor
retirar a lâmpada queimada
V
acionar o interruptor subir na escada
colocar lâmpada nova

retirar a lâmpada queimada


não F
acendeu? ir ao próximo soquete
colocar lâmpada nova
V
pegar uma escada acionar o interruptor fim

Fluxograma tradicional

11
• acionar o interruptor;
• se a lâmpada não acender, então
• pegar uma escada;
• posicionar a escada embaixo da lâmpada;
ir para o primeiro soquete • buscar uma lâmpada nova;
soquetes testados < 10 • acionar o interruptor;
acionar o interruptor • subir na escada;
lâmpada não acendeu • retirar lâmpada queimada;
• colocar lâmpada nova;
pegar uma escada
• enquanto a lâmpada não acender, faça
colocar a escada embaixo do soquete • retirar lâmpada queimada;
buscar lâmpada nova • colocar lâmpada nova;
acionar o interruptor
subir na escada Forma Textual
retirar lâmpada queimada
colocar lâmpada nova
lâmpada não acendeu
retirar lâmpada queimada
colocar lâmpada nova
ir para o próximo soquete Diagrama de Chapin

Fluxograma - Símbolos

Início ou final do fluxograma


Decisão

Operação de entrada de
dados

Operação de saída de dados


Operação de cálculo, de
atribuição e chamada ou
retorno de subalgoritmo

12
INICIO

AV1, AV2

MEDIA ← (AV1 + AV2)/2

MEDIA >= 7

"Aprovado" "AV3"

FIM

Conjunto de Regras
• Expressar ações usando a gramática em uma língua
produz ambiguidades
‒"O pregador foi grampeado durante o conserto"

• É necessário usar regras que restrinjam o uso da língua


(português) na representação de algoritmos e
intencionalmente se aproximem das linguagens de
programação reais: pseudocódigo

13
algoritmo "resultado"
inicio
real : AV1, AV2, MEDIA;
leia (AV1, AV2);
MEDIA ← (AV1 + AV2)/2;
se MEDIA >= 7
entao
escreva ("Aprovado")
senao
escreva ("AV3");
fimse;
fim.

Exemplos de Linguagens
• Os computadores são usados em um infinidade de
diferentes áreas
‒Por exemplo: Aplicações científicas, aplicações comerciais,
inteligência artificial, programação de sistemas, scripting,
propósitos especiais

• Em virtude disso, linguagens de programação com


metas muito específicas têm sido desenvolvidas

14
program helloworld
print *, "Hello world!"
end program helloworld

FORTRAN – Linguagem Imperativa


("Hello World")
(defun factorial (n)
(if (= n 0) 1
(* n (factorial (- n 1)))))
#include <iostream>
LISP – Linguagem Funcional
int main() (Cálculo de número fatorial)
{
std::cout << "Hello, world!\n";
}
C++ - Linguagem Orientada a Objeto
("Hello World")

Exercício 3
• Crie um algoritmo que resolva o problema da Torre de
Hanói

15
Exercício 3
Problema com 4 discos
("minúsculo", "pequeno", 8
"médio", "grande"):
1 9

2
Todos os discos devem ser 10
movidos do primeiro para o
terceiro pino mantendo a 3 11
mesma ordem da situação
inicial 4 12
Apenas 1 disco pode ser 5 13
movido por vez
Um disco pequeno nunca 6 14
pode estar por baixo de um
disco maior 7 15

Exercício 3
Passo 1: mover disco minúsculo para segundo pino
Passo 2: mover disco pequeno para terceiro pino
Passo 3: mover disco minúsculo para terceiro pino
Passo 4: mover disco médio para segundo pino
Passo 5: mover disco minúsculo para primeiro pino
Passo 6: mover disco pequeno para segundo pino
Passo 7: mover disco minúsculo para segundo pino
Passo 8: mover disco grande para terceiro pino
Passo 9: mover disco minúsculo para terceiro pino
Passo 10: mover disco pequeno para primeiro pino
Passo 11: mover disco minúsculo para primeiro pino
Passo 12: mover disco médio para terceiro pino
Passo 13: mover disco minúsculo para segundo pino
Passo 14: mover disco pequeno para terceiro pino
Passo 15: mover disco minúsculo para terceiro pino

16
1.2 Constantes e
Variáveis

Informação
• O ser humano aprendeu a se comunicar por meio de
informações, que são formadas pelos dados
‒Exemplo de dados: 21, setembro, dia, árvore
‒Exemplo de informação: 21 de setembro é o dia da árvore

• O homem fornece e coleta informações para o


computador, que é uma máquina capaz de manipular
muitos dados

17
https://elrobotpescador.files.wordpress.com/2015/02/garry-kasparov-deep-blue-ibm.jpg

Você está demorando


muito para mover sua
peça...

(Estou processando os
dados para te aplicar
um xeque-mate)

https://elrobotpescador.files.wordpress.com/2015/02/garry-kasparov-deep-blue-ibm.jpg

18
Tipos Primitivos
• Dividindo as informações manipuladas pelo computador
em 4 tipos básicos:
‒Inteiro
‒Real (ou numérico)
‒Caractere (ou literal)
‒Lógico

Tipos Primitivos
• Inteiro: Números inteiros relativos (negativa, nula, positiva)
‒ Ex.: Ele tem 15 irmãos
• Real: Números reais (negativa, nula, positiva)
‒ Ex.: Ela tem 1,73 metro de altura
• Caractere: Caracteres alfanuméricos
‒ Ex: Constava na prova: "Use somente caneta!"
• Lógico: Pode assumir apenas duas situações
‒ Ex: A lâmpada pode estar acessa ou apagada

19
Exercício 1
• Classifique o conteúdo das variáveis abaixo de acordo com
seu tipo:

0 "abc" "João"
5.7 1012 FALSO
-49 342 569
"Lucas" "Verdadeiro" 0.00001
Verdadeiro "444" -78.1

Exercício 1
• Classifique o conteúdo das variáveis abaixo de acordo com
seu tipo:

0 inteiro "abc" literal "João" caractere


5.7 real 101 inteiro FALSO lógico
-49 inteiro 342 inteiro 9 inteiro
"Lucas" caractere "Verdadeiro" caractere 0.00001 real
Verdadeiro lógico "444" caractere -78.1 real

20
Armazenamento de Dados
• Os dados são "guardados" na memória e manipulados pelo
processador

• A mudança das linguagens de máquina para as linguagens


de montagem foi, em grande parte:
‒ Uma substituição dos endereços de memória numéricos por
nomes, tornando os programas mais legíveis
‒ Uma saída para o endereçamento absoluto, pois o tradutor que
convertia os nomes para os endereços também os escolhia

Variável
• Trata-se de uma ABSTRAÇÃO de uma célula ou
conjunto de células de memória do computador

• É um valor que pode sofrer alteração no decorrer do


tempo
‒ Ex: Cotação do dólar, o peso de uma pessoa, o preço da
gasolina
‒ Valores devem ser compatíveis com seus tipos, ex.: Tipo inteiro
não pode receber valor do tipo real (mas o contrário pode ser
válido)

21
Variável
• Analogias:
‒ Memória: Armário
‒ Variáveis: Gavetas do armário
‒ Identificadores: Etiquetas das gavetas
‒ Dado: Objeto guardado na gaveta (cada
gaveta armazena um objeto por vez)
‒ Tipo primitivo: Material do objeto, cada
gaveta rotulada armazena o mesmo tipo
de material
‒ Declaração de variáveis: Ação de
etiquetar gavetas especificando qual
material dos objetos serão
armazenados

http://www.oursouthernhomesc.com/wp-content/uploads/2013/05/organized_pantry12-577x1024.jpg

Regras de Formação dos


Identificadores
• Para nomear variáveis e constantes, devemos obedecer as
seguintes regras:
1. Os nomes devem iniciar por caractere alfabético
2. Pode ser seguido por mais caracteres alfabéticos ou numéricos
3. Não devem ser usados caracteres especiais
4. Não devem ser usados nomes reservados da linguagem de
programação que se vai usar

22
Regras de Formação dos
Identificadores
• Cada linguagem possui sua regra de estilo que embora não
seja obrigatório, é recomendável, como por exemplo, não
usar acentuação, escrever variáveis em letras maiúsculas

• Exemplos:
‒ Identificadores válidos: ALPHA, X, BJ153, MEDIA, INSS
‒ Identificadores inválidos: 5X, E(13), A:B, X-Y, NOTA/2,
AWQ*, P&AA

Declaração de Variáveis
• As variáveis devem ser declaradas, ou seja, definir seu
tipo e nome.

23
Exemplos de Declarações
tipo de dado: VARIÁVEL1, VARIÁVEL2, ...,
VARIÁVELN;

• Exemplos:
inteiro: X;
caractere: NOME, ENDEREÇO, DATA;
real: ABC, XPTO, PESO, DÓLAR;
lógico: RESPOSTA, H286;

Constante
• É uma variável vinculada a um valor somente no
momento em que ela é vinculada a um armazenamento

• Seu valor não sofre nenhuma variação no decorrer do


tempo
‒Ex: O valor de PI, a velocidade da luz, 5, "Não fume"

24
1.3 Operadores
Aritméticos, Relacionais
e Lógicos

Expressões Aritméticas
• Operadores aritméticos: utilizados para a realização
de cálculos matemáticos
Operador Função Exemplos
+ Adição 2 + 3, X + Y
- Subtração 4 - 2, N – M
* Multiplicação 3 * 4, A * B
/ Divisão 10 / 2, C / D
pot(x,y) Potenciação (x elevado a y) pot(2, 3)
raiz(x) Raiz quadrada (de x) rad(9)
mod Resto da divisão 9 mod 4 resulta 1
div Quociente da divisão inteira 9 div 4 resulta 2

25
Prioridade das Operações para
Operadores Aritméticos
1. Parênteses mais internos
2. pot, raiz
3. mod, div
*, /
4. +, -

Expressões Lógicas
• Operadores relacionais: utilizados para a estabelecer
relação de comparação entre valores

Operador Função Exemplos


= Igual a 3 = 3, X = Y
> Maior que 5 > 4, X > Y
< Menor que 3 < 6, X < Y
>= Maior ou igual a 5 >= 3, X >= Y
<= Menor ou igual a 3 <= 5, X <= Y
<> Diferente de 8 <> 9, X <> Y

26
Expressões Lógicas

• Operadores lógicos: • Tabelas Verdade:


utilizados para a Conjunto de todas as
efetuar avaliações possibilidades de cada
lógicas entre valores operador lógico
Operador Função Exemplos A não A A B AeB A B A ou B
não Negação não V, não X F V F F F F F F
e Conjugação V e V, X e Y V F F V F F V V
ou Disjunção V ou V, X ou Y V F F V F V
V V V V V V

Prioridade das Operações para


Operadores Lógicos
1. não
2. e, ou

27
Prioridade das Operações para Todos
os Operadores
1. Parênteses mais internos
2. Operadores aritméticos
3. Operadores relacionais
4. Operadores lógicos

28

Potrebbero piacerti anche