Você está na página 1de 47

Aula 01

Introduo
Sintaxe Bsica em C++
Tipos Primitivos de Variveis
INTRODUO
A IEEE ComSoc UnB

Email: comsoc.unb@ieee.org
Site: ieee.org/ComSocUnB
Facebook: facebook.com/ComSocUnB/
Introduo ao Curso

Curso Bsico de Programao em C++


Instrutores:
Bruno Dutra: bruno.dutra@ieee.org
Rafael Silva: rafael.jorge09@ieee.org
Calil Queiroz: calil.queiroz@ieee.org
Data: 21/08 a 01/09, de segunda a sexta
Horrio: 12:15 s 13:45
Local: LCCC
Dvidas, enviem e-mail para os instrutores.
Cronograma
Aula Data Temas e atividades programadas
1 21/08 Introduo, Sintaxe Bsica em C++, Tipos Primitivos de Variveis
2 22/08 Manipulao e Caractersticas de Variveis, Biblioteca IOStream,
Operadores Aritmticos e de Atribuio
3 23/08 Operadores Lgicos e Relacionais, Estruturas Condicionais

4 24/08 Laos e Repetio, Arrays

5 25/08 Ponteiros, Strings, Listas

6 28/08 Vetores, Namespaces

7 29/08 Funes, Recursividade e Pilha

8 30/08 Classes e Objetos, Atributos e Funcionalidades

9 31/08 Construtores, Herana

10 01/09 Modificadores de Acesso, Mtodos get e set, Fechamento do Curso


Como sero as aulas?

Aulas expositivas seguidas por atividades prticas;


Os alunos faro as atividades, auxiliados pelos instrutores;
Lista de exerccios.

Compartilhamento do material:
www.bit.ly/ComSocCpp
Histria do C++
O C++ evoluiu do C, que por sua vez foi criado a partir das
linguagens BCPL e B;
BPCL e B foram criadas na dcada de 1960 e foram usadas na
criao das primeiras verses do sistema operacional UNIX;
A linguagem C ganhou popularidade, principalmente devido
sua padronizao, em 1990;
C++, uma extenso de C, foi criado em 1980 e permite a
programao orientada a objetos com a sintaxe de C;
Foi padronizado em 1998, pela ISO (International Organization
for Standardization).
Com isso, a programao se torna mais modular e melhor
modela itens no mundo real.
Por que C++?
flexvel:
C ++ uma linguagem multi-paradigma que oferece suporte aos
diferentes estilos de programao, incluindo programao orientada a
objetos;
Ao contrrio de algumas outras linguagens modernas, porm, o C ++
no fora um estilo especfico ao programador.
bem suportado:
Devido sua longa histria na indstria, h um grande conjunto de
recursos disponveis para o programador C ++, incluindo APIs grficas
2D, 3D, fsica e mecanismos de som;
Todo esse cdigo pr-existente pode ser utilizado por um programador
C ++ para acelerar consideravelmente o processo de confeco de um
novo projeto.
Por que C++?

rpido:
Programas bem escritos em C ++ podem ser rpidos. Um dos
objetivos de design do C ++ o desempenho;
Se voc precisar melhorar ainda mais o desempenho de seus
programas, o C ++ permite que voc use a linguagem assembly -
linguagem de programao de baixo nvel - para se comunicar
diretamente com o hardware do computador.
Compilao em C++

Processadores podem compreender somente sua prpria


linguagem de mquina;
A linguagem de mquina instrui o processador a realizar
as suas operaes mais bsicas, uma de cada vez;
Tradutores: programas que convertem instrues de uma
linguagem para outra;
Linguagens de alto nvel facilitam o processo de programao;
Compiladores so tradutores que convertem linguagens de
alto nvel em linguagem de mquina.
Comparao: C++ vs. Python

C++ Python
Compilao em C++
Existem dois tipos
principais de arquivos
de cdigo: .cpp e .h

Fonte: Prof. Caio Csar de Melo e Silva

Linguagem de
mquina.
Exemplos de Programas em C++

Criar um sistema operacional simples:


https://
github.com/SamyPesse/How-to-Make-a-Computer-Operating-System
Jogo em C++: Quake II
https://en.wikipedia.org/wiki/Quake_II
Criar um pokdex:
https://www.youtube.com/watch?v=tDtf3gfdpiE
Super Mario:
https://www.youtube.com/watch?v=ZCKzN2Ld7uU
SINTAXE BSICA EM C++
Introduo

Um programa em C++ nada mais do que um conjunto de


