13/11/15. Incrementando C: C++ E na especificação de BigInt... Arquitetura da solução exemplo. O arquivo de declarações. Explorando a classe BigInt
|
|
- Malu Quintanilha Correia
- 5 Há anos
- Visualizações:
Transcrição
1 Incrementando C: permite: Definir uma classe para números grandes; Manter o código bem parecido com o programa C. O mesmo programa em C (e até mesmo em Java) não são tão convenientes e elegantes. #include "BigInt.h" main() { BigInt b = " "; BigInt c; c = a + b + 47; c.print(); printf("\n"); Janeiro 2014 Curso Rápido de 1 E na especificação de BigInt... A especificação de BigInt deve dizer como: 1. Criar objetos da classe BigInt (de strings!); 2. Somar BigInt x BigInt e BigInt x int/long; 3. Imprimir um BigInt. #include "BigInt.h" main() { BigInt b = " "; BigInt c; c = a + b + 47; 2 c.print(); 3 printf("\n"); Janeiro 2014 Curso Rápido de 2 1 Arquitetura da solução exemplo Similares aos TADs; Porém com abstrações mais adequadas. BigInt.cpp BigInt.h BigInt.o Linker O arquivo de declarações #include <stdio.h> class BigInt { char* digitos; unsigned ndigitos; public: BigInt(char*); BigInt(BigInt&); Atributos Construtores Sobrescrita = e + Client.cpp Client.o Client.exe void operator=(bigint&); BigInt operator+(bigint&); void print(file* f = stdout); Impressão Janeiro 2014 Curso Rápido de 3 ~BigInt() { delete digitos; ; Destrutor Janeiro 2014 Curso Rápido de 4 Classes são similares a structs; BigInt possui um vetor de chars (ponteiro) e um contador do número de dígitos; O número é armazenado de trás para frente; Ex.: o BigInt seria: digitos 6 ndigitos Atributos (variáveis membro) privadas, métodos (funções membro) públicas: print() BigInt(char*) (construir) char* digitos int ndigitos operador+(bigint&) (somar) BigInt(BigInt&) (inicializar) BigInt a = 218 BigInt c = a + b +47; c.print(); Janeiro 2014 Curso Rápido de 5 Janeiro 2014 Curso Rápido de 6 1
2 Sobrecarga como em Java: o mesmo nome é permiado, desde que os parâmetros sejam diferentes: BigInt(char*); BigInt(BigInt&); Construtor default Mesma regra de Java: Se nenhum construtor é dado, um construtor default (sem argumentos) é adicionado pelo ; Se algum construtor for dado, o construtor sem argumentos não é adicionado automaacamente; Em BigInt, um dos construtores serve de construtor default (sem argumentos), pois seu argumento tem valor default: Janeiro 2014 Curso Rápido de 7 Janeiro 2014 Curso Rápido de 8 Funções podem ter argumentos default: void print(file* f = stdout); Se forem chamadas sem argumento, o valor default é ualizado; Instâncias diretas e ponteiros Em Java, instâncias eram sempre referências (ponteiros). possui os dois apos; Os já conhecidos. e -> de C são usados para acessar membros da classe: a.print(); BigInt* p; p = &a; p->print(); Janeiro 2014 Curso Rápido de 9 Janeiro 2014 Curso Rápido de 10 Construtores Mais versáteis que Java // Chama o construtor default: BigInt (unsigned n = 0): BigInt a, vetor[10]; // Chama o mesmo construtor, só que especificando valor: BigInt b = 123; // O mesmo construtor também é chamado para conversão: BigInt c = a + b + 47; Construtor de Cópia O construtor de cópia é chamado (automaacamente não explicitamente pelo programador quando): Um objeto é passado por valor para uma função Um objeto é retornado por valor Um objeto é declarado e inicializado com um objeto da mesma classe /* Acima, o construtor BigInt (BigInt&) também é acionado para criar um BigInt a partir de outro. */ // Chama o construtor BigInt (char*): BigInt d = "456"; BigInt e("789"); Janeiro 2014 Curso Rápido de 11 Janeiro 2014 Curso Rápido de 12 2
3 Sobrescrita permite sobrescrever qualquer operador, exceto o operador de seleção (.) e a expressão condicional (?:); // Na classe BigInt: void operator=(bigint&); BigInt operator+(bigint&); // No cliente: BigInt b = " "; BigInt c; c = a + b + 47; Obviamente, o desenvolvedor deve implementar os métodos operator= e operator+. Destrutores Em, o desenvolvedor deve destruir as instâncias que criou, não há coletor de lixo; O irá, no entanto, destruir instâncias diretas criadas na pilha. Portanto, destrutores são sempre chamados (diferente do Java, que não garante o finalize()); Destrutores devem liberar memória dinâmica alocada pela classe durante a construção da instância. // No exemplo, o destrutor foi declarado e definido: ~BigInt() { delete digitos; // free() no C -> delete no. Janeiro 2014 Curso Rápido de 13 Janeiro 2014 Curso Rápido de 14 Arquitetura da solução exemplo O arquivo header está OK! Falta agora a implementação. BigInt.cpp BigInt.o Linker BigInt.h Client.cpp Client.o Client.exe [ Curso Rápido de ] DEFININDO CLASSES (IMPLEMENTAÇÃO) Janeiro 2014 Curso Rápido de 15 Janeiro 2014 Curso Rápido de 16 Implementação/definição Similar a um TAD, o arquivo de definição deve: Importar o arquivo de declaração (header); #include "BigInt.h"; Prover uma implementação para todas as funções (métodos) declaradas no header. A declaração de uma classe diz o que as instâncias da classe podem fazer (contrato); A definição/implementação de uma classe diz como as instâncias da classe farão o que encontra-se no contrato. Janeiro 2014 Curso Rápido de 17 Vamos ver algumas caracterísacas de presentes na implementação da classe BigInt: BigInt:: BigInt (char* digitstring) { unsigned n = strlen(digitstring); if (n!= 0) { digitos = new char[ndigitos = n]; char* destino = digitos; char* origem = &digitstring[n]; // Converte o digito ASCII para binário. while (n--) *destino++ = *--origem - '0 ; else { // String vazia. digitos = new char[ndigitos = 1]; digitos[0] = 0; Janeiro 2014 Curso Rápido de 18 3
4 Resolução de escopo A implementação de um método é prefixada com o operador de resolução de escopo (::): BigInt:: BigInt (char* digitstring) { Moavo: diferente de Java, o método não encontra-se obrigatoriamente dentro do escopo da classe; Pode-se usá-lo também para variáveis: int var = 0; int main(void) { int var = 0; ::var = 1; // Altera a variável global. var = 2; // Altera a variável local. O operador new Subsatui o malloc() de C: // C: struct BigInt* p; p = (struct BigInt*) malloc(sizeof(struct BigInt)); // : BigInt* p; p = new BigInt; // Sem cast ou sizeof! Assim como em Java, new chama o construtor da classe, inicializando o objeto; Diferente de Java, () não é obrigatório; Diferente dos construtores de instâncias diretas vistos anteriormente, o new retorna um ponteiro. Janeiro 2014 Curso Rápido de 19 Janeiro 2014 Curso Rápido de 23 Veja a implementação do construtor que recebe um inteiro. Note que não é preciso repear o valor default: BigInt:: BigInt(unsigned n) { char d[3 * sizeof(unsigned) + 1]; char *dp = d; ndigitos = 0; do { *dp++ = n % 10; // guarda dígito menos signif n /= 10; // eliminar o dígito menos signif ndigitos++; while (n > 0); // agora que sabemos o tamanho, podemos alocar digitos digitos = new char[ndigitos]; for (register i = 0; i < ndigitos; i++) digitos[i] = d[i]; E o construtor cópia: BigInt::BigInt(BigInt& n) { unsigned i = n.ndigitos; digitos = new char[ndigitos = i]; char *destino = digitos; char *origem = n.digitos; while (i--) *destino++ = *origem++; Como em Java, o acesso ao atributo privado n.digitos é permiado por estarmos no escopo de BigInt. Janeiro 2014 Curso Rápido de 24 Janeiro 2014 Curso Rápido de 25 Passagem por referência O construtor cópia ualiza passagem por referência: BigInt::BigInt(BigInt& n) { Em C, a passagem é sempre feita por valor: void inc(int x) { x++; int y = 1; inc(y); printf("%d\n", y); // 1 Pode-se contornar passando o valor de um ponteiro: void inc(int* x) { *x++; int y = 1; inc(&y); printf("%d\n", y); // 2 Passagem por referência Em existe a passagem por referência: void inc(int& x) { x++; int y = 1; inc(y); printf("%d\n", y); // 2 Note que: A variável x não precisou ser derreferenciada em inc(); A variável y foi passada como argumento normalmente, e não seu endereço &y. Janeiro 2014 Curso Rápido de 26 Janeiro 2014 Curso Rápido de 27 4
5 Referências Portanto, além de ponteiros, possui referências: int i; int* p = &i; // Um ponteiro para i. int& r = i; // Uma referência para i. r++; // Incrementa o valor de i. Você pode usar r em lugar de *p (ou seja, i) e &r em lugar de p (como se fosse &i) Porém, referências: Devem ser inicializadas quando declaradas; Não podem apontar para um objeto diferente do qual foram inicializadas. Referências são como apelidos, aliases para objetos (sintaxe mais segura do que ponteiros). Janeiro 2014 Curso Rápido de 28 Uso do this Assim como em Java, this pode ser usado para diferenciar entre parâmetro e atributo: class Objeto { long attr; public: Objeto(long attr = 0) { this->attr = attr; void setattr(long attr) { this->attr = attr; void print() { printf("%ld\n", attr); ; int main () { Objeto c(10); c.print(); // 10 c.setattr(20); c.print(); // 20 this é sempre um ponteiro! Janeiro 2014 Curso Rápido de 29 Construtor cópia vs. sobrescrita do = BigInt::BigInt(BigInt& n) { unsigned i = n.ndigitos; digitos = new char[ndigitos = i]; char* p = digitos; char* q = n.digitos; while (i--) *p++ = *q++; void BigInt::operator=(BigInt& n) { if (this == &n) return; // Para o caso x = x; delete digitos; // Porque this já existe! unsigned i = n.ndigitos; digitos = new char[ndigitos = i]; char* p = digitos; char* q = n.digitos; while (i--) *p++ = *q++; Atribuições múlaplas de BigInt Da forma como foi declarado/definido, não é possível fazer atribuições múlaplas de BigInt: void BigInt::operator=(const BigInt& n) { // No cliente: BigInt c = 243; BigInt a, b; a = b = c; // Erro! (b = c) retorna void! Para isso, é necessário retornar um valor: BigInt& BigInt::operator=(const BigInt& n) { return *this; Janeiro 2014 Curso Rápido de 35 Janeiro 2014 Curso Rápido de 36 Retorno de objetos/ponteiros/referências É perfeitamente possível; Ao retornar objetos, o construtor de cópia da referida classe é chamado. Ao retornar ponteiros e referências, deve-se ter o cuidado de garanar que o referido objeto sobreviva: Ponto* f() { Ponto a; //... return &a; // Objeto apontado será desalocado! Ponto& f() { Ponto a; //... return a; // Objeto referido será desalocado! Janeiro 2014 Curso Rápido de 37 O Operador delete Como já visto, delete é o contrário de new e libera a memória alocada para um objeto (como free em C); delete aciona o destrutor da classe: BigInt* a = new BigInt(" "); // [...] Chama a->~bigint(); delete a; Ao liberar vetores, é preciso usar colchetes: BigInt* b = new BigInt[10]; delete b; // Erro! delete[] b; // OK! Janeiro 2014 Curso Rápido de 38 5
6 Usando referências para criar factory // user must deallocate Ponto& criaponto () { Ponto* p = new Ponto; return *p; int main() { Ponto& ponto = criaponto(); ponto.usaponto(); delete &ponto; Usando referências para manipular objetos (esalo Java) int main() { Ponto& ponto = *(new Ponto); // note que ainda é diferente que Java // pois somos forçados a inicializar // ou seja Ponto& ponto; é inválido ponto.usaponto(); delete &ponto; Janeiro 2014 Curso Rápido de 39 Janeiro 2014 Curso Rápido de 40 Funções inline Assim como os #defines de C, funções inline são copiadas para o local de suas chamadas na compilação; Aumento de desempenho por evitar chamada de função; Podem ser definidas de duas maneiras: Definindo sua implementação no arquivo de definição (header), como feito com ~BigInt(); Usando a palavra reservada inline. Deve-se ter cuidado ao definir funções inline. Recomenda-se usar apenas para funções bem simples. Janeiro 2014 Curso Rápido de 41 6
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática Prof. Leinylson Fontinele Pereira Na aula anterior... Ponteiros Funções Introdução 3 O que vamos aprender? Preparação do ambiente de testes Conceitos
Leia maisEstruturas 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
Leia mais13. ALOCAÇÃO DINÂMICA DE MEMÓRIA
787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode
Leia maisEstrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
Leia maisSumá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
Leia maisIntrodução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Leia mais11a. Aula Ponteiros e Vetores
11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer
Leia maisMétodos Computacionais. Vetores e Matrizes Dinâmicas
Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de
Leia maisIntrodução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Leia maisAlgoritmos e Estruturas de dados
Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores
Leia maisClasses e Encapsulamento
Classes e Encapsulamento Marcio Santi POO e C++ Tipo Abstrato de Dados (TAD) TAD atributos dados que o representam interface operações associadas como é manipulado 1 Exemplo: Editor Gráfico (classe círculo)
Leia maisIntrodução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Leia maisMódulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisC 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
Leia maisALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória
ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos
Leia maisTipos 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
Leia maisEstruturas de Dados. Profa. Juliana Pinheiro Campos
Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 02: Alocação Dinâmica de Memória Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes
Leia maisEstruturas 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 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisPonteiros e Alocação de Memória
Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Ponteiros e Passagem de Parâmetros
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Ponteiros e Passagem de Parâmetros 1 AULA PASSADA - ponteiros Uma declaração tal como: tipo *nome; Declara um ponteiro: referência
Leia maisAula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Leia maisProgramaçã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
Leia maisParadigmas 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
Leia maisEntender o problema Encontrar um algoritmo para resolvê-lo. Implementar o algoritmo numa linguagem de programação
Entender o problema Encontrar um algoritmo para resolvê-lo Implementar o algoritmo numa linguagem de programação Permitem implementar um algoritmo Expressar o algoritmo numa forma que o computador entenda
Leia maisPonteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista
Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências
Leia maisMétodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
Leia maisPonteiros de Variáveis
Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem
Leia maisEstruturas 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
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Leia maisPrincípios de Desenvolvimento de Algoritmos MAC122
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando
Leia maisPONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco
PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo
Leia maisIntrodução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for
Leia maisProgramação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente
Leia maisMétodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Leia maisAula 27: Estruturas heterogêneas e alocação dinâmica
Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória
Leia maisProgramação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto
Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis
Leia maisProfessora Jeane Melo
Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisAula 24 Ponteiros, vetores e structs
Programação Aula 24 Ponteiros, vetores e structs Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de
Leia maisPonteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto
Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação
Leia maisEstruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisEstruturas 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
Leia maisANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa
ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,
Leia maisSSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos Prof.Dr.
Leia maisIntrodução à Computação
Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis
Leia maisLINGUAGEM C: ALOCAÇÃO DINÂMICA
LINGUAGEM C: ALOCAÇÃO DINÂMICA Prof. André Backes DEFINIÇÃO Sempre que escrevemos um programa, é preciso reservar espaço para as informações que serão processadas. Para isso utilizamos as variáveis Uma
Leia maisInstituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF029 Laboratório de Programação Aula 03: Ponteiros
Instituto Federal da Bahia Análise e Desenvolvimento de Sistemas INF029 Laboratório de Programação Aula 03: Ponteiros Prof. Dr. Renato L. Novais renato@ifba.edu.br Agenda Ponteiros Slide 2/TN Roteiro Ponteiros
Leia maisPonteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ
Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisAula 25: Alocação Dinâmica
Aula 25: Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas de memórias heterogêneas
Leia maisIntrodução a Programação. Ponteiros e Passagem de Argumentos por Referência
Introdução a Programação Ponteiros e Passagem de Argumentos por Referência Tópicos da Aula Hoje aprenderemos a manipular endereços de memória ou ponteiros Variáveis e Endereços Conceito de Ponteiro Operadores
Leia maisINF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização
Leia maisProgramação Orientada a Objetos para Redes de Computadores. Arrays. Arrays
Programação Orientada a Objetos para Redes de Computadores Elias Mitre http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Arrays Estruturas de dados que contêm itens
Leia maisProgramação de Computadores II. Cap. 5 Vetores
Programação de Computadores II Cap. 5 Vetores Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
Leia maisORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO SOBRECARGA DE OPERADORES (C++) A sobrecarga de operadores ocorre quando desejamos utilizar operadores jáj conhecidos (+,-,*,/,=,+=...)
Leia maisTipos de Dados Definidos Pelo Usuário. Estruturas Uniões Enumerações O Comando sizeof O Comando typedef
Tipos de Dados Definidos Pelo Usuário Uniões Enumerações O Comando sizeof O Comando typedef Uma estrutura agrupa várias variáveis numa só. Funciona como uma ficha pessoal que tenha nome, telefone e endereço.
Leia maisCurso de Programação C em Ambientes Linux Aula 05
Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Leia maisESTRUTURA DE DADOS (TCC )
ESTRUTURA DE DADOS (TCC-00.319) Ponteiros e funções Cristina Boeres 2 Ponteiros Variável do tipo ponteiro:! Linguagens como C permite o armazenamento e a manipulação de valores de endereços de memória!
Leia maisAlocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Leia maisProgramação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio
Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos
Leia maisProgramação C/C++ Slide 5 Nielsen Castelo Damasceno
Programação C/C++ Slide 5 Nielsen Castelo Damasceno Programação estruturada Programação estruturada Programação estruturada Programação estruturada Programação estruturada vetores vetores vetores vetores
Leia maisLinguagem C. Ponteiros. Alex Vidigal Bastos.
Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro
Leia maisIntrodução à Programação C
Introdução à Programação C Fabio Mascarenhas - 2014.2 http://www.dcc.ufrj.br/~fabiom/introc Vetores de ponteiros Podemos também ter vetores de qualquer tipo, inclusive ponteiros A sintaxe é a mesma para
Leia maisINF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS
INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores
Leia maisLinguagem de Programação
Linguagem de Programação Estruturas e Definição de Tipo (struct / typedef) Gil Eduardo de Andrade Introdução Uma estrutura, em C, é uma coleção de variáveis referenciada por apenas um nome; As estruturas
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Estruturas de dados que
Leia maisAtividade de laboratório listas encadeadas simples
Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém
Leia mais#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Leia maisIntrodução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI
Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,
Leia maisComputação 2. Aula 7. Profª. Fabiany Ponteiros
Computação 2 Aula 7 Ponteiros Profª. Fabiany fabianyl@utfpr.edu.br O que são Ponteiros? Um ponteiro é uma variável que contém um endereço de memória. Este endereço é normalmente a posição de uma outra
Leia maisComputação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos
Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão
Leia maisTécnicas de Programação:
Técnicas de Programação: Programação Orientada a Objeto PROF. PROTÁSIO DEE-UFPB Classes e Objetos Classe É uma estrutura de dados que pode conter: Objeto Dados, e Funções. É uma instância de uma classe.
Leia maisRevisão da Linguagem C Prof. Evandro L. L. Rodrigues
SEL0433 Aplicação de Microprocessadores I Revisão da Linguagem C Prof. Evandro L. L. Rodrigues Estrutura de um programa C Diretivas de pré processamento Declaração de variáveis globais Declaração de protótipos
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 12 Prof. Daniel Cavalcanti Jeronymo Layout de memória. Ponteiros: conceito, operadores de referência e dereferência, operações, aritmética e indireção múltipla Universidade
Leia maisCapí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
Leia maisLinguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista
Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista == Laboratório 4 == 1. Escreva um programa que inicializa dois objetos
Leia maisProgramação Orientada a Objetos CLASSES E OBJETOS
Programação Orientada a Objetos CLASSES E OBJETOS Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Em que Parte do Conteúdo Estamos? Da Unidade III Classes e Objetos, já
Leia maisExercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal
Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os
Leia maisIntrodução à Disciplina de. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR
Introdução à Disciplina de Estruturas de Dados Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2019 Software = Lógica + Dados Software Niklaus Wirth (1989). Lógica
Leia maisPROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S
PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é
Leia maisCaracteres e Cadeias de Caracteres
Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor
Leia maisProgramação Estruturada
Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros
Leia maisMétodos Computacionais. Listas Encadeadas
Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisConstrutores. Introdução
Construtores José Gustavo de Souza Paiva Introdução Até o momento, temos tratado a inicialização dos atributos das classes de duas maneiras Alteração dos valores dos atributos diretamente - atributos públicos
Leia maisProgramação Computacional Aula 16: Alocação Dinâmica de Memória
Programação Computacional Aula 16: Alocação Dinâmica de Memória Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Definição Sempre que escrevemos um programa, é preciso reservar espaço para as informações
Leia maisPonteiros. Baseado nos slides do Prof. Mauro.
Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisIntrodução ao Java. Marco A L Barbosa malbarbo.pro.br. Departamento de Informática Universidade Estadual de Maringá
Introdução ao Java 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
Leia maisPonteiros. Introdução
Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na
Leia maisPrincípios de Desenvolvimento de Algoritmos MAC122
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Aula de Revisão: Variáveis e Atribuições Introdução Memória Principal: Vimos no curso anterior que a CPU usa a memória
Leia mais