SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Palestra: Introdu¸c˜ao ao C++
Lucas Santana Lellis
lellis@unifesp.br
PESL - Programa de Educa¸c˜ao em Software livre
Universidade Federal de S˜ao Paulo
20 de Setembro de 2013
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
1 Introdu¸c˜ao
Recursos
C e C++
2 Conceitos B´asicos
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
3 Objetos e Classes
Objetos
Classes
4 Recursos interessantes
Containers, Templates e Operators
5 Bibliografia e Conclus˜ao
Bibliografia
O que vem pela frente?
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Recursos
C e C++
Introdu¸c˜ao
Foi desenvolvido por Bjarne Stroustrub em 1983, com o nome
”C with classes”
Considerada uma linguagem de m´edio n´ıvel, pois combina
caracter´ısticas de linguagens de alto e baixo n´ıveis.
Possibilita um aprendizado gradual, vocˆe vai aprendendo
conforme as necessidades dos seus projetos.
Surgiu a partir da linguagem C. Apesar disso, a sua forma de
programar ´e muito diferente.
Caracter´ısticas emprestadas das linguagens: Simula 67,
ALGOL 68, Ada, CLU e ML.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Recursos
C e C++
Recursos
´E uma C melhor
Suporta abstra¸c˜ao de dados
Suporte `a orienta¸c˜ao a objetos
Heran¸ca m´ultipla
Programa¸c˜ao gen´erica (Templates)
Fun¸c˜oes virtuais
Sobrecarga de operadores
Tratamento de exce¸c˜oes
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Recursos
C e C++
C e C++
Os c´odigos em C podem ser reaproveitados normalmente em
C++, assim, torna-se desnecess´aria a reescritura dos c´odigos.
Muitas fun¸c˜oes da biblioteca do C podem ser utilizadas em
c´odigos de C++, tornando mais f´acil a adapta¸c˜ao dos
desenvolvedores e de seus projetos.
Sugest˜oes para programadores C:
Declare uma vari´avel somente quando for utiliz´a-la de fato,
inclusive dentro de la¸cos de repeti¸c˜ao (for)
N˜ao use Malloc(), o operador new faz melhor a mesma tarefa.
E, em vez de realloc(), tente vector.
Minimize a utiliza¸c˜ao de arrays primitivos e strings ao estilo de
C. As classes string e vector da biblioteca padr˜ao do C++ s˜ao
mais completas e vers´ateis.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Conceitos B´asicos
Nesse trecho vamos aprender alguns conceitos b´asicos do C++:
A estrutura de um programa;
Os tipos de dados b´asicos e operadores;
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
A estrutura de um programa
Provavelmente, a melhor forma de aprender uma linguagem de
programa¸c˜ao ´e escrevendo um programa, vamos come¸car
lembrando como seria uma implementa¸c˜ao em C do famoso
programa ”Hello World”:
Exemplo 01 - Hello World em C
//Exemplo do programa em C
#include <stdio.h>
#include <stdlib.h>
int main ()
{
printf("Hello World!");
return 0;
}
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Vejamos agora, o mesmo programa escrito em C++:
Exemplo 02 - Hello World em C++
//Nosso primeiro programa em C++
#include <iostream>
using namespace std;
int main ()
{
cout << "Hello World!";
return 0;
}
A estrutura do programa em C++ ´e muito semelhante `a da
linguagem C. A declara¸c˜ao de vari´aveis e fun¸c˜oes, os coment´arios,
os agrupamentos e os la¸cos de repeti¸c˜ao permanecem os mesmos.
Percebe-se a utiliza¸c˜ao de novos operadores e fun¸c˜oes diferentes
para entrada e sa´ıda do console. A fun¸c˜ao cout imprime uma
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Vari´aveis, tipos de dados e operadores
Em C++, assim como era em C, ´e necess´ario declarar uma vari´avel
em um tipo de dados antes de poder utiliz´a-la, ela deve ser
declarada com um tipo e um nome. Por exemplo:
Exemplo 03: Declara¸c˜ao de vari´aveis em C++
int main () {
int a = 2, b(3), soma; /*Podemos declarar as valores
iniciais para as variaveis de duas formas diferentes*/
soma = a + b + 2;
return 0;
}
Cuidado ao nomear suas vari´aveis, elas n˜ao podem sobrescrever os
identificadores, que s˜ao palavras reservadas pela linguagem, nem
sobrescrever outras vari´aveis com o mesmo nome.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Podemos citar alguns tipos de dados fundamentais:
Tipos fundamentais
bool Booleano*, poss´ıveis valores s˜ao true ou false.
char Caract´ere, exemplo: ’a’, ’z’ e ’9’.
int N´umero inteiro, como 1, 12545 e 0.
short N´umero inteiro pequeno
long N´umero inteiro grande
float N´umero ponto flutuante.
double N´umero ponto flutuante com dupla precis˜ao.
ng double N´umero p. f. longo com dupla precis˜ao.
*O tipo bool ´e o ´unico que ainda n˜ao existia na linguagem C.
Obs. : Ao adicionar ”unsigned” antes de qualquer um desses tipos
retira-se a possibilidade de existirem numeros negativos.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Para qualquer um deles, podemos utilizar os seguintes operadores:
Operadores aritm´eticos
+ soma
- subtra¸c˜ao
* multiplica¸c˜ao
/ divis˜ao
% resto da divis˜ao
Operadores de compara¸c˜ao
== igual
!= diferente
< menor
> maior
<= menor ou igual
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
strings
O C++ oferece um suporte mais completo `as strings, agora
definidas pela classe ”string”. Manipul´a-las se tornou uma tarefa
muito mais simples. Veja o exemplo abaixo:
Exemplo 04 - Manipula¸c˜ao de strings
int main (){
string nome = "Bjarne";
string sobrenome("Stroustrup");
string completo = nome + ’ ’ + sobrenome;
cout << "Seu nome completo eh: " << completo << endl;
return 0;
}
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Um detalhe da linguagem C++, ´e que, para declarar um vetor, ou
matriz primitivos com um tamanho x, n˜ao ´e mais necess´ario
realizar a aloca¸c˜ao dinˆamica, exemplo:
Declara¸c˜ao de vetor de tamanho x
int main (){
int tamanho;
cin >> tamanho;
int[tamanho] vetor; //Isso nao e possivel em C
}
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
A estrutura de um programa
Vari´aveis, tipos de dados e operadores
Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores
Em alguns casos n˜ao ´e poss´ıvel declarar um vetor, ou matriz
diretamente, a aloca¸c˜ao dinˆamica de vari´aveis agora ´e feita atrav´es
do operador new:
Aloca¸c˜ao dinˆamica de uma matriz
int main (){
int lin, col;
cin >> lin >> col;
int** mat = new int* [lin]; //Alocando um vetor de
ponteiros
for(int i = 0; i < lin; i++){
mat[ i ] = new int [ col ];
}
}
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Objetos
Classes
Objetos
O Mundo Real ´e formado por objetos que interagem entre si (casa,
carro, aluno, professor, etc)
O que ´e um objeto?
Qualquer coisa, real ou abstrata, com limites e significados bem
definidos para a aplica¸c˜ao. Possuem um estado (valores de
atributos) e oferecem opera¸c˜oes (comportamentos) para examinar
ou alterar este estado.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Objetos
Classes
Podemos representar um objeto como uma entidade individual, que
possui seus atributos e suas fun¸c˜oes.
Em C++, os atributos seriam as vari´aveis que guardam suas
informa¸c˜oes. E as fun¸c˜oes, ou ( m´etodos ), s˜ao fun¸c˜oes usadas
para interagir com esse objeto, como uma fun¸c˜ao usada para
mudar algum atributo, por exemplo.
Pera a´ı!
S´o um detalhe, n´os n˜ao programamos objetos diretamente!!
Temos que criar uma CLASSE de objetos antes.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Objetos
Classes
Classes
O que ´e uma classe?
´E uma forma de CLASSIFICAR um tipo de objetos.. Ou seja,
quando dois objetos possuem o mesmo tipo de atributos e as
mesmas fun¸c˜oes, eles pertencem a uma mesma classe.
Assim que criamos uma classe, podemos INSTANCIAR um objeto,
com seus respectivos atributos, que s˜ao individuais para cada
objeto.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Objetos
Classes
Classes em C++
Declarando uma classe.
class nome_da_classe {
//Atributos
int X, Y;
public:
//Metodos
int funcao ( int val ) {
return ( X*val + Y );
}
};
Podemos decidir ”o quˆe” e ”como” as outras classes interagem
com a nossa classe. Por meio do ”encapsulamento”, que ser´a
melhor trabalhado nas pr´oximas palestras.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Containers, Templates e Operators
Recursos interessantes
Nessa parte, ser˜ao apresentados alguns recursos interessantes do
C++, que ser˜ao trabalhados individualmente nas pr´oximas
palestras. Fique atento `as atualiza¸c˜oes da p´agina oficial do PESL!
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Containers, Templates e Operators
Containers, Templates e Operators
O que s˜ao Containers?
Containers s˜ao classes especiais usadas para armazenar qualquer
tipo de objeto ou vari´avel. Muitas estruturas de dados conhecidas
j´a est˜ao implementadas na forma de container, como vetor, fila e
pilha, e o melhor, eles podem ser aplicados para qualquer objeto ou
vari´avel, basta passar o tipo de dados ( ou a classe ) como
parˆametro, ou seja, elas s˜ao classes ”Template”.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Containers, Templates e Operators
Template? Nunca ouvi falar..
Templates s˜ao classes que recebem um tipo de dados, ou at´e outra
classe como parˆametro, ´e uma caracter´ıstica muito favor´avel `a
programa¸c˜ao gen´erica, permitindo que as mesmas linhas de c´odigo
sejam aplicadas em outras partes do programa, ou at´e em outros
projetos. Esse recurso ´e muito ´util no desenvolvimento de
bibliotecas de c´odigo aberto, j´a que os usu´arios podem ter mais
flexibilidade ao usar seus recursos.
Vocˆes ainda v˜ao precisar de um tempo para aprender a usar classes,
e um pouco mais de experiˆencia em C++ para usar e explorar bem
esses recursos. Nas pr´oximas palestras vamos apresentar cada um
desses recursos com muito mais cuidado, mostrando exemplos de
c´odigos, e fazendo exerc´ıcios durante a oficina.
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Bibliografia
O que vem pela frente?
Referˆencias Bibliogr´aficas
Livros e Sites interessantes
1 Bjarne Stroustrup - A linguagem de programa¸c˜ao C++
2 Scott Meyers - Effective C++, Effective STL e More Effective
C++
3 http://www.cplusplus.com/
4 http://www.cplusplus.com/doc/tutorial/
5 http://punchlet.wordpress.com/
6 http://stackoverflow.com/
7 http://www.parashift.com/c++-faq-lite/index.html
Lucas Lellis Introdu¸c˜ao ao C++
Introdu¸c˜ao
Conceitos B´asicos
Objetos e Classes
Recursos interessantes
Bibliografia e Conclus˜ao
Bibliografia
O que vem pela frente?
O que vem pela frente?
Teremos, em breve, um ciclo de palestras, para podermos explorar
essa linguagem ao m´aximo.. Fique de olho no nosso portal e na
p´agina oficial do facebook. Todos as apresenta¸c˜oes desse ciclo de
palestras ser˜ao colocadas no moodle do PESL!
Nossos canais de comunica¸c˜ao
1 MOODLE do PESL - Curso de C++ :
http://pinguim.pro.br/moodle/course/view.php?id=6
2 Portal do Programa de Educa¸c˜ao em Software Livre
http://pinguim.pro.br/
3 Facebook: https://www.facebook.com/PESL.PInguim
4 Youtube: http://www.youtube.com/user/pinguimvideos/
Lucas Lellis Introdu¸c˜ao ao C++

Weitere ähnliche Inhalte

Was ist angesagt?

Equacoes do 1 grau
Equacoes do 1 grauEquacoes do 1 grau
Equacoes do 1 grau
estrelaeia
 

Was ist angesagt? (20)

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)
 
Apostila Microsoft Office Word 2016
Apostila Microsoft Office Word 2016Apostila Microsoft Office Word 2016
Apostila Microsoft Office Word 2016
 
Introdução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos BásicosIntrodução a Algoritmos: Conceitos Básicos
Introdução a Algoritmos: Conceitos Básicos
 
Juros simples e compostos
Juros simples e compostosJuros simples e compostos
Juros simples e compostos
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Sistema binario
Sistema binarioSistema binario
Sistema binario
 
Informática básica-01
Informática básica-01Informática básica-01
Informática básica-01
 
Apresentação Scratch
Apresentação ScratchApresentação Scratch
Apresentação Scratch
 
Excel Básico
Excel BásicoExcel Básico
Excel Básico
 
Função de 1º Grau.
Função de 1º Grau.Função de 1º Grau.
Função de 1º Grau.
 
Excel basico
Excel basicoExcel basico
Excel basico
 
Equacoes do 1 grau
Equacoes do 1 grauEquacoes do 1 grau
Equacoes do 1 grau
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Programação orientada à objetos & mvc
Programação orientada à objetos & mvcProgramação orientada à objetos & mvc
Programação orientada à objetos & mvc
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Lógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetiçãoLógica de Programação - Estrutura de repetição
Lógica de Programação - Estrutura de repetição
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 

Andere mochten auch

Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionais
Pacc UAB
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
Pacc UAB
 

Andere mochten auch (14)

SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
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,...
 
599026
599026599026
599026
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionais
 
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 )
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
C++ Presentation
C++ PresentationC++ Presentation
C++ Presentation
 
C++ programming
C++ programmingC++ programming
C++ programming
 

Ähnlich wie Aula 01 - Introdução ao C++

ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
biandamakengo08
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Flávio Freitas
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Flávio Freitas
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
Infogenius
 

Ähnlich wie Aula 01 - Introdução ao C++ (20)

Aula02
Aula02Aula02
Aula02
 
Aula03
Aula03Aula03
Aula03
 
Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Introdução ao LINQ
Introdução ao LINQIntrodução ao LINQ
Introdução ao LINQ
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Aula 04 - Templates e Operators
Aula 04 - Templates e OperatorsAula 04 - Templates e Operators
Aula 04 - Templates e Operators
 
Aula04
Aula04Aula04
Aula04
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Introducao basica-linguagem-java
Introducao basica-linguagem-javaIntroducao basica-linguagem-java
Introducao basica-linguagem-java
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
Palestra: LINQ via C#
Palestra: LINQ via C# Palestra: LINQ via C#
Palestra: LINQ via C#
 
Apostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NETApostila - Desenvolvimento Web com ASP.NET
Apostila - Desenvolvimento Web com ASP.NET
 
apostila-desenvolvimento-asp-net
 apostila-desenvolvimento-asp-net apostila-desenvolvimento-asp-net
apostila-desenvolvimento-asp-net
 
Tutorial aed iii 003 - algoritmo de ordenação shellsort
Tutorial aed iii   003 - algoritmo de ordenação shellsortTutorial aed iii   003 - algoritmo de ordenação shellsort
Tutorial aed iii 003 - algoritmo de ordenação shellsort
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
LabTeX Presentation
LabTeX  PresentationLabTeX  Presentation
LabTeX Presentation
 

Mehr von PeslPinguim

Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
PeslPinguim
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
PeslPinguim
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
PeslPinguim
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
PeslPinguim
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
PeslPinguim
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
PeslPinguim
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
PeslPinguim
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
PeslPinguim
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
PeslPinguim
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
PeslPinguim
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
PeslPinguim
 

Mehr von PeslPinguim (20)

Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Aula 4 redes Inclusão Digital
Aula 4 redes Inclusão DigitalAula 4 redes Inclusão Digital
Aula 4 redes Inclusão Digital
 
Aula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão DigitalAula 3 parte 2 software Inclusão Digital
Aula 3 parte 2 software Inclusão Digital
 
Aula 3 software Inclusão Digital
Aula 3 software Inclusão DigitalAula 3 software Inclusão Digital
Aula 3 software Inclusão Digital
 
Aula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão DigitalAula 2 parte 2 hardware Inclusão Digital
Aula 2 parte 2 hardware Inclusão Digital
 
Aula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão DigitalAula 2 hardware Inclusão Digital
Aula 2 hardware Inclusão Digital
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Aula 1 apresentacao
Aula 1 apresentacaoAula 1 apresentacao
Aula 1 apresentacao
 
Aula 5 internet Inclusão Digital
Aula 5 internet Inclusão DigitalAula 5 internet Inclusão Digital
Aula 5 internet Inclusão Digital
 
Apresentação1_
Apresentação1_Apresentação1_
Apresentação1_
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5Curso Básico de Java - Aula 5
Curso Básico de Java - Aula 5
 
Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4Curso Básico de Java - Aula 4
Curso Básico de Java - Aula 4
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7Curso Básico de Java - Aula 7
Curso Básico de Java - Aula 7
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9Curso Básico de Java - Aula 9
Curso Básico de Java - Aula 9
 
Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8 Curso Básico de Java - Aula 8
Curso Básico de Java - Aula 8
 
Eletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoroEletrônica aplicada - interruptor sonoro
Eletrônica aplicada - interruptor sonoro
 

Kürzlich hochgeladen

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Kürzlich hochgeladen (20)

Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
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
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
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
 

Aula 01 - Introdução ao C++

  • 1. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Palestra: Introdu¸c˜ao ao C++ Lucas Santana Lellis lellis@unifesp.br PESL - Programa de Educa¸c˜ao em Software livre Universidade Federal de S˜ao Paulo 20 de Setembro de 2013 Lucas Lellis Introdu¸c˜ao ao C++
  • 2. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao 1 Introdu¸c˜ao Recursos C e C++ 2 Conceitos B´asicos A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores 3 Objetos e Classes Objetos Classes 4 Recursos interessantes Containers, Templates e Operators 5 Bibliografia e Conclus˜ao Bibliografia O que vem pela frente? Lucas Lellis Introdu¸c˜ao ao C++
  • 3. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Recursos C e C++ Introdu¸c˜ao Foi desenvolvido por Bjarne Stroustrub em 1983, com o nome ”C with classes” Considerada uma linguagem de m´edio n´ıvel, pois combina caracter´ısticas de linguagens de alto e baixo n´ıveis. Possibilita um aprendizado gradual, vocˆe vai aprendendo conforme as necessidades dos seus projetos. Surgiu a partir da linguagem C. Apesar disso, a sua forma de programar ´e muito diferente. Caracter´ısticas emprestadas das linguagens: Simula 67, ALGOL 68, Ada, CLU e ML. Lucas Lellis Introdu¸c˜ao ao C++
  • 4. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Recursos C e C++ Recursos ´E uma C melhor Suporta abstra¸c˜ao de dados Suporte `a orienta¸c˜ao a objetos Heran¸ca m´ultipla Programa¸c˜ao gen´erica (Templates) Fun¸c˜oes virtuais Sobrecarga de operadores Tratamento de exce¸c˜oes Lucas Lellis Introdu¸c˜ao ao C++
  • 5. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Recursos C e C++ C e C++ Os c´odigos em C podem ser reaproveitados normalmente em C++, assim, torna-se desnecess´aria a reescritura dos c´odigos. Muitas fun¸c˜oes da biblioteca do C podem ser utilizadas em c´odigos de C++, tornando mais f´acil a adapta¸c˜ao dos desenvolvedores e de seus projetos. Sugest˜oes para programadores C: Declare uma vari´avel somente quando for utiliz´a-la de fato, inclusive dentro de la¸cos de repeti¸c˜ao (for) N˜ao use Malloc(), o operador new faz melhor a mesma tarefa. E, em vez de realloc(), tente vector. Minimize a utiliza¸c˜ao de arrays primitivos e strings ao estilo de C. As classes string e vector da biblioteca padr˜ao do C++ s˜ao mais completas e vers´ateis. Lucas Lellis Introdu¸c˜ao ao C++
  • 6. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Conceitos B´asicos Nesse trecho vamos aprender alguns conceitos b´asicos do C++: A estrutura de um programa; Os tipos de dados b´asicos e operadores; Lucas Lellis Introdu¸c˜ao ao C++
  • 7. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores A estrutura de um programa Provavelmente, a melhor forma de aprender uma linguagem de programa¸c˜ao ´e escrevendo um programa, vamos come¸car lembrando como seria uma implementa¸c˜ao em C do famoso programa ”Hello World”: Exemplo 01 - Hello World em C //Exemplo do programa em C #include <stdio.h> #include <stdlib.h> int main () { printf("Hello World!"); return 0; } Lucas Lellis Introdu¸c˜ao ao C++
  • 8. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Vejamos agora, o mesmo programa escrito em C++: Exemplo 02 - Hello World em C++ //Nosso primeiro programa em C++ #include <iostream> using namespace std; int main () { cout << "Hello World!"; return 0; } A estrutura do programa em C++ ´e muito semelhante `a da linguagem C. A declara¸c˜ao de vari´aveis e fun¸c˜oes, os coment´arios, os agrupamentos e os la¸cos de repeti¸c˜ao permanecem os mesmos. Percebe-se a utiliza¸c˜ao de novos operadores e fun¸c˜oes diferentes para entrada e sa´ıda do console. A fun¸c˜ao cout imprime uma Lucas Lellis Introdu¸c˜ao ao C++
  • 9. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Vari´aveis, tipos de dados e operadores Em C++, assim como era em C, ´e necess´ario declarar uma vari´avel em um tipo de dados antes de poder utiliz´a-la, ela deve ser declarada com um tipo e um nome. Por exemplo: Exemplo 03: Declara¸c˜ao de vari´aveis em C++ int main () { int a = 2, b(3), soma; /*Podemos declarar as valores iniciais para as variaveis de duas formas diferentes*/ soma = a + b + 2; return 0; } Cuidado ao nomear suas vari´aveis, elas n˜ao podem sobrescrever os identificadores, que s˜ao palavras reservadas pela linguagem, nem sobrescrever outras vari´aveis com o mesmo nome. Lucas Lellis Introdu¸c˜ao ao C++
  • 10. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Podemos citar alguns tipos de dados fundamentais: Tipos fundamentais bool Booleano*, poss´ıveis valores s˜ao true ou false. char Caract´ere, exemplo: ’a’, ’z’ e ’9’. int N´umero inteiro, como 1, 12545 e 0. short N´umero inteiro pequeno long N´umero inteiro grande float N´umero ponto flutuante. double N´umero ponto flutuante com dupla precis˜ao. ng double N´umero p. f. longo com dupla precis˜ao. *O tipo bool ´e o ´unico que ainda n˜ao existia na linguagem C. Obs. : Ao adicionar ”unsigned” antes de qualquer um desses tipos retira-se a possibilidade de existirem numeros negativos. Lucas Lellis Introdu¸c˜ao ao C++
  • 11. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Para qualquer um deles, podemos utilizar os seguintes operadores: Operadores aritm´eticos + soma - subtra¸c˜ao * multiplica¸c˜ao / divis˜ao % resto da divis˜ao Operadores de compara¸c˜ao == igual != diferente < menor > maior <= menor ou igual Lucas Lellis Introdu¸c˜ao ao C++
  • 12. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores strings O C++ oferece um suporte mais completo `as strings, agora definidas pela classe ”string”. Manipul´a-las se tornou uma tarefa muito mais simples. Veja o exemplo abaixo: Exemplo 04 - Manipula¸c˜ao de strings int main (){ string nome = "Bjarne"; string sobrenome("Stroustrup"); string completo = nome + ’ ’ + sobrenome; cout << "Seu nome completo eh: " << completo << endl; return 0; } Lucas Lellis Introdu¸c˜ao ao C++
  • 13. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Um detalhe da linguagem C++, ´e que, para declarar um vetor, ou matriz primitivos com um tamanho x, n˜ao ´e mais necess´ario realizar a aloca¸c˜ao dinˆamica, exemplo: Declara¸c˜ao de vetor de tamanho x int main (){ int tamanho; cin >> tamanho; int[tamanho] vetor; //Isso nao e possivel em C } Lucas Lellis Introdu¸c˜ao ao C++
  • 14. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao A estrutura de um programa Vari´aveis, tipos de dados e operadores Declara¸c˜ao e aloca¸c˜ao dinˆamica de vetores Em alguns casos n˜ao ´e poss´ıvel declarar um vetor, ou matriz diretamente, a aloca¸c˜ao dinˆamica de vari´aveis agora ´e feita atrav´es do operador new: Aloca¸c˜ao dinˆamica de uma matriz int main (){ int lin, col; cin >> lin >> col; int** mat = new int* [lin]; //Alocando um vetor de ponteiros for(int i = 0; i < lin; i++){ mat[ i ] = new int [ col ]; } } Lucas Lellis Introdu¸c˜ao ao C++
  • 15. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Objetos Classes Objetos O Mundo Real ´e formado por objetos que interagem entre si (casa, carro, aluno, professor, etc) O que ´e um objeto? Qualquer coisa, real ou abstrata, com limites e significados bem definidos para a aplica¸c˜ao. Possuem um estado (valores de atributos) e oferecem opera¸c˜oes (comportamentos) para examinar ou alterar este estado. Lucas Lellis Introdu¸c˜ao ao C++
  • 16. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Objetos Classes Podemos representar um objeto como uma entidade individual, que possui seus atributos e suas fun¸c˜oes. Em C++, os atributos seriam as vari´aveis que guardam suas informa¸c˜oes. E as fun¸c˜oes, ou ( m´etodos ), s˜ao fun¸c˜oes usadas para interagir com esse objeto, como uma fun¸c˜ao usada para mudar algum atributo, por exemplo. Pera a´ı! S´o um detalhe, n´os n˜ao programamos objetos diretamente!! Temos que criar uma CLASSE de objetos antes. Lucas Lellis Introdu¸c˜ao ao C++
  • 17. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Objetos Classes Classes O que ´e uma classe? ´E uma forma de CLASSIFICAR um tipo de objetos.. Ou seja, quando dois objetos possuem o mesmo tipo de atributos e as mesmas fun¸c˜oes, eles pertencem a uma mesma classe. Assim que criamos uma classe, podemos INSTANCIAR um objeto, com seus respectivos atributos, que s˜ao individuais para cada objeto. Lucas Lellis Introdu¸c˜ao ao C++
  • 18. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Objetos Classes Classes em C++ Declarando uma classe. class nome_da_classe { //Atributos int X, Y; public: //Metodos int funcao ( int val ) { return ( X*val + Y ); } }; Podemos decidir ”o quˆe” e ”como” as outras classes interagem com a nossa classe. Por meio do ”encapsulamento”, que ser´a melhor trabalhado nas pr´oximas palestras. Lucas Lellis Introdu¸c˜ao ao C++
  • 19. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Containers, Templates e Operators Recursos interessantes Nessa parte, ser˜ao apresentados alguns recursos interessantes do C++, que ser˜ao trabalhados individualmente nas pr´oximas palestras. Fique atento `as atualiza¸c˜oes da p´agina oficial do PESL! Lucas Lellis Introdu¸c˜ao ao C++
  • 20. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Containers, Templates e Operators Containers, Templates e Operators O que s˜ao Containers? Containers s˜ao classes especiais usadas para armazenar qualquer tipo de objeto ou vari´avel. Muitas estruturas de dados conhecidas j´a est˜ao implementadas na forma de container, como vetor, fila e pilha, e o melhor, eles podem ser aplicados para qualquer objeto ou vari´avel, basta passar o tipo de dados ( ou a classe ) como parˆametro, ou seja, elas s˜ao classes ”Template”. Lucas Lellis Introdu¸c˜ao ao C++
  • 21. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Containers, Templates e Operators Template? Nunca ouvi falar.. Templates s˜ao classes que recebem um tipo de dados, ou at´e outra classe como parˆametro, ´e uma caracter´ıstica muito favor´avel `a programa¸c˜ao gen´erica, permitindo que as mesmas linhas de c´odigo sejam aplicadas em outras partes do programa, ou at´e em outros projetos. Esse recurso ´e muito ´util no desenvolvimento de bibliotecas de c´odigo aberto, j´a que os usu´arios podem ter mais flexibilidade ao usar seus recursos. Vocˆes ainda v˜ao precisar de um tempo para aprender a usar classes, e um pouco mais de experiˆencia em C++ para usar e explorar bem esses recursos. Nas pr´oximas palestras vamos apresentar cada um desses recursos com muito mais cuidado, mostrando exemplos de c´odigos, e fazendo exerc´ıcios durante a oficina. Lucas Lellis Introdu¸c˜ao ao C++
  • 22. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Bibliografia O que vem pela frente? Referˆencias Bibliogr´aficas Livros e Sites interessantes 1 Bjarne Stroustrup - A linguagem de programa¸c˜ao C++ 2 Scott Meyers - Effective C++, Effective STL e More Effective C++ 3 http://www.cplusplus.com/ 4 http://www.cplusplus.com/doc/tutorial/ 5 http://punchlet.wordpress.com/ 6 http://stackoverflow.com/ 7 http://www.parashift.com/c++-faq-lite/index.html Lucas Lellis Introdu¸c˜ao ao C++
  • 23. Introdu¸c˜ao Conceitos B´asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ao Bibliografia O que vem pela frente? O que vem pela frente? Teremos, em breve, um ciclo de palestras, para podermos explorar essa linguagem ao m´aximo.. Fique de olho no nosso portal e na p´agina oficial do facebook. Todos as apresenta¸c˜oes desse ciclo de palestras ser˜ao colocadas no moodle do PESL! Nossos canais de comunica¸c˜ao 1 MOODLE do PESL - Curso de C++ : http://pinguim.pro.br/moodle/course/view.php?id=6 2 Portal do Programa de Educa¸c˜ao em Software Livre http://pinguim.pro.br/ 3 Facebook: https://www.facebook.com/PESL.PInguim 4 Youtube: http://www.youtube.com/user/pinguimvideos/ Lucas Lellis Introdu¸c˜ao ao C++