instrues a serem executadas em ordem pela mquina;
Dessa forma, cada linha do cdigo de programao
constitui uma instruo;
O processador, ento, executa essas instrues uma por uma,
comeando do topo do cdigo;
Para se compreender um cdigo, e a forma como ele ser
executado, basta entender a funo de cada linha.
O Primeiro Programa

using namespace std;

int main() // This is a comment


O cdigo ao lado o exemplo mais simples de {
programa em C++: um programa que no faz /*
nada; This is also a comment, in C-style.
Ainda assim, cada linha tem um significado, e It has multiple lines.
elas esto presentes em quase todos os */
programas de C++; return 0;
A seguir, vamos explicar o significado de cada }
uma dessas linhas.
using namespace std;

O Primeiro Programa Indica qual namespace


est sendo utilizado. O
int main() namespace padro
{ chamado std.
using namespace std;

} int main() // This is a comment


{ int main()
int indica que a funo /* {
This is also a comment, in C-style.
retorna um valor inteiro. It has multiple lines.
main()indica que essa */ }
return 0;
a funo principal do }
programa. A execuo de As chaves definem um
todo programa em C++ bloco de instruo, ou
return 0; seja, um bloco contendo
comea pela funo int
main() instrues descrevendo o
Em geral a ultima instruo da funo, que deve ser feito.
denota o valor de retorno dela. dentro dessas chaves que
Retornar o numero 0 informa o ser descrito o que o
Sistema Operacional (SO) que a programa faz de fato.
aplicao finalizou normalmente.
Comentrios so
antecedidos por // ,
O Primeiro Programa e so completamente
ignorados pelo
compilador.

using namespace std;

int main() // This is a comment


{
/*
This is also a comment, in C-style.
It has multiple lines.
*/
return 0;
}
Outra forma abrir um
bloco de comentrios
com /* e fecha-los com */
O Output do programa
Como esperado, nada mesmo...
Hello World

#include <iostream>

using namespace std;


Como fazer o programa ao lado fazer algo?
int main()
Temos que acrescentar instrues no bloco de
instruo, de forma a indicar o que queremos que {
o programa execute; return
cout <<0;
"Hello World!" << endl;
Hello World: um programa que introduz a } system("pause");
linguagem de programao ao mundo;
return 0;
}
Comparao

Programa que no faz nada Hello World

#include <iostream>
using namespace std;
using namespace std;
int main()
{ int main()
return 0; {
} cout << "Hello World!" << endl;
system("pause");
return 0;
}
#include <iostream>

Hello World Declarao de biblioteca,


