Paradigmas de Linguagens Tipos de Dados

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Laboratório de Programação
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Introdução à Ciência da Computação Linguagens de Programação.
Paulo Marques Hernâni Pedroso
Algoritmo e Programação
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Prof. Thiago Pereira Rique
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Rafael Pinto Frederico Corrêa
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
UDESC - Prof. Juliano Maia
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
8 Sistemas de Tipos Polimorfismo de inclusão.
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 5 Tipos de Dados Universidade do Vale do Rio dos Sinos
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Linguagem C Strings.
Linguagem C Strings.
Laboratório de Programação de Computadores I
Unidades de Armazenamento
Robson Godoi / Sandra Siebra
Ponteiros.
O Portal do Estudante de Computação
O Portal do Estudante de Computação
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Aula prática 6 Vetores e Matrizes
Linguagem de Programação II Parte VII
Conceitos de Linguagem de Programação
CADEIA DE CARACTERES (Strings)
Estrutura de Dados Avançada
Seminário 1: Revisão de C
Introdução ao uso de vatores na linguagem PASCAL.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Organização do Ambiente de Execução (Runtime System)
Tipos de Dados Paradigmas de Programação
Verificação de Tipos e Escopos
Tipos Abstratos de Dados
Nomes, Variáveis e Vinculações
Expressões e Instrução de Atribuição
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Modelos de Linguagem de Programação I Aula 06
Algumas notas sobre a linguagem de programação C
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Estruturas de Dados Aula 6: Cadeias de Caracteres
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Arquitetura básica de um Computador
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Linguagem C.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
CAPITULO 6: TIPOS DE DADOS
Programação de Computadores - 1
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 2 Variáveis e Atribuições.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
 O que são arrays:  estruturas de dados homogêneas  coleção de elementos do mesmo tipo referenciada por um nome comum  um array pode ser imaginado.
UNDB ESTRUTURAS DE DADOS Prof. Alessandro Gonçalves
PARADIGMAS DE LINGUAGENS EXPRESSÕES E INSTRUÇÕES DE ATRIBUIÇÃO
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Profa. Maria Augusta Constante Puget
Linguagem de Programação
MATA56 Tipos, Verificação de Tipos Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave – nomes.
PCI- Vetores Profa. Mercedes Gonzales Márquez. Aula 5 - VetoresAlgoritmos e Estruturas de Dados I Sequência de valores todos do mesmo tipo Nome único.
P ARADIGMAS DE L INGUAGENS S UBPROGRAMAS Prof. Thiago Pereira Rique
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Transcrição da apresentação:

Paradigmas de Linguagens Tipos de Dados Prof. Thiago Pereira Rique thiagorique2011@gmail.com http://thiagorique.wordpress.com/

Agenda Introdução Tipos de dados primitivos Tipos String de caracteres Tipos ordinais definidos pelo usuário Tipos matriz (array) Tipos registro Tipos ponteiro

INTRODUÇÃO Os programas de computador produzem resultados manipulando dados. Que tipos de dados podemos ter?

Tipos de dados primitivos Tipos de dados primitivos são aqueles não definidos em termos de outros tipos. Tipos numéricos Inteiro Ponto-flutuante Decimais Tipos booleanos Tipos caractere

Tipos de dados primitivos Tipos numéricos – Inteiro: Muitos computadores suportam diversos tamanhos de inteiros. Linguagem de programação Ada SHORT INTEGER, INTEGER, LONG INTEGER Representado por uma cadeia de bits (bit de sinal na extrema esquerda) Notação complemento de 2 para números negativos.

Tipos de dados primitivos Tipos numéricos – Ponto-flutuante (ou vírgula- flutuante): Modelam os números reais (aproximação – π:3,14...) Os valores de ponto-flutuante são representados como frações e como expoentes (notação científica)

Tipos de dados primitivos Tipos numéricos – Ponto-flutuante (ou vírgula- flutuante): São armazenados na forma normalizada. A maioria das linguagens inclui dois tipos de ponto-flutuante: float e double.

Tipos de dados primitivos Tipos numéricos – Decimais: São armazenados usando códigos binários para os dígitos decimais. Representação BCD (Binary-Coded Decimal) São necessários pelo menos 4 bits para codificar um dígito decimal. 123 (decimal) = 000100100011 (BCD)

Tipos de dados primitivos Tipos booleanos: Sua faixa de valores tem somente dois elementos. Uma exceção popular é o C, no qual expressões numéricas podem ser usadas como condicionais.

Tipos de dados primitivos Tipos caractere: Os dados de caracteres são armazenados nos computadores como codificações numéricas; A codificação mais comumente usada é a ASCII (American Standard Code for Information Interchange) Codificação Unicode (Java)

