professor fernando luís [email protected]

37
ALGORITMOS Professor Fernando Luís [email protected]

Upload: internet

Post on 17-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Professor Fernando Luís fernandomaia@hotmail.com.br

ALGORITMOS

Professor Fernando Luí[email protected]

Page 2: Professor Fernando Luís fernandomaia@hotmail.com.br

Introdução e objetivos

Introdução geral sobre Algoritmos; Diferenças entre Algoritmos e

Programas; Compiladores e Montadores; Formas populares de estruturação de

Algoritmos; Notações.

Page 3: Professor Fernando Luís fernandomaia@hotmail.com.br

1.1 Conceituação

Algoritmos É bastante associada à informática,

porém não é restrito apenas a ela. É usada também em outras áreas como

administração e engenharias. Vem do nome do matemático iraniano

al-Khawarizmi.

Page 4: Professor Fernando Luís fernandomaia@hotmail.com.br

1.1 Conceituação

Com isso definimos o termo como sendo: Um procedimento passo a passo para a solução de um problema.

Uma sequência detalhada de ações a serem executadas para realizar uma tarefa.

Page 5: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2 Programas de computadorProcesso necessário para criação de programas de computador.

Page 6: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.1 O que é um programa?

Os computadores, independentemente de sua arquitetura, têm funcionamento similar.

UCP – Unidade Central de

Processamento

Dispositivos Entrada/Saída

Memóriabarramento

Page 7: Professor Fernando Luís fernandomaia@hotmail.com.br

...continuando

A UCP (unidade central de processamento) contém um pequeno conjunto de instruções.

Estas instruções que o processador executa são buscadas na memória e podem ser: Operações matemáticas; Interações com dispositivos de entrada e

saída.

Page 8: Professor Fernando Luís fernandomaia@hotmail.com.br

... Concluindo!

Programas de computadores são conjuntos de instruções executadas pelos processadores em uma determinada seqüência.

Esse programa fará com que o computador execute uma tarefa!

Page 9: Professor Fernando Luís fernandomaia@hotmail.com.br

Programas x Algoritmos

Fica claro que: Um programa nada mais é que um tipo

de algoritmo onde suas operações são específicas para o computador.

Atenção: é preciso ressaltar que tais operações são restritas ao conjunto de instruções (linguagem de máquina) que o processador pode executar!

Page 10: Professor Fernando Luís fernandomaia@hotmail.com.br

Linguagens de programação

Existem atualmente centenas de linguagens.

Elas são classificadas de acordo com o “distanciamento” em relação à linguagem de máquina. Ou seja: Quanto mais semelhante com a

linguagem de máquina, mais baixo é o nível da linguagem.

Page 11: Professor Fernando Luís fernandomaia@hotmail.com.br

Linguagens de baixo e alto nível Baixo Nível:

São aquelas mais semelhantes à linguagem de máquina.

Alto Nível: São aquelas mais distantes da

linguagem de máquina. Estão mais próximas à linguagem

natural. Guardam pouca similaridade à ling

máquina.

Page 12: Professor Fernando Luís fernandomaia@hotmail.com.br

Como ocorre a tradução

Código em linguagemCódigo em linguagem de

máquina

Page 13: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.2 Executando um programa

Compilador (compilação): É aquele que faz a tradução do código de

alto nível (código-fonte) para a linguagem de máquina (código-objeto).

Esse código-objeto fica armazenado em disco e só é carregado em memória durante a execução.

Código-fonte (linguagem de

alto nível)

Código –objeto (linguagem de

máquina)

Compilador

Page 14: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.2 Executando um programa Interpretador (interpretação):

Faz o mesmo trabalho (final) que o compilador, entretanto não gera nenhum código-objeto.

A tradução do código-fonte (linguagem de alto nível) é executada em tempo de instrução, ou seja: instrução por instrução diretamente na memória.

Código-fonte (linguagem de

alto nível)

Interpreta-dor

Tradução de cada

instrução

Memória

Page 15: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.3 Linguagens de programação e sistemas operacionais

É muito complexo, até mesmo para programadores experientes, a realização de determinadas operações usando linguagem de máquina.

Essa não é apenas importante aos programadores, é também uma das funções do sistema operacional.

Page 16: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.3 Linguagens de programação e sistemas operacionais

Máquina real: É a máquina propriamente dita, física. Operada pela linguagem de máquina

(complicada). Máquina virtual:

É uma camada que está entre o sistema operacional e a estrutura física do computador.

Facilita para o usuário a utilização dos recursos.

Exemplo: arquivos (manipulação dos dados).

Page 17: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.3 Linguagens de programação e sistemas operacionais

Além disso, os sistemas operacionais, fornecem interfaces para que outros programas possam ser executados.

Essas interfaces são conhecidas como system calls (chamadas de sistema) e o conjunto de operações disponibilizadas são as bibliotecas do sistema.

Page 18: Professor Fernando Luís fernandomaia@hotmail.com.br

1.2.3 Linguagens de programação e sistemas operacionais

Durante a compilação de um programa, o compilador encontra no código-fonte as chamadas de sistema e as transforma em referências no código-objeto (linguagem de máquina).

Para ser executado, esse código precisa ser “ligado” ao sistema operacional (que é quem efetivamente “faz o trabalho”). Esse processo se chama ligação do código ou linking.

Page 19: Professor Fernando Luís fernandomaia@hotmail.com.br

