Aula 01 - Introdução ao C++

23
Introdu¸ ao Conceitos B´ asicos Objetos e Classes Recursos interessantes Bibliografia e Conclus˜ ao Palestra:Introdu¸c˜ ao ao C++ Lucas Santana Lellis [email protected] PESL - Programa de Educa¸ ao em Software livre Universidade Federal de S˜ ao Paulo 20 de Setembro de 2013 Lucas Lellis Introdu¸ ao ao C++

description

Nessa aula apresentamos um breve histórico sobre a linguagem, comparando com a linguagem C. O foco deste curso é oferecer novas ferramentas para quem já sabe um pouco de C e POO ( Java .. ).

Transcript of Aula 01 - Introdução ao C++

Page 1: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

Palestra: Introducao ao C++

Lucas Santana [email protected]

PESL - Programa de Educacao em Software livreUniversidade Federal de Sao Paulo

20 de Setembro de 2013

Lucas Lellis Introducao ao C++

Page 2: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

1 IntroducaoRecursosC e C++

2 Conceitos BasicosA estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

3 Objetos e ClassesObjetosClasses

4 Recursos interessantesContainers, Templates e Operators

5 Bibliografia e ConclusaoBibliografiaO que vem pela frente?

Lucas Lellis Introducao ao C++

Page 3: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

RecursosC e C++

Introducao

Foi desenvolvido por Bjarne Stroustrub em 1983, com o nome”C with classes”

Considerada uma linguagem de medio nıvel, pois combinacaracterısticas de linguagens de alto e baixo nıveis.

Possibilita um aprendizado gradual, voce vai aprendendoconforme as necessidades dos seus projetos.

Surgiu a partir da linguagem C. Apesar disso, a sua forma deprogramar e muito diferente.

Caracterısticas emprestadas das linguagens: Simula 67,ALGOL 68, Ada, CLU e ML.

Lucas Lellis Introducao ao C++

Page 4: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

RecursosC e C++

Recursos

E uma C melhor

Suporta abstracao de dados

Suporte a orientacao a objetos

Heranca multipla

Programacao generica (Templates)

Funcoes virtuais

Sobrecarga de operadores

Tratamento de excecoes

Lucas Lellis Introducao ao C++

Page 5: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

RecursosC e C++

C e C++

Os codigos em C podem ser reaproveitados normalmente emC++, assim, torna-se desnecessaria a reescritura dos codigos.

Muitas funcoes da biblioteca do C podem ser utilizadas emcodigos de C++, tornando mais facil a adaptacao dosdesenvolvedores e de seus projetos.

Sugestoes para programadores C:

Declare uma variavel somente quando for utiliza-la de fato,inclusive dentro de lacos de repeticao (for)

Nao use Malloc(), o operador new faz melhor a mesma tarefa.E, em vez de realloc(), tente vector.

Minimize a utilizacao de arrays primitivos e strings ao estilo deC. As classes string e vector da biblioteca padrao do C++ saomais completas e versateis.

Lucas Lellis Introducao ao C++

Page 6: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

Conceitos Basicos

Nesse trecho vamos aprender alguns conceitos basicos do C++:

A estrutura de um programa;

Os tipos de dados basicos e operadores;

Lucas Lellis Introducao ao C++

Page 7: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

A estrutura de um programa

Provavelmente, a melhor forma de aprender uma linguagem deprogramacao e escrevendo um programa, vamos comecarlembrando como seria uma implementacao em C do famosoprograma ”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 Introducao ao C++

Page 8: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica 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 dalinguagem C. A declaracao de variaveis e funcoes, os comentarios,os agrupamentos e os lacos de repeticao permanecem os mesmos.Percebe-se a utilizacao de novos operadores e funcoes diferentespara entrada e saıda do console. A funcao cout imprime umavariavel de entrada no console.

Lucas Lellis Introducao ao C++

Page 9: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

Variaveis, tipos de dados e operadores

Em C++, assim como era em C, e necessario declarar uma variavelem um tipo de dados antes de poder utiliza-la, ela deve serdeclarada com um tipo e um nome. Por exemplo:

Exemplo 03: Declaracao de variaveis 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 variaveis, elas nao podem sobrescrever osidentificadores, que sao palavras reservadas pela linguagem, nemsobrescrever outras variaveis com o mesmo nome.

Lucas Lellis Introducao ao C++

Page 10: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

Podemos citar alguns tipos de dados fundamentais:

Tipos fundamentais

bool Booleano*, possıveis valores sao true ou false.

char Caractere, exemplo: ’a’, ’z’ e ’9’.

int Numero inteiro, como 1, 12545 e 0.

short Numero inteiro pequeno

long Numero inteiro grande

float Numero ponto flutuante.

double Numero ponto flutuante com dupla precisao.

long double Numero p. f. longo com dupla precisao.

*O tipo bool e o unico que ainda nao existia na linguagem C.Obs. : Ao adicionar ”unsigned” antes de qualquer um desses tiposretira-se a possibilidade de existirem numeros negativos.

Lucas Lellis Introducao ao C++

Page 11: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

Para qualquer um deles, podemos utilizar os seguintes operadores:

Operadores aritmeticos

+ soma

- subtracao

* multiplicacao

/ divisao

% resto da divisao

Operadores de comparacao

== igual

!= diferente

