A palestra introduz conceitos básicos de C++, incluindo estrutura de programas, variáveis, tipos de dados, vetores, objetos e classes. O documento discute como declarar e alocar variáveis e vetores dinamicamente em C++.
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++