Tipos. O Conceito de Tipo
|
|
|
- Oswaldo Ferreira de Miranda
- 9 Há anos
- Visualizações:
Transcrição
1 Tipos 1 O Conceito de Tipo LPs geralmente permitem a organização de dados em diferentes categorias através do conceito de tipo. Um tipo é definido a partir de um conjunto de valores e de operações ao qual está associado. O sistema de tipos de uma LP usualmente inclui um conjunto básico de tipos; mecanismos para a associação entre tipos e construções básicas da LP; regras para a definição de novos tipos; regras de compatibilidade e inferência. [email protected] 2
2 O Conceito de Tipo O tipo fornece um contexto implícito para a execução de operações, e facilita a definição de regras semânticas: Pode-se checar em tempo de compilação a utilização correta de variáveis. A resolução de operações sobrecarregadas também pode ser feita em tempo de compilação. Torna-se mais fácil entender a estrutura do programa. A forma como a representação de um tipo de dado é implementada torna-se transparente, podendo inclusive ser modificada sem afetar o funcionamento do programa. [email protected] 3 Definição de Tipos A atribuição de um tipo a uma variável usualmente é feito através de uma declaração. Entretanto em algumas LPs uma variável pode ser utilizada sem ser declarada (Fortran, Basic, Lua, Lisp, etc). Em Fortran, se uma variável não é declarada, o compilador assume que a variável é local. Se o nome da variável começar com I..N o compilador assume que o seu tipo é inteiro, ou real caso contrário. Em Lua o tipo da variável é determinado implicitamente pelo tipo do dado que lhe é atribuído: x = 5 -- x tem o tipo number x ={1, 2, 3} -- x tem o tipo table [email protected] 4
3 Definição de Tipos A verificação de tipos pode ser feita durante a compilação (verificação estática) ou em tempo de execução (verificação dinâmica). Exemplos de LPs com verificação dinâmica são Lua, Scheme, Smalltalk, Perl, etc. Em LPs orientadas a objetos sempre é necessário algum tipo de verificação dinâmica. [email protected] 5 Definição de Tipos Toda LP possui um conjunto primitivo de tipos, que geralmente incluem: Caracter (char) Strings Inteiros Reais Boleanos Além disso muitas LPs permitem que o usuário defina novos tipos de dados através de declarações específicas (typedef( em C, type em Pascal e Módula 2, etc). [email protected] 6
4 Classificação de Tipos Podemos classificar os tipos compostos disponíveis em LPs nas seguintes categorias: Produto cartesiano; Conjunto potência; Domínios finitos; União discriminada; Sequências; Definição recursiva; 7 Produto Cartesiano Um produto cartesiano de dois ou mais conjuntos é uma combinação de valores agregados (tuplas) retirados de cada um dos conjuntos de dados. Várias linguagens permitem tais construções, como as estruturas (structures( structures) ) de C ou Algol-68, ou os registros (records( records) ) em Ada ou Pascal. [email protected] 8
5 Record As declarações em Pascal e C abaixo type typedef struct{ t = record int a; a:integer; char b; b:char; } t end; introduzem um tipo t, e fazem com que cada variável x declarada como sendo do tipo t tenha duas componentes, x.a e x.b, sendo o valor da primeira componente do tipo inteiro, e o valor da segunda componente do tipo char. A variável x é composta por x.a e x.b, que podem, em conjunto, assumir valores como (100,'a'), ou (25,'?'). [email protected] 9 Record A maioria das LPs permite a comparação e atribuição direta entre records do mesmo tipo. Algumas LPs oferecem um comando para a manipulação de records. Em Modula 3 por exemplo: with e = carro.sistema.peça do e.nome:= pastilha e.preco := 23; end [email protected] 10
6 Conjunto Potência Permitem definir valores que pertencem a um subconjunto de um tipo qualquer. Um exemplo é o set of de Pascal: type carros = set of (fusca( fusca,gol,escort,,escort,opala); type digitos = set of 0..9; [email protected] 11 Conjunto Potência Operações típicas de conjunto potência são união, interseção e pertence. Em Pascal temos: var A,B,C: digitos; begin A := [1, 2, 3, 4]; B := [3, 4, 5]; C:= A+B; [1,2,3,4,5] C:= A*B; [3,4,] C:= A-B; A [1,2] if 5 in C then... [email protected] 12
7 Domínios Finito Permitem definir uma associação entre um conjunto finito (domínio) e valores de um conjunto qualquer (contra- domínio). Como principal exemplo desta categoria temos o array. [email protected] 13 Arrays Array é o tipo composto mais comum e mais importante em LPs. Poucas LPs permitem a comparação (Fortran, Ada) e atribuição direta entre arrays (Java). Diversas LPs permitem a definição dos limites de um array dinamicamente (Java, Lua). [email protected] 14
8 Array - Exemplos C\C++ C++ char digit[10]; Pascal e Modula 2 var y: array[1..5] of integer; Lua x ={1, 2, 3, 4} = (1, 2, 3, 4) [email protected] 15 Arrays - Representação Um array geralmente é representado em memória através de endereços consecutivos. Existem duas opções para representar arrays bi- dimensionais na memória: usando posições contíguas para as colunas ou para as linhas. [email protected] 16
9 Arrays Acessando Elementos 17 Enumeração Todos os valores possíveis de um tipo são explicitamente enumerados. Exemplos: Pascal type cor =(azul, vermelho, verde, amarelo) C enum cor {azul, vermelho, verde, amarelo} [email protected] 18
10 União Discriminada Permite a definição concomitante de mais de um tipo para uma variável. É interessante em situações em que uma variável precisa assumir valores de mais de um tipo, ou para economia de memória. No exemplo em C union { short int offset; long unsigned int absolute; } os campos são mutuamente exclusivos. Somente um pode estar ativo em qualquer tempo. [email protected] 19 União Discriminada Exemplo - variant records Pascal: Type AddrType = (US, Canada, Generic) AddressRecord = record Address: array[1..2] of string[20]; City: string[20]; Country: string[20]; case Kind: AddrType of US: (State: string[2]; ZIP:string[10]); Canada: (Province: string[10]; ZIP:string[6]); Generic: (Comment: String[16]); end; {case} end; {record} [email protected] 20
11 Sequências Permitem que os dados sejam representados através de listas. Exemplos são cadeias de caracteres (strings( strings), listas (Lisp, Prolog, Ada) e arquivos sequenciais (Pascal). Suportam operações como primeiro, próximo e anterior. Em Scheme temos: (car (2 3 4)) 2 (cdr (2 3 4)) (3 4) [email protected] 21 Definições Recursivas Tipos em que os dados podem crescer de forma arbitrária, através de referências a outras estruturas do mesmo tipo. Exemplos seriam estruturas de dados clássicas como listas e árvores. Estes tipos geralmente são implementados através de ponteiros: typedef struct{ int val; int_list* next; } int_list; [email protected] 22
12 Modelo de Valor ou de Referência Em LPs como Samlltalk, Clu, ML e Lisp, variáveis contém apenas referências para objetos. Uma operação de atribuição faz com que duas variáveis refiram-se ao mesmo objeto. Estas LPs adotam um modelo de variável por referência. Em LPs como C, Pascal e Ada a operação de atribuição copia valores. Referência a objetos só são possíveis através da criação explícita de referências, usando o mecanismo de ponteiros. Estas LPs adotam um modelo de variável por valor. [email protected] 23 Ponteiros Ponteiros permitem armazenar o l-value l de uma variável. Para acessar os valores referenciados pelos ponteiros (r-value) são usados operadores especiais denominados operadores de indireção (dereferencing). Em Pascal temos o ^ (e o -> para records): my_pt^.val:= 5; my_pt->val:= 5; Em C\C++ C C++ temos o *: (*my_pt).val = 5; formas equivalentes [email protected] 24
13 Exemplo - C programa int x=1, y=2; int *ip; ip = &x; y = *ip; x = ip; *ip = 3; memória x 1 y 2 ip x 1 y 1 ip x 100 y 1 ip x 3 y 2 ip [email protected] 25 Ponteiros Em LPs com mecanismos de ponteiros a alocação e desalocação de memória deve ser feita explicitamente pelo programador. Em C++ isto é feito através das funções new e delete e em Pascal através de new e dispose: type pont=^integer; var pt:pont;... new(pt); pt^:= 5... dispose(pt); [email protected] 26
14 Ponteiros A alocação dinâmica de memória, com exceção de variáveis locais, sempre utiliza a heap. Dois problemas são derivados da alocação e da desalocação explicitas de espaço: a criação de lixo e de referências pendentes ou ocas. Por lixo, entende-se uma área que não está mais em uso, mas que não foi devolvida à lista de espaço vazio, porque não foi feita a operação de liberação correspondente. Referências pendentes são referências a uma área que já foi desalocada, e que portanto, ou está marcada como espaço livre e não deve ser utilizada, ou já foi realocada e tem uma utilização diferente. [email protected] 27 Ponteiros type pont=^integer; var pt:pont; var x: integer;... new(pt); pt^:= 5... dispose(pt); x:= pt^; [email protected] 28
15 Ponteiros e Arrays em C int main () { int numbers[5]; int * p; p = numbers; *p = 10; p++; *p = 20; p = &numbers[2]; *p = 30; p = numbers + 3; *p = 40; p = numbers; *(p+4) = 50; for (int n=0; n<5; n++) cout << numbers[n] << ", "; return 0; } numbers [email protected] 29 Ponteiros X Referências Uma referência equivale a uma constante ponteiro (após ser criado, o seu valor não pode mais mudar). Em referências a indireção é automática, não há necessidade de utilização de operadores especiais. Exemplo int b; int& & a = b; referência a = 10; int b; int *a = &b; ponteiro *a = 10; [email protected] 30
16 Gerenciamento de Memória Em algumas LPs (Java, Lua, C#) o programador pode criar novos objetos dinamicamente, sem a necessidade de controlar explicitamente o gerenciamento da memória. Em LPs com gerenciamento automático de memória o sistema deve ser capaz de identificar os objetos que não podem ser mais acessados pelo programa (lixo), desalocando o espaço de memória correspondente. Este processo de desalocação automática de memória é conhecido como coleta de lixo (garbage collection). As duas principais técnicas utilizadas para implementar a coleta de lixo são a contagem de referências (reference count) e marcar e varrer (mark-and and-sweep). [email protected] 31 Reference Count Cada objeto guarda o número de referências que apontam para ele. Sempre que uma nova referência para um objeto é criada ou destruída, o número de referências correspondente é modificado. Quando o número de referências atinge zero, a memória utilizada pelo objeto pode ser desalocada pelo sistema. Um problema importante desta técnica são as referências circulares. [email protected] 32
17 Reference Count 33 Mark-and and-sweep A técnica de mark-and and-sweep segue um algoritmo simples: 1. Percorrer toda a memória heap e marcar todos os objetos como livres. 2. Percorrer de forma recursiva todas as referências contidas em variáveis fora da heap, e marcar todos os objetos encontrados como não-livres. 3. Percorrer novamente a memória heap e desalocar todos os objetos que ainda estiverem marcados livres. [email protected] 34
18 Mark-and and-sweep 35 Equivalência Entre Tipos Diz-se que uma LP é fortemente tipada,, se é possível, apenas por análise estática do programa (análise realizada em tempo de compilação), determinar que a estrutura de tipos da linguagem não é violada. A princípio se uma operação é definida com um parâmetro do tipo T, qualquer invocação legal desta função deveria incluir sempre um parâmetro do tipo T. Na maioria das LPs entretanto as regras de tipos apresentam alguma flexibilidade, permitindo a conversão entre valores de tipos distintos. [email protected] 36
19 Equivalência Entre Tipos Exemplo: type aluno = record nome, endereco: string idade: integer end type aluno = record nome, endereco: string idade: integer end... x: estudante; y: aluno; begin... x = y; Erro?? [email protected] 37 Equivalência Entre Tipos Em algumas LPs a compatibilidade entre tipos é determinada pela estrutura do tipo (C, com exceção de struts), s), enquanto em outras a compatibilidade é determinada pelo nome (Pascal, Ada). type complex is struct { float a,b; } type point is struct { float a,b; } [email protected] 38
20 Conversão Implícita (Coerção) Se dados do tipo T1, do ponto de vista abstrato, podem conter valores do tipo T2, embora através de representações distintas, a LP pode fazer a conversão automática entre estes tipos. Exemplo: x: real; i: integer; x = i; -- coerção de inteiro para real print( resultado: +x) -- coerção de real para string [email protected] 39 Conversão Explícita (Typecast) Em algumas situações pode ser necessário que um valor do tipo T1 seja entendido como se fosse do tipo T2. Algumas LPs (Java, C, Eiffel) permitem esta conversão através do mecanismo de typecast. float x; int z; z = z+(int)x; [email protected] 40
21 Conversão Forçada Quando há várias maneiras de converter um valor de um tipo T1 para o tipo T2, é necessário indicar a forma de conversão desejada, e, em geral, isso é feito através de uma função de conversão. Um exemplo seria a conversão de reais em inteiros, que pode ser feita por arredondamento, truncamento, etc, ou a conversão de strings para inteiros. Normalmente a LP disponibiliza funções pré- definidas para as situações mais comuns. [email protected] 41 Tipos Abstratos de Dados A facilidade de definir novos tipos permite ao programador estruturar os dados conforme as características da sua aplicação. Entretanto estes mecanismos não permitem especificar totalmente quais são as operações válidas sobre estes tipos, e nem ocultar a sua estrutura. Em LPs com tipos abstratos de dados a representação e as operações associadas ao tipo são definidas através de uma única estrutura (encapsulamento), e a representação dos dados muitas vezes é transparente para os usuários. [email protected] 42
22 Tipos Abstratos de Dados Exemplos clássicos de tipos abstratos são classes em Java, C++, C#, Eiffel e Smalltalk. O mecanismo de templates em C++ permite a definição de tipos abstratos que utilizam tipos genéricos como parâmetros. [email protected] 43 Exemplo - Templates template <class T> T GetMax (T a, T b) { T result; result = (a>b)? a : b; return (result); } int main () { int i=5, j=6, k; long l=10, m=5, n; k=getmax<int>(i,j); n=getmax<long>(l,m);... } [email protected] 44
Paradigmas de Programação
Paradigmas de Programação Aula 6 Nomes, Vinculações, Verificação de Tipos e Escopos Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Introdução As linguagens de
Linguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Estudos de Linguagens de Programação - Revisão
Estudos de Linguagens de Programação - Revisão ([email protected]) O que é uma Linguagem de Programação? Linguagem usada por uma pessoa para expressar um processo através do qual um computador pode
Nomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Nomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Nomes, Amarração, Verificação de Tipos, e Escopo
5 Nomes, Amarração, Verificação de Tipos, e Escopo Concepts of Programming Languages, 5/e Robert W. Sebesta Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave
Paradigmas de Linguagens de Programação. Tipos de Dados
Tipos de Dados Cristiano Lehrer Introdução (1/2) 1956: FORTRAN I 1983: ADA INTEGER, REAL, arrays. Usuário pode criar um único tipo para cada categoria de variáveis no espaço de problemas e deixar o sistema
Paradigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos
Nomes, Vinculações, Verificação de Tipos e Escopos Cristiano Lehrer Nomes (1/6) Um nome é uma string de caracteres usada para identificar alguma entidade de um programa. O termo identificador é utilizado
Paradigmas de Linguagens
Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos
Paradigmas de Linguagem de Programação. Paradigma Imperativo
Paradigmas de Linguagem de Programação Paradigma Imperativo Paradigma Imperativo Imperare Comandar É o mais antigo de todos; Baseado no modo de funcionamento do computador; São também chamadas de procedurais;
02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?
01. [Sebesta, 2000] O que é um descritor? 02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 03. [Sebesta, 2000] Quais são as questões de projeto relativas aos tipos
Capítulo 5. Nomes, Vinculações e Escopos
Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introdução
Trabalho Linguagem e Programação de Compiladores
Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:
Ambiente de tempo de Execução Cap. 7
Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap
CAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Conceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 04 ([email protected]) Aula 4 2 Evolução dos
Nomes, Vinculações, Verificação de Tipos e Escopos. George Darmiton da Cunha Cavalcanti
Nomes, Vinculações, Verificação de Tipos e Escopos George Darmiton da Cunha Cavalcanti ([email protected]) Tópicos Introdução Nomes Variáveis O conceito de vinculação (binding) Verificação de tipos Tipificação
Paradigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
ao paradigma imperativo
PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc.
Implementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Classes e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Tipo. Tipo de uma variável: especificação de
Checagem de Tipos O que é tipo? Erros de Tipos em FRANKIE não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Capítulo 7. Expressões e Sentenças de Atribuição
Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário
Linguagens de Programação. Nomes, Escopos e Vinculações (Bindings) Carlos Bazilio
Linguagens de Programação Nomes, Escopos e Vinculações (Bindings) Carlos Bazilio [email protected] http://www.ic.uff.br/~bazilio/cursos/lp Nomes Forma mais simples de abstração Um nome é um caracter
Linguagens de Programação Nomes, Amarrações e Escopo
Linguagens de Programação Nomes, Amarrações e Escopo Andrei Rimsa Álvares Sumário Nomes Amarrações Escopo NOMES Linguagens de Programação Nomes Conceito mais amplo que variáveis Podem representar Variáveis
Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I
Paradigmas Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I Paradigmas Tradicional Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I OO Simula-67, Smalltalk, C++, Eiffel, Object Pascal,
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I
Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc. Para que? Sentinela Beth
Implementação de subprogramas
Implementação de subprogramas Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Paradigmas de Linguagens de Programação. Subprogramas
Cristiano Lehrer Características Gerais dos Cada subprograma tem um único ponto de entrada Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, o que implica na existência
Análise Semântica: Verificação de Tipos
Análise Semântica: Verificação de Tipos Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores
Linguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior [email protected] Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III
Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços
Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Compiladores. Gerência de Memória
Compiladores Gerência de Memória Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Métodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
C com introdução a OO
... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro
Capítulo 6. Tipos de Dados
Capítulo 6 Tipos de Dados 1. Introdução Tipo de Dados: define uma coleção de valores de dados e um conjunto de operações pré-definidas sobre eles Um descritor é a coleção de atributos de uma variável Um
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Tipos, Literais, Operadores
Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não
Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos
Tipos de Dados Abstratos Cristiano Lehrer Conceito de Abstração O conceito de abstração é fundamental em programação. Quase todas as linguagens suportam abstração de processos, através de subprogramas:
Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Linguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Programação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
Linguagem de Programação e Compiladores
Linguagem de Programação e Compiladores Fernando Antônio Asevedo Nóbrega Instituto de Ciências Matemáticas e de Computação USP SCC-206 Introdução à Compilação 24 de abril de 2012 1 / 20 Sumário 1 Introdução
Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
Linguagens de Programação 2 Amarrações
Linguagens de Programação 2 Amarrações Vítor E. Silva Souza ([email protected]) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo
Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia
PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia Calculo da área de um triângulo Algoritmo Área Var base,
Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Array em Java. Figura 1 - Exemplo de um array de inteiros
Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:
Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
