SlideShare une entreprise Scribd logo
1  sur  40
ANHANGUERA – 2015.2
ESTRUTURA DE DADOS
AULA 03 – REVISÃO: PONTEIROS, ESTRUTURAS E VETORES
Prof. Thomás da Costa
thomascosta@aedu.com
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
REVISÃO: PONTEIROS, ESTRUTURAS E VETORES
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
Revisão
O que vamos relembrar:
• Ponteiros.
• Ponteiros e...
• Mais ponteiros.
• Estruturas.
• Vetores.
• O básico de funções.
Não revisaremos nessa ordem, mas ponteiro é muito importante para
disciplina de Estrutura de Dados, por isso vamos estudar primeiro.
O conteúdo do material é o mesmo utilizado em Programação Estruturada 2.
Vamos começar !!!
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
PONTEIROS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
É um tipo de variável que armazena um endereço de memoria referente a uma
outra variável. O ponteiro não armazena diretamente um valor como os outros
tipos em C++.
Ponteiros
O que é?:
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORESPONTEIROS, ESTRUTURAS E VETORES
Para operação com ponteiros, utilizamos dois operadores unários:
Ponteiros
Operadores:
Operador Descrição
* Utilizado para declarar um ponteiro e para retornar o valor
& Utilizado para retornar o endereço de memória da variável
Vamos ver como declarar uma variável do tipo ponteiro !!!
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Declarando uma variável do tipo ponteiro:
int *ptr;
Tipo da variável
Nome da variável
Operador unário
PONTEIROS, ESTRUTURAS E VETORES
Ponteiros
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo 1#include <iostream>
using namespace std;
int main()
{
int *ptr;
cout << ptr << endl;
}
Declarando um ponteiro
Exibe o endereço da variável, neste caso,
nenhum endereço foi atribuído
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
Ponteiros
Declaração e atribuição de ponteiros:
Variável ponteiro
Atribuindo o endereço de
memória
int *ptr;
int valor;
valor = 1500;
ptr = &valor;
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo 2
#include <iostream>
using namespace std;
int main()
{
int valor;
int *ptr;
valor = 1500;
ptr = &valor;
cout << ptr << endl;
cout << *ptr << endl;
}
ptrvalor
0x23fe480x23fe44
0x23fe480x23fe44 0x23fe441500
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
Ponteiros
Mais detalhes:
- Ponteiro armazena o endereço de memória
- O operador & mostra o endereço da variável
- O operador * é utilizado na declaração do ponteiro
- Exibindo o valor de um ponteiro com cout é mostrado o
endereço referenciado
- Utilizando o operador * seguido pelo nome da variável
de ponteiro é exibido o valor atribuído no endereço de
memória referente.
Vamos ver mais um exemplo !!!
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo 3
#include <iostream>
using namespace std;
int main()
{
int valor;
int *ptr;
int total;
valor = 1600;
ptr = &valor;
total = *ptr;
cout << *ptr << endl;
cout << total << endl;
}
ptrvalor
0x23fe480x23fe44
total
0x23fe40
0x23fe480x23fe44 0x23fe401600 0x23fe44 1600
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
Ponteiros
Importante:
A atribuição de valores para ponteiros, deve ser do mesmo tipo. Quando as
variáveis são de tipos diferentes, vamos ter um erro de compilação.
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo 4
#include <iostream>
using namespace std;
int main()
{
// PROGRAMA COM ERRO NAO COMPILA !!!!
int *ptr_inteiro;
double valor;
valor = 345.76;
ptr_inteiro = &valor;
cout << *ptr_inteiro << endl;
}
ERRO !!!
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Atribuição de valores:
Podemos atribuir um valor diretamente para um ponteiro. Para isso utilizamos o
operador * antes do nome da variável do tipo ponteiro.
*ptr = 999;
Variável do tipo ponteiro
Atribuindo um valor
PONTEIROS, ESTRUTURAS E VETORES
Ponteiros
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo 5
#include <iostream>
using namespace std;
int main()
{
int *ptr;
int x;
ptr = &x;
*ptr = 999;
cout << &x << endl;
cout << ptr << endl;
cout << *ptr << endl;
}
xptr
0x23fe440x23fe48
0x23fe48 0x23fe440x23fe44 999
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
Ponteiros
Resumo:
• Um ponteiro armazena uma posição de memória.
• Esta posição de memória é referente a um valor.
• Atribuição de ponteiros deve acontecer se for do mesmo tipo.
• Existem dois tipo de operadores unários para trabalhar com ponteiros.
• O operador & retornar o endereço de memória da variável.
• O operador * é utilizado para declarar um ponteiro e para retornar o valor.
• Vamos utilizar bastante na disciplina de Estrutura de Dados.
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
VETORES
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int k[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // inicializando um vetor
for (int i=9;i>=0;i--)
{
k[i] = i;
cout << k[i] << "n";
}
char nome1[10] = "João"; // uma string
char nome2[10] = "Maria";
strcat(nome2, " das Graças"); // concatena duas strings
cout << "Nome1, Nome2: " << nome1 << "," << nome2 << "n";
cout << "Tamanho do Nome1: " << strlen(nome1) << "n"; // tamanho de uma string
cout << "Tamanho do Nome2: " << strlen(nome2) << "n";
cout << "Comparando:" << strcmp(nome1, nome2) << "n"; // compara duas strings
char usuario[100];
gets(usuario);// lê a string do teclado
cout << "Usuário: " << usuario;
}
Criando um vetor com 10 posições
Inicializando um vetor
Atribuindo um
valor na posição
Ler um vetor de char
pelo teclado
PONTEIROS, ESTRUTURAS E VETORES
Vetores
ESTRUTURA DE DADOS – Prof. Thomás da Costa
PONTEIROS, ESTRUTURAS E VETORES
ESTRUTURAS
ESTRUTURA DE DADOS – Prof. Thomás da Costa
O que é:
É um conjunto de variáveis que representam características de um determinado
domínio ou de um tipo. A estrutura pode definir uma entidade e possui grande
semelhança com registros de banco de dados. O agrupamento de variáveis pode
ser de qualquer tipo, sendo denominado de membro da estrutura.
Estruturas
PONTEIROS, ESTRUTURAS E VETORES
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo:
Quais são as informações de um Aluno para a Faculdade?
- Nome
- Matrícula
- Série
- Turma
- Curso
No exemplo acima temos a estrutura Aluno que contém as informações ou as
características de um aluno. Muito semelhante a um registro de banco de dados.
Podemos dizer que em uma estrutura, estamos armazenando informações
agrupadas logicamente.
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Estruturas em C/C++:
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
};
Nome da estrutura
Palavra reservada
que identifica uma
estrutura
Membros da estrutura
Chaves definem o início
e o fim da estrutura
Termina com ponto e
vírgula
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Memória:
Uma estrutura armazena vários tipos de dados e ocupa a memória de acordo com
a quantidade de membros declarados na estrutura.
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
};
Membro Bytes
char nome[255] 255
int ra 4
int serie 4
int turma 4
char curso[100] 100
TOTAL: 367
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
} aluno_anhanguera;
struct aluno aluno_tecnologia;
aluno aluno_curso;
Declarando uma variável do tipo Estrutura:
Existem 3 formas de declarar uma variável de estrutura:
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Acessando membros de uma estrutura:
Para acessar um membro de uma estrutura utilizamos o operador ponto (.)
...
struct aluno
{
char nome[255];
int ra;
int serie;
int turma;
char curso[100];
} aluno_anhanguera;
...
int main()
{
cout << aluno_anhanguera.nome << endl;
}
Acessando um membro
O membro “nome” da estrutura
será impresso na tela
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Atribuindo valores para membros de uma estrutura:
Programação Estruturada II
#include <iostream>
using namespace std;
struct demonstracao
{
char caracter;
double valor1;
float valor2;
int valor3;
} demo;
int main()
{
demo.caracter = 'A';
demo.valor1 = 3.2;
demo.valor2 = 6.7;
demo.valor3 = 45;
cout << demo.caracter << endl;
cout << demo.valor1 << endl;
cout << demo.valor2 << endl;
cout << demo.valor3 << endl;
}
Atribuição de valores
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Atribuindo valores para membros de uma estrutura:
#include <iostream>
#include <string.h>
using namespace std;
struct demonstracao
{
char string[100];
int vetor_inteiro[10];
double vetor_double[5];
} demo;
int main()
{
strcpy(demo.string, "Valor da String:");
demo.vetor_inteiro[0] = 1;
demo.vetor_inteiro[2] = 2;
demo.vetor_double[4] = 5.6;
cout << demo.string << endl;
cout << demo.vetor_inteiro[0] << endl;
cout << demo.vetor_inteiro[2] << endl;
cout << demo.vetor_double[4] << endl;
}
Vetor de char usar
strcpy
Atribuição de valores
em vetores
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Resumo:
- É definida pela palavra struct
- Possuem um nome
- Representa algum domínio, tipo ou uma entidade
- Os tipos de uma estrutura são agrupadas logicamente
- Composta de membros que são tipos de variáveis (int, double, float, char)
- Seus membros são acessados utilizando o ponto (.)
- Para atribuir valores (int, double, char e etc), utilizamos o operador igual (=),
idêntico a atribuição de uma variável
- Utilizamos o strcpy para atribuir um valor para um vetor de char
- Os comandos cin e gets funcionam da mesma forma para os membros de uma
estrutura
- Vetores também são acessado da mesma forma, através de seus índices
PONTEIROS, ESTRUTURAS E VETORES
Estruturas
ESTRUTURA DE DADOS – Prof. Thomás da Costa
MODULARIZAÇÃO E FUNÇÕES
PONTEIROS, ESTRUTURAS E VETORES
ESTRUTURA DE DADOS – Prof. Thomás da Costa
O que é Modularização:
É o processo de decompor um programa em partes menores, facilitando a
manutenção e o entendimento pelos desenvolvedores. Com isso podemos ter
rotinas reutilizáveis para outros programas e aplicações. Além disso, conseguimos
efetuar atividades paralelas na construção do código-fonte, na qual mais de um
desenvolvedor pode atuar no trabalho.
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Veja o exemplo abaixo:
Um carro é composto por vários componentes (portas, rodas, motor e etc). Esses
componentes tornam o carro modular.
Cada parte tem uma finalidade, todas
juntas formam o carro. Caso uma peça tenha problema,
fazemos o ajuste neste local sem
afetar o restante do carro.
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Benefícios da Modularização em um programa:
- Componentes menores formam um programa
- Programa fica mais legível para compreensão
- Facilidade na manutenção da aplicação
- Funcionalidade pode ser reutilizada em outros programas
- Previne duplicação de código e retrabalho
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Modularização em C/C++:
Em C++ a modularização é feita a partir de blocos de funcionalidades, denominado
funções.
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Estrutura de uma função:
Retorno da função
Nome da função
Parâmetros da função
Corpo da função
Escopo de início e fim da função
double somar(double x, double y)
{
double resultado = x + y;
return resultado;
}
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Estrutura de uma função:
- Tipos de retorno da função
- double, float, int, char, void, vetores e outros tipos
- Parâmetros da função
- Cada parâmetro é composto pelo tipo, nome e separados por virgulas
- Retorno da função
- Quando uma função deve retornar um valor, devemos usar a palavra
reservada return seguido de um valor, variável ou operação do mesmo tipo
de retorno
- Corpo da função
- Código fonte com a funcionalidade que a função deve executar
- Protótipo
- As funções possuem protótipos para definir sua estrutura
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Como Utilizar em C++:
As quatro funções da calculadora
Protótipo das funções
#include <iostream>
using namespace std;
double somar(double x, double y);
double subtrair(double x, double y);
double multiplicar(double x, double y);
double dividir(double x, double y);
int main()
{
double x, y;
cout << "Digite os valores para somar:n";
cin >> x >> y;
cout << somar(x, y);
cout << "Digite os valores para subtrair:n";
cin >> x >> y;
cout << subtrair(x, y);
cout << "Digite os valores para multiplicar:n";
cin >> x >> y;
cout << multiplicar(x, y);
cout << "Digite os valores para dividir:n";
cin >> x >> y;
cout << dividir(x, y);
}
Chamando uma função
double somar(double x, double y)
{
double resultado = x + y;
return resultado;
}
double subtrair(double x, double y)
{
double resultado = x - y;
return resultado;
}
double multiplicar(double x, double y)
{
double resultado = x * y;
return resultado;
}
double dividir(double x, double y)
{
double resultado = x / y;
return resultado;
}
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Chamando uma função:
Chamando a função “somar”
passando os parâmetros 10 e 15
Retornando o valor para a
variável “valor”
Protótipo da função
#include <iostream>
using namespace std;
double somar(double x, double y);
int main()
{
double valor;
valor = somar(10,15);
}
...
PONTEIROS, ESTRUTURAS E VETORES
Funções
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Resumo:
• Possuem um nome
• Podem possuir um retorno ou não
• Tem parâmetros com tipo e nome, separados por virgulas
• A função tem um corpo, aonde é definido e escrito oque a função vai executar
• Tem um protótipo para definir a função
• São reutilizáveis
• Ajuda a deixar o código mais simples
• Funções quando usadas corretamente deixa muito mais fácil o entendimento
do programa
• Organização do código
• Retornam valores com a palavra reservada return
• void é tipo que não retorna valor na função
PONTEIROS, ESTRUTURAS E VETORES
Funções
Obrigado !!!
ANHANGUERA – 2015.2

