Вы находитесь на странице: 1из 15

Objetivos da Disciplina

• Familiarizar o aluno com as técnicas de programação estruturada, apresentando tipos de


dados simples, estruturas de controle e modularização.

• O aluno deverá ser capaz de:


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

1
Programa da Disciplina
PROGRAMA DA DISCIPLINA

Unidade 1 - NOÇÃO DE ALGORITMO


Lógica de programação
Algoritmo x programa
Representação de algoritmos
Fluxograma
Pseudo Linguagem
Exemplos de Linguagens

Unidade 2 - ELEMENTOS BÁSICOS DA PSEUDO LINGUAGEM


Constantes e variáveis, declaração
Operadores
Aritméticas
Funcionais
Relacionais
Lógicos
Comando de atribuição
Comando de entrada/saída

Programa da Disciplina
PROGRAMA DA DISCIPLINA

Unidade 3 - ESTRUTURAS DE CONTROLE


Estrutura Sequencial
Estrutura Condicional Simples
Estrutura Condicional Composta
Estrutura de Repetição

Unidade 4 - MODULARIZAÇÃO
Procedimentos
Funções

2
Bibliografia

Bibliografia Básica:

FARRER, H. et al. Algoritmos Estruturados. 3ª edição. Rio de Janeiro: LTC, 2011.

GUIMARAES, A. M. Algoritmos e Estrutura de Dados. Rio de Janeiro: LTC, 1994.

FORBELLONE, V.; EBERSPACHE, F. Lógica de Programação. Prentice Hall, 2005.

Bibliografia Complementar:

TREMBLAY, J.P. Ciência dos computadores: uma abordagem algorítmica. São Paulo: McGrawn-Hill, 1986.

UNIDADE 1: NOÇÃO DE
ALGORITMO

3
1.1 Lógica de
Programação

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”

4
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

5
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

6
1.2 Algoritmo

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

7
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

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?

8
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

1.3 Representação de
Algoritmos

9
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

10
• 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


Operação de saída de dados
Operação de cálculo, de
atribuição e chamada ou
retorno de subalgoritmo
Decisão
Operação de entrada de
dados

11
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

12
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

13
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

14
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

15

Вам также может понравиться