Desenvolvimento de Aplicações Imperativas para TV Digital ...
CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃOrogerio/material_auxiliar/CLP20132_linguagens... · roteiro...
Transcript of CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃOrogerio/material_auxiliar/CLP20132_linguagens... · roteiro...
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.
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
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);
}