Contenu connexe

Tendances

Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Elaine Cecília Gatto
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2Rogerio Oliveira
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsortFlávio Freitas
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsortFlávio Freitas
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcionalNatan Mai
 
Tutorial aed iii 002 - algoritmo de ordenação shellsort
Tutorial aed iii   002 - algoritmo de ordenação shellsortTutorial aed iii   002 - algoritmo de ordenação shellsort
Tutorial aed iii 002 - algoritmo de ordenação shellsortFlávio Freitas
 
Tutorial aed iii 007 - algoritmo de ordenação heapsort
Tutorial aed iii   007 - algoritmo de ordenação heapsortTutorial aed iii   007 - algoritmo de ordenação heapsort
Tutorial aed iii 007 - algoritmo de ordenação heapsortFlávio Freitas
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - OrdenaçãoAnderson Zardo
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...Manuel Menezes de Sequeira
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialFlávio Schuindt
 

Tendances (19)

Introdução à Estrutura de Dados
Introdução à Estrutura de DadosIntrodução à Estrutura de Dados
Introdução à Estrutura de Dados
 
String
StringString
String
 
Estruturas
EstruturasEstruturas
Estruturas
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcional
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Tutorial aed iii 002 - algoritmo de ordenação shellsort
Tutorial aed iii   002 - algoritmo de ordenação shellsortTutorial aed iii   002 - algoritmo de ordenação shellsort
Tutorial aed iii 002 - algoritmo de ordenação shellsort
 
