SlideShare uma empresa Scribd logo
1 de 40
Introdução ao C++ 
Estruturas de Dados
Visão Geral 
● Histórico da Linguagem 
● Programa C++: header, source – função main() 
● GCC/G++ 
● Arquivos objeto, bibliotecas dinâmicas e estáticas 
● #include, #define, namespaces, typedefs 
● Ponteiros, Referências, arrays, primitivas, 
estruturas de controle.
Características do C++ 
● Linguagem multi-paradigma 
● Programação Procedural 
● Orientação a objetos 
● Meta Programação 
● Desalocação memória – Decisão cabe ao 
programador
Histórico 
● Criada por Bjarne Stroustrup em 1979 no Bell Labs 
da AT&T e inicialmente chamada de “C with classes”. 
● Em 1983 passou a ser chamada C++. 
● Ao longo do tempo incorporou novas funcionalidades 
como: 
– herança múltipla, 
– sobreescrita de operadores, 
– templates 
– entre outras coisas que veremos ao longo do curso.
Histórico 
● Possui compatibilidade com C 
– um compilador C++ deve compilar um programa 
escrito em C. 
● Em 1998 foi definido um padrão ISO para a 
linguagem, revisado em 2003 e novamente 
revisado em 2011.
GCC/G++ 
● GNU Compiler Collection 
● Compilador originalmente desenvolvido 
focando a linguagem C, chamava-se GNU C 
Compiler. 
● Ao longo do anos passou a contemplar 
outras linguagens, como C++.
Programa C++ - Arquivos 
● Header – Definições / Visível a outros headers 
● Sources – Corpo de métodos e funções 
● Função Main – Função inicial evocada pelo 
executável
Programa C++ - Hello World 
//file – hello_world.cc 
#include <iostream> 
int main(){ 
std::cout<<”Hello World!”<<std::endl; 
return 0; 
}
Programa C++ - Compilando o Hello 
World 
$ g++ hello_world.cc -o hello_world 
$ ./hello_world #executando 
$ Hello World! #resultado
Bibliotecas Estáticas e Dinâmicas 
● Estática: 
– o código executável copia os trechos com 
instruções que utiliza. O executável pode ficar 
grande. 
● Dinâmica: 
– A linkagem ocorre em tempo de execução. O 
executável acessa a biblioteca durante as 
chamadas de funções.
Diretivas 
● Informações sobre arquivos, símbolos e tipos 
interpretadas no pré-processamento da compilação. 
● #include 
– Avisa ao compilador quais headers ele precisa carregar para 
pré-processar as instruções do arquivo em questão, mais ou 
menos como o import do Java 
– Pode ser utilizado tanto no header quanto no source. Evite 
incluir includes desnecessário no header, torna a etapa de 
análise mais custosa.
Diretivas - Include 
#include “structs/my_struct.h” 
int main(){ 
myStruct ms; 
} 
$ g++ include.cc 
#include “my_struct.h” 
int main(){ 
myStruct ms; 
} 
$ g++ include.cc -I structs
Diretivas - Include 
● #include <list> 
– Procura o header nos diretórios do sistema e 
aqueles passados como parâmetro ao compilador. 
● #include “my_struct.h” 
– Procura o header primeiro no diretório que contém 
o arquivo sendo compilado, e depois nos diretórios 
do sistema e aqueles passados como parâmetro ao 
compilador.
Diretivas: #define 
● Atribui um valor a um símbolo. 
● Cada vez que o pré-processador encontra este 
símbolo no código ele substitui o símbolo por 
esse valor. 
#define max_iterations 1000
Diretivas: #define 
● Também pode ser usado para definir “macros”, pequenos 
trechos de código que são colados cada vez que o pré-processador 
identifica o símbolo associado. 
#define getmax(a,b) ((a)>(b)?(a):(b)) 
int main(){ 
int x = 10; 
int y = getmax(x,5); 
//y vale 10 
}
Diretivas: #define 
#define getmax(a,b) ((a)>(b)?(a):(b)) 
/*int main(){ 
int x = 10; 
int y = getmax(x,5); 
//y vale 10 
}*/ 
int main(){ 
int x = 10; 
int y = ((x)>(5)?(x):(5)); 
//y vale 10 
}
Diretivas: #define 
● Quando e por que usar Macros? 
– Quando o código é pequeno e existe um real 
conhecimento do fluxo das instruções. 
– Desgraças podem acontecer e o código colado pelo 
pré-processador pode tomar um rumo inesperado. 
– Como o código é “colado”, não existe ônus de ter que 
colocar o endereço da instrução na pilha como em 
uma chamada de função. Em uma próxima aula 
discutiremos isso ao ver funções inline.
namespace 
● Estabelecem o domínio ao qual declarações 
(classes, structs, metaclasses) fazem parte. 
● É utilizado para organizar o código em 
diferentes domínios, que dependendo da 
estrutura de diretórios do código fonte, podem 
apresentar uma semelhança com a 
organização em pacotes do java. 
● Também serve para eliminar ambigüidades.
namespace 
#include <list> 
#include “my_list.h” 
int main(){ 
std::list<int> list1; 
list<int> list2; 
}
using 
● Usada para suprimir a declaração de namespaces no código 
#include <list> 
#include <iostream> 
#include “my_list.h” 
using namespace std; 
int main(){ 
cout<<”hello world”<<endl; //ok! 
list<int> list1; //ambigüidade 
list<int> list2; //ambigüidade 
}
Diretivas: namespace 
#include <list> 
#include “data_structure/my_list.h” 
#include <iostream> 
using namespace std; 
int main(){ 
cout<<”hello world”<<endl; //ok! 
std::list<int> list1; //ok 
data_structure::list<int> list2; //ok 
}
typedef 
● Define um tipo a partir de outro existente. 
#include <list> 
#include “data_structure/my_list.h” 
#include <iostream> 
using namespace std; 
typedef data_structure::list<int> mylist; 
int main(){ 
cout<<”hello world”<<endl; //ok! 
list<int> list1; //ok - std::list 
mylist list2; //ok - data_structure::list 
}
Tipos Primitivos 
● Inteiros com e sem sinal e bits de 
representação: 
– char, unsigned char: 8 bits 
– short, unsigned short: 16 bits (mínimo) 
– int, unsigned int: 32 bits (mínimo) 
– long, unsigned long: 32 bits (mínimo) 
– long long, unsigned long long: 64 bits (mínimo)
Tipos Primitivos 
● Ponto flutuante e bits de representação: 
– float: 32 bits 
– double: 64 bits
Ponteiros e referências 
● int a = 10; //aloca espaço para a variável a 
● int * b = &a; 
● /*cria um ponteiro b para números inteiros. 
Um ponteiro aloca espaço para e o reserva 
para armazenar um endereço. */ 
● Memória: 
10 
6
Variáveis, Ponteiros e Referências 
#include <iostream> 
int main(){ 
int a = 5; 
int * b = &a; 
std::cout<<”O valor de a é”<<a<<” o endereço de a é“<<&a<<std::endl; 
std::cout<<”b contém o endereço”<<b<<” o conteúdo do endereço de b 
é:”<<*b<<std::end; 
}
Variáveis, Ponteiros e Referências 
*b += a; 
a *= (*b); 
std::cout<<a<<std::endl; 
//O que foi impresso??
Variáveis, Ponteiros e Referências 
● Uma referência é como um “apelido” a uma outra 
variável. 
● Tal qual um ponteiro, a referência apenas 
“referencia” algum endereço de memória. 
● Uma vez criada, não há como distinguir entre uma 
referência e o dado por ela referenciado. 
● Adicionalmente, uma referência só pode “apontar 
para” um único dado durante sua existência.
Variáveis, Ponteiros e Referências 
● int main(){ 
int a = 3; 
int b = 4; 
int * p = &b; 
int & r = b; 
r += 2; // b agora vale 6 
p = &a; // p aponta para “a” 
r = a; // b agora vale 3; r ainda referencia b. 
}
Arrays – Alocação Estática 
int main(){ 
int a[5]; 
a[0] = 0; 
a[4] = -3; 
}
Arrays – Alocação dinâmica 
● int main(){ 
int a =5; 
int * b = new int[a]; 
}
Arrays - Iterando 
int main(){ 
int a = 5; 
int * b = new int[a]; 
int * it = &b[0]; 
(*it++) = 8; //Quais operações são executadas 
nessa linha? 
}
Arrays - Iterando 
int * it = &b[0]; //faz o iterador apontar para o endereço da 
posição 0 de b; 
//int * it = b; 
(*it++) = 8; 
//(*it) = 8 atribui o valor 8 a posição 0 do array b incrementa o 
iterador, fazendo-o apontar para a posição 1 de b
Arrays - Iterando 
int * it = &b[0]; //faz o iterador apontar para o 
endereço 9; 
(*it) = 8; //atribui o valor 8 ao dado contido no 
endereço 9 
it++;//incrementa o iterador, fazendo-o apontar 
para o endereço 10 
it
Statements 
if( expressão booleana ){ 
//se a expressão é verdadeira executa este bloco 
} else{ 
//se a expressão é falsa executa este bloco 
}
Statements 
while( expressão booleana ){ 
//enquanto a expressão for verdadeira executa este bloco 
} 
do{ 
//enquanto a expressão for verdadeira executa este bloco 
}while( expressão booleana );
Statements 
for( inicialização de variáveis ; expressão ; 
operação executada a cada loop ){ 
//Para cada vez que a expressão for verdadeira, 
executa esse bloco. Se a expressão for falsa, sai 
do bloco. 
}
enumerations 
● Coleção de constantes definidas pelo usuário 
enum Paises{ 
Argentina, 
Brasil, 
China, 
Estados Unidos, 
Inglaterra 
}
enumerations 
● Coleção de constantes definidas pelo usuário 
enum Paises{ 
Argentina=9, 
Brasil=6, 
China=5, 
Estados Unidos=13, 
Inglaterra=10 
}
switch case 
int a; 
switch (a){ 
case:1 
//se a vale 1, executa este bloco 
break; 
case:2 
//se a vale 2, executa este bloco 
break; 
default: 
//se a vale qualquer outro inteiro, executa este bloco 
}

