Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 1 – Introdução
Algoritmo é comumente definido como uma sequência finita de etapas lógicas e
sequenciais que visam atingir um objetivo definido.
A linguagem de programação C++ foi desenvolvida em meados de 1983
(originalmente com o nome C with classes) por Bjarne Stroustrup. É uma linguagem
orientada a objetos e considerada como de médio nível, pois oferece mecanismos
encontrados em linguagens de baixo e alto nível. A estrutura de um programa em C++
pode ser definida como uma coleção de objetos que se comunicam via chamadas de
seus métodos.
Cabeçalhos contém informações ou recursos que são necessários ou úteis ao
programa. No programa anterior, o cabeçalho iostream é necessário;
• A linha using namescape std; informa ao compilador que a área de nomes chamada
std será utilizada. Através dela é possível acessar o objeto cout;
• int main() denota o método principal. A partir dele que a aplicação inicia sua
execução;
• A última linha return 0; concluirá o método main() retornando um código de status.
Tipos de dados
Bool - Tipo booleano, que assume apenas os valores true ou false. char Caractere
representado por um octeto de bits (1 byte) ASCII. É um tipo de int.
Int - Número inteiro, cujo tamanho pode variar conforme a arquitetura do processador.
Float - Número em ponto flutuante de precisão simples.
Double - Igualmente ao float, porém com precisão dupla.
Void - Representa a absência de tipo (não é utilizado para declarar variáveis).
Wchar_t - Armazena caracteres mais amplos para suportar internacionalização.
Existem quatro modificadores que podem ser combinados com os tipos primitivos char,
int e double, são eles:
• short: indica uma variável com range menor (aplicável a int);
• long: indica uma variável com range maior (aplicável a int e double);
• signed: indica um número que pode ser negativo ou positivo (aplicável a int e char);
• unsigned: indica que um número só pode ser positivo (aplicável a int e char).
Exemplo:
unsigned short int var1; //Aceita valores entre 0 a 65.535.
long double var2; //Possui 10 dígitos de precisão, contra 8 do double convencional.
signed char var3; //Varia entre -127 a 127, igualmente ao char convencional.
long int var4; //Aceita valores entre -2.147.483.648 a 2.147.483.647.
Se o fluxo de bytes tem origem em um teclado, um disco rígido ou uma conexão de
rede e tem destino para a memória principal do computador, é uma operação de
entrada.
Se os bytes estão alocados na memória principal e têm como destino um monitor de
vídeo, uma impressora ou uma conexão de rede, é uma operação de saída.
As operações de entrada e saída realizadas através de cout e cin, que são instâncias
das classes ostream e istream. Para utilizá-las, é necessário incluir o arquivo header
iostream e explicitar o uso da área de nomes chamada std.
Blocos condicionais: São estruturas que envolvem o teste condicional de uma
expressão, de tal forma que se a condição for satisfeita, uma determinada tarefa será
executada, caso contrário, uma outra tarefa poderá ser realizada.
IF: Executa um bloco de código caso a condição booleana a ser testada retornar true,
exemplo:
int main() { int n = 10;
if (n < 20) {
cout << "n e menor que 20" << endl; }
cout << "Valor de n: " << n << endl;
return 0; }
IF...ELSE: Executa um bloco de código caso a condição booleana a ser testada
retornar true. Se for falsa, executa outro bloco de código, exemplo:
int main() { int n = 10;
if (n < 20) {
cout << "n e menor que 20" << endl; }
else {
cout << "n nao e menor que 20" << endl; }
cout << "Valor de n: " << n << endl;
return 0; }
IF TERNÁRIO: O comando IF...ELSE pode ser escrito como um IF ternário em
condições onde haja uma atribuição de variável, exemplo:
int main() { int n;
char c = 'A';
//Atribui à variável n o valor 10 se c for igual a A
//Caso contrário, o valor de n será igual a 20
n = (c == 'A' ? 10 : 20);
return 0; }
IF...ELSE IF...ELSE: Executa um bloco de código caso a sua condição correspondente
retornar true. O uso de else nesta estrutura é opcional.
int main() { int n = 10;
if (n < 20) {
cout << "n e menor que 20" << endl; }
else if (n < 30) {
cout << "n e menor que 30" << endl; }
else {
cout << "n nao e menor que 20 e nem 30" << endl; }
cout << "Valor de n: " << n << endl;
return 0; }
SWITCH: Esta estrutura testa uma variável a partir de uma lista de valores, sendo que
cada valor é conhecido como case. Se a variável for igual a algum valor, o comando
switch irá executar o bloco de código correspondente ao case. Exemplo:
int main() { int n = 10;
switch (n) {
case 10:
cout << "O valor e 10" << endl;
break;
case 20:
cout << "O valor e 20" << endl;
break;
default: cout << "Valor nao e 10 e nem 20" << endl; }
return 0; }
O comando switch pode ser comparado com uma estrutura IF...ELSEIF...ELSE, porém
é importante frisar os seus pontos peculiares:
• A variável a ser testada deve ser um tipo inteiro ou enumerado;
• É possível inserir quantos casos forem necessários, onde a sintaxe deve conter a
palavra case e dois pontos;
• O deve ser do mesmo tipo da variável. Além disso deve ser necessariamente uma
constante ou um literal;
• O uso de break é opcional. Seu propósito é de interromper o fluxo de código,
forçando-o a executar a próxima linha de código depois do bloco switch;
• Um bloco switch pode ter um caso default, que é o equivalente ao else de uma
estrutura if, ou seja, é executado apenas quando todos os casos anteriores falharem.
Por ser o último caso, não há necessidade do comando break.
Blocos de repetição: Um bloco de repetição processará uma ou várias linhas de código
enquanto a condição booleana que a mantém retornar true. O diagrama ilustra a ideia
de um bloco de repetição:
WHILE :Processa um bloco de código repetidamente até que a sua condição retorne
true.
int main() { int n = 1;
while (n <= 10) {
cout << "O valor de n e " << n << endl; n++; }
return 0; }
A saída será a seguinte:
O valor de n e 1
O valor de n e 2
O valor de n e 3
O valor de n e 4
O valor de n e 5
O valor de n e 6
O valor de n e 7
O valor de n e 8
O valor de n e 9
O valor de n e 10
*a rotina irá incrementar o valor de n até que este chegue a 11. Quando isso
acontecer, a condição no laço while retornará false (pois 11 não é menor e nem igual a
10) e, consequentemente, o bloco de repetição se encerrará.
FOR : Permite controlar de forma mais eficiente a quantidade de iterações a ser
realizada,
int main() { for (int n = 1; n <= 10; n++) {
cout << "O valor de n e " << n << endl; }
return 0; }
Este programa imprimirá o mesmo resultado do código do exemplo anterior. A
diferença está em relação ao controle da quantidade de iterações, que fica implícita no
próprio comando for.
DO...WHILE:Diferentemente dos casos anteriores, onde o teste da condição é
realizado primeiro, neste tipo de bloco de repetição a condição é verificada somente
ao fim do bloco. A
diferença principal é que o código será executado pelo menos uma vez, conforme
exemplo abaixo (cuja saída será igual aos dois códigos anteriores).
int main() { int n = 1;
do {
cout << "O valor de n e " << n << endl; n++; }
while (n <= 10);
return 0; }
setlocale(LC_CTYPE, "portuguese_brazil"); - Informa ao programa as regras do
idioma do brasil
ATIVIDADES 1
1. Crie um programa que solicite ao usuário os três coeficientes de uma equação do
segundo grau e informe os valores de x’ e x’’.
int main(int argc, char *argv[])
{
int a, b, c;
float d, x1, x2;
cout<<"Digite 3 valores \n";
cin>>a>>b>>c;
d = (b*b) - (4*a*c);
if(d>0){
x1=-b + sqrt(d) / (2*a);
x2=-b - sqrt(d) / (2*a);
cout<< "As saidas sao x1= "<<x1<<" e x2= "<<x2<<"\n";
}
else if(d==0){
x1=-b/(2*a);
cout<<"A raiz "<<x1<<"\n";
}
else{
cout<<"Nao existe raiz\n";
}
system("PAUSE");
return EXIT_SUCCESS;
}
2. Crie um programa que solicite ao usuário os lados de um retângulo e informe a sua
área.
int main() {
float b, h;
//Lendo os atributos do retângulo (base e altura)
cout << "Informe a base do retangulo: ";
cin >> b;
if (b < 0) {
cout << endl << "Valor invalido para a base do retangulo!" << endl;
return 0;
}
cout << endl << "Informe a altura do retangulo: ";
cin >> h;
if (h < 0) {
cout << endl << "Valor invalido para a altura do retangulo!" << endl;
return 0;
}
//Calculando a área do retângulo (base x altura)
float area = b * h;
cout << endl << "Area do retangulo: " << area << endl;
return 0;
}
3. Crie um programa que solicite ao usuário os lados de um triângulo e informe a sua
área.
int main() {
float b, h;
//Lendo os atributos do triângulo (base e altura)
cout << "Informe a base do triangulo: ";
cin >> b;
if (b < 0) {
cout << endl << "Valor invalido para a base do triangulo!" << endl;
return 0;
}
cout << endl << "Informe a altura do triangulo: ";
cin >> h;
if (h < 0) {
cout << endl << "Valor invalido para a altura do triangulo!" << endl;
return 0;
}
//Calculando a área do triângulo (base x altura)
float area = (b * h) / 2;
cout << endl << "Area do triangulo: " << area << endl;
return 0;
}
4. Crie um programa que solicite ao usuário os lados de um trapézio e informe a sua
área.
int main() {
float b, B, h;
//Lendo os atributos do trapézio (base menor, base maior e altura)
cout << "Informe a base menor do trapezio: ";
cin >> b;
if (b < 0) {
cout << endl << "Valor invalido para a base menor do trapezio!" <<
endl;
return 0;
}
cout << endl << "Informe a base maior do trapezio: ";
cin >> B;
if (B < 0) {
cout << endl << "Valor invalido para a base maior do trapezio!" <<
endl;
return 0;
} else if (B < b) {
cout << endl << "A base maior e menor do que a base menor!" <<
endl;
return 0;
}
cout << endl << "Informe a altura do trapezio: ";
cin >> h;
if (h < 0) {
cout << endl << "Valor invalido para a altura do trapezio!" << endl;
return 0;
}
//Calculando a área do trapézio (((base maior + base menor) x altura) / 2)
float area = ((b + B) * h) / 2;
cout << endl << "Area do trapezio: " << area << endl;
return 0;
}
5. Escreva um programa que solicite ao usuário um valor inteiro e informe se esse
número é par ou ímpar.
int main() {
int numero;
cout << "Digite um numero: ";
cin >> numero;
cout << endl;
if (numero % 2 == 0) {
cout << "Numero " << numero << " e par" << endl;
} else {
cout << "Numero " << numero << " e impar" << endl;
}
return 0;
}
6. Escreva m programa que solicite ao usuário a idade de uma pessoa e informe se
essa pessoa é criança (0 a 11 anos), adolescente (12 a 17 anos), adulta (18 a 49
anos) ou idosa (a partir de 50 anos).
int main() {
int idade;
//Lendo a idade da pessoa
cout << "Digite a idade de uma pessoa: ";
cin >> idade;
//Idade negativa não é válida
if (idade < 0) {
cout << endl << "Idade invalida!" << endl;
return 0;
}
cout << endl;
//Verificando o intervalo de idade da pessoa
if (idade <= 11) {
cout << "A pessoa e uma crianca";
} else if (idade <= 17) {
cout << "A pessoa e adolescente";
} else if (idade <= 49) {
cout << "A pessoa e adulta";
} else {
cout << "A pessoa e idosa";
}
cout << endl;
return 0;
}
7. Escreva um programa que solicite ao usuário um ano qualquer e informe se esse
ano é bissexto. Um ano é considerado bissexto se ele for divisível por quatro, mas
não por 100. Ou então se ele for divisível por 400.
int main() {
int ano;
//Lendo o ano informado pelo usuário
cout << "Informe um ano: ";
cin >> ano;
//Validando o ano (não pode ser negativo)
if (ano < 0) {
cout << endl << "Ano invalido!" << endl;
return 0;
}
cout << endl;
//Verifica se o ano é divisível por 400
bool divisivelPor400 = (ano % 400 == 0);
//Verifica se o ano é divisível por 4 e não por 100
bool divisivelPor4 = (ano % 4 == 0 && ano % 100 != 0);
//Um ano é considerado bissexto se uma das duas condições acima for
verdadeira
if (divisivelPor400 || divisivelPor4) {
cout << "Ano " << ano << " e bissexto!";
} else {
cout << "Ano " << ano << " nao e bissexto!";
}
cout << endl;
return 0;
}
8. Crie um programa que solicite ao usuário os três ângulos de um triângulo e informe
se este é um triângulo equilátero, isósceles ou escaleno.
int main() {
int angulo1, angulo2, angulo3;
cout << "Digite o primeiro angulo de um triangulo: ";
cin >> angulo1;
if (angulo1 <= 0) {
cout << endl << "Angulo invalido!";
return 0;
}
cout << endl << "Digite o segundo angulo de um triangulo: ";
cin >> angulo2;
if (angulo2 <= 0) {
cout << endl << "Angulo invalido!";
return 0;
}
cout << endl << "Digite o terceiro angulo de um triangulo: ";
cin >> angulo3;
if (angulo3 <= 0) {
cout << endl << "Angulo invalido!";
return 0;
}
//Verificando se a soma dos ângulos do triângulo equivale a 180º. Se não
for, então a figura geométrica não é um triângulo
if ((angulo1 + angulo2 + angulo3) != 180) {
cout << endl << "A soma dos angulos internos de um triangulo
deve ser igual a 180!" << endl;
return 0;
}
cout << endl;
//Verificando os ângulos
if (angulo1 == angulo2 && angulo2 == angulo3) { //Todos os ângulos
iguais, então ele é equilátero
cout << "Este e um triangulo equilatero";
} else if (angulo1 == angulo2 || angulo2 == angulo3 || angulo1 == angulo3)
{ //Um par de ângulos igual, então é isósceles
cout << "Este e um triangulo isosceles";
} else { //Todos os ângulos são diferentes, então ele é escaleno
cout << "Este e um triangulo escaleno";
}
cout << endl;
return 0;
}
9. Escreva um programa que solicite ao usuário quatro números e mostre na tela o
maior, o menor e a média aritmética dos números digitados.
int main() {
float n1, n2, n3, n4;
float menor, maior, media;
//Lendo os quatro números do usuário
//A partir do segundo, faz-se comparações para verificar se o novo
número é
//menor ou maior que os anteriores
cout << "Digite o primeiro numero: ";
cin >> n1;
menor = n1;
maior = n1;
cout << endl << "Digite o segundo numero: ";
cin >> n2;
if (n2 < menor) {
menor = n2;
} else if (n2 > maior) {
maior = n2;
}
cout << endl << "Digite o terceiro numero: ";
cin >> n3;
if (n3 < menor) {
menor = n3;
} else if (n3 > maior) {
maior = n3;
}
cout << endl << "Digite o quarto numero: ";
cin >> n4;
if (n4 < menor) {
menor = n4;
} else if (n4 > maior) {
maior = n4;
}
//Calculando a média artimética
media = (n1 + n2 + n3 + n4) / 4;
//Exibindo os resultados
cout << endl << "Maior numero digitado: " << maior << endl;
cout << "Menor numero digitado: " << menor << endl;
cout << "Media artimetica dos numeros: " << media << endl;
return 0;
}
ATIVIDADES 2 – VETOR
VETOR É UMA VARIÁVEL COMPOSTA HOMOGÊNEA UNIDIMENSIONAL
FORMADA POR UMA SEQUÊNCIA DE VARIÁVEIS, TODAS DO MESMO TIPO, COM
O MESMO IDENTIFICADOR (MESMO NOME) E ALOCADAS SEQUENCIALMENTE
NA MEMÓRIA.
1-) Fazer um programa que leia vários números inteiros e positivos. A leitura se
encerra quando encontrar um número negativo ou quando o vetor ficar completo.
Sabe-se que o vetor possui, no máximo, 10 elementos. Gerar e imprimir um vetor onde
cada elemento é o inverso do correspondente do vetor original
int main(int argc, char *argv[])
{
int i,vet[10], x;
i=0;
do{
cout<<"Digite um número \n";
cin>>x;
if(x>0){
vet[i]=x;
i++;
}
}
while(i<10 && x>0);
for(int y=0; y<i; y++)
cout<<vet[y]*(-1)<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}
2-) Fazer um programa que digite vários números no vetor de tamanho máximo de 100
elementos, até digitar o número “0”. Imprimir quantos números iguais ao último número
foram lidos. O limite de números é 100. Sem considerar o “0” como último número.
int main(int argc, char *argv[])
{
int v[100], x, i, aux, c;
x=1;i=0; c=0;
while(x!=0 && i<100){
cout<<"Digite um número \n";
cin>>x;
if(x!=0){
v[i]=x;
i++;
}
}
for(int y=0; y<i-1; y++){
if(v[y]== v[i-1])
c++;
}
cout<<c<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}
MATRIZ
MATRIZ É UMA VARIÁVEL COMPOSTA HOMOGÊNEA BIDIMENSIONAL FORMADA
POR UMA SEQUÊNCIA DE VARIÁVEIS, TODAS DO MESMO TIPO, COM O MESMO
IDENTIFICADOR (MESMO NOME) E ALOCADAS SEQUENCIALMENTE NA
MEMÓRIA.
1-) Criar uma matriz de ordem 4 e exibir a soma da diagonal principal.
int main(int argc, char** argv) {
int matrizA[4][4];
int somaA=0;
int total;
for(int i= 0; i<4; i++){
for(int j= 0; j<4; j++){
cout << "Insira um valor na matriz " << i << " " << j << ": ";
cin>> matrizA[i][j];
if(i==j){
somaA += matrizA[i][j];
}
}
}
cout<< "Diagonal Principal: " << somaA<<endl;
return 0;
}
2-) Ler valores inteiros para a matriz A[3][5]. Gerar e imprimir o vetor Soma_Linha,
onde cada elemento é a soma dos elementos de uma linha da matriz A. Faça o trecho
que gera a matriz separadamente da entrada e saída.
int main(int argc, char** argv) {
int A[3][5];
int soma_Linha[3]={0,0,0};
for(int i= 0; i<3; i++){
for(int j= 0; j<5; j++){
cout << "Insira um valor na matriz " << i << " " << j << ": ";
cin>> A[i][j];
}
}
for(int i= 0; i<3; i++){
for(int j= 0; j<5; j++){
soma_Linha[i] += A[i][j];
}
}
for(int i= 0; i<3;i++){
cout << "Soma da linha "<< i<< ": " << soma_Linha[i] << "\n";
}
return 0;
}
3-) Criar uma matriz 2x3. Gerar e imprimir a transposta dessa matriz. A matriz
transposta é gerada trocando linha por coluna.
int main(int argc, char** argv) {
int A[3][5];
int soma_Linha[3]={0,0,0};
for(int i= 0; i<3; i++){
for(int j= 0; j<5; j++){
cout << "Insira um valor na matriz " << i << " " << j << ": ";
cin>> A[i][j];
}
}
for(int i= 0; i<3; i++){
for(int j= 0; j<5; j++){
soma_Linha[i] += A[i][j];
}
}
for(int i= 0; i<3;i++){
cout << "Soma da linha "<< i<< ": " << soma_Linha[i] << "\n";
}
return 0;
}
METODOS
UM MÉTODO É UMA SUB-ROTINA QUE É EXECUTADA POR UM OBJETO AO
RECEBER UMA MENSAGEM. OS MÉTODOS DETERMINAM O COMPORTAMENTO
DOS OBJETOS DE UMA CLASSE E SÃO ANÁLOGOS A FUNÇÕES OU
PROCEDIMENTOS DA PROGRAMAÇÃO ESTRUTURADA.