Linguagens de Programação

Documentos relacionados
Linguagens de Programação

Linguagens de Programação

Linguagens de Programação

Sistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Linguagens de Programação. Introdução. Carlos Bazilio

Linguagens de Programação Conceitos e Técnicas. Amarrações

ao paradigma imperativo

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira

Paradigmas de Linguagens

Nomes, vinculações e escopos

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Paradigmas de Linguagem de. Programação Profª. Roberta B Tôrres de programação referem-se a:

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

Paradigmas de Linguagens

Nomes, vinculações e escopos

Verificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica

Histórico de Linguagens de Programação

Conceitos de Linguagem de Programação - 2

Capítulo 1. Aspectos Preliminares

Linguagens Computacionais (Conceitos Básicos)

Linguagens de Programação Subprogramas

Paradigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos

Aspectos preliminares

Computação I. Prof. Miguel Elias Mitre Campista.

Projeto de Linguagem. Linguagens de Programação

Paradigmas de Programação

Erros de Tipo em Pascal Simplifificado

Linguagens de Programação. Tipos. Carlos Bazilio

Valores e Tipos de Dados Prof. Hudson Costa

1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18

Trabalho Linguagem e Programação de Compiladores

Tipo. Tipo de uma variável: especificação de

FACULDADE LEÃO SAMPAIO

Espaço de Tipos. Amarração Tipo. Amarração Valor. Amarração Localização. Amarração Nome. Objeto de Dado

Linguagens de Programação Conceitos e Técnicas. Valores e Tipos de Dados Prof. Tiago Alves de Oliveira

Conceitos de Linguagens de Programação

Capítulo 6: Linguagens de Programação

Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).

Paradigmas de Linguagens de Programação. Tipos de Dados

Linguagens de Programação 2 Amarrações

O que é uma variável?

Linguagens de Programação

Compiladores. Análise Semântica

Variáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Conceitos de Linguagens de Programação

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado?

Agregado Homogêneo e Heterogêneo

Tipos. O Conceito de Tipo

Estudos de Linguagens de Programação - Revisão

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Agregado Homogêneo e Heterogêneo. Agregado Homogêneo. Agregado Homogêneo 28/11/2015

Introdução à Programação

APÊNDICE A - FUNDAMENTOS DA LINGUAGEM DE PROGRAMAÇÃO PASCAL.

Variáveis Indexadas Unidimensionais (Vetores)

Nomes, Amarração, Verificação de Tipos, e Escopo

Sumário. 1.1 Variáveis Globais e Locais Passagem de Parâmetro (por valor por referência) 1

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

Métodos de Programação I Ana Maria de Almeida

Algoritmos e Programação

Conceitos de Linguagens de Programação

TÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados

INE5622 INTRODUÇÃO A COMPILADORES

Sobre Variáveis, Ponteiros, Arrays, Parâmetros e Alocação de Memória

Introdução. Compiladores Análise Semântica. Introdução. Introdução. Introdução. Introdução 11/3/2008

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Informática I. Aula 19. Aula 19-31/10/2007 1

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação

Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas

Unidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri

02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre maiúsculas e minúsculas?

INE5421 LINGUAGENS FORMAIS E COMPILADORES

INTRODUÇÃO À LINGUAGEM PASCAL PREFÁCIO

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Linguagens de Programação Funcional

Introdução à Ciência da Computação. Prof. Dr. Rogério Vargas

Lista de Linguagens de Programação 7

Compiladores. Gerência de Memória

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

Análise sintática. Prof. Thiago A. S. Pardo Tratamento de erros sintáticos

Aula Anterior. Decomposição algorítmica (continuação)

Projeto de Compiladores

Linguagem de programação: Pascal

Paradigmas de Linguagem de Programação

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

Paradigmas de Programação

Nomes, Vinculações, Verificação de Tipos e Escopos. George Darmiton da Cunha Cavalcanti

Universidade Estadual de Maringá- UEM Centro de Tecnologia - CTC Departamento de Informática - DIN Fundamentos da Computação.

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Linguagens de Programação Nomes, Amarrações e Escopo

Análise Semântica: Verificação de Tipos

Métodos de Programação I (2005/2006) 1. Ficheiro (file)

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Linguagens de Programação

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

Transcrição:

Linguagens de Programação Valores e Tipos de Dados Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 19

Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade: A implementação reflete o algoritmo? A redação é sucinta? onfiabilidade: É fácil detectar enganos do programador? Eficiência: Roda rápido? Facilidade de Aprendizado: É enxuta? Ortogonalidade: onceitos podem ser combinados livremente? Reusabilidade: É possível aproveitar partes em outros programas? Modificabilidade: É fácil alterar programas? Portabilidade: Roda da forma esperada em diferentes plataformas? Bruno Lopes Linguagens de Programação 2 / 19