que permite a utilizao
cout << "Hello World!" << endl; de comandos padro da
#include <iostream> linguagem C++. Essa
cout significa Console Output, uma instruo para o
ou seja, output no console. using namespace std; pr-processador, pois
"Hello World! o que se comea com a cerquilha
quer que mostre no console. int main() (#)
endl significa End Line, ou {
terminar a linha.
cout << "Hello World!" << endl;
<< um operador de insero.
system("pause");
No caso, insero no console.
Tambm pode ser pensado como return 0; system("pause");
operador de escrita em. }
Pede para o SO pausar a
execuo da aplicao nessa
linha. Sem esse comando no
ser possvel ver o que foi
impresso no console.
Essa janelinha preta o
console.

O Output do Hello World


O comando cout se encontra na biblioteca
Erros Comuns! iostream.
Se o compilador no for avisado que essa
biblioteca faz parte da aplicao ele no
saber onde encontrar o cout.
#include <iostream>

using namespace std; using namespace std;

int main() int main()


{ {
cout << "Hello World!" << endl; cout << "Hello World!" << endl
system("pause"); system("pause");
return 0; return 0;
} }

Toda instruo em C++ termina com


ponto-e-vrgula (;).
Sem o ponto-e-virgula sua aplicao no
vai compilar.
Exemplo 1: o que o endl faz?

Com o endl Sem o endl


#include <iostream> #include <iostream>

using namespace std; using namespace std;

int main() int main()


{ {
cout << "Hello World!" << endl; cout << "Hello World!";
system("pause"); system("pause");
return 0; return 0;
} }
Exemplo 1: o que o endl faz?

Com o endl Sem o endl


Exemplo 2: mais de um
cout

#include <iostream>

using namespace std;

int main()
{
cout << "Primeiro isso!"<< endl;
cout << "Depois isso!"<< endl;
system("pause");
return 0;
}
TIPOS PRIMITIVOS DE VARIVEIS
Variveis
Variveis so regies na memria que utilizamos para
armazenar dados temporariamente. Essas so as estruturas
mais utilizadas na programao.
Cada varivel possui um nome (ou identificador) e este
faz um link entre o nosso programa e a memria do nosso
computador.
Alm disso, cada varivel tem um tipo, que indica ao
compilador o quanto de memria deve ser separada para a
varivel.
Sempre que manipulamos valores em C++, antes, teremos que
carregar esses valores para a memria. E, sem dvida, a
maneira mais simples de fazer isso declarando e atribuindo
valores a variveis.
Declarando variveis
#include <iostream>
#include <locale.h>
using namespace std;

int main(){
Aqui temos o cdigo onde a varivel setlocale (LC_ALL,"Portuguese");
i apenas declarada. int i;
Em seguida atribumos o valor 7 cout<<"A varivel i apenas declarada tem valor: "<< i<<endl;
ela. i = 7;
cout<<"A varivel i com o valor 7 tem valor: "<< i<<endl;

return 0;
}
O output do programa
A varivel do tipo int apenas declarada tem valor 0.
Aps ser atribudo o valor 7 ela tem valor... 7.
O porqu do setlocale

#include <iostream>
#include <locale.h>
using namespace std;

int main(){
cout << Varivel << endl;
setlocale (LC_ALL,"Portuguese");
cout << Varivel << endl;
return 0;
}
Regras de nomeao de variveis
O nome deve iniciar com uma letra do alfabeto ou um
underscore (_);
Depois da primeira letra, os nomes podem conter letras e
nmeros. Porm, a maioria dos caracteres especiais no so
permitidos;
C++ case sensitive (maisculas so diferentes de
minsculas). Usar todas as letras CAIXA ALTA primariamente
usado para nomear variveis constantes;
No podemos usar uma palavra reservada do C++
(keyword) para nomear uma varivel.
Nome e tipo de variveis

Sempre que definimos uma varivel em C++, devemos


informar no mnimo o nome e o tipo dela.
Ex.: tipo nomeVar; O nde tipo o tipo da varivel(ex.: int, double) e
nomeVar o nom e.

Dica: Tente dar nomes que faam sentido a suas variveis (ex.:
int poderLutaGoku = 8001) mesmo que fiquem um pouco
grandes, isso deixa o seu cdigo mais fcil de ser lido e
trabalhado.
Tipos primitivos
Os Tipos Primitivos so os tipos de informaes
primrias, ou seja, os tipos primitivo so o conjunto
formador de todas as outras estruturas. Por exemplo, um
nmero um valor de tipo primitivo, at porque, os nmeros
no so compostos por mais de um tipo de informao.
Um telefone ou CPF, tambm so estruturas numricas, porm,
essas estruturas possuem caracteres que no so nmeros. Por
exemplo: o trao, os trs pontos num mesmo nmero, os
parntesis para isolar o DDD e assim por diante.
Ento, diz-se que um valor do tipo primitivo quando este
no formado pela unio de outros tipos.
TIPO LGICO bool (primitivo)
Utilizado para guardar valores como true e false.
CARACTERE char (primitivo)
Uma varivel do tipo char pode conter um nico carcter.
INTEIRO int (primitivo)
O tipo int aquele que possui valores negativos ou positivos, porm,
sem casas decimais.
PONTO FLUTUANTE float (primitivo)
O tipo float armazena nmeros reais, com casas decimais, porm com
uma preciso relativamente pequena.

Nota:
Em C++ as casas decimais so separadas por ponto (.) e no por vrgula (,).
PONTO FLUTUANTE double (primitivo)
O tipo double funciona de maneira anloga ao tipo float. Porm em um
tipo double conseguimos armazenar nmeros decimais com uma
preciso maior do que o tipo primitivo float;

Os tipos primitivos so importantes pois estes formam os tipos


compostos, ou seja, compostos de vrios tipos primitivos.

TIPOS ENUMERADOS enum (composto)


Conjunto de unsigned int constantes chamados de enumeradores;
Por padro ao primeiro elemento do conjunto atribudo o valor 0 (caso
o programador no tenha atribudo um valor predefinido). E os
elementos seguintes, tambm por padro, possuem o valor do elemento
anterior + 1.
Nota:
C++ case sensitive, a palavra batata diferente de Batata.
Tipo Descrio Tamanho
char nico caracter 1 byte
int Nmero inteiro 4 bytes
bool Valor lgico(true or false) 1 byte

float Nmero em notao de ponto 4 bytes


flutuante
double Nmero em notao de ponto 8 bytes
flutuante com maior preciso
enum Nomes que representam valores Varivel
inteiros.

Tamanho em memria de variveis primitivas


Tipos Primitivos #include <iostream>
using namespace std;

int main(){

bool b = 1; /*ou poderamos dizer: */


bool b1 = true;
char c = 'R';
Exemplo de cdigo declarando e int i = 7;
atribuindo valores variveis de float f = 3.14;
tipos primitivos.
double d = 3.14159;
// Definindo enum
enum Cor {AZUL, VERDE, VERMELHO};
// Declarando e atribuindo enum
Cor cor1 = AZUL;
return 0;
}
Exerccio 1:
Crie um programa que declara uma varivel de cada tipo estudado, e depois as imprime na tela, sem
inicializa-las. Em seguida seu programa deve atribuir valores a elas e imprimi-las na tela novamente.

Exerccio 2:
Crie um conjunto de seis nomes de variveis, trs com identificadores vlidos em C++ e trs com
identificadores invlidos. Explique por que os trs identificadores invlidos no funcionariam.

Exerccio 3:
Faa um programa que utilize o tipo enum para criar uma enumerao de 5 itens, tendo o primeiro
comeando com valor igual a 5, voc deve imprimir o valor de cada enumerao na tela.
Exerccio 4:

Qual a sada do programa a seguir?

#include <iostream>
#include <locale.h>
using namespace std;

int main()
{
setlocale(LC_ALL,"Portuguese");
enum legumes{BATATA=2, CEBOLA, PIMENTAO=5};
cout << "Preo da cebola: " << CEBOLA;
return 0;
}
Exerccio 5:
Faa um programa que apresente seu nome na tela, sem utilizar a instruo system(pause). Depois
de compilar, ache o executvel e tente abri-lo com dois cliques. O que aconteceu?

Isso ocorre por que o C++ abre e fecha a janela do console em uma frao de segundos.
Porm, voc pode criar um arquivo batch que roda seu programa no console e o pausa,
mantendo a janela aberta para visualizao dos resultados.

Resoluo - 1
Faa um arquivo com extenso .bat contendo o seguinte cdigo:
nome_do_executavel.exe
Pause
Rode o arquivo gerado com dois cliques nele.

Resoluo - 2

Abra o cmd do Windows. V at o diretrio do arquivo .exe utilizando o comando cd. Depois
digite o nome do programa, dessa forma:

C:\Users\Fulano> nome_do_programa.exe
Gabarito Exerccio 1:
#include <iostream> b = true;
using namespace std; c = 'R';
i = 5;
int main(){ f = 1.223;
d = 42.424242;
bool b; cor1 = VERMELHO;
char c;
int i; cout << "Apos a atribuicao: " << endl;
float f; cout << b << endl;
double d; cout << c << endl;
// Definindo enum cout << i << endl;
enum Cor {AZUL, VERDE, VERMELHO}; cout << f << endl;
// Declarando e atribuindo enum cout << d << endl;
Cor cor1; cout << cor1 << endl;

cout << "Antes da atribuicao: " << endl; return 0;


cout << b << endl; }
cout << c << endl;
cout << i << endl;
cout << f << endl;
cout << d << endl;
cout << cor1 << endl << endl;
Ateno!

Variveis declaradas mas no atribudas no


necessariamente so inicializadas com algum valor;
Usar essas variveis causa comportamento indefinido;
Alguns compiladores inicializam variveis, mas isso no uma
regra definida pela padronizao da linguagem C++;
Por isso, evite usar variveis no inicializadas sem entender
como o seu ambiente de desenvolvimento cuida delas.
Gabarito Exerccio 2:
Crie um conjunto de seis nomes de variveis, trs com identificadores vlidos em C++ e trs com
identificadores invlidos. Explique por que os trs identificadores invlidos no funcionariam.

// Variveis Legais
string son_goku = "oi, eu sou o Goku."; // Bumpy Case
string $principeVegeta = "Morra, inseto."; // Camel Case
string i_took_arrow = "in the knee."; // Bumpy Case

// Variveis Ilegais
string 1variavel = "errooou"; // No possvel comear com nmeros
string #variavel = "nope!"; // No possvel comear com '#'
string int = "int"; // No possvel nomear um identificador
// com uma das palavras reservadas
Gabarito Exerccio 3:
Faa um programa que utilize o tipo enum para criar uma enumerao de 5 itens, tendo o primeiro
comeando com valor igual a 5, voc deve imprimir o valor de cada enumerao na tela.
#include <iostream>
using namespace std;
int main()
{
enum status_http{OK = 200, CREATED = 201, ACCEPTED = 202,
NON_AUTHORITATIVE_INFORMATION = 203 , NO_CONTENT = 204 };
cout << OK << endl << CREATED << endl << ACCEPTED;
cout << endl << NON_AUTHORITATIVE_INFORMATION;
cout << endl << NO_CONTENT
return 0;
}
Gabarito Exerccio 4:

Você também pode gostar