Código-fonte

Código-objeto

(executável)

Código-objeto

Memória

Biblioteca do sistema operacional

Compilador (ETAPA

I)

Compilador (ETAPA

II)

Page 20: Professor Fernando Luís fernandomaia@hotmail.com.br

Portabilidade

A relação entre o compilador e o sistema operacional faz com que o programa independa da arquitetura física do computador (processador).

Assim, programas executados em LINUX dificilmente poderão ser executados em um sistema operacional da família MICROSOFT.

Page 21: Professor Fernando Luís fernandomaia@hotmail.com.br

1.3 Estruturação de algoritmos Com o passar do tempo, as

linguagens de programação acabaram se distanciando da linguagem de máquina e se aproximando da “lógica humana”.

Mesmo assim, linguagens de alto nível podem ser MUITO complexas para quem não é acostumado a fazer ALGORITMOS.

Page 22: Professor Fernando Luís fernandomaia@hotmail.com.br

Diferenças entre linguagem humana e computacional

As máquinas: Não podem tomar decisões com base

em premissas; Não podem escolher alternativas; Não podem corrigir comandos mal

redigidos; Não podem descobrir a intenção do

programador;

Page 23: Professor Fernando Luís fernandomaia@hotmail.com.br

Rigidez (regras)

Sintática: A tradução no computador é bastante

limitada devido seu idioma também ser limitado. “Se sei poucas palavras, me comunico

com dificuldade”

Semântica: Não podem existir ambigüidades. O computador é, portanto, um ótimo

cumpridor de ordens.

Page 24: Professor Fernando Luís fernandomaia@hotmail.com.br

Exemplos

A velhinha ouviu o barulho da janela Interpretações

A velhinha ouviu o barulho produzido pela janela.

A velhinha estava junto à janela e ouviu o barulho.

A velhinha ouviu o barulho que veio através da janela.

Page 25: Professor Fernando Luís fernandomaia@hotmail.com.br

Dilema!

A linguagem natural (humana) não é adequada porque não tem rigidez semântica e sintática e a linguagem de programação não é adequada justamente por ter essas características que dificultam o desenvolvimento por sua complexidade.

Page 26: Professor Fernando Luís fernandomaia@hotmail.com.br

Como resolver?

Na realidade, já existem algumas alternativas.

Apresento duas delas: FLUXOGRAMA PSEUDO-CÓDIGO

Page 27: Professor Fernando Luís fernandomaia@hotmail.com.br

1.3.2 Fluxograma

Apresentam os ALGORITMOS de forma gráfica.

São formados por CAIXAS que contém as instruções.

As CAIXAS são ligadas por SETAS que indicam o FLUXO.

Page 28: Professor Fernando Luís fernandomaia@hotmail.com.br

CAIXAS

Algumas caixas especiais indicam a possibilidade de o FLUXO seguir caminhos diferentes.

Para isso acontecer, precisamos de CONDIÇÕES e DECISÕES.

Page 29: Professor Fernando Luís fernandomaia@hotmail.com.br

VANTAGENS

Facilidade para o desenvolvimento e compreensão do funcionamento do ALGORITMO.

Page 30: Professor Fernando Luís fernandomaia@hotmail.com.br

DESVANTAGEM

Não é prática. A correção de uma linha do

pensamento pode implicar na reconstrução de muitas instruções.

A construção de ALGORITMOS mais complexos pode se torna demasiadamente trabalhoso.

Page 31: Professor Fernando Luís fernandomaia@hotmail.com.br

Exemplo

Façamos um ALGORITMO, usando a notação de FLUXOGRAMAS, para a escolha do maior de dois números distintos.

Page 32: Professor Fernando Luís fernandomaia@hotmail.com.br

Raciocínio

Page 33: Professor Fernando Luís fernandomaia@hotmail.com.br

Início

Fim

Leia num1, num2

Maior num1 Maior num2

Escreva Maior

Num1 > num2

Page 34: Professor Fernando Luís fernandomaia@hotmail.com.br

1.3.3 Pseudo-código

Visa trazer ao código a rigidez semântica e sintática sempre tentando reduzir a dificuldade de uma linguagem de programação.

Será intermediária entre a linguagem natural e a linguagem de programação.

Page 35: Professor Fernando Luís fernandomaia@hotmail.com.br

PORTUGOL

É um Pseudo-código muito popular no BRASIL.

É bastante simples e atende as características básicas da rigidez semântica e sintática.

Nas próximas aulas estudaremos a fundo a linguagem PORTUGOL e facilitaremos o estudo das linguagens de maior nível.

Page 36: Professor Fernando Luís fernandomaia@hotmail.com.br

Algoritmo MAIOR Var num1, num2, maior : inteiro; Início

Leia(num1, num2); Se (num1 > num2) então

Maior num1; Se não

Maior num2; Escreva (Maior);

Fim

Page 37: Professor Fernando Luís fernandomaia@hotmail.com.br

Exercícios

Defina o que é ALGORITMO. Diferencie um ALGORITMO de um PROGRAMA. Explique como um programa é executado em um

computador. Defina o que é uma linguagem de programação

de alto nível e uma linguagem de baixo nível. Porque a linguagem natural não é adequada para

a construção de ALGORITMOS para computador? Quais as vantagens e desvantagens da utilização

de FLUXOGRAMA e de PSEUDOCÓDIGO na construção de ALGORITMOS?