37
Paradigmas de Linguagem de Programação Paradigma Imperativo

Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

  • Upload
    vanhanh

  • View
    251

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

Paradigmas de Linguagem de ProgramaçãoParadigma Imperativo

Page 2: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 3: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 4: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ Veremos 3 tipos de dados básicos

▪ Primitivos

▪ Compostos

▪ Recursivos

Paradigma Imperativo

Professor Ariel da Silva Dias - www.arieldias.com

Page 5: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 6: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 7: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 8: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 9: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

▪ 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

Page 10: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

//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

Page 11: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

//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

Page 12: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

//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

Page 13: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

//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

Page 14: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 15: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 16: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 17: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 18: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 19: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 20: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 21: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 22: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 23: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 24: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 25: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 26: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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”);

Page 27: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 28: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 29: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 30: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 31: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 32: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 33: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 34: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 35: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 36: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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

Page 37: Paradigmas de Linguagem de Programação - arieldias.comarieldias.com/material/2018-2/PLP/Aula5.pdf · Paradigma Imperativo –Expressões –Expressões Booleanas São formadas por

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