Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Paradigmas de Linguagem de ProgramaçãoParadigma Imperativo
▪ Imperare➔ Comandar
▪ É o mais antigo de todos;
▪ Baseado no modo de funcionamento do computador;
▪ São também chamadas de procedurais;
▪ Caracterizada por três conceitos
▪ Variáveis;
▪ Tipos;
▪ Valores;
Paradigma Imperativo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Variáveis
▪ Para que as informações sejam guardadas e utilizadas pelo programa, é necessário definir variáveis;
▪ Variáveis são espaços em memória ram para alocação temporária de informação.
▪ Tipos
▪ O tipo classifica as informações de acordo com sua natureza;
▪ Além de definir a natureza da informação, também define os possíveis valores (tipos de valores) possíveis para o espaço alocado.
▪ Valores
▪ É a representação de um conceito: nome de uma pessoa, peso, idade, etc.
Paradigma Imperativo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Veremos 3 tipos de dados básicos
▪ Primitivos
▪ Compostos
▪ Recursivos
Paradigma Imperativo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Tipo Primitivo
▪ São tipos atômicos, não podem ser subdividos;
▪ Exemplos: inteiro, booleano, real, caracter, enumerado.
▪ Os tipos de uma linguagem e como serão tratados dependerá do domínio da aplicação
▪ Fortran: apelo aos tipos numéricos de precisão;
▪ Cobol: apelo aos tipos alfanuméricos.
Paradigma Imperativo – Tipo Primitivo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Numéricos
▪ Inteiros e flutuantes
▪ O nome ponto flutuante é utilizado para distinguir a representação computacional (que é limitada por hardware) da representação matemática (infitina)
▪ Não-numéricos
▪ Booleanos, caracteres e ponteiros
▪ Booleanos permitem representações de 0 e 1
▪ Caracteres permite o agrupamento de símbolo (‘A’-’z’, ‘0’-’9’, ‘:’,”;’)
▪ Ponteiro agrupa endereços de memória, suportando endereçamento direto pelas linguagens, além da alocação e deslocação dinâmica de variáveis
Paradigma Imperativo – Tipo Primitivo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Enumerado
▪ Permite a definição de novos conjuntos;
▪ Um valor inteiro é associado a cada valor da enumeração.
Paradigma Imperativo – Tipo Primitivo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Exemplos em Pascal:
idade: integer; //variável inteira
peso: real; //variável real
letra: Character; //variável tipo caractere
booleana: Boolean; //variável do tipo boolean
ponteiro: ^Integer; //variável ponteiro para inteiro
estacoes = (Primavera, Verao, Outono, Inverno) //variável do tipo Enumerado
Paradigma Imperativo – Tipo Primitivo
Professor Ariel da Silva Dias - www.arieldias.com
▪ Tipo Composto
▪ São tipos construídos a partir de outros tipos;
▪ É utilizado quando necessitamos de agrupar tipos diferentes dentro de mesmo contexto;
▪ São provenientes da matemática
▪ produto cartesiano
▪ união disjunta
▪ mapeamento
▪ conjunto potência
Paradigma Imperativo – Tipo Composto
Professor Ariel da Silva Dias - www.arieldias.com
//Exemplo em C:
enum DiasC{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31}
enum MesesC{jan,fev,mar,abr,mai,jun,jul,ago,set,out,nov,dez}
struct DataC{
DiasC d;
MeseC m;
};
Paradigma Imperativo – Tipo Composto – Produto Cartesiano
Professor Ariel da Silva Dias - www.arieldias.com
//exemplo em C
union NumeroC{
int ival;
float rval;
};
▪ As variáveis ival e rval compartilham o mesmo espaço de memória;
▪ Quando um valor é atribuído à ival, o valor de rval é sobreposto.
Paradigma Imperativo – Tipo Composto – União Disjunta
Professor Ariel da Silva Dias - www.arieldias.com
//Exemplo em Pascal
var
tempP:array[1..30] of real;
▪ O mapeamento é realizado através de vetores, onde o conjunto domínio é denominado de índice e o conjunto imagem é o elemento do vetor
Paradigma Imperativo – Tipo Composto – Mapeamento
Professor Ariel da Silva Dias - www.arieldias.com
//Exemplo em Pascal
type
Cores = (vermelho, azul, amarelo);
NovasCores = set of Cores;
▪ Neste exemplo, NovasCores possui os valores:▪ {{}, {vermelho}, {azul}, {amarelo}, {vermelho, azul}, {vermelho, amarelo}, {azul,
amarelo},{vermelho, azul, amarelo}}
▪ A linguagem C não contempla este tipo de conjunto!
Paradigma Imperativo – Tipo Composto – Conjunto Potência
Professor Ariel da Silva Dias - www.arieldias.com
Paradigma Imperativo – Tipo Recursivo
▪ Tipo recursivo possui elementos do próprio tipo, gerando conjunto cardinal infitino
▪ Exemplo em Pascal:
type
IntListP = ^IntNode;
IntNode = record
valor: Integer;
prox: IntListP
end;
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões
▪ Valores podem ser representados em formato de expressões;
▪ A maioria das linguagens oferecem elementos capazes de manipular variáveis, oferecendo os mesmos recursos da matemática por meio de operadores, operandos, parênteses e chamadas de funções;
▪ O resultado de uma operação depende da precedência que a linguagem considera;
total = a + b * c
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões
▪ Valores podem ser representados em formato de expressões;
▪ A maioria das linguagens oferecem elementos capazes de manipular variáveis, oferecendo os mesmos recursos da matemática por meio de operadores, operandos, parênteses e chamadas de funções;
▪ O resultado de uma operação depende da precedência que a linguagem considera;
total = a + b * c
▪ Pela matemática temos que a multiplicação e a divisão precedem a soma e a subtração;
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões
▪ Assim, por esta regra, teríamos a multiplicação antes da soma
▪ total = 8 + 3 * 4
▪ total = 20
▪ Caso a leitura seja feita da esquerda para a direita teríamos:
▪ total = 8 + 3 * 4
▪ total = 44
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo - Expressões
▪ Tabela de precedência de algumas linguagens imperativas
▪ Pela tabela temos que:
int a=2; int b=3; int c=4;
c = ++a*b++c;
▪ Logo, o valor final de c será?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões
▪ E quando temos uma sequência de operadores com a mesma precedência?
▪ A ordem de execução será pela regra da associatividade
▪ A execução será da esquerda para a direita na maioria das linguagens
▪ Em Fortran, a exponenciação é realizada da direita para a esquerda:
8 ** 1 ** 9 = 8 ** 1 = 8
▪ A precedência e associatividade podem ser modificadas pelo uso de parênteses
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Estruturas Condicionais
▪ Algumas linguagens permitem estruturas condicionais e operador ternário (C, C++ e Java). Exemplo em C:
if (cont==0){
media=0;
}
else{
media=soma/cont;
}
ou utilizando o operador ternário (?):
media=(cont==0)?0:soma/cont;
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Estruturas Condicionais
▪ A expressão antes do operador ? é avaliada
▪ Se verdadeira, toda expressão valerá zero;
▪ Senão, será “soma/cont”
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões
▪ Efeito colateral na ordem de execução, considere:... a = 10;b = a + fun(a); ...
int fun(&a){ int b = a/2; a = a*2; return b;
}
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
A ordem de execução vai interferir no
resultado final de b
Paradigma Imperativo – Expressões – Erros
▪ Overflow
▪ Erro mais comum de ocorrer
▪ Este erro ocorre quando o programa não consegue inserir determinado valor em seu espaço de memória
▪ Também ocorre quando se tenta dividir um número por zero
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Expressões Relacionais
▪ São constituídas de operadores relacionais
▪ maior, menor, maior ou igual, menor ou igual, diferente, igual e seus operandos
▪ Operadores relacionais possui menor precedência em relação aos aritméticos
▪ 2*5 > 10-6
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Expressões Booleanas
▪ São formadas por operadores booleanos
▪ not, and e or
▪ Os operandos podem ser
▪ Expressões relacionais
▪ Variáveis
▪ Constantes
▪ Em C não existe o valor booleano, logo, o retorno de uma expressão booleana será 0 ou 1 (diferente de linguagens como C++, C# e Java)
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Expressões Booleanas
▪ Considere os códigos abaixo, o primeiro escrito em C e o segundo em Java, qual o resultado no final da execução?
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
int a=2;int b=3;
if(a=b)printf(“caso1”);
int a=2;int b=3;
if(a=b)System.out.println(“caso2”);
Paradigma Imperativo – Expressões – Expressões Booleanas
▪ O primeiro código, em C, o valor da variável b é atribuído à variável a, e executará com sucesso e mostra na tela o conteúdo “caso1”
▪ Isso ocorre pois, como vimos anteriormente, o retorno de uma operação booleana em C é 0 ou 1
▪ Logo, a variável a recebe o valor da variável b, se a tiver qualquer valor diferente de zero, a expressão será considerada como verdadeira, senão, ou seja, se a tiver valor igual a zero, a expressão será considerada falsa.
▪ O segundo código, em Java, apresentará erro pois nesta linguagem a saída de uma operação booleana é true ou false, porém o resultado desta expressão dentro do if é uma atribuição e não uma comparação
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Avaliação curto-circuito
▪ Este termo é usado quando o resultado de uma expressão é definido sem avaliar todos os operandos e/ou operadores
▪ (a>=0) && (b<10)
▪ Se a primeira expressão for falsa (se a for menor que zero), a expressão (b<10) não será executada pois, de acordo com a tabela verdade
▪ falso && (verdadeiro || falso) será falso
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Expressões – Expressões Booleanas
▪ Considere o seguinte código:
(a>b) || (b++ / 3)
▪ Em qual caso o valor de b será modificado (será incrementado)?
▪ b só será modificado se a>b retornar false
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos
▪ Comandos são responsáveis
▪ pela mudança de estado das variáveis
▪ pelo controle de fluxo de execução do programa
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos - Atribuição
▪ Atribuição simples
▪ <variável> <op_de_atribuição> <expressão>
▪ Operador de atribuição em C, Java, C++, C# ➔ =
▪ Operador de atribuição em Algol➔ := (primeira linguagem a usar este símbolo)
▪ Atribuição composta
▪ Forma de abreviar a instrução de atribuição
▪ Em C:
soma += valor;
equivale a
soma = soma + valor;
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos – Instruções compostas
▪ São estruturas da linguagem capazes de tratarem vários comandos como um
▪ Para este tipo de comando utilizamos delimitadores
▪ C, C++ e C# ➔ { e }
▪ Pascal e Algol60 ➔ begin e end
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos – Condicionais
▪ Permite que o programa execute instruções de acordo com as condições impostas
▪ Existem instruções bidirecionais e n-direcionais
▪ bidirecionais
▪ if-else
▪ n-direcionais
▪ Switch case
▪ if-elseif-elseif-....-else (if encadeado)
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos – Iterativos
▪ Comandos iterativos são constituídos por corpo do comando e pelo controlador de iteração
▪ Sintaxe de um comando iterativo em Pascal
for <variável> := <expressao1> (to/down) <expressao2> do
<corpo_do_comando>
▪ A variavel de controle é iniciada pela <expressao1> e é incrementada (to) ou decrementada (down), até que seja maior ou menor que <expressao2>
▪ Enquanto isso o <corpo_do_comando> é executado
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos – Iterativos
▪ Linguagens como C permitem mais de uma variável de controle. Exemplo:
somai=0;
somar=0.0;
for (i=10, r=2; (i<100 || r<20); i=i+2, r=r*2){
somai = somai + i;
somar = somar + r;
}
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Paradigma Imperativo – Comandos – Iterativos
▪ Existem comandos com número de iteração indefinidos
Professor Ariel da Silva Dias - www.arieldias.com - Obra Gratuita, proibida reprodução e venda
Referências
▪ Material de aula professor Celso Olivete Júnior UNESP
▪ SEBESTA, Robert W. Conceitos de linguagens de programação. 9ª ed. PortoAlegre: Bookman, 2011. 792 p. ISBN 978-85-7780-791-8.
Professor Ariel da Silva Dias - www.arieldias.com