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 Introdução ao C++: Estruturas de Dados e Linguagem

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
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 

Semelhante a Introdução ao C++: Estruturas de Dados e Linguagem (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
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 

Último

Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfFernandaMota99
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
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
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 
Atividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxAtividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxDianaSheila2
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfGEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfElianeElika
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreElianeElika
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptxMarlene Cunhada
 

Último (20)

Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Aula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdfAula de História Ensino Médio Mesopotâmia.pdf
Aula de História Ensino Médio Mesopotâmia.pdf
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
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
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 
Atividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxAtividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptx
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdfGEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
GEOGRAFIA - ENSINO FUNDAMENTAL ANOS FINAIS.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestreCIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
CIÊNCIAS HUMANAS - ENSINO MÉDIO. 2024 2 bimestre
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
VARIEDADES LINGUÍSTICAS - 1. pptx
VARIEDADES        LINGUÍSTICAS - 1. pptxVARIEDADES        LINGUÍSTICAS - 1. pptx
VARIEDADES LINGUÍSTICAS - 1. pptx
 

Introdução ao C++: Estruturas de Dados e Linguagem

  • 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 }