UFRN
Escola de Ciências e Tecnologia
Introdução a Algoritmos
Prof. Aquiles BurlamaquiNélio CachoLuiz 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 emdetalhes para definição dos materiais e passos necessários para asua resolução.
• Algoritmo – utilização de ferramentas para descrever o problemacom 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)
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”)
Apesar de preciso, o algoritmo torna-se muito longo
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/