Dado Definição Qualquer entidade que existe durante uma computação. Pode ser: avaliado armazenado incorporado em estrutura de dados passado como argumento retornado em função Bruno Lopes Linguagens de Programação 3 / 19

Dado Definição Qualquer entidade que existe durante uma computação. Pode ser: avaliado armazenado incorporado em estrutura de dados passado como argumento retornado em função Bruno Lopes Linguagens de Programação 3 / 19

Dado Definição Qualquer entidade que existe durante uma computação. Pode ser: avaliado armazenado incorporado em estrutura de dados passado como argumento retornado em função Bruno Lopes Linguagens de Programação 3 / 19

Tipos de dados Pascal Números inteiros e reais caracteres sequências de caracteres valores lógicos registros arrays ponteiros. Números inteiros e reais caracteres sequências de caracteres valores lógicos registros arrays ponteiros. Tipos podem ser simulados através de outros tipos! Bruno Lopes Linguagens de Programação 4 / 19

Tipos de dados Pascal Números inteiros e reais caracteres sequências de caracteres valores lógicos registros arrays ponteiros. Números inteiros e reais caracteres sequências de caracteres valores lógicos registros arrays ponteiros. Tipos podem ser simulados através de outros tipos! Bruno Lopes Linguagens de Programação 4 / 19

Tipos de dados Pascal Números inteiros e reais caracteres sequências de caracteres valores lógicos registros arrays ponteiros. Números inteiros e reais caracteres sequências de caracteres valores lógicos registros arrays ponteiros. Tipos podem ser simulados através de outros tipos! Bruno Lopes Linguagens de Programação 4 / 19

