Download - Algoritmos
![Page 2: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/2.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/3.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/4.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/5.jpg)
1.2 Programas de computadorProcesso necessário para criação de programas de computador.
![Page 6: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/6.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/7.jpg)
...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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/8.jpg)
... 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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/9.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/10.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/11.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/12.jpg)
Como ocorre a tradução
Código em linguagemCódigo em linguagem de
máquina
![Page 13: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/13.jpg)
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)Compilad
or
![Page 14: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/14.jpg)
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)Interpret
a-dor
Tradução de cada
instruçãoMemóri
a
![Page 15: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/15.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/16.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/17.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/18.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/19.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/20.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/21.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/22.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/23.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/24.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/25.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/26.jpg)
Como resolver?
Na realidade, já existem algumas alternativas.
Apresento duas delas: FLUXOGRAMA PSEUDO-CÓDIGO
![Page 27: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/27.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/28.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/29.jpg)
VANTAGENS
Facilidade para o desenvolvimento e compreensão do funcionamento do ALGORITMO.
![Page 30: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/30.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/31.jpg)
Exemplo
Façamos um ALGORITMO, usando a notação de FLUXOGRAMAS, para a escolha do maior de dois números distintos.
![Page 32: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/32.jpg)
Raciocínio
![Page 33: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/33.jpg)
Início
Fim
Leia num1, num2
Maior num1 Maior num2
Escreva Maior
Num1 > num2
![Page 34: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/34.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/35.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/36.jpg)
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: Algoritmos](https://reader035.vdocuments.com.br/reader035/viewer/2022070420/56815da4550346895dcbd140/html5/thumbnails/37.jpg)
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?