PARADIGMAS DE LINGUAGENS CONCEITOS BÁSICOS Prof. Thiago Pereira Rique [email protected] http://thiagorique.wordpress.com/ AGENDA Algoritmos e programas Linguagens de programação Desenvolvimento de programas ALGORITMOS E PROGRAMAS Algoritmos Conjunto finito de passos sequenciais que descrevem como resolver um determinado problema. Informações de entrada, modificação da informação, informações de saída. ALGORITMOS E PROGRAMAS Exemplo: Receita de bolo: Misture os ingredientes Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado então despeje sobre a mistura Leve a forma ao forno Enquanto não corar deixe a forma no forno Retire do forno Deixe esfriar ALGORITMOS E PROGRAMAS Construção de algoritmos Dividir-e-conquistar: divide-se sucessivamente problema em subproblemas cada vez menores. Exemplo: Trocar pneu de um carro 1. pegue o macaco 2. levante o carro 3. retire o pneu furado 4. pegue o estepe 5. coloque-o na roda 6. aperte os parafusos 7. abaixe o carro 8. reaperte os parafusos o ALGORITMOS E PROGRAMAS Construção de algoritmos Exemplo: Refinamento do passo 1. Refinamento ou procedimento do passo 1 1.1 abra a mala 1.2 remova o macaco do porta-malas 1.3 coloque o macaco sob o carro, próximo ao pneu furado 1.4 desaperte os parafusos da roda 1.5 insira a manivela no macaco 1.6 coloque um calço sob o carro para impedi-lo de se mover 1.7 levante o carro com o macaco até que haja espaço suficiente para colocar o estepe ALGORITMOS E PROGRAMAS Construção de algoritmos Qual o limite do refinamento? Um algoritmo pode ser escrito de forma gráfica ou textual. ALGORITMOS E PROGRAMAS Formas de representação dos algoritmos Descrição narrativa Fluxograma convencional Pseudocódigo ALGORITMOS E PROGRAMAS Descrição narrativa Pouco usada na prática (permite equívocos). Algoritmos expressos em linguagem natural. ALGORITMOS E PROGRAMAS Descrição narrativa Exemplo: Calcular média de um aluno Obter as suas 2 notas de provas Calcular a média aritmética Se a média for maior que 7, o aluno foi aprovado, senão ele foi reprovado ALGORITMOS E PROGRAMAS Fluxograma convencional Formas geométricas distintas. diferentes implicam ações Não se preocupa com detalhes de implementação do programa. ALGORITMOS E PROGRAMAS Fluxograma convencional Início e final do fluxog rama Operação de entrada de dados Operação de saída de dados Operação de atribuição Decisão ALGORITMOS E PROGRAMAS Fluxograma convencional Iníc i o Exemplo: N1, N2 MEDIA aaa (N1 + N2) / 2 .V. MEDIA >= 7 "Aprovado" .F. "Reprovado" Fi m ALGORITMOS E PROGRAMAS Pseudocódigo Algoritmo escrito em português utilizando convenções próximas de uma linguagem de programação. Forma de representação rica em detalhes. Encontra bastante aceitação. ALGORITMOS E PROGRAMAS Pseudocódigo Algoritmo <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> Início <corpo do algoritmo> Fim ALGORITMOS E PROGRAMAS Pseudocódigo Algoritmo Calculo_Media Exemplo: Var N1, N2, MEDIA: real Início Leia N1, N2 MEDIA (N1 + N2) / 2 Se MEDIA >= 7 então Escreva “Aprovado” Senão Escreva “Reprovado” Fim_se Fim ALGORITMOS E PROGRAMAS Programas Conjunto de instruções executadas numa certa sequência de modo a resolver algum problema. Formalização de um algoritmo em alguma linguagem de programação. LINGUAGENS DE PROGRAMAÇÃO Linguagens de programação Conjunto limitado de instruções (vocabulário), associado a um conjunto de regras (sintaxe) que define como as instruções podem ser associadas. Cada linguagem possui um conjunto único de palavras-chave ou palavras reservadas e uma sintaxe específica. LINGUAGENS DE PROGRAMAÇÃO De acordo com a sua similaridade com a linguagem humana: Linguagem de máquina Linguagem simbólica Linguagem de alto nível LINGUAGENS DE PROGRAMAÇÃO Linguagem de máquina Mais baixo nível de entendimento pelo ser humano e a única entendida pelo processador (UCP). Instrução típica em linguagem de máquina: 0100 1111 1010 LINGUAGENS DE PROGRAMAÇÃO Linguagem simbólica (Assembly) Linguagem de nível imediatamente linguagem de máquina. Permite o uso de nomes (mnemônicos) e símbolos em lugar de números. Linguagem simbólica para linguagem de máquina (Montador: Assembler). Instrução típica em linguagem simbólica: MOV R1, R2 ADD R1, R2 acima da LINGUAGENS DE PROGRAMAÇÃO Linguagem de alto nível Possui uma estrutura e palavras-chave próximas da linguagem humana. Programas escritos em linguagem de alto nível são convertidos para linguagem de baixo nível através de uma programa denominado compilador ou de um interpretador. Instrução típica em linguagem de alto nível: if (A > 10) then A := A – 7; mais DESENVOLVIMENTO DE PROGRAMAS Desenvolvimento de programas É associado ao uso de ferramentas ou ambientes de desenvolvimento Principais etapas: Geração de código-fonte Tradução do código-fonte Editores de ligação Depuradores DESENVOLVIMENTO DE PROGRAMAS Geração de código-fonte Codificação em alguma linguagem de programação Editores DESENVOLVIMENTO DE PROGRAMAS Tradução do código-fonte O código-fonte não é executável. É necessário que o código-fonte seja traduzido para o código de máquina. Esta tradução (ou conversão) é realizada de forma automática graças à existência de ferramentas como os montadores (ou Assemblers) e os compiladores. O código gerado por essas ferramentas é denominado código-objeto. DESENVOLVIMENTO DE PROGRAMAS Editores de ligação Conhecidos como linkers Rearranjar o código do programa, incorporando a ele todas as partes referenciadas no código original. DESENVOLVIMENTO DE PROGRAMAS Depuradores ou debuggers Auxiliar o programador a eliminar a quantidade de “bugs”.