Tipo Definição Um conjunto de valores. Inteiros {...,-2,-1,0,1,2,... } Reais {...,-2.0,...,-1.3,...,0.0,...,1.7,...,2.99,... } aracteres {a,..., z, A,..., Z, 0,..., 9, $,., (,... }??? {a,..., z,0.0,...,1,2,... } Bruno Lopes Linguagens de Programação 5 / 19

Tipo Definição Um conjunto de valores. Inteiros {...,-2,-1,0,1,2,... } Reais {...,-2.0,...,-1.3,...,0.0,...,1.7,...,2.99,... } aracteres {a,..., z, A,..., Z, 0,..., 9, $,., (,... }??? {a,..., z,0.0,...,1,2,... } Bruno Lopes Linguagens de Programação 5 / 19

Tipo Definição Um conjunto de valores. Inteiros {...,-2,-1,0,1,2,... } Reais {...,-2.0,...,-1.3,...,0.0,...,1.7,...,2.99,... } aracteres {a,..., z, A,..., Z, 0,..., 9, $,., (,... }??? {a,..., z,0.0,...,1,2,... } Bruno Lopes Linguagens de Programação 5 / 19

Tipo Tipo Uma coleção de valores que têm alguma propriedade em comum oleção de valores que exibe comportamento uniforme nas operações associadas ao tipo. tipo = valores + operações Bruno Lopes Linguagens de Programação 6 / 19

Tipo Tipo Uma coleção de valores que têm alguma propriedade em comum oleção de valores que exibe comportamento uniforme nas operações associadas ao tipo. tipo = valores + operações Bruno Lopes Linguagens de Programação 6 / 19

Tipo Tipo tipo = valores + operações T1 = 1,O1 e T2 = 2,O2 Se 1 = 2 e O1 O2 então T1 T2? Se 1 2 e O1 = O2 então T1 T2? Bruno Lopes Linguagens de Programação 7 / 19

Tipo Por que tipos? Evitar paradoxos! Paradoxo de Russel R = {x x R} R R? Bruno Lopes Linguagens de Programação 8 / 19

Tipo Por que tipos? Evitar paradoxos! Paradoxo de Russel R = {x x R} R R? Bruno Lopes Linguagens de Programação 8 / 19

Tipo Por que tipos? Evitar paradoxos! Paradoxo de Russel R = {x x R} R R? Bruno Lopes Linguagens de Programação 8 / 19

Tipo Em computação Ajudam a estruturar a solução do problema Ajudam a compreender expressões indicando o conjunto de valores que podem ser denotados por ela Ajudam a detectar erros: operações aplicadas a valores impróprios Ajudam a gerar códigos eficientes: representação adequada de valores Bruno Lopes Linguagens de Programação 9 / 19

Tipo Em computação Ajudam a estruturar a solução do problema Ajudam a compreender expressões indicando o conjunto de valores que podem ser denotados por ela Ajudam a detectar erros: operações aplicadas a valores impróprios Ajudam a gerar códigos eficientes: representação adequada de valores Bruno Lopes Linguagens de Programação 9 / 19

Tipo Em computação Ajudam a estruturar a solução do problema Ajudam a compreender expressões indicando o conjunto de valores que podem ser denotados por ela Ajudam a detectar erros: operações aplicadas a valores impróprios Ajudam a gerar códigos eficientes: representação adequada de valores Bruno Lopes Linguagens de Programação 9 / 19

Tipo Em computação Ajudam a estruturar a solução do problema Ajudam a compreender expressões indicando o conjunto de valores que podem ser denotados por ela Ajudam a detectar erros: operações aplicadas a valores impróprios Ajudam a gerar códigos eficientes: representação adequada de valores Bruno Lopes Linguagens de Programação 9 / 19

Linguagens não-tipadas Um único tipo LISP PERL SELF (define a 1) (define b casa ) (+ a b) Bruno Lopes Linguagens de Programação 10 / 19

Linguagens não-tipadas Um único tipo LISP PERL SELF (define a 1) (define b casa ) (+ a b) Bruno Lopes Linguagens de Programação 10 / 19

Tipagem estática Tempo de compilação A informação a respeito do tipo está amarrada ao identificador, usualmente, pela declaração de variáveis. var i: integer; a: char; begin readln(i); readln(a); writeln(i+a); end. Bruno Lopes Linguagens de Programação 11 / 19

Tipagem estática Tempo de compilação A informação a respeito do tipo está amarrada ao identificador, usualmente, pela declaração de variáveis. var i: integer; a: char; begin readln(i); readln(a); writeln(i+a); end. Bruno Lopes Linguagens de Programação 11 / 19

Tipagem dinâmica Tempo de compilação Erros eventualmente detectados na execução. Todos os caminhos da execução devem ser testados para garantir a ausência de erros a não definido (if (= 1 1) 2 a) (if (= 1 1) a 2) Bruno Lopes Linguagens de Programação 12 / 19

Tipagem dinâmica Tempo de compilação Erros eventualmente detectados na execução. Todos os caminhos da execução devem ser testados para garantir a ausência de erros a não definido (if (= 1 1) 2 a) (if (= 1 1) a 2) Bruno Lopes Linguagens de Programação 12 / 19

Tipagem dinâmica (define segundo(lambda(l) (car (cdr l)))) (segundo (1 2 3)) (segundo ( (1 2 3) (4 5 6))) (segundo ("manga" "abacaxi" 5 6)) Bruno Lopes Linguagens de Programação 13 / 19

Tipagem dinâmica (define segundo(lambda(l) (car (cdr l)))) (segundo (1 2 3)) (segundo ( (1 2 3) (4 5 6))) (segundo ("manga" "abacaxi" 5 6)) Bruno Lopes Linguagens de Programação 13 / 19

Tipagem Tipagem Estática Eficiência Segurança Flexibilidade Tipagem Dinâmica Eficiência Segurança Flexibilidade Bruno Lopes Linguagens de Programação 14 / 19

Valor do tipo Pertence ao conjunto de valores definido pelo tipo. Expressão do tipo O resultado da expressão pertence ao conjunto de valores definido pelo tipo. ardinalidade do tipo ardinalidade do conjunto de valores do tipo. Bruno Lopes Linguagens de Programação 15 / 19

Valor do tipo Pertence ao conjunto de valores definido pelo tipo. Expressão do tipo O resultado da expressão pertence ao conjunto de valores definido pelo tipo. ardinalidade do tipo ardinalidade do conjunto de valores do tipo. Bruno Lopes Linguagens de Programação 15 / 19

Valor do tipo Pertence ao conjunto de valores definido pelo tipo. Expressão do tipo O resultado da expressão pertence ao conjunto de valores definido pelo tipo. ardinalidade do tipo ardinalidade do conjunto de valores do tipo. Bruno Lopes Linguagens de Programação 15 / 19

Bruno Lopes Linguagens de Programação 16 / 19

Tipos Primitivos (Atômicos) Seus valores não podem ser decompostos em valores mais simples! O conjunto de tipos primitivos costuma revelar o propósito da Linguagem de Programação. FORTRAN Inteiros Reais omplexos. Bruno Lopes Linguagens de Programação 17 / 19

Tipos Primitivos (Atômicos) Seus valores não podem ser decompostos em valores mais simples! O conjunto de tipos primitivos costuma revelar o propósito da Linguagem de Programação. FORTRAN Inteiros Reais omplexos. Bruno Lopes Linguagens de Programação 17 / 19

Tipos Primitivos (Atômicos) Sofrem limitações diretas do hardware e entre implementações da mesma linguagem. Inteiros em Pascal [-32768,32767] Inteiros em [-65536,65536] Bruno Lopes Linguagens de Programação 18 / 19

Tipos Primitivos (Atômicos) Sofrem limitações diretas do hardware e entre implementações da mesma linguagem. Inteiros em Pascal [-32768,32767] Inteiros em [-65536,65536] Bruno Lopes Linguagens de Programação 18 / 19

Tipos Primitivos (Atômicos) Built-in: pré-definidos na linguagem Definidos: definidos pelo programador Discretos: em correspondência direta com os inteiros Bruno Lopes Linguagens de Programação 19 / 19