Anda di halaman 1dari 26

Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao

Palestra: Introducao ao C++


Lucas Lellis
Rodrigo Torres
PESL - Programa de Educacao em Software livre
Universidade Federal de Sao Paulo
22 de Abril de 2014
Lellis e Torres Introducao ao C++ 1/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
1 Introdu cao
Recursos
C e C++
2 Conceitos Basicos
A estrutura de um programa
Variaveis, tipos de dados e operadores
Aloca cao de array primitivo
3 A Biblioteca padrao do C++
C++ Standard Library
Namespaces
4 Recursos interessantes
Containers, Templates e Operators
5 Bibliograa e Conclusao
Bibliograa
Lellis e Torres Introducao ao C++ 2/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Introducao
Foi desenvolvido por Bjarne Stroustrup em 1983, com o nome C
with classes
Considerada uma linguagem de medio nvel, pois combina
caractersticas de linguagens de alto e baixo nveis.
Possibilita um aprendizado gradual, voce vai aprendendo conforme
as necessidades dos seus projetos.
Surgiu a partir da linguagem C. Apesar disso, a sua forma de
programar e muito diferente.
Lellis e Torres Introducao ao C++ 3/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Lellis e Torres Introducao ao C++ 4/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Recursos

E uma C melhor
Suporta abstracao de dados
Suporte `a orienta cao a objetos
Heranca m ultipla
Programa cao generica (Templates)
Funcoes virtuais
Sobrecarga de operadores
Tratamento de excecoes
Lellis e Torres Introducao ao C++ 5/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
C e C++
Os codigos em C podem ser reaproveitados normalmente em C++,
assim, torna-se desnecessaria a reescritura dos codigos.
Muitas funcoes da biblioteca do C podem ser utilizadas em codigos
de C++, tornando mais facil a adapta cao dos desenvolvedores e de
seus projetos.
Sugestoes para programadores C:
Declare uma variavel somente quando for utiliza-la de fato, inclusive
dentro de la cos de repeti cao (for)
Nao use Malloc(), o operador new faz melhor a mesma tarefa. E,
em vez de realloc(), tente vector.
Procure utilizar as classes std::string e std::vector no lugar de arrays
primitivos.
Lellis e Torres Introducao ao C++ 6/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
A estrutura de um programa
Provavelmente, a melhor forma de aprender uma linguagem de
programacao e escrevendo um programa, vamos comecar lembrando
como seria uma implementacao em C do famoso programa Hello
World:
Exemplo - Hello World em C
//Exemplo do programa em C
#include <stdio.h>
#include <stdlib.h>
int main (){
printf("Hello World!");
return 0;
}
Lellis e Torres Introducao ao C++ 7/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
A estrutura basica do C e do C++, como chaves, lacos e fun coes e
identica.
Exemplo - Hello World em C++
#include <iostream>
using namespace std;
int main (){
cout << "Hello World!";
// ou std::cout << "Hello world!";
return (0);
}
Porem, muitas funcoes e bibliotecas nao sao mais utilizadas.
Lellis e Torres Introducao ao C++ 8/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Variaveis, tipos de dados e operadores
Em c odigos simples como esse, uma variavel nao inicalizada pode (ou
nao) receber um valor padrao ( 0 ).
Exemplo: Declara cao de variaveis em C++
int main () {
int a = 2, b(3), soma;
soma = a + b + 2;
return 0;
}
Cuidado ao nomear suas variaveis, elas nao podem sobrescrever os
identicadores, que sao palavras reservadas pela linguagem, nem
sobrescrever outras variaveis com o mesmo nome.
Lellis e Torres Introducao ao C++ 9/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Podemos citar alguns tipos de dados fundamentais:
Tipos fundamentais
bool Booleano*, possveis valores sao true ou false.
char Caractere, exemplo: a, z e 9.
int N umero inteiro, como 1, 12545 e 0.
short N umero inteiro pequeno
long N umero inteiro grande
oat N umero ponto utuante.
double N umero ponto utuante com dupla precisao.
long double N umero p. f. longo com dupla precisao.
*O tipo bool e o unico que ainda nao existia na linguagem C. Veja
tambem : http://migre.me/iSGsu
Lellis e Torres Introducao ao C++ 10/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Para qualquer um deles, podemos utilizar os seguintes operadores:
Operadores aritmeticos
+ soma
- subtracao
* multiplicacao
/ divisao
% resto da divisao
Operadores de compara cao
== igual
!= diferente
< menor
> maior
<= menor ou igual
>= maior ou igual
Lellis e Torres Introducao ao C++ 11/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Declaracao e alocacao dinamica de vetores
No C++, (inclusive o padrao antigo), e a partir do C99, podemos
declarar arrays primitivos com um tamanho X (variable-length automatic
arrays ) sem alocacao dinamica. Exemplo:
Declaracao de vetor de tamanho x
int main (){
int tamanho;
cin >> tamanho;
int vetor[tamanho]; //Isso nao e possivel em C
//Versao padrao do C
int * vetor = (int *) malloc(sizeof(int) * tamanho);
}
Vale lembrar que ainda iremos apresentar os containers, que substituiem
os arrays primitivos na maioria das situa coes.
Lellis e Torres Introducao ao C++ 12/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Alocacao dinamica com new
Alguns casos ainda irao exigir alocacao dinamica. Tarefa feita agora pelo
operador new, no lugar da fun cao malloc().
Aloca cao dinamica de uma matriz
int main (){
int lin, col;
cin >> lin >> col;
. //Cada posicao de mat e uma referencia para um vetor.
int** mat = new int* [lin];
//Preenchendo cada posicao de mat com um vetor
for(int i = 0; i < lin; i++){
mat[ i ] = new int [ col ];
}
}
Lellis e Torres Introducao ao C++ 13/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Desalocacao com delete
Analogamente, apresentamos o operador delete, que tem uma tarefa
oposta do new. Enquanto o new aloca um espaco na memoria, o
operador delete a libera, e tem a mesma funcao da fun cao free(),
utilizada em C.
Aloca cao dinamica de uma matriz
int main (){
int lin, col;
cin >> lin >> col;
. //Cada posicao de mat e uma referencia para um vetor.
int** mat = new int* [lin];
//Preenchendo cada posicao de mat com um vetor
for(int i = 0; i < lin; i++){
mat[ i ] = new int [ col ];
}
}
Lellis e Torres Introducao ao C++ 14/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Principais diferencas
As func oes new e delete possuem uma funcao alem das funcoes do C.
Sao elas que chamam os metodos construtores e destruidores de objetos.
Isso signica que todas as variaveis tem funcoes internas que ajudam o
computador a monta-las e desmancha-las corretamente.
E melhor, e por causa dos construtores que se, num descuido, nao
inicializarmos uma variavel do tipo int, ele e inicializado automaticamente
com o valor 0. Isso impede que erros mais graves aconte cam no seu
programa. Ainda assim, o compilador ira retornar uma warning como
esta:
warning: i is used uninitialized in this function
[-Wuninitialized]
Lellis e Torres Introducao ao C++ 15/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
C++ Standard Library
A biblioteca STD, chamada ocialmente de C++ Standard Library e a
biblioteca padrao do C++, e e uma colecao poderosa de classes, fun coes
e variaveis escritas na propria linguagem para facilitar o desenvolvimento
de aplicacoes. Tambem incorpora a biblioteca padrao do C, e todas suas
funcionalidades estao declaradas no espaco de nomes std.
A biblioteca padrao do C++ fornece varios containers genericos, funcoes
que utilizam e manipulam tais containers, fun coes-objeto, cadeias de
caracteres e streams genericos, suporte para algumas facilidades da
linguagem e fun coes de uso geral, como funcoes matematicas.
Lellis e Torres Introducao ao C++ 16/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Espacos de nomes
Espacos de nomes, ou namespaces e um delimitador abstrato que fornece
um contexto para as variaveis, funcoes, classes, e tudo mais que estiver
em seu domnio. Isso permite que duas bibliotecas diferentes tenham
func oes de mesmo nome, sem gerar conitos de compilacao. Da mesma
forma, quando uma fun cao esta num namespace, podemos criar uma
funcao, ou variavel diferente com o mesmo nome, desde que nao estejam
no mesmo domnio. A biblioteca STD esta abrigada no namespace std.
Exemplo
int main (){
std::cout << "Hello World" << std::endl;
}
Lellis e Torres Introducao ao C++ 17/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Criando namespaces
Podemos criar nossos proprios namespaces, e utiliza-los de duas formas
diferentes. Suponha que duas bibliotecas possuem funcoes diferentes
chamadas soma. A solucao para esteeqvoco e utilizar um namespace
para diferencia-las.
Criando namespaces
namespace a{
soma( int a1, int a2 );
}
namespace b{
soma( int b1, int b2 );
}
Lellis e Torres Introducao ao C++ 18/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Utilizando os Namespaces
Podemos utilizar aquelas funcoes de duas formas diferentes: A mais
completa na maioria dos casos e declarar qual o namespace da fun cao, ou
classe sempre que utilizados:
Diferenciando individualmente
int main(){
int i = a::soma( 1, 2 );
std::cout << b::soma( 1, 2 );
}
Lellis e Torres Introducao ao C++ 19/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Utilizando os Namespaces
Em situacoes mais simples, ( e controladas ), e nao precisamos nos
preocupar com os namespaces, podemos torna-los globais:
Declarando namespace global
using namespace std;
using namescape b;
int main{
int i = a::soma(1,2);
cout << soma(1,2); //std::cout << b::soma(1,2);
}
Lellis e Torres Introducao ao C++ 20/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
strings
O C++ oferece um suporte mais completo `as strings, agora denidas
pela classe std::string. Manipula-las se tornou uma tarefa muito mais
simples. Veja o exemplo abaixo:
Manipula cao de strings
int main (){
string nome = "Bjarne";
string sobrenome("Stroustrup");
string completo = nome + + sobrenome;
cout << "Seu nome completo eh: " << completo << endl;
return 0;
}
Veja mais em :
http://www.cplusplus.com/reference/string/string/
Lellis e Torres Introducao ao C++ 21/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Recursos interessantes
Nessa parte, serao apresentados alguns recursos interessantes do C++,
que serao trabalhados individualmente nas proximas palestras. Fique
atento `as atualiza coes da pagina ocial do PESL!
Lellis e Torres Introducao ao C++ 22/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Containers, Templates e Operators
O que sao Containers?
Containers sao classes especiais usadas para armazenar qualquer tipo de
objeto ou variavel. Muitas estruturas de dados conhecidas ja estao
implementadas na forma de container, como vetor, la e pilha, e o
melhor, eles podem ser aplicados para qualquer objeto ou variavel, basta
passar o tipo de dados ( ou a classe ) como parametro, ou seja, elas sao
classes Template.
Lellis e Torres Introducao ao C++ 23/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Template? Nunca ouvi falar..
Templates sao classes que recebem um tipo de dados como parametro.
Isso e uma caracterstica muito favoravel `a programacao generica,
permitindo que as mesmas linhas de codigo sejam aplicadas em outras
partes do programa, ou ate em outros projetos. Esse recurso e muito util
no desenvolvimento de bibliotecas de codigo aberto, ja que os usuarios
podem ter mais exibilidade 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 bem esses
recursos. Nas proximas palestras vamos apresentar cada um desses
recursos com muito mais cuidado, mostrando exemplos de codigos, e
fazendo exerccios durante a ocina.
Lellis e Torres Introducao ao C++ 24/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
Referencias Bibliogracas
Livros e Sites interessantes
1 Bjarne Stroustrup - A linguagem de programacao C++
2 Scott Meyers - Eective C++, Eective STL e More Eective 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
Lellis e Torres Introducao ao C++ 25/26
Introdu cao Conceitos Basicos A Biblioteca padrao do C++ Recursos interessantes Bibliograa e Conclusao
O que vem pela frente?
Fique de olho no nosso portal e na pagina ocial do facebook. Todos as
apresentacoes desse ciclo de palestras serao colocadas no moodle do
PESL!
Nossos canais de comunicacao
1 GRUPO do PESL - Curso de C++ : fb.com/groups/PESLCPP
2 Portal do Programa de Educa cao em Software Livre
http://pinguim.pro.br/
3 Facebook: https://fb.com/PESL.PInguim
4 Youtube: https://www.youtube.com/PinguimVideos
Uma versao antiga desta mesma aula ja esta disponvel online, em:
http://youtu.be/6CKqHUNvXEk
Lellis e Torres Introducao ao C++ 26/26

Anda mungkin juga menyukai