Tipos String de caracteres Um tipo cadeia de caracteres (String) é aquele cujos valores consistem em sequências de caracteres. Os dados das cadeias normalmente são armazenados em vetores de caracteres únicos e referenciados como tal na linguagem (Pascal, C, C++, Ada).

Tipos String de caracteres Ada STRING é um tipo formado por elementos CHARACTER. Referência a subcadeias, concatenação, operadores relacionais e atribuição são operações oferecidas para os tipos STRING. NAME1(2:4) NAME1 := NAME1 & NAME2;

Tipos String de caracteres C e C++ Vetores char para armazenar cadeias de caracteres. Biblioteca padrão (string.h) As cadeias de caracteres são finalizadas com um caractere especial nulo (zero). Ex: char *str = “apples”; Funções de biblioteca: strcpy, strcat, strcmp, strlen.

Tipos String de caracteres Opções de tamanho da cadeia Cadeia de tamanho estático: FORTRAN 90, COBOL, Pascal e Ada. Exemplo de instrução FORTRAN 90: CHARACTER(LEN=15) NAME1, NAME2

Tipos String de caracteres Opções de tamanho da cadeia Cadeias de tamanho dinâmico limitado: C e C++ Cadeias de tamanho dinâmico: SNOBOL4, JavaScript e Perl.

Tipos ordinais definidos pelo usuário Tipo ordinal: faixa de valores associada aos inteiros positivos. Pascal e Ada: inteiro, caractere e booleano como tipos ordinais primitivos. Em muitas linguagens, os usuários podem definir dois tipos de ordinais: Enumerações Subfaixa

Tipos ordinais definidos pelo usuário Tipos Enumeração São aqueles em que todos os valores possíveis são enumerados na definição. Exemplo Ada: type DIAS is (Seg, Ter, Qua, Qui, Sex, Sab, Dom)

Tipos ordinais definidos pelo usuário Tipos Enumeração Dependendo de questões de projeto, duas variáveis do tipo enumeração e/ou literais do mesmo tipo podem ser comparadas com os operadores relacionais. Ex: type tipocor = (vermelho, azul, verde, amarelo); var cor: tipocor; ... cor:= azul; if cor > vermelho...

Tipos ordinais definidos pelo usuário Tipos Subfaixa Um tipo subfaixa (subrange) é uma subsequencia de um ordinal. Ex: 12...14 (subfaixa de inteiro) Na Ada, as subfaixas são incluídas na classe de tipos, chamada subtipos. Ex: subtype DIASSEMANA is DIAS range Seg..Sex;

Tipos ordinais definidos pelo usuário Tipos Subfaixa Todas as operações para o tipo pai também são definidas para o subtipo, exceto atribuição fora da faixa de valores. Ex: DIA1:DIAS; DIA2:DIASSEMANA; ... DIA2:=DIA1; A atribuição é válida, a menos que o valor de DIA1 seja Sab ou Dom.

Tipos matriz (array) Uma matriz é um agregado homogêneo de elementos de dados Cada elemento é identificado por sua posição em relação ao primeiro. Os elementos são de algum tipo previamente definido.

Tipos matriz (array) Matrizes e índices Elementos são referenciados através do nome do agregado mais subscritos (ou índices). Se todos os índices em uma referência forem constantes, o seletor será estático; caso contrário, será dinâmico. Mapeamento finito nome_da_matriz(lista_de_valores_indice) → elemento

Tipos matriz (array) Matrizes e índices Sintaxe de referência mais ou menos universal: ao nome da matriz segue-se a lista de índices entre parênteses ou colchetes. Problema com parênteses (também usados em listas de parâmetros) Exemplo FORTRAN: SOMA = SOMA + B(I) Subscrito de matriz ou parâmetro de subprograma?

Tipos matriz (array) Matrizes e índices Dois tipos distintos são envolvidos em tipo de matriz: o do elemento e o do subscrito. As primeiras linguagens de programação não especificavam que as faixas de subscrito deveriam ser implicitamente verificadas. O C, o C++ e o FORTRAN não especificam a verificação de faixa de subscritos. O Pascal, a Ada e o Java especificam.

Tipos matriz (array) Vinculações de subscrito Vinculação do tipo do subscrito: normalmente estática. Vinculação das faixas de valor de subscrito: às vezes dinâmica. Em algumas linguagens, o limite inferior da faixa de subscrito é implícito. No C, no C++ e no Java, o limite inferior é fixado em zero (0). No FORTRAN I, II e IV, o limite inferior foi fixado em um (1). No FORTRAN 77 e no FORTRAN 90, o padrão é um (1).