Tutorial aed iii 007 - algoritmo de ordenação heapsort
Tutorial aed iii   007 - algoritmo de ordenação heapsortTutorial aed iii   007 - algoritmo de ordenação heapsort
Tutorial aed iii 007 - algoritmo de ordenação heapsort
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Programação funcional no dia a dia
Programação funcional no dia a diaProgramação funcional no dia a dia
Programação funcional no dia a dia
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - Ordenação
 
Usar explicação
Usar explicaçãoUsar explicação
Usar explicação
 
Ed1
Ed1Ed1
Ed1
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
A Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicialA Linguagem Lua - Uma abordagem inicial
A Linguagem Lua - Uma abordagem inicial
 

En vedette

(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos BásicosFabricio Narcizo
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosNegoTux Jean
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02thomasdacosta
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
INTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORINTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORelectricgirl
 
Arquitetura interna do computador
Arquitetura interna do computadorArquitetura interna do computador
Arquitetura interna do computadorAndleloli
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)KianeLedok
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)KianeLedok
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em CPablo Silva
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasLeinylson Fontinele
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.comRaul Batalha
 

En vedette (20)

(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos(ED1) Tópico 01 - Conceitos Básicos
(ED1) Tópico 01 - Conceitos Básicos
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02Estrutura de Dados - Aula 02
Estrutura de Dados - Aula 02
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
INTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADORINTERIOR DO COMPUTADOR
INTERIOR DO COMPUTADOR
 
Arquitetura interna do computador
Arquitetura interna do computadorArquitetura interna do computador
Arquitetura interna do computador
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)
 
