Escolar Documentos
Profissional Documentos
Cultura Documentos
//Mltipla declarao
int a, b, c;
Declarao: reserva (aloca)
espao na memria; double temp1, temp2, temp3;
Atribuio: armazena valor no
espao alocado.
// Atribuio de variveis
temperatura = 32.55;
esta_ligado = false;
primeira_letra = 'A';
Inicializao // Inicializao de cpia
char segunda_letra = 'B';
float pi = 3.1415;
// Inicializao direta
int alunos(16);
Inicializao = bool ativo(false);
Declarao + Atribuio
// Mltipla inicializao
char c1('a'), c2('b'), c3('c');
double alt1 = 2.5, alt2 = 3.33, alt3 = 42;
Modificadores de tipo
int main() {
setlocale (LC_ALL,"Portuguese");
short int si = 100;
long int li = 100;
int i = 100;
long long int lli = 100;
Cdigo para unsigned ui = 100;
imprimir na tela double d = 3.14159;
algumas variveis long double ld = 3.14159265359;
primitivas com
cout << "O tamanho na memria da varivel short int : " << sizeof(si) <<" bytes"<< '\n'<< endl;
modificadores de cout << "O tamanho na memria da varivel int : " << sizeof(i) <<" bytes"<< '\n'<< endl;
tamanho. cout << "O tamanho na memria da varivel unsigned int : " << sizeof(ui) <<" bytes"<< '\n'<< endl;
cout << "O tamanho na memria da varivel long int : " << sizeof(li) <<" bytes"<< '\n'<< endl;
cout << "O tamanho na memria da varivel long long int : " << sizeof(lli) <<" bytes"<< '\n'<< endl;
cout << "O tamanho na memria da varivel double : " << sizeof(d) <<" bytes"<< '\n'<< endl;
cout << "O tamanho na memria da varivel long double : " << sizeof(ld) <<" bytes"<< '\n'<< endl;
return 0;
}
Execuo do cdigo do slide anterior
Criando seu prprio tipo
Voc pode definir seu prprio nome para um tipo
existente. Imagine que voc queira definir uma varivel do
seguinte tipo:
unsigned short int numero = 100;
consideravelmente tedioso escrever diversos modificadores
de tipos em uma varivel.
Assim, o C++ permite o desenvolvimento do seu prprio tipo.
Ou seja, voc pode combinar tipos (primitivos) e
modificadores especficos para utilizar no resto do seu
cdigo.
Dessa forma:
typedef unsigned short int usInt;
usInt numero = 100;
Nmero
Nmeros Mgicos mgico aqui
cout
cin
#include <iostream>
clog
clog: Console Log
cerr
#include <iostream>
Ele pode ser usado cout << "O char ch tem, primeiramente, o valor de :" << ch << endl;
no console. system("pause");
}
O output no console
O valor de ch muda em cada linha
#include <iostream>
#include <locale>
double a = 2.718281828459045235360287;
double b = 3005.0;
double c = 1.0e-15;
cout.precision(5); cout.precision(5);
Indica o nmero mximo de algoritmos
mostrados; cout << "Padro:\n";
fixed; cout << a << '\n' << b << '\n' << c << '\n';
#include <iostream>
system("pause");
}
Regio de Memria
O cin
O char ch
inicializado com o
#include <iostream> caracter a char ch
a
using namespace std;
int main()
{
char ch = 'a';
cout << "O char ch tem, primeiramente, o valor de :" << ch << endl;
cout << "O character informado pelo usuario foi: " << ch << endl;
system("pause");
}
Regio de Memria
O cin
int main()
{
char ch = 'a';
cout << "O char ch tem, primeiramente, o valor de :" << ch << endl; O programa pausa
nesse ponto,
cout << "Informe o novo valor de ch: "; esperando o input do
cin >> ch;
usurio
cout << "O character informado pelo usuario foi: " << ch << endl;
system("pause");
}
O usurio deve indicar o novo valor de ch
O usurio deve indicar o novo valor de ch
Regio de Memria
O cin
int main()
{
char ch = 'a';
cout << "O char ch tem, primeiramente, o valor de :" << ch << endl; Quando o usurio aperta
Enter, o valor de ch
cout << "Informe o novo valor de ch: "; muda, e o programa
cin >> ch;
segue em frente
cout << "O character informado pelo usuario foi: " << ch << endl;
system("pause");
}
O Output final do programa
O clog e cerr
#include <iostream>
int main()
{
clog << "Isso aqui vai ser impresso no console." << endl;
cerr << "Isso tambem." << endl;
system("pause");
}
O clog e cerr
O texto impresso no console, no destino padro
OPERADORES ARITMTICOS E DE
ATRIBUIO
Operadores
Operadores dizem a uma expresso como combinar um
ou mais operandos para produzir um novo resultado. Por
exemplo, na expresso 3 + 4, o + o operador de soma. O
operador + diz como combinar 3 e 4 para produzir um novo
valor (7).
Unrios: Tm efeito sobre um operando.
Ex.: O operador em (-5) tem efeito apenas sobre o operando (5).
Binrios: Tm efeito sobre dois operandos.
Ex.: O operador + em 3 + 4 tem efeito sobre os operandos (3) e (4).
Ternrios: Tm efeito sobre trs operandos.
Na linguagem C++ s existe um operador ternrio (?:) que ser visto
mais adiante.
Operadores Aritmticos
Operadores aritmticos unrios:
Operator Symbol Form Operation
Unary plus + +x Value of x
Unary minus - -x Negation of x
int main(){
setlocale(LC_ALL,"Portuguese");
int a = 5, b = 2;
double c = 9.0, d = 3.1415;
int e = a % b;
O que acontece quando aplicamos
um operador a variveis de tipos cout << "a + b = " << a + b << endl;
diferentes? cout << "a + -b = " << a + -b << endl;
cout << "d - a = " << d - a << endl;
cout << "c * b = " << c * b << endl;
cout << "a / b = " << a / b << endl;
cout << "c / b = " << c / b << endl;
cout << "e = a % b = " << e << endl;
system("pause");
return 0;
}
O output do programa
Tabela de Precedncia de Operadores
Prec/Ass Operator Description Pattern
::name
:: Global scope (unary)
1 None class_name::member_name
:: Class scope (binary)
() Parentheses (expression)
() Function call function_name(parameters)
() Initialization type name(expression)
{} Uniform initialization (C++11) type name{expression}
type() Functional cast new_type(expression)
type{} Functional cast (C++11) new_type{expression}
[] Array subscript pointer[expression]
. Member access from object object.member_name
2 L->R
-> Member access from object ptr object_pointer->member_name
++ Post-increment lvalue++
Post-decrement lvalue
typeid Run-time type information typeid(type) or typeid(expression)
const_cast Cast away const const_cast<type>(expression)
dynamic_cast Run-time type-checked cast dynamic_cast<type>(expression)
reinterpret_cast Cast one type to another reinterpret_cast<type>(expression)
static_cast Compile-time type-checked cast static_cast<type>(expression)
+ Unary plus +expression
- Unary minus -expression
++ Pre-increment ++lvalue
Pre-decrement lvalue
! Logical NOT !expression
~ Bitwise NOT ~expression
(type) C-style cast (new_type)expression
3 R->L
sizeof Size in bytes sizeof(type) or sizeof(expression)
& Address of &lvalue
* Dereference *expression
new Dynamic memory allocation new type
new[] Dynamic array allocation new type[expression]
delete Dynamic memory deletion delete pointer
delete[] Dynamic array deletion delete[] pointer
* Multiplication expression * expression
5 L->R / Operadores Division expression / expression
% matemticos Modulus expression % expression
Fonte: http://www.learncpp.com/cpp-tutorial/31-precedence-and-associativity/
Exerccio 2
Desenvolva um programa que receba uma distncia em milhas e a converta para quilmetros (1 milha
= 1.60934 km).
Exerccio 3
Crie um programa que imprima a soma de duas variveis do tipo enum. O que acontece?
Exerccio 4
Ler uma temperatura dada pelo usurio em Celsius e atravs da frmula
9
= + 32
5
transforma-la em Fahrenheit. Depois apresentar a temperatura convertida para o usurio.
Gabarito Exerccio 1
#include <iostream>
#include <cmath>
#include <locale>
res = sqrt(num);
cout << "Raiz de " << num << " " << res;
return 0;
}
Gabarito Exerccio 2
#include <iostream>
#include <locale>
int main() {
setlocale(LC_ALL,"Portuguese");
Desenvolva um programa double dist_km, dist_miles;
que receba uma distncia
em milhas e a converta para
cout << "Informe uma distancia em milhas: ";
quilmetros
cin >> dist_miles;
(1 milha = 1.60934 km).
dist_km = 1.60934*dist_miles;
cout << dist_miles << " milhas = " << dist_km << "km" << endl;
return 0;
}
#include <iostream>
#include <locale>
using namespace std;
// Declarar enumeradores
enum Cor{
VERMELHO,
AZUL,
VERDE
};
enum Fruta{
Crie um programa que imprima a BANANA,
soma de duas variveis do tipo ABACATE,
LARANJA
enum. O que acontece?
};
// Criar variaveis
Cor c1 = VERMELHO;
Fruta f1 = LARANJA;
// Imprimir na tela
cout << c1 << " + " << f1 << " = " << c1 + f1 << endl;
return 0;
}
Gabarito Exerccio 4
#include <iostream>
return 0;
}
Desafio 1:
Crie um programa que recebe o nome completo de um usurio (entrada no terminal) e informe na
tela uma mensagem de boas-vindas.
Obs1: O nome completo deve ser inserido de uma nica vez.
Obs2: O nome deve ser inserido separado por espaos. Ex: Jon Snow.
Desafio 1:
Crie um programa que recebe o nome completo de um usurio (entrada no terminal) e informe na
tela uma mensagem de boas-vindas.
Obs1: O nome completo deve ser inserido de uma nica vez.
Obs2: O nome deve ser inserido separado por espaos. Ex: Jon Snow.
#include <iostream>
#include <locale.h>
int main()
{
setlocale(LC_ALL, "");
char nome[256];
cout << "Entre seu nome: ";
cin.getline(nome,256);
cout << "\nOl " << nome << ", seja bem-vindo!!!" << endl;
return 0;
}
Desafio 2:
Utilizando a tcnica de converso de tipos, crie um programa que divida dois nmeros inteiros
(int) e resulte em um nmero com ponto flutuante (float).
Desafio 2:
Utilizando a tcnica de converso de tipos, crie um programa que divida dois nmeros inteiros
(int) e resulte em um nmero com ponto flutuante (float).
int main()
int main()
{
{
int num1 = 10, num2 = 3;
int num1 = 10, num2 = 3;
float div;
float div;
div = (float) num1/num2;
div = static_cast<float>(num1) / static_cast<float>(num2);
cout << div;
cout << div;
return 0;
return 0;
}
}
Curiosidade...
Aqui est mostrada a diferena entre funes que mostram o tipo de uma varivel. O primeiro caso
typeid da biblioteca typeinfo deve ser utilizado pois est presente nos compiladores atuais a partir
do C++11. J a segunda forma (typeof) uma extenso especfica do compilador GCC e ser evitada
por que pode ocasionar erros.
typeid typeof