PARADIGMAS DE LINGUAGENS
Prof. Paulo Malcher
prcmalcher@gmail.com
https://sites.google.com/site/professorpaulomalcher/
Organização de computadores
• Os computadores executam milhões de operações a velocidades incríveis.
• As operações são organizadas por meio de um conjunto de instruções.
• Esse conjunto de instruções é o programa.
Organização de computadores
• O processador interage com outros componentes.
Linguagens de programação
• É necessário que os programas sejam escritos em uma linguagem que o computador entenda.
• Essa linguagem é chamada linguagem de
máquina.
0100 1111 1010 0110
• É pouco intuitiva para os seres humanos.
• Foram desenvolvidas linguagens de mais alto-nível.
Linguagens de programação
• O código escrito em linguagem de alto nível é convertido em linguagem de máquina pelo compilador ou interpretador.
Linguagens de programação
• Compiladas: todas as instruções são
traduzidas para instruções de baixo nível antes da execução do programa.
• Interpretadas: as instruções são traduzidas
para instruções de baixo nível à medida que vão sendo executadas.
Métodos de programação
• A elaboração de programas complexos requer a utilização de um método sistemático de programação que permita obter programas confiáveis, flexíveis e eficientes. Salvetti (1998, p. 5)
• Sugere-se adotar um método de programação em etapas.
Etapas de programação
1. análise do problema a ser resolvido;
2. projeto do programa que resolverá o problema, incluindo a elaboração de um algoritmo e a definição das estruturas de dados a serem utilizadas;
3. implementação (codificação) do programa;
Algoritmo
• O que é um algoritmo?
• é a descrição de uma sequência de passos
ordenadas e finita que deve ser seguida para a
realização de uma tarefa.
• é uma descrição de como realizar uma tarefa independente da linguagem/hardware.
• Não se preocupa com detalhes de implementação em uma linguagem.
Pseudocódigo
• Faz uso de uma notação baseada em linguagem natural.
• Um algoritmo é composto por um nome, as
variáveis e o bloco principal.
nome do algoritmo
variáveis
Tipos de dados
• Os tipos abstratos de dados, ou,
simplesmente, tipos de dados, definem quais tipos de informações podem ser processadas pelo computador.
Estruturas de controle
• Define a forma que as instruções são executadas.
• Estrutura de sequência: uma instrução após a
outra.
• Estrutura de seleção: há a necessidade de tomar
uma decisão, de acordo com determinadas condições.
• Estrutura de repetição: quando há a necessidade
Funções e procedimentos
• Função: é um módulo que sempre retorna uma
resposta a quem chamou. ex:
x := sqrt (4) //retorna a raiz-quadrada
• Procedimento: não retorna nenhuma resposta.
ex:
PARADIGMA DE
Características
• Foi um dos primeiros paradigmas criados e muito utilizado até hoje na computação.
• É estruturado com base em métodos.
• Apóia-se no conceito de estado de um programa, que é a situação momentânea das variáveis, e que podem ser alteradas pelos métodos.
Vantagens
• Os programas gerados são eficientes.
• Fácil modelagem para aplicações do mundo real.
• Capacidade de modularização do código-fonte.
Desvantagens
• Problemas de legibilidade do código.
• Maior possibilidade de introdução de erros durante o processo de manutenção.
• O programador especifica como fazer para obter os resultados.
Características
• Suporta execução sequêncial de instruções.
• Suporta especificação de métodos.
• Suporta especificação do tipo de parâmetros e variáveis.
• Permite chamar métodos em módulos distintos do programa.
Modularização
• O uso de métodos permite a modularização, que consiste no uso de métodos com interfaces bem definidas e que atendam a determinadas funcionalidades da aplicação.
Estrutura geral de um programa
• De maneira geral, um programa em linguagem imperativa é organizado em duas regiões:
• Área de declaração (métodos, variáveis)
Estrutura de um Programa
• Cabeçalho
• Área de declarações
Cabeçalho
• utilizada para se fazer a identificação do programa com um nome;
• é atribuído pela instrução program seguida de um nome e um símbolo ponto-e-vírgula (;) no final;
• exemplo
Área de declarações
• utilizada para validar o uso de qualquer tipo de identificador que não seja predefinido;
• subdividida em sete sub-áreas: uses, label,
const, type, var, procedure e function;
• var é utilizada na declaração das variáveis que
serão utilizadas durante a execução de um programa;
var – exemplo
var NOME : string; IDADE : integer; ALTURA : real;ou
var A, B, C : integer;Corpo do Programa
• esta área tem início com a instrução begin e é finalizada pela instrução end.
begin
instruções; (...)
end.
• Nesta área, poderão existir, dependendo da necessidade, vários blocos.
Exemplo
program ADICIONA_NUMEROS; var X : integer; A : integer; B : integer; begin readln(A); readln(B); X := A + B; writeln(X); end.Variáveis e Constantes
• Identificadores; • Palavras Reservadas; • Comentários; • Tipos de Dados; • Variáveis; • Constantes; • Exemplo.Identificadores
• Iniciar sempre por uma letra (a - z , A - Z) ou um
underscore ( _ );
• O restante do identificador deve conter apenas letras,
underscores ou dígitos (0 - 9);
• É sugestivo que tenha até 255 caracteres, sendo que os 63 caracteres sejam significativos.
• Válidos
• Soma_Total, MaiorValor, Media1, _Media • Inválidos
Comentários
• São textos escritos dentro do código-fonte para explicar ou descrever alguns aspectos relativos ao mesmo.
• Podem ser colocados em qualquer lugar do programa;
• Envolvendo o texto entre chaves “{..}” ou entre “ (* .. *)”.
Tipos de Dados
• Inteiros • Reais • Caracteres • Lógicos var nome : string[50];nota1, nota2 : integer; media : real;
Exercício - 1
• Dado um número inteiro positivo n, calcular a soma dos 4 primeiros números naturais posteriores ao n.
Variáveis
• Armazena temporariamente as informações de um programa.
• Um ou mais caracteres
• Primeiro caractere não poderá ser um número, sempre deverá ser uma letra
• Não poderá possuir espaços em branco
• Não poderá ser palavras reservadas a uma instrução ou identificador de uma linguagem de programação
• Não poderá ser usado outros caracteres que não sejam letras, número ou caractere underscore “_“
Declaração de Variáveis
VarVariáveis
• É um valor que não pode ser alterado durante a execução do programa;
• Seu tipo é definido por seu conteúdo;
• São valores fixos, estáveis dentro de um programa.
Declaração de Constantes
constidentificador = expressão; identificador = expressão; ...
Comando de Atribuição
• Permite fornecer um valor a uma certa variável onde o tipo dessa informação deve ser compatível com o tipo da variável.
• Sintaxe:
Units
• As Units são um conjunto de rotinas prontas para serem usadas. Uma Unit é uma biblioteca de funções e procedimentos. A unit mais usada é a CRT que possui a maior parte das rotinas e variáveis de geração de som, controle de vídeo e teclado.
• Uses
Comando Readln
• Leva os dados digitados no teclado à memória principal, armazenando-os nas variáveis especificadas na lista de identificadores.
Sintaxe:
Comando Write e Writeln
• Envia dados especificados na lista de identificadores para um dispositivo de saída:
impressora, vídeo.
Write – mantém o cursor na mesma linha após
a impressão
Writeln – leva o cursor para a linha seguinte,
coluna 1, após a impressão.
Sintaxe:
Write (< lista de identificadores e/ou constantes e/ou expressões >) ; Writeln (< lista de identificadores e/ou constantes e/ou expressões >) ;
Dinâmica - Algoritmos
Calcule 2²; Calcule 5³; Etc; Dê soro a cada 1h; Dê o remédio 2 vezes aodia; Alimente-o bem; Etc;
...Readln (n); Writeln (n*n);
Readln (n); Write (n*n*n);....
...veja o sistema tem que fazer esses cálculos e me mostrar em forma de
relatório;
Vai ter que mostrar na tela quanto eu tenho na minha
Exercício - 2
• Dado uma sequência de 4 números inteiros positivos n, mostrar os seguintes calculos:
1º n: multiplicar por 5 e somar com o dobro do resultado;
2º n: somar com o quadrado de n; 3º n: mostrar n menos o 2º n;
Exemplo
program Area_Circulo;
{ Programa para calcular a área de um círculo. }
const
PI = 3.141519265;
var
Area, Comprimento, Raio : real;
begin
writeln( ´Digite o Raio : ´ ); readln( Raio );
Area := PI * Raio * Raio;
Comprimento := 2 * PI * Raio; writeln( ´Área = ´, Area );
writeln( ´Comprimento da Circunferencia = ´, Comprimento );
Operadores e Expressões
• Prioridade das Operações
• Tipos de Expressões • Tipos de Operadores • Operador de Atribuição • Operadores Aritméticos • Operador de Concatenação • Operadores Relacionais • Operadores Lógicos • Funções Pré-definidas
Tipos de Expressões
• Numérica
• Quando os seus operandos são numéricos (inteiros ou reais) e o resultado também é um valor numérico;
• Literal
• Quando os seus operandos são literais do tipo string e o resultado também é um valor literal;
• Só existe um único operador para se usar em expressões literais Concatenação ( + );
Tipos de Expressões
• Boolena
• Quando seu resultado é do tipo boolean (TRUE ou FALSE), podendo seu operando ser de qualquer tipo de dados.
Tipos de Operadores
• Operador de Atribuição • Operadores Aritméticos • Operador de Concatenação • Operadores Relacionais • Operadores LógicosComando Clrscr
• Limpa o vídeo, colocando o cursor na linha 1,
coluna 1.
Sintaxe: Clrscr;
Comando Gotoxy
• Posiciona o cursor no vídeo na coluna e na linha indicada no comando. O vídeo é dividido
em 80 colunas e 25 linhas.
Sintaxe: Gotoxy (< col >, < lin >);
Tabulação dos dados de saída
• Coloca-se “:n” após a variável onde n é o deslocamento a partir da posição corrente do cursor. Para valores reais, podemos determinar a quantidade de casas decimais que serão exibidas, colocando-se mais uma sequência “:n”.
Estruturas de Decisão
• A instrução IF..THEN
• A instrução IF...THEN...ELSE
Estruturas de Repetição (Loops)
• Instrução FOR
• Instrução WHILE...DO
Estruturas de controle
SELEÇÃO I
if condicao then begin//caso condição verdadeira end;
Estruturas de controle
SELEÇÃO II
if condicao then begin//caso condição verdadeira end
else begin
//caso condição falsa end;
Estruturas de controle
SELEÇÃO III
case condicao of ‘valor1’: begin end; ‘valor2’: begin end; else: begin end;Estruturas de controle
• ** Obs.: O comando antes do else não possui “;” porque else é uma extensão da instrução If .. then, sendo assim o final da condição somente ocorre após o processamento da instrução else.
Estruturas de controle
•
REPETIÇÃO I
•
For
• Repete a execução um número finito de vezes, pois possui limites fixos.
Estruturas de controle
REPETIÇÃO I
for i:= valor_inicial to valor_final do
begin
//bloco de código end;
Estrutura de Repetição
•
REPETIÇÃO II
• While…do
• Consiste numa estrutura que permite executar diversas vezes um mesmo trecho do algoritmo, porém sempre verificando antes de cada execução se a condição para a repetição é verdadeira, pois só executa um determinado conjunto de instruções enquanto a condição verificada for verdadeira. Quando a condição se torna falsa, a execução é desviada para fora do laço.
Estruturas de controle
REPETIÇÃO II
while (condicao) do begin //bloco de código end;Estruturas de controle
•
REPETIÇÃO III
• Repeat...Until
• Permite que um mesmo trecho do algoritmo seja repetido até uma determinada condição seja verdadeira, ou seja, executa um conjunto de instruções enquanto a condição se mantém Falsa e até que ela seja Verdadeira, sempre verificando a condição após cada execução. Irá efetuar a execução de um conjunto de instruções pelo menos uma vez antes de verificar a validade da condição estabelecida.
Estruturas de controle
REPETIÇÃO III
repeat//bloco de código until (condicao);
• É um tipo de dado estruturado unidimensional que consiste de um número fixo de elementos, sendo que todos os elementos devem ser do mesmo tipo (char, integer, real, string ....)
• Definição na linguagem Pascal:
nome_do_array: ARRAY [inicio..fim] of tipo;
• Exemplo:
notas: ARRAY [1..4] of real;
• Acessando os dados:
notas[1]:= 5.0; notas[2]:= 4.0;
Vetores
• É um tipo de dado estruturado bidimensional que consiste de um número fixo de elementos, sendo que todos os elementos devem ser do mesmo tipo (char, integer, real, string ....)
• É utilizado para armazenar tabelas, imagens etc.
• Manipulação muito semelhante aos vetores.
• Definição na linguagem Pascal:
nome: ARRAY [inicio..fim, inicio..fim] of tipo_dados;
• Exemplo:
m_notas: ARRAY [1..4, 1..4] of real;
Matrizes
• É uma estrutura de dados composta e heterogênea, que permite armazenar valores, onde esses valores podem ser de diferentes tipos.
• Definição em linguagem Pascal: type nome_tipo = record campo1: tipo1; campo2: tipo2; ... end; var nome_variavel : nome_tipo
Registros
• Exemplo: type t_aluno = record RA: integer; nome: string; idade: integer; telefone: string; end; var reg_alunos : t_aluno
Registros
RA nome idade telefone
• Acessando os campos do registro: reg_alunos.RA:= 10050; reg_alunos.nome:= ‘Renato’; reg_alunos.idade:= 23; reg_alunos.telefone:= ‘3660-1777’;
Registros
RA nome idade telefone
reg_alunos
Procedimentos
procedure nome_procedimento (var par1: tipo1; var par2: tipo2); begin
end;
Exemplo:
procedure mostraBoasVindas (var nome: string); begin
writeln(‘Bom dia ‘, nome, ‘. Seja bem-vindo’); end;
Funções
function nome_funcao (var par1: tipo1; var par2: tipo2): tipo_retorno;
begin
nome_funcao := valor_a_ser_retornado;
end;
Exemplo:
function media (var a: real; var b: real): real; begin
media:= (a + b) / 2;