EDII02 [2012.1] Introdução (Estruturas de Dados)
EDII02 [2012.1]   Introdução (Estruturas de Dados)EDII02 [2012.1]   Introdução (Estruturas de Dados)
EDII02 [2012.1] Introdução (Estruturas de Dados)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas Estáticas
 
Estrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - ApresentaçãoEstrutura de Dados - Aula 01 - Apresentação
Estrutura de Dados - Aula 01 - Apresentação
 
Estruturas de dados
Estruturas de dadosEstruturas de dados
Estruturas de dados
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
 

Similaire à Estrutura de Dados - Aula 03

Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dadosJean Martina
 
Programação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código FonteProgramação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código Fontethomasdacosta
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasdiogoa21
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Isaac Barros
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01thomasdacosta
 
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3 Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3 Cristofer Sousa
 

Similaire à Estrutura de Dados - Aula 03 (20)

Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Programação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código FonteProgramação Estruturada 2 - Aula 03 - Código Fonte
Programação Estruturada 2 - Aula 03 - Código Fonte
 
mod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicasmod5-estruturas-dadosdinamicas
mod5-estruturas-dadosdinamicas
 
9 structs e ponteiros
9   structs e ponteiros9   structs e ponteiros
9 structs e ponteiros
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1Aula 13 ponteiros - Programação 1
Aula 13 ponteiros - Programação 1
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3 Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
Fundamentos e Desenvolvimento de Interface Web com HTML5 & CSS3
 