Tipos matriz (array) Inicialização de matrizes No FORTRAN 77, todo o armazenamento de dados é alocado estaticamente. Assim, é permitida a inicialização no momento de execução usando-se a instrução DATA. Por exemplo: INTEGER LISTA(3) DATA LISTA /0, 5, 5/

Tipos matriz (array) Inicialização de matrizes O ANSI C, o C++ e o Java também permitem inicialização de suas matrizes Exemplo: int lista[] = {4, 5, 7, 83}; O compilador define o tamanho do vetor.

Tipos matriz (array) Inicialização de matrizes As cadeias de caracteres no C e no C++ são implementadas como vetores de char. Exemplo: char nome[] = “freddie”; O vetor terá oito elementos Caractere nulo (zero – ‘0’ ou ‘\0’)

Tipos matriz (array) Inicialização de matrizes Vetores de cadeias no C e no C++ também podem ser inicializados com literais de cadeira (vetor de ponteiros para caracteres). Exemplo: char *nomes[] = {“Bob”, “Jake”, “Darcie”}; As literais são consideradas ponteiros para os caracteres. nomes[0] é um ponteiro para a letra ‘B’.

Tipos matriz (array) Inicialização de matrizes A Ada fornece dois mecanismos para inicializar matrizes na instrução de declaração Primeiro mecanismo (exemplo): LISTA: array (1..5) of INTEGER := (1, 3, 5, 7, 9); Segundo mecanismo (exemplo): GRUPO: array (1..5) of INTEGER := (1 => 3, 3 => 4, others => 0); Operador seta (=>).

Tipos registro Definições de registros Um registro é um agregado possivelmente heterogêneo de elementos de dados. Cada elemento possui um nome. Exemplo: informações sobre um estudante Nome Número do estudante Média das notas

Tipos registro Definições de registros Os elementos (ou campos) do registro são referenciados utilizando-se seus identificadores. Considere a forma COBOL de uma declaração de registro: 01 REGISTRO-EMPREGADO. 02 NOME-EMPREGADO. 05 PRIMEIRO PICTURE IS X(20). 05 MEIO PICTURE IS X(10). 05 ULTIMO PICTURE IS X(20). 02 TAXA-HORARIA PICTURE IS 99V99.

Tipos registro Definições de registros O Pascal e a Ada usam uma sintaxe diferente para os registros. Considere a seguinte declaração Ada: REGISTRO_EMPREGADO: record NOME_EMPREGADO: PRIMEIRO: STRING (1..20); MEIO: STRING (1..10); ULTIMO: STRING (1..20); end record; TAXA_HORARIA: FLOAT;

Tipos registro Referências a campos do registro As referências aos campos individuais são sintaticamente especificadas por diversos métodos diferentes. As referências a campos do COBOL têm a forma: Nome_do_campo OF nome_do_registro_1 OF ... OF nome_do_registro_n MEIO OF NOME-EMPREGADO OF REGISTRO-EMPREGADO

Tipos registro Referências a campos do registro A referência ao campo MEIO da Ada tem a forma a seguir (notação de pontos) REGISTRO_EMPREGADO.NOME_EMPREGADO.MEIO

Tipos ponteiro Definição Um tipo ponteiro é aquele em que as variáveis têm uma faixa de valores que consiste em endereços de memória e um valor especial, o nil. Os ponteiros, ao contrário das matrizes e dos registros, não são tipos estruturados (* no C e no C++, access na Ada e ^ no Pascal). São usados para referenciar alguma outra variável.

Tipos ponteiro Operações com ponteiros Atribuição Desreferenciamento

Tipos ponteiro Ponteiros em C e C++ Operação de desreferenciamento (*) Endereço de uma variável (&) Exemplo: int *ptr; int cont, init; ... ptr = &init; cont = *ptr;

Tipos ponteiro Ponteiros em C e C++ Ponteiros podem receber o valor de endereço de qualquer objeto do tipo de domínio correto e a constante zero, usada para nil. A aritmética de ponteiros também é possível, embora restrita. Exemplo: ptr + indice

Tipos ponteiro Ponteiros em C e C++ Os nomes de vetores sem subscritos sempre se referem ao endereço do primeiro elemento. Exemplo: int list[10]; int *ptr; Considere a atribuição de inicialização: ptr = list; //atribui o endereço de list[0] a ptr

Tipos ponteiro Ponteiros em C e C++ Podemos concluir que: *(ptr + 1) equivale a list[1] *(ptr + indice) equivale a list[indice] ptr[indice] equivale a list[indice]

REFERÊNCIA SEBESTA, R. W. Conceitos de Linguagens de Programação. 5a. Edição. São Paulo: Bookman, 2003.