1 / 37

Algoritmos

Professor Fernando Luís fernandomaia@hotmail.com.br. Algoritmos. 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. 1.1 Conceituação. Algoritmos

aimon
Télécharger la présentation

Algoritmos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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.

  3. 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.

  4. 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.

  5. 1.2 Programas de computador • Processo necessário para criação de programas de computador.

  6. 1.2.1 O que é um programa? • Os computadores, independentemente de sua arquitetura, têm funcionamento similar. UCP – Unidade Central de Processamento Memória barramento Dispositivos Entrada/Saída

  7. ...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.

  8. ... 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!

  9. 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!

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

  11. 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.

  12. Como ocorre a tradução

  13. 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

  14. 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. Tradução de cada instrução Código-fonte (linguagem de alto nível) Interpreta-dor Memória

  15. 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.

  16. 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).

  17. 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.

  18. 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.

  19. Código-fonte Compilador (ETAPA I) Código-objeto Memória Código-objeto (executável) Compilador (ETAPA II) Biblioteca do sistema operacional

  20. 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.

  21. 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.

  22. 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;

  23. 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.

  24. 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.

  25. 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.

  26. Como resolver? • Na realidade, já existem algumas alternativas. • Apresento duas delas: • FLUXOGRAMA • PSEUDO-CÓDIGO

  27. 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.

  28. CAIXAS • Algumas caixas especiais indicam a possibilidade de o FLUXO seguir caminhos diferentes. • Para isso acontecer, precisamos de CONDIÇÕES e DECISÕES.

  29. VANTAGENS • Facilidade para o desenvolvimento e compreensão do funcionamento do ALGORITMO.

  30. 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.

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

  32. Raciocínio

  33. Início Leia num1, num2 Num1 > num2 Maior  num1 Maior  num2 Escreva Maior Fim

  34. 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.

  35. 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.

  36. 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

  37. 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?

More Related