Princípios de Desenvolvimento de Algoritmos

Propaganda
Escola de Ciências e Tecnologia
UFRN
Introdução a Algoritmos
Prof. Aquiles Burlamaqui
Nélio Cacho
Luiz Eduardo
Eduardo Aranha
ECT1103 – INFORMÁTICA FUNDAMENTAL
• Manter o telefone celular sempre
desligado/silencioso quando estiver em
sala de aula;
• Nunca atender o celular na sala de aula;
Objetivo da Aula
• Introduzir o conceito de algoritmos
Por que estudar Construção de Algoritmos?
• Problema: construir uma trave de madeira !
Diante de um Problema a solução é ...
•
•
Análise – etapa onde o problema a ser resolvido é estudado em
detalhes para definição dos materiais e passos necessários para a
sua resolução.
Algoritmo – utilização de ferramentas para descrever o problema
com suas soluções.
–
Ferramentas – descrição narrativa, fluxograma ou português estruturado
Por que estudar Construção de Algoritmos?
• Análise: o que eu preciso para resolver tal problema ?
– Material: madeira e ferramentas
Por que estudar Construção de Algoritmos?
• Análise:
– Usar pregos ou parafusos ?
– Esta decisão implica em usar martelo ou chave de fenda:
Definir Passos
1 - Serrar a madeira para ficar no
tamanho desejado
2 – Pregar as pontas formando a trave
Algoritmos - Definição
– Uma sequência de passos que visa atingir um objetivo bem
definido.
– Tem como objetivo representar o raciocínio (ordem dos
passos) envolvido na realização de uma tarefa.
– Exemplo (Ligar o Carro):
•
•
•
•
Ligar o carro
Pisar na embreagem
Passar a primeira marcha
Soltar a embreagem lentamente,enquanto pisa no acelerador.
Algoritmos - Características
• Finitude: algoritmos devem terminar após um
número finito de passos;
• Definição: cada passo deve ser precisamente
definido
• Entradas: devem ter zero ou mais entradas
• Saídas: devem ter uma ou mais saídas;
• Efetividade: todas as operações devem ser
simples de modo que possam ser executadas em
um tempo limitado.
Exemplo de Problema
• Defina um programa que receba dois números pelo
teclado, calcula a média aritmética destes dois números e
imprime o resultado no monitor;
• Quais ferramentas posso utilizar para definir meu
algoritmo ?
Read, Add, Sto, Div,
Write, Cmp, Jump, Mul,
Sub
Exemplo de Problema
• Defina um programa que receba dois números pelo
teclado, calcula a média aritmética destes dois números e
imprime o resultado no monitor;
• Análise:
– 1 : Recebe dois números pelo teclado, então devo usar Read
– 2: calcula a média aritmética que é (A+B)/2. Neste caso tenho
que usar a operação ADD e DIV, além de carregar o 2 para fazer
a divisão.
– 3: Imprimi o resultado no monitor. Neste caso, tenho que usar o
Write
Exemplo de Problema
• Defina um programa que receba dois números pelo
teclado, calcula a média aritmética destes dois números e
imprime o resultado no monitor;
Endereço Valor
1
Read (FA) (7)
2
Read (FA) (8)
3
ADD (7)(8)
4
STO (2)(7)
5
DIV (8)(7)
6
WRITE(7)(FB)
7
8
Read, Add, Sto, Div,
Write
Qual é o problema de descrever algoritmos em
termos de linguagem de máquina ?
Endereço (Hex) Valor
1
Read (FA) (14)
2
Read (FA) (15)
3
Read (FA) (16)
4
STO (4)(17)
5
MUL(17)(14)
6
STO(5)(17)
Apesar de preciso, o algoritmo
torna-se muito longo
7
MUL(17)(15)
8
STO(6)(17)
9
MUL(17)(16)
A
ADD (14) (15)
B
ADD (15) (16)
C
STO (F)(17)
D
DIV (16)(17)
E
STO (46)(16)
F
SUB(17)(16)
10
CMP(16)(13)
11
WRITE(FB)(“REPROVADO”)
12
JUMP (14)
13
WRITE(FB)(“APROVADO”)
Formas de representação de algoritmos
•
•
•
•
Descrição Narrativa
Fluxograma
Pseudocódigo
Linguagens de Programação
Formas de representação de algoritmos
• Descrição Narrativa
– Uso da linguagem natural;
– Temos a inconveniência da má interpretação, originando
ambigüidades e imprecisões.
– Vejamos mais um exemplo: a troca de um pneu furado.
– Analisar as ambigüidades e imprecisões.
Descrição Narrativa
• Algoritmo
–
–
–
–
–
–
afrouxar ligeiramente as porcas;
suspender o carro;
retirar as porcas e o pneu;
colocar o pneu reserva e as porcas;
abaixar o carro;
dar o aperto final nas porcas.
Conceitos Fundamentais
• Algoritmo
– De modo a torná-lo não ambíguo uma formalização é
necessária.
– Definição de regras de semântica e sintaxe.
Fluxograma
• Uso de formas geométricas distintas produzindo ações
distintas
Início ou fim do fluxograma.
Entrada de dados.
Cálculo de expressões.
Saída de resultados.
Tomada de decisão
Fluxo.
Fluxograma
Pseudocódigo
• Uso de linguagem própria, aproximando-se mais das
linguagens de alto nível, chamado, também de
pseudolinguagem ou ainda portugol.
• Forma geral:
Algoritmo < nome_do_algoritmo >
< declaração_de_variáveis >
Início
< Instruções >
Fim
Pseudocódigo
• Algoritmo Média_do_aluno
Real: m1,m2,m3,media
Início
Leia(m1,m2,m3)‫‏‬
media  ((m1*4)+(m2*5)+(m3*6))/15
Se (média >= 70) então
Escreva (“APROVADO”)‫‏‬
Senão
Escreva (“REPROVADO”)‫‏‬
Fim_se
Fim
Endereço
Valor
1
Read (FA) (14)
2
Read (FA) (15)
3
Read (FA) (16)
4
STO (4)(17)
5
MUL(17)(14)
6
STO(5)(17)
7
MUL(17)(15)
8
STO(6)(17)
9
MUL(17)(16)
A
ADD (14) (15)
B
ADD (15) (16)
C
STO (F)(17)
D
DIV (16)(17)
E
STO (46)(16)
F
SUB(17)(16)
10
CMP(16)(13)
11
WRITE(FB)(“REPROVADO”)
12
JUMP (14)
13
WRITE(FB)(“APROVADO”)
Linguagens de Programação
• Linguagens de Programação
– Uma linguagem de programação é um método
padronizado para expressar instruções para um
computador.
– É um conjunto de regras sintáticas e semânticas usadas
para definir um programa de computador.
Linguagens de Programação
• Linguagens de baixo nível
– Linguagens de máquina, assembly
• Linguagens de alto nível
– Fortran, Cobol, C, C++, Java, Python, Lua, Basic, Pascal,
Sage...
Conceitos Básicos
• Baixo nível
– Código otimizado,Indicado para situações onde não há
opção de alto nível
• Alto nível
– Programação do algoritmo mais fácil
– Portabilidade
– Manutenção do código
Processadores de Linguagens
• Compilação
• Interpretação
Compilação
Professor: Aquiles Burlamaqui
Site
• http://www.ect.ufrn.br/modulo/ect1103/
Download