< menor

> maior

<= menor ou igual

>= maior ou igual Lucas Lellis Introducao ao C++

Page 12: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

strings

O C++ oferece um suporte mais completo as strings, agoradefinidas pela classe ”string”. Manipula-las se tornou uma tarefamuito mais simples. Veja o exemplo abaixo:

Exemplo 04 - Manipulacao 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 Introducao ao C++

Page 13: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

Declaracao e alocacao dinamica de vetores

Um detalhe da linguagem C++, e que, para declarar um vetor, oumatriz primitivos com um tamanho x, nao e mais necessariorealizar a alocacao dinamica, exemplo:

Declaracao de vetor de tamanho x

int main (){

int tamanho;

cin >> tamanho;

int[tamanho] vetor; //Isso nao e possivel em C

}

Lucas Lellis Introducao ao C++

Page 14: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

A estrutura de um programaVariaveis, tipos de dados e operadoresDeclaracao e alocacao dinamica de vetores

Em alguns casos nao e possıvel declarar um vetor, ou matrizdiretamente, a alocacao dinamica de variaveis agora e feita atravesdo operador new:

Alocacao dinamica 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 Introducao ao C++

Page 15: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

ObjetosClasses

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 bemdefinidos para a aplicacao. Possuem um estado (valores deatributos) e oferecem operacoes (comportamentos) para examinarou alterar este estado.

Lucas Lellis Introducao ao C++

Page 16: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

ObjetosClasses

Podemos representar um objeto como uma entidade individual, quepossui seus atributos e suas funcoes.Em C++, os atributos seriam as variaveis que guardam suasinformacoes. E as funcoes, ou ( metodos ), sao funcoes usadaspara interagir com esse objeto, como uma funcao usada paramudar algum atributo, por exemplo.

Pera aı!

So um detalhe, nos nao programamos objetos diretamente!!Temos que criar uma CLASSE de objetos antes.

Lucas Lellis Introducao ao C++

Page 17: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

ObjetosClasses

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 asmesmas funcoes, eles pertencem a uma mesma classe.Assim que criamos uma classe, podemos INSTANCIAR um objeto,com seus respectivos atributos, que sao individuais para cadaobjeto.

Lucas Lellis Introducao ao C++

Page 18: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

ObjetosClasses

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 que” e ”como” as outras classes interagemcom a nossa classe. Por meio do ”encapsulamento”, que seramelhor trabalhado nas proximas palestras.

Lucas Lellis Introducao ao C++

Page 19: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

Containers, Templates e Operators

Recursos interessantes

Nessa parte, serao apresentados alguns recursos interessantes doC++, que serao trabalhados individualmente nas proximaspalestras. Fique atento as atualizacoes da pagina oficial do PESL!

Lucas Lellis Introducao ao C++

Page 20: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

Containers, Templates e Operators

Containers, Templates e Operators

O que sao Containers?

Containers sao classes especiais usadas para armazenar qualquertipo de objeto ou variavel. Muitas estruturas de dados conhecidasja estao implementadas na forma de container, como vetor, fila epilha, e o melhor, eles podem ser aplicados para qualquer objeto ouvariavel, basta passar o tipo de dados ( ou a classe ) comoparametro, ou seja, elas sao classes ”Template”.

Lucas Lellis Introducao ao C++

Page 21: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

Containers, Templates e Operators

Template? Nunca ouvi falar..

Templates sao classes que recebem um tipo de dados, ou ate outraclasse como parametro, e uma caracterıstica muito favoravel aprogramacao generica, permitindo que as mesmas linhas de codigosejam aplicadas em outras partes do programa, ou ate em outrosprojetos. Esse recurso e muito util no desenvolvimento debibliotecas de codigo aberto, ja que os usuarios podem ter maisflexibilidade ao usar seus recursos.

Voces ainda vao precisar de um tempo para aprender a usar classes,e um pouco mais de experiencia em C++ para usar e explorar bemesses recursos. Nas proximas palestras vamos apresentar cada umdesses recursos com muito mais cuidado, mostrando exemplos decodigos, e fazendo exercıcios durante a oficina.

Lucas Lellis Introducao ao C++

Page 22: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

BibliografiaO que vem pela frente?

Referencias Bibliograficas

Livros e Sites interessantes

1 Bjarne Stroustrup - A linguagem de programacao C++

2 Scott Meyers - Effective C++, Effective STL e More EffectiveC++

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 Introducao ao C++

Page 23: Aula 01 - Introdução ao C++

IntroducaoConceitos BasicosObjetos e Classes

Recursos interessantesBibliografia e Conclusao

BibliografiaO que vem pela frente?

O que vem pela frente?

Teremos, em breve, um ciclo de palestras, para podermos exploraressa linguagem ao maximo.. Fique de olho no nosso portal e napagina oficial do facebook. Todos as apresentacoes desse ciclo depalestras serao colocadas no moodle do PESL!

Nossos canais de comunicacao

1 MOODLE do PESL - Curso de C++ :http://pinguim.pro.br/moodle/course/view.php?id=6

2 Portal do Programa de Educacao em Software Livrehttp://pinguim.pro.br/

3 Facebook: https://www.facebook.com/PESL.PInguim

4 Youtube: http://www.youtube.com/user/pinguimvideos/

Lucas Lellis Introducao ao C++