CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS CENTRAIS DAS LINGAUAGENS IMPERATIVAS 5. VANTAGENS E DESVANTAGENS 6. LINGUAGENS IMPERATIVAS NÃO ESTRUTURADAS 7. LINGUAGENS IMPERATIVAS ESTRUTURADAS
INTRODUÇÃO Uma linguagem de programação é um método padronizado para comunicar instruções para um computador, respeitando regras semânticas e sintáticas
LINGUAGENS IMPERATIVAS CONCEITO: Programação imperativa é um paradigma de programação que descreve a computação como ações, enunciados ou comandos que mudam o estado(variáveis) de um programa.
LINGUAGENS IMPERATIVAS A figura mostra graficamente a estrutura da Programação Imperativa.
PARADIGMA IMPERATIVO O paradigma imperativo baseia-se no conceito de comandos e atualização de variáveis. Como os programas são escritos para modelar processo se objetos do mundo real e tais objetos frequentemente possuem estados que variam com o tempo.
PARADIGMA IMPERATIVO Os paradigmas imperativos se dividem em: O paradigma procedural: Fortran e o Basic. O paradigma de estrutura de blocos: Algol 60, Pascal e C. O paradigma de orientação a objetos: C++, Java, Python e Ruby. O paradigma da computação distribuída (Várias partes estão compõe o sistema e estão interconectadas por rede): Ada.
ORIGENS As primeiras linguagens de programação imperativas eram linguagens de máquina, com instruções simples mas de construção complexa. FORTRAN (1956) -> variáveis com nome, subprogramas, expressões complexas. ALGOL (1960) -> maior facilidade de expressar algoritmos matemáticos. COBOL (1960) BASIC (1964) -> sintaxe mais próxima do inglês.
MODELO COMPUTACIONAL ARQUITETURA DE VON NEUMANN Se caracteriza pela possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas.
MODELO COMPUTACIONAL ARQUITETURA DE VON NEUMANN A máquina proposta por Von Neumann reúne os seguintes componentes: (i) uma memória; (ii) uma unidade aritmética e lógica (ULA); (iii) uma unidade central de processamento (CPU), composta por diversos registradores; (iv) uma Unidade de Controle (UC), cuja função é buscar um programa na memória, instrução por instrução, e executá-lo sobre os dados de entrada.
MODELO COMPUTACIONAL ARQUITETURA DE VON NEUMANN
CICLO DE VON NEUMANN
MODELO COMPUTACIONAL CARACTERÍSTICAS CENTRAIS DAS LINGUAGENS IMPERATIVAS As variáveis, que modelam as células de memória; Comandos de atribuição, que são baseados nas operações de transferência dos dados e instruções; A execução sequencial de instruções; E a forma iterativa de repetição, que é o método mais eficiente desta arquitetura.
VANTAGENS E DESVANTAGENS Vantagens Eficiência (embute o modelo de Von Neumann); Mais fácil de traduzir para a linguagem de máquina; Paradigma dominante e bem estabelecido; Modelagem Natural de aplicações do mundo real;
VANTAGENS E DESVANTAGENS Desvantagens Facilita introdução de erros em sua manutenção; Tende a gerar códigos confusos, onde tratamento dos dados são misturados com o comportamento do programa; Focaliza o como e não o quê ; Relacionamento indireto com a E/S (indução a erros/estados);
LINGUAGENS IMPERATIVAS NÃO ESTRUTURADAS São linguagens caracterizadas pela utilização da expressão goto. Necessária para determinar a repetição e a seleção de execução de instruções Uso de goto geralmente leva ao que chamam na literatura de código spaguetti (não segue regras de programação estruturada e abusa de desvios).
LINGUAGENS IMPERATIVAS NÃO ESTRUTURADAS FORTRAN foi uma das primeiras linguagens imperativas de alto nível. As versões originais de FORTRAN possuíam a instrução goto. Assembly e BASIC são outros exemplos de linguagens imperativas que possuem o conceito de goto.
LINGUAGENS IMPERATIVAS NÃO ESTRUTURADAS Exemplo de código com o uso de instrução goto, baseado na sintaxe do C: #include <stdio.h> int main() { int nro; inicio: printf("\ninforme um numero par: "); scanf("%d", &nro); if(nro % 2 == 1) { goto inicio; } else { goto final; } final: printf("\n\n Fim da execução do programa"); return 0; }
LINGUAGENS IMPERATIVAS ESTRUTURADAS Linguagens estruturadas surgiram com o objetivo de facilitar a leitura e acompanhamento da execução de algoritmos. Normalmente linguagens estruturadas não fazem uso de comando goto.
LINGUAGENS IMPERATIVAS ESTRUTURADAS Instruções são agrupadas em blocos, os quais podem ser considerados como unidades de programa, abstraindo-se das suas estruturas internas. Blocos de instruções podem ser selecionados para execução através de declarações de seleção como if...else, ou repetidamente executados através de declarações de repetição como while.
LINGUAGENS IMPERATIVAS ESTRUTURADAS Linguagens estruturadas procedurais permitem a criação de procedimentos (e funções), que são blocos de instruções. Procedimentos criam um nível de abstração, onde não é necessário conhecer todos os passos de execução de um procedimento, apenas qual a sua função e quais os seus pré-requisitos para que execute de acordo com o esperado.
LINGUAGENS IMPERATIVAS ESTRUTURADAS Exemplo de código estruturado, baseado na sintaxe do C: #include <stdio.h> int main (void) { printf( Hello World!\n ); return (0); }
UNIVERSIDADE ESTADUAL DE SANTA CRUZ UESC CLEITON FERNANDO LIMA SENA GRADUANDO EM CIÊNCIA DA COMPUTAÇÃO