Paradigmas de Linguagem de Programação Conceitos Elementares Profª. Roberta B Tôrres rbtorresiff@gmail.com Conceitos Elementares de uma Linguagem de Programação Os conceitos mais elementares, suportados por quase todas as linguagens de programação referem-se a: Valores e Tipos Variáveis e seu armazenamento Vinculações e escopo Abstração procedimental (procedimentos e parâmetros) Os dados são a matéria-prima da computação, e são tão importantes (e valiosos) para os programas que os manipulam. Em ciência da computação, o estudo de dados é considerado um tema importante por si só.
Valores e Tipos Um valor é qualquer entidade que pode ser manipulada por um programa. Valores podem ser avaliados, armazenados, passados como argumentos, retornados como resultados de função e assim por diante. Diferentes linguagens de programação suportam diferentes tipos de valores: Na linguagem C: Suporta números inteiros, números reais, estruturas, matrizes, registros, ponteiros para variáveis e ponteiros para funções. Inteiros e números reais são valores primitivos. Estruturas, arrays e registros são valores compostos. C++, que é uma extensão de C, suporta todos os tipos acima e mais o tipo Objeto (que representam valores compostos). JAVA suporta booleanos, números inteiros e reais, arrays e objetos. Booleanos, números inteiros e números reais são valores primitivos; matrizes e objetos são valores compostos. Valores e Tipos A maioria das linguagens de programação agrupa valores em tipos. Por exemplo, quase todas as linguagens fazem uma distinção clara entre números inteiros e números reais. A também uma distinção clara entre booleanos e inteiros: inteiros podem ser adicionados e multiplicados; booleanos podem ser submetidos a operações como NOT, AND e OR.
Valores e Tipos O que exatamente é um TIPO? A resposta mais óbvia, Tipo é um conjunto de valores. Quando dizemos que V é um valor de tipo T, queremos dizer simplesmente que V T. Quando uma expressão E é de tipo T, estamos afirmando que o resultado da avaliação de E será um valor do tipo T. Um TIPO é caracterizado não só por seu conjunto de valores, mas também pelas operações sobre esse conjunto de valores. Tipo de Dados Definição de Tipo de Dados Um tipo de dados é um conjunto de valores, equipado com uma ou mais operações que podem ser aplicadas uniformemente a todos esses valores. Para que servem?
Tipos de Dados Vantagens: Tipos de Dados Dependendo da linguagem de programação, o tipo de um dado é verificado diferentemente, de acordo com a análise léxica, sintática e semântica do compilador ou interpretador da linguagem. Os tipos tem geralmente associações com valores na memória ou com objetos (para linguagem orientada a objeto) ou variáveis.
Tipos de Dados Tipos de Dados As linguagens de programação suportam: Tipos Primitivos e; Tipos Compostos.
Hierarquia de Tipos Tipos Primitivos Um valor primitivo é aquele que não pode ser decomposto em valores mais simples. Tipos de dados que não são definidos em termos de outros tipos são chamados de tipos de dados primitivos. Cada linguagem de programação fornece um conjunto de tipos de dados primitivos incorporado. Algumas linguagens também permitem que os programas definam novos tipos primitivos.
Tipos Primitivos Muitos tipos primitivos aparecem em uma variedade de linguagens, algumas vezes sob diferentes nomes. Por exemplo: int ou integer; float ou real. Tipos primitivos mais usuais: Tipos Primitivos Tipos Numéricos
Tipos Primitivos Tipos Numéricos O nome Ponto Flutuante é utilizado para distinguir a representação computacional (limitada pelo hardware) da representação matemática (infinita). Tipos Primitivos Tipo Booleano
Tipos Primitivos Tipo Caracter São armazenados como códigos numéricos. O conjunto de caracteres escolhido é normalmente ASCII (128 caracteres), ISOLATION (256 caracteres) ou UNICODE (65 536 caracteres). Tipo Cadeia de Caracteres Consistem em uma sequência de caracteres. Tipos Primitivos Tipo Cadeia de Caracteres Consistem em uma sequência de caracteres.
Tipos Primitivos Tipo Cadeia de Caracteres Tipos Primitivos Tipo Cadeia de Caracteres
Tipos Primitivos Tipo Enumerado Tipos Primitivos Tipo Subfaixa ou Intervalo
Tipos Primitivos Tipos Compostos Um tipo composto pode ser construído a partir de tipos primitivos e de outros tipos compostos, em um processo chamado composição. As linguagens de programação suportam uma enorme variedade de valores compostos: registros, vetores, objetos, uniões, listas, árvores, arquivos e outros. Na verdade quase todos esses valores compostos podem ser entendidos em termos de alguns conceitos estruturantes, que são: Produtos cartesianos (tuplas, registros) Mapeamentos (arrays, funções) Uniões disjuntas (tipos algébricos, registros discriminados, objetos) Tipos recursivos (listas, árvores).
Tipos Compostos Tipo Produto Cartesiano É composto pelo emparelhamento de valores de dois tipos (possivelmente diferentes). Tipos Compostos Tipo Produto Cartesiano
Tipos Compostos Tipo União Disjunta Tipos Compostos União Disjunta e Produto Cartesiano
Tipos Compostos Tipo Registro Tipos Compostos Tipo Ponteiro
Tipos Compostos Tipo Ponteiro Exemplo de ponteiro em C Tipos Compostos Tipos Recursivos
Tipos Compostos Mapeamento Tipo Array Tipos Compostos Mapeamento Tipo Função Funções são exemplos de mapeamento. Um função tem argumentos (S) e resultados (T). A função é um mapeamento do tipo S -> T.
Sistema/Estrutura de Tipos Linguagem fortemente tipada Linguagens fortemente tipadas (como Java) exigem que o tipo de dado de um valor seja do mesmo tipo da variável ao qual o valor será atribuído. NOTA: Python é classificada como fortemente e dinamicamente tipada. Exemplo: ocorrerá um erro ao compilar a linha 7. O valor 13 precisa ser convertido para o tipo de dado inteiro.
Linguagem fracamente tipada Linguagens fracamente tipadas, tais como PHP e VBScript, a conversão não se faz necessária, sendo realizada implicitamente pelo compilador ou interpretador. Sistemas de Tipos EXEMPLOS
Referências Consultadas http://pt.slideshare.net/adrianots/presentations/2 (otimo material) http://pt.slideshare.net/adrianots/paradigmas-de-linguagens-de-programao-expresses-e-instruesde-atribuio http://slideplayer.com.br/slide/2262869/ - Tipo de Dado http://pt.slideshare.net/adrianots/paradigmas-de-linguagens-de-programao-tipos-primitivos-ecompostos (referencia) http://maradentro.com.br/wp-content/uploads/2014/09/paradigmas_apostila.pdf http://www.edilms.eti.br/uploads/file/pp/pp-aula-05-tiposdedados.pdf http://slideplayer.com.br/slide/3232289/ http://slideplayer.com.br/slide/3232289/ - Estático x Dinâmico http://pt.slideshare.net/adrianots/paradigmas-de-linguagens-de-programao-expresses-e-instruesde-atribuio - expressões e efeitos colaterais http://pt.slideshare.net/adrianots/paradigmas-de-linguagens-de-programao-classificaes - Sistema de Tipos http://www.inf.ufes.br/~vitorsouza/wp-content/uploads/teaching-lp-20132-slides03.pdf - Tipos compostos muito bom https://pt.slideshare.net/skosta/tipos-e-valores - Tipo de Dados/Sistemas https://inf.ufes.br/~vitorsouza/wp-content/uploads/teaching-lp-20132-slides03.pdf - muito bom https://pt.stackoverflow.com/questions/21508/qual-a-diferen%c3%a7a-entre-uma-linguagem-deprograma%c3%a7%c3%a3o-est%c3%a1tica-e-din%c3%a2mica