Aula1
Aula1Aula1
Aula1
 
Curso de sql
Curso de sqlCurso de sql
Curso de sql
 
Ativ complementar etapa 02
Ativ complementar etapa 02Ativ complementar etapa 02
Ativ complementar etapa 02
 
Mini Curso IoT - Sieng 2016 - Dia 1
Mini Curso IoT - Sieng 2016 - Dia 1Mini Curso IoT - Sieng 2016 - Dia 1
Mini Curso IoT - Sieng 2016 - Dia 1
 

Plus de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 

Plus de thomasdacosta (20)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 

Estrutura de Dados - Aula 03

  • 1. ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 03 – REVISÃO: PONTEIROS, ESTRUTURAS E VETORES Prof. Thomás da Costa thomascosta@aedu.com
  • 2. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES REVISÃO: PONTEIROS, ESTRUTURAS E VETORES
  • 3. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES Revisão O que vamos relembrar: • Ponteiros. • Ponteiros e... • Mais ponteiros. • Estruturas. • Vetores. • O básico de funções. Não revisaremos nessa ordem, mas ponteiro é muito importante para disciplina de Estrutura de Dados, por isso vamos estudar primeiro. O conteúdo do material é o mesmo utilizado em Programação Estruturada 2. Vamos começar !!!
  • 4. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES PONTEIROS
  • 5. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES É um tipo de variável que armazena um endereço de memoria referente a uma outra variável. O ponteiro não armazena diretamente um valor como os outros tipos em C++. Ponteiros O que é?:
  • 6. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORESPONTEIROS, ESTRUTURAS E VETORES Para operação com ponteiros, utilizamos dois operadores unários: Ponteiros Operadores: Operador Descrição * Utilizado para declarar um ponteiro e para retornar o valor & Utilizado para retornar o endereço de memória da variável Vamos ver como declarar uma variável do tipo ponteiro !!!
  • 7. ESTRUTURA DE DADOS – Prof. Thomás da Costa Declarando uma variável do tipo ponteiro: int *ptr; Tipo da variável Nome da variável Operador unário PONTEIROS, ESTRUTURAS E VETORES Ponteiros
  • 8. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 1#include <iostream> using namespace std; int main() { int *ptr; cout << ptr << endl; } Declarando um ponteiro Exibe o endereço da variável, neste caso, nenhum endereço foi atribuído
  • 9. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES Ponteiros Declaração e atribuição de ponteiros: Variável ponteiro Atribuindo o endereço de memória int *ptr; int valor; valor = 1500; ptr = &valor;
  • 10. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 2 #include <iostream> using namespace std; int main() { int valor; int *ptr; valor = 1500; ptr = &valor; cout << ptr << endl; cout << *ptr << endl; } ptrvalor 0x23fe480x23fe44 0x23fe480x23fe44 0x23fe441500
  • 11. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES Ponteiros Mais detalhes: - Ponteiro armazena o endereço de memória - O operador & mostra o endereço da variável - O operador * é utilizado na declaração do ponteiro - Exibindo o valor de um ponteiro com cout é mostrado o endereço referenciado - Utilizando o operador * seguido pelo nome da variável de ponteiro é exibido o valor atribuído no endereço de memória referente. Vamos ver mais um exemplo !!!
  • 12. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 3 #include <iostream> using namespace std; int main() { int valor; int *ptr; int total; valor = 1600; ptr = &valor; total = *ptr; cout << *ptr << endl; cout << total << endl; } ptrvalor 0x23fe480x23fe44 total 0x23fe40 0x23fe480x23fe44 0x23fe401600 0x23fe44 1600
  • 13. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES Ponteiros Importante: A atribuição de valores para ponteiros, deve ser do mesmo tipo. Quando as variáveis são de tipos diferentes, vamos ter um erro de compilação.
  • 14. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 4 #include <iostream> using namespace std; int main() { // PROGRAMA COM ERRO NAO COMPILA !!!! int *ptr_inteiro; double valor; valor = 345.76; ptr_inteiro = &valor; cout << *ptr_inteiro << endl; } ERRO !!!
  • 15. ESTRUTURA DE DADOS – Prof. Thomás da Costa Atribuição de valores: Podemos atribuir um valor diretamente para um ponteiro. Para isso utilizamos o operador * antes do nome da variável do tipo ponteiro. *ptr = 999; Variável do tipo ponteiro Atribuindo um valor PONTEIROS, ESTRUTURAS E VETORES Ponteiros
  • 16. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo 5 #include <iostream> using namespace std; int main() { int *ptr; int x; ptr = &x; *ptr = 999; cout << &x << endl; cout << ptr << endl; cout << *ptr << endl; } xptr 0x23fe440x23fe48 0x23fe48 0x23fe440x23fe44 999
  • 17. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES Ponteiros Resumo: • Um ponteiro armazena uma posição de memória. • Esta posição de memória é referente a um valor. • Atribuição de ponteiros deve acontecer se for do mesmo tipo. • Existem dois tipo de operadores unários para trabalhar com ponteiros. • O operador & retornar o endereço de memória da variável. • O operador * é utilizado para declarar um ponteiro e para retornar o valor. • Vamos utilizar bastante na disciplina de Estrutura de Dados.
  • 18. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES VETORES
  • 19. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo: #include <iostream> #include <string.h> using namespace std; int main() { int k[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // inicializando um vetor for (int i=9;i>=0;i--) { k[i] = i; cout << k[i] << "n"; } char nome1[10] = "João"; // uma string char nome2[10] = "Maria"; strcat(nome2, " das Graças"); // concatena duas strings cout << "Nome1, Nome2: " << nome1 << "," << nome2 << "n"; cout << "Tamanho do Nome1: " << strlen(nome1) << "n"; // tamanho de uma string cout << "Tamanho do Nome2: " << strlen(nome2) << "n"; cout << "Comparando:" << strcmp(nome1, nome2) << "n"; // compara duas strings char usuario[100]; gets(usuario);// lê a string do teclado cout << "Usuário: " << usuario; } Criando um vetor com 10 posições Inicializando um vetor Atribuindo um valor na posição Ler um vetor de char pelo teclado PONTEIROS, ESTRUTURAS E VETORES Vetores
  • 20. ESTRUTURA DE DADOS – Prof. Thomás da Costa PONTEIROS, ESTRUTURAS E VETORES ESTRUTURAS
  • 21. ESTRUTURA DE DADOS – Prof. Thomás da Costa O que é: É um conjunto de variáveis que representam características de um determinado domínio ou de um tipo. A estrutura pode definir uma entidade e possui grande semelhança com registros de banco de dados. O agrupamento de variáveis pode ser de qualquer tipo, sendo denominado de membro da estrutura. Estruturas PONTEIROS, ESTRUTURAS E VETORES
  • 22. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplo: Quais são as informações de um Aluno para a Faculdade? - Nome - Matrícula - Série - Turma - Curso No exemplo acima temos a estrutura Aluno que contém as informações ou as características de um aluno. Muito semelhante a um registro de banco de dados. Podemos dizer que em uma estrutura, estamos armazenando informações agrupadas logicamente. PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 23. ESTRUTURA DE DADOS – Prof. Thomás da Costa Estruturas em C/C++: struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; }; Nome da estrutura Palavra reservada que identifica uma estrutura Membros da estrutura Chaves definem o início e o fim da estrutura Termina com ponto e vírgula PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 24. ESTRUTURA DE DADOS – Prof. Thomás da Costa Memória: Uma estrutura armazena vários tipos de dados e ocupa a memória de acordo com a quantidade de membros declarados na estrutura. struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; }; Membro Bytes char nome[255] 255 int ra 4 int serie 4 int turma 4 char curso[100] 100 TOTAL: 367 PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 25. ESTRUTURA DE DADOS – Prof. Thomás da Costa struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; } aluno_anhanguera; struct aluno aluno_tecnologia; aluno aluno_curso; Declarando uma variável do tipo Estrutura: Existem 3 formas de declarar uma variável de estrutura: PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 26. ESTRUTURA DE DADOS – Prof. Thomás da Costa Acessando membros de uma estrutura: Para acessar um membro de uma estrutura utilizamos o operador ponto (.) ... struct aluno { char nome[255]; int ra; int serie; int turma; char curso[100]; } aluno_anhanguera; ... int main() { cout << aluno_anhanguera.nome << endl; } Acessando um membro O membro “nome” da estrutura será impresso na tela PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 27. ESTRUTURA DE DADOS – Prof. Thomás da Costa Atribuindo valores para membros de uma estrutura: Programação Estruturada II #include <iostream> using namespace std; struct demonstracao { char caracter; double valor1; float valor2; int valor3; } demo; int main() { demo.caracter = 'A'; demo.valor1 = 3.2; demo.valor2 = 6.7; demo.valor3 = 45; cout << demo.caracter << endl; cout << demo.valor1 << endl; cout << demo.valor2 << endl; cout << demo.valor3 << endl; } Atribuição de valores PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 28. ESTRUTURA DE DADOS – Prof. Thomás da Costa Atribuindo valores para membros de uma estrutura: #include <iostream> #include <string.h> using namespace std; struct demonstracao { char string[100]; int vetor_inteiro[10]; double vetor_double[5]; } demo; int main() { strcpy(demo.string, "Valor da String:"); demo.vetor_inteiro[0] = 1; demo.vetor_inteiro[2] = 2; demo.vetor_double[4] = 5.6; cout << demo.string << endl; cout << demo.vetor_inteiro[0] << endl; cout << demo.vetor_inteiro[2] << endl; cout << demo.vetor_double[4] << endl; } Vetor de char usar strcpy Atribuição de valores em vetores PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 29. ESTRUTURA DE DADOS – Prof. Thomás da Costa Resumo: - É definida pela palavra struct - Possuem um nome - Representa algum domínio, tipo ou uma entidade - Os tipos de uma estrutura são agrupadas logicamente - Composta de membros que são tipos de variáveis (int, double, float, char) - Seus membros são acessados utilizando o ponto (.) - Para atribuir valores (int, double, char e etc), utilizamos o operador igual (=), idêntico a atribuição de uma variável - Utilizamos o strcpy para atribuir um valor para um vetor de char - Os comandos cin e gets funcionam da mesma forma para os membros de uma estrutura - Vetores também são acessado da mesma forma, através de seus índices PONTEIROS, ESTRUTURAS E VETORES Estruturas
  • 30. ESTRUTURA DE DADOS – Prof. Thomás da Costa MODULARIZAÇÃO E FUNÇÕES PONTEIROS, ESTRUTURAS E VETORES
  • 31. ESTRUTURA DE DADOS – Prof. Thomás da Costa O que é Modularização: É o processo de decompor um programa em partes menores, facilitando a manutenção e o entendimento pelos desenvolvedores. Com isso podemos ter rotinas reutilizáveis para outros programas e aplicações. Além disso, conseguimos efetuar atividades paralelas na construção do código-fonte, na qual mais de um desenvolvedor pode atuar no trabalho. PONTEIROS, ESTRUTURAS E VETORES Funções
  • 32. ESTRUTURA DE DADOS – Prof. Thomás da Costa Veja o exemplo abaixo: Um carro é composto por vários componentes (portas, rodas, motor e etc). Esses componentes tornam o carro modular. Cada parte tem uma finalidade, todas juntas formam o carro. Caso uma peça tenha problema, fazemos o ajuste neste local sem afetar o restante do carro. PONTEIROS, ESTRUTURAS E VETORES Funções
  • 33. ESTRUTURA DE DADOS – Prof. Thomás da Costa Benefícios da Modularização em um programa: - Componentes menores formam um programa - Programa fica mais legível para compreensão - Facilidade na manutenção da aplicação - Funcionalidade pode ser reutilizada em outros programas - Previne duplicação de código e retrabalho PONTEIROS, ESTRUTURAS E VETORES Funções
  • 34. ESTRUTURA DE DADOS – Prof. Thomás da Costa Modularização em C/C++: Em C++ a modularização é feita a partir de blocos de funcionalidades, denominado funções. PONTEIROS, ESTRUTURAS E VETORES Funções
  • 35. ESTRUTURA DE DADOS – Prof. Thomás da Costa Estrutura de uma função: Retorno da função Nome da função Parâmetros da função Corpo da função Escopo de início e fim da função double somar(double x, double y) { double resultado = x + y; return resultado; } PONTEIROS, ESTRUTURAS E VETORES Funções
  • 36. ESTRUTURA DE DADOS – Prof. Thomás da Costa Estrutura de uma função: - Tipos de retorno da função - double, float, int, char, void, vetores e outros tipos - Parâmetros da função - Cada parâmetro é composto pelo tipo, nome e separados por virgulas - Retorno da função - Quando uma função deve retornar um valor, devemos usar a palavra reservada return seguido de um valor, variável ou operação do mesmo tipo de retorno - Corpo da função - Código fonte com a funcionalidade que a função deve executar - Protótipo - As funções possuem protótipos para definir sua estrutura PONTEIROS, ESTRUTURAS E VETORES Funções
  • 37. ESTRUTURA DE DADOS – Prof. Thomás da Costa Como Utilizar em C++: As quatro funções da calculadora Protótipo das funções #include <iostream> using namespace std; double somar(double x, double y); double subtrair(double x, double y); double multiplicar(double x, double y); double dividir(double x, double y); int main() { double x, y; cout << "Digite os valores para somar:n"; cin >> x >> y; cout << somar(x, y); cout << "Digite os valores para subtrair:n"; cin >> x >> y; cout << subtrair(x, y); cout << "Digite os valores para multiplicar:n"; cin >> x >> y; cout << multiplicar(x, y); cout << "Digite os valores para dividir:n"; cin >> x >> y; cout << dividir(x, y); } Chamando uma função double somar(double x, double y) { double resultado = x + y; return resultado; } double subtrair(double x, double y) { double resultado = x - y; return resultado; } double multiplicar(double x, double y) { double resultado = x * y; return resultado; } double dividir(double x, double y) { double resultado = x / y; return resultado; } PONTEIROS, ESTRUTURAS E VETORES Funções
  • 38. ESTRUTURA DE DADOS – Prof. Thomás da Costa Chamando uma função: Chamando a função “somar” passando os parâmetros 10 e 15 Retornando o valor para a variável “valor” Protótipo da função #include <iostream> using namespace std; double somar(double x, double y); int main() { double valor; valor = somar(10,15); } ... PONTEIROS, ESTRUTURAS E VETORES Funções
  • 39. ESTRUTURA DE DADOS – Prof. Thomás da Costa Resumo: • Possuem um nome • Podem possuir um retorno ou não • Tem parâmetros com tipo e nome, separados por virgulas • A função tem um corpo, aonde é definido e escrito oque a função vai executar • Tem um protótipo para definir a função • São reutilizáveis • Ajuda a deixar o código mais simples • Funções quando usadas corretamente deixa muito mais fácil o entendimento do programa • Organização do código • Retornam valores com a palavra reservada return • void é tipo que não retorna valor na função PONTEIROS, ESTRUTURAS E VETORES Funções