Mais conteúdo relacionado

Mais procurados

Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em CElaine Cecília Gatto
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-phpdiogoa21
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopesmarcosnem
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STLMarcos Castro
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem Capolllorj
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 

Mais procurados (20)

Java4
Java4Java4
Java4
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Apostila C ANSI
Apostila C ANSIApostila C ANSI
Apostila C ANSI
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Java5
Java5Java5
Java5
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopes
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Ud2
Ud2Ud2
Ud2
 
Linguagem C - Entrada e Saída
Linguagem C - Entrada e SaídaLinguagem C - Entrada e Saída
Linguagem C - Entrada e Saída
 

Destaque

Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )PeslPinguim
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++Ellen Diana
 
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
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Languagesatvirsandhu9
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisPacc UAB
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - MatrizesPacc UAB
 

Destaque (12)

Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++
 
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,...
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionais
 
599026
599026599026
599026
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
 
C++ Presentation
C++ PresentationC++ Presentation
C++ Presentation
 
C++ programming
C++ programmingC++ programming
C++ programming
 

Semelhante a Aula c++ estruturas de dados

Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Leandro Rezende
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBiMasters
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Bianca Dantas
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 

Semelhante a Aula c++ estruturas de dados (20)

Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Ed1
Ed1Ed1
Ed1
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01Algoritmos C/C++ - Aula 01
Algoritmos C/C++ - Aula 01
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Mongodb workshop cinlug
Mongodb workshop cinlugMongodb workshop cinlug
Mongodb workshop cinlug
 
