Aula1

265 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
265
No SlideShare
0
A partir de incorporações
0
Número de incorporações
7
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula1

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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++

×