Minicurso Ruby on Rails
Minicurso Ruby on RailsMinicurso Ruby on Rails
Minicurso Ruby on Rails
 
Pged 01
Pged 01Pged 01
Pged 01
 
Linguagem_C.pdf
Linguagem_C.pdfLinguagem_C.pdf
Linguagem_C.pdf
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Desenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDBDesenvolvendo soluções com banco de dados não relacional - MongoDB
Desenvolvendo soluções com banco de dados não relacional - MongoDB
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222Aula de Algoritmos II - Turma 222
Aula de Algoritmos II - Turma 222
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 

Último

Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaPaula Duarte
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiorosenilrucks
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosLucianoPrado15
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxedelon1
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 

Último (20)

Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escrita
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médio
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 

Aula c++ estruturas de dados

  • 1. Introdução ao C++ Estruturas de Dados
  • 2. Visão Geral ● Histórico da Linguagem ● Programa C++: header, source – função main() ● GCC/G++ ● Arquivos objeto, bibliotecas dinâmicas e estáticas ● #include, #define, namespaces, typedefs ● Ponteiros, Referências, arrays, primitivas, estruturas de controle.
  • 3. Características do C++ ● Linguagem multi-paradigma ● Programação Procedural ● Orientação a objetos ● Meta Programação ● Desalocação memória – Decisão cabe ao programador
  • 4. Histórico ● Criada por Bjarne Stroustrup em 1979 no Bell Labs da AT&T e inicialmente chamada de “C with classes”. ● Em 1983 passou a ser chamada C++. ● Ao longo do tempo incorporou novas funcionalidades como: – herança múltipla, – sobreescrita de operadores, – templates – entre outras coisas que veremos ao longo do curso.
  • 5. Histórico ● Possui compatibilidade com C – um compilador C++ deve compilar um programa escrito em C. ● Em 1998 foi definido um padrão ISO para a linguagem, revisado em 2003 e novamente revisado em 2011.
  • 6. GCC/G++ ● GNU Compiler Collection ● Compilador originalmente desenvolvido focando a linguagem C, chamava-se GNU C Compiler. ● Ao longo do anos passou a contemplar outras linguagens, como C++.
  • 7. Programa C++ - Arquivos ● Header – Definições / Visível a outros headers ● Sources – Corpo de métodos e funções ● Função Main – Função inicial evocada pelo executável
  • 8. Programa C++ - Hello World //file – hello_world.cc #include <iostream> int main(){ std::cout<<”Hello World!”<<std::endl; return 0; }
  • 9. Programa C++ - Compilando o Hello World $ g++ hello_world.cc -o hello_world $ ./hello_world #executando $ Hello World! #resultado
  • 10. Bibliotecas Estáticas e Dinâmicas ● Estática: – o código executável copia os trechos com instruções que utiliza. O executável pode ficar grande. ● Dinâmica: – A linkagem ocorre em tempo de execução. O executável acessa a biblioteca durante as chamadas de funções.
  • 11. Diretivas ● Informações sobre arquivos, símbolos e tipos interpretadas no pré-processamento da compilação. ● #include – Avisa ao compilador quais headers ele precisa carregar para pré-processar as instruções do arquivo em questão, mais ou menos como o import do Java – Pode ser utilizado tanto no header quanto no source. Evite incluir includes desnecessário no header, torna a etapa de análise mais custosa.
  • 12. Diretivas - Include #include “structs/my_struct.h” int main(){ myStruct ms; } $ g++ include.cc #include “my_struct.h” int main(){ myStruct ms; } $ g++ include.cc -I structs
  • 13. Diretivas - Include ● #include <list> – Procura o header nos diretórios do sistema e aqueles passados como parâmetro ao compilador. ● #include “my_struct.h” – Procura o header primeiro no diretório que contém o arquivo sendo compilado, e depois nos diretórios do sistema e aqueles passados como parâmetro ao compilador.
  • 14. Diretivas: #define ● Atribui um valor a um símbolo. ● Cada vez que o pré-processador encontra este símbolo no código ele substitui o símbolo por esse valor. #define max_iterations 1000
  • 15. Diretivas: #define ● Também pode ser usado para definir “macros”, pequenos trechos de código que são colados cada vez que o pré-processador identifica o símbolo associado. #define getmax(a,b) ((a)>(b)?(a):(b)) int main(){ int x = 10; int y = getmax(x,5); //y vale 10 }
  • 16. Diretivas: #define #define getmax(a,b) ((a)>(b)?(a):(b)) /*int main(){ int x = 10; int y = getmax(x,5); //y vale 10 }*/ int main(){ int x = 10; int y = ((x)>(5)?(x):(5)); //y vale 10 }
  • 17. Diretivas: #define ● Quando e por que usar Macros? – Quando o código é pequeno e existe um real conhecimento do fluxo das instruções. – Desgraças podem acontecer e o código colado pelo pré-processador pode tomar um rumo inesperado. – Como o código é “colado”, não existe ônus de ter que colocar o endereço da instrução na pilha como em uma chamada de função. Em uma próxima aula discutiremos isso ao ver funções inline.
  • 18. namespace ● Estabelecem o domínio ao qual declarações (classes, structs, metaclasses) fazem parte. ● É utilizado para organizar o código em diferentes domínios, que dependendo da estrutura de diretórios do código fonte, podem apresentar uma semelhança com a organização em pacotes do java. ● Também serve para eliminar ambigüidades.
  • 19. namespace #include <list> #include “my_list.h” int main(){ std::list<int> list1; list<int> list2; }
  • 20. using ● Usada para suprimir a declaração de namespaces no código #include <list> #include <iostream> #include “my_list.h” using namespace std; int main(){ cout<<”hello world”<<endl; //ok! list<int> list1; //ambigüidade list<int> list2; //ambigüidade }
  • 21. Diretivas: namespace #include <list> #include “data_structure/my_list.h” #include <iostream> using namespace std; int main(){ cout<<”hello world”<<endl; //ok! std::list<int> list1; //ok data_structure::list<int> list2; //ok }
  • 22. typedef ● Define um tipo a partir de outro existente. #include <list> #include “data_structure/my_list.h” #include <iostream> using namespace std; typedef data_structure::list<int> mylist; int main(){ cout<<”hello world”<<endl; //ok! list<int> list1; //ok - std::list mylist list2; //ok - data_structure::list }
  • 23. Tipos Primitivos ● Inteiros com e sem sinal e bits de representação: – char, unsigned char: 8 bits – short, unsigned short: 16 bits (mínimo) – int, unsigned int: 32 bits (mínimo) – long, unsigned long: 32 bits (mínimo) – long long, unsigned long long: 64 bits (mínimo)
  • 24. Tipos Primitivos ● Ponto flutuante e bits de representação: – float: 32 bits – double: 64 bits
  • 25. Ponteiros e referências ● int a = 10; //aloca espaço para a variável a ● int * b = &a; ● /*cria um ponteiro b para números inteiros. Um ponteiro aloca espaço para e o reserva para armazenar um endereço. */ ● Memória: 10 6
  • 26. Variáveis, Ponteiros e Referências #include <iostream> int main(){ int a = 5; int * b = &a; std::cout<<”O valor de a é”<<a<<” o endereço de a é“<<&a<<std::endl; std::cout<<”b contém o endereço”<<b<<” o conteúdo do endereço de b é:”<<*b<<std::end; }
  • 27. Variáveis, Ponteiros e Referências *b += a; a *= (*b); std::cout<<a<<std::endl; //O que foi impresso??
  • 28. Variáveis, Ponteiros e Referências ● Uma referência é como um “apelido” a uma outra variável. ● Tal qual um ponteiro, a referência apenas “referencia” algum endereço de memória. ● Uma vez criada, não há como distinguir entre uma referência e o dado por ela referenciado. ● Adicionalmente, uma referência só pode “apontar para” um único dado durante sua existência.
  • 29. Variáveis, Ponteiros e Referências ● int main(){ int a = 3; int b = 4; int * p = &b; int & r = b; r += 2; // b agora vale 6 p = &a; // p aponta para “a” r = a; // b agora vale 3; r ainda referencia b. }
  • 30. Arrays – Alocação Estática int main(){ int a[5]; a[0] = 0; a[4] = -3; }
  • 31. Arrays – Alocação dinâmica ● int main(){ int a =5; int * b = new int[a]; }
  • 32. Arrays - Iterando int main(){ int a = 5; int * b = new int[a]; int * it = &b[0]; (*it++) = 8; //Quais operações são executadas nessa linha? }
  • 33. Arrays - Iterando int * it = &b[0]; //faz o iterador apontar para o endereço da posição 0 de b; //int * it = b; (*it++) = 8; //(*it) = 8 atribui o valor 8 a posição 0 do array b incrementa o iterador, fazendo-o apontar para a posição 1 de b
  • 34. Arrays - Iterando int * it = &b[0]; //faz o iterador apontar para o endereço 9; (*it) = 8; //atribui o valor 8 ao dado contido no endereço 9 it++;//incrementa o iterador, fazendo-o apontar para o endereço 10 it
  • 35. Statements if( expressão booleana ){ //se a expressão é verdadeira executa este bloco } else{ //se a expressão é falsa executa este bloco }
  • 36. Statements while( expressão booleana ){ //enquanto a expressão for verdadeira executa este bloco } do{ //enquanto a expressão for verdadeira executa este bloco }while( expressão booleana );
  • 37. Statements for( inicialização de variáveis ; expressão ; operação executada a cada loop ){ //Para cada vez que a expressão for verdadeira, executa esse bloco. Se a expressão for falsa, sai do bloco. }
  • 38. enumerations ● Coleção de constantes definidas pelo usuário enum Paises{ Argentina, Brasil, China, Estados Unidos, Inglaterra }
  • 39. enumerations ● Coleção de constantes definidas pelo usuário enum Paises{ Argentina=9, Brasil=6, China=5, Estados Unidos=13, Inglaterra=10 }
  • 40. switch case int a; switch (a){ case:1 //se a vale 1, executa este bloco break; case:2 //se a vale 2, executa este bloco break; default: //se a vale qualquer outro inteiro, executa este bloco }