Вы находитесь на странице: 1из 85

Programao de Computadores

Jos Romildo Malaquias


DECOM
UFOP

2011.1

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

1 / 55

A Linguagem C++

C++ uma linguagem de programao de propsito geral desenvolvida a partir


da linguagem C com a incluso de construes para suporte programao
orientada a objetos.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

2 / 55

Tipos bsicos: tipo lgico

Tipo: bool
Literais: true , false
Operaes:
not negao
&&
e lgico
||
ou lgico
Converses:
true
false
0
qualquer valor 6= 0

Jos Romildo Malaquias (DECOM UFOP)

1
0
false
true

Programao de Computadores

2011.1

3 / 55

Tipos bsicos: tipo caractere

Tipo: char
Modificadores: signed , unsigned
Literais:
Letras: a, b, . . . , Z
Algarismos: 0, 1, . . . , 9
Especiais: \n, \t, \0
Nmeros: 97 (o a na tabela ASCII)

Operaes: entrada e sada

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

4 / 55

Tipos bsicos: tipo inteiro

Tipo: int
Modificadores:
signed , unsigned
short, long, long long

Literais:
Decimal: 20
Octal: 020
Hexadecimal: 0x20

Operaes:
aritmticas: + - * / %
relacionais: == != < <= > >=

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

5 / 55

Tipos bsicos: tipos reais

Tipo: float, double


Modificadores: long, long long (aplicados ao double)
Literais:
1.23
.23
1.
1.23e10
1.23E-10
1.23f

Operaes:
aritmticas: + - * /
relacionais: == != < <= > >=

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

6 / 55

Tipos bsicos: tipo vazio

Tipo: void
Uso:
Como tipo de retorno de uma funo no retorna um valor como resultado
Como tipo de ponteiro para um tipo indefinido (ponteiro genrico)

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

7 / 55

Variveis

A memria do computador pode ser vista como um conjunto de caixinhas nas


quais podemos colocar valores.
Varivel uma caixinha na memria onde armazenamos um valor.
Declarao:
tipo nome;
tipo nome1 , . . ., nomen ;
tipo nome = expresso;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

8 / 55

Estrutura de seleo em algoritmos

Utilizada quando for necessrio escolher uma entre vrias alternativas.


Variaes:
estrutura condicional if else
estrutura condicional if
estrutura condicional switch

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

9 / 55

Estrutura de seleo condicional


A escolha da alternativa definida por uma condio.
Uma condio uma expresso booleana, e o seu valor pode ser verdadeiro
ou falso.
Portanto permite a escolha entre duas alternativas.
A condio avaliada, podendo resultar em
verdadeiro: a primeira alternativa escolhida e a segunda ignorada
falso: a segunda alternativa escolhida e a primeira ignorada

if (condio)
comando1 ;
else
comando2 ;

Jos Romildo Malaquias (DECOM UFOP)

comando1

Programao de Computadores

condic
ao

comando2

2011.1

10 / 55

Estrutura de seleo condicional: exemplo

Ler dois nmeros inteiros e mostrar o maior deles


#include <iostream>
using namespace std;
int main()
{

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

11 / 55

Estrutura de seleo condicional: exemplo

Ler dois nmeros inteiros e mostrar o maior deles


#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "Digite dois numeros inteiros: ";
cin >> x >> y;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

11 / 55

Estrutura de seleo condicional: exemplo

Ler dois nmeros inteiros e mostrar o maior deles


#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "Digite dois numeros inteiros: ";
cin >> x >> y;
if (x > y)
else
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

11 / 55

Estrutura de seleo condicional: exemplo

Ler dois nmeros inteiros e mostrar o maior deles


#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "Digite dois numeros inteiros: ";
cin >> x >> y;
if (x > y)
cout << "O maior numero e " << x << endl;
else
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

11 / 55

Estrutura de seleo condicional: exemplo

Ler dois nmeros inteiros e mostrar o maior deles


#include <iostream>
using namespace std;
int main()
{
int x, y;
cout << "Digite dois numeros inteiros: ";
cin >> x >> y;
if (x > y)
cout << "O maior numero e " << x << endl;
else
cout << "O maior numero e " << y << endl;
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

11 / 55

Estrutura de seleo condicional com uma nica alternativa

O comando executado somente se a condio for satisfeita.

condic
ao

if (condio)
comando;

F
comando

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

12 / 55

Estrutura de seleo condicional com uma nica alternativa:


exemplo

Ler um nmero no negativo e exibir a sua raiz quadrada.


#include <iostream>
#include <math>
using namespace std;
int main()
{

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

13 / 55

Estrutura de seleo condicional com uma nica alternativa:


exemplo

Ler um nmero no negativo e exibir a sua raiz quadrada.


#include <iostream>
#include <math>
using namespace std;
int main()
{
double x;
cout << "Digite um numero nao negativo: ";
cin >> x;

cout << "Fim" << endl;


}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

13 / 55

Estrutura de seleo condicional com uma nica alternativa:


exemplo

Ler um nmero no negativo e exibir a sua raiz quadrada.


#include <iostream>
#include <math>
using namespace std;
int main()
{
double x;
cout << "Digite um numero nao negativo: ";
cin >> x;
if (x >= 0)
cout << "Fim" << endl;
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

13 / 55

Estrutura de seleo condicional com uma nica alternativa:


exemplo

Ler um nmero no negativo e exibir a sua raiz quadrada.


#include <iostream>
#include <math>
using namespace std;
int main()
{
double x;
cout << "Digite um numero nao negativo: ";
cin >> x;
if (x >= 0)
cout << "raiz quadrada: " << sqrt(x) << endl;
cout << "Fim" << endl;
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

13 / 55

Estrutura de seleo mltipla: switch I


Permite a escolha de uma entre vrias alternativas.
A seleo feita atravs de uma expresso de controle.
Cada alternativa uma lista de comandos rotulada com uma constante
(literal).
A expresso de seleo e as constantes devem ser de um mesmo tipo integral
(char, int, short int, long int, etc.)
float, double e string no so permitidos.
A lista de comandos de uma alternativa s termina com o comando break ou
no final do switch.

Execuo do switch
1

Avalia-se a expresso de controle.

Seleciona-se a primeira alternativa cujo rtulo igual ao valor da expresso


de controle, e executa-se a lista de comandos correspondente.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

14 / 55

Estrutura de seleo mltipla: switch II

switch (expresso)
{
case constante1 :
comandos1 ;
break;
case constante2 :
comandos2 ;
break;
...
case constanten :
comandosn ;
break;
default :
comando0 ;
}

temp express
ao

temp = constante1

comandos1

comandos2

comandosn

temp = constante2
F

temp = constanten
F

comandos0

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

15 / 55

Estrutura de seleo mltipla: switch III

O switch executa todos os comandos a partir da alternativa escolhida at o


final do switch ou at encontrar o comando break.
necessrio usar o comando break no final de cada alternativa (exceto a
ltima) para evitar que os comandos das alternativas seguintes sejam
executados.
As alternativas so mutuamente exclusivas somente quando cada caso
termina com o comando break.
Quando o valor da expresso no coincidir com aqueles especificados nas
alternativas e houver a alternativa rotulada com default ento esta
alternativa ser escolhida.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

16 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{

}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;

}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{

}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;

}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;

}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;
case C: cout << "Bom"
; break;

}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;
case C: cout << "Bom"
; break;
case D: cout << "Regular"
; break;

}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;
case C: cout << "Bom"
; break;
case D: cout << "Regular"
; break;
case E: cout << "Ruim"
; break;

}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;
case C: cout << "Bom"
; break;
case D: cout << "Regular"
; break;
case E: cout << "Ruim"
; break;
case F: cout << "Insuficiente"
; break;
}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;
case C: cout << "Bom"
; break;
case D: cout << "Regular"
; break;
case E: cout << "Ruim"
; break;
case F: cout << "Insuficiente"
; break;
default : cout << "conceito invalido";
}
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de seleo mltipla: exemplo


Anlise do conceito obtido pelo aluno na disciplina
#include <iostream>
using namespace std;
int main()
{
char conceito;
cout << "Digite o conceito obtido (AF): ";
cin >> conceito;
switch (conceito)
{
case A: cout << "Excelente"
; break;
case B: cout << "Otimo"
; break;
case C: cout << "Bom"
; break;
case D: cout << "Regular"
; break;
case E: cout << "Ruim"
; break;
case F: cout << "Insuficiente"
; break;
default : cout << "conceito invalido";
}
cout << endl;
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

17 / 55

Estrutura de repetio em algoritmos

Utilizada quando um trecho do algoritmo ou at mesmo todo o algoritmo


precisa ser repetido.
O nmero de repeties pode ser fixo ou estar associado a uma condio.
Existem estruturas de controle para tais situaes:
while
do while
for

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

18 / 55

Nmero indefinido de repeties com teste no incio

No necessrio saber o nmero de vezes que o trecho do algoritmo deve ser


repetido.
Baseia-se na anlise de uma condio (expresso booleana).
A repetio ser feita enquanto a condio for verdadeira.

while (condio)
comando;

condi
c
ao

comando

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

19 / 55

Nmero indefinido de repeties com teste no incio:


exemplo

Mostrar os nmeros inteiros de 1 at 5


#include <iostream>
using namespace std;
int main()
{

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

20 / 55

Nmero indefinido de repeties com teste no incio:


exemplo

Mostrar os nmeros inteiros de 1 at 5


#include <iostream>
using namespace std;
int main()
{
int contador = 1;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

20 / 55

Nmero indefinido de repeties com teste no incio:


exemplo

Mostrar os nmeros inteiros de 1 at 5


#include <iostream>
using namespace std;
int main()
{
int contador = 1;
while (contador <= 5)
{

}
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

20 / 55

Nmero indefinido de repeties com teste no incio:


exemplo

Mostrar os nmeros inteiros de 1 at 5


#include <iostream>
using namespace std;
int main()
{
int contador = 1;
while (contador <= 5)
{
contador = contador + 1;
}
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

20 / 55

Nmero indefinido de repeties com teste no incio:


exemplo

Mostrar os nmeros inteiros de 1 at 5


#include <iostream>
using namespace std;
int main()
{
int contador = 1;
while (contador <= 5)
{
cout << "Valor do contador: " << contador << endl;
contador = contador + 1;
}
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

20 / 55

Nmero indefinido de repeties com teste no incio

O comando while pode ser definido recursivamente como:


while (condio)
comando;

Jos Romildo Malaquias (DECOM UFOP)

if (condio)
{
comando;
while (condio)
comando;
}

Programao de Computadores

2011.1

21 / 55

Problemas I
1

Escreva um programa que leia um nmero inteiro, calcule e mostre o fatorial


deste nmero.

Definio recursiva de fatorial



n! =

1
n (n 1)!

, se n = 0
, se n > 0

Definio interativa de fatorial


n! = 1 2 (n 1) n
Observe que ser necessrio realizar vrias multiplicaes para encontrar o
fatorial: repetir as multiplicaes
Utilize uma varivel auxiliar para contar de 1 at n.
Utilize uma varivel para armazenar o resultado (o produto parcial).
Para cada valor do contador, efetuar uma multiplicao, atualizando o produto
parcial.
Ao final das repeties, o produto parcial ser o fatorial desejado.
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

22 / 55

Problemas II

Faa um programa que leia um valor n inteiro e positivo, calcule e mostre o


valor de E , dado pelo frmula:
E =1+

Jos Romildo Malaquias (DECOM UFOP)

1
1
1
1
1
+
+
+
+ +
1! 1! 2! 3!
n!

Programao de Computadores

2011.1

23 / 55

Problemas III

Faa um programa que leia as notas de seis alunos, calcule e mostre a mdia
aritmtica das notas.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

24 / 55

Problemas IV

Faa um programa que leia as trs notas de todos os alunos de uma turma,
calcule e mostre:
a) a mdia aritmtica das trs notas de cada aluno;
b) a situao do aluno, dada pela tabela
mdia aritmtica
inferior a 3
entre 3 (inclusive) e 7
igual ou superior a 7
c)
d)
e)
f)

o
o
o
a

situao
reprovado
exame especial
aprovado

total de alunos aprovados;


total de alunos de exame especial;
total de alunos reprovados;
mdia da turma.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

25 / 55

Nmero indefinido de repeties com teste no final

No necessrio saber o nmero de vezes que o trecho do algoritmo deve ser


repetido.
Baseia-se na anlise de uma condio (expresso booleana).
Primeiro executa-se o trecho a ser repetido, para depois verificar a condiao.
A repetio ser feita enquanto a condio for verdadeira.

comando

do
comando;
while (condio);

condi
c
ao

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

26 / 55

Nmero indefinido de repeties com teste no final: exemplo


Ler nmeros inteiros at o nmero zero ser digitado
#include <iostream>
using namespace std;
int main()
{

}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

27 / 55

Nmero indefinido de repeties com teste no final: exemplo


Ler nmeros inteiros at o nmero zero ser digitado
#include <iostream>
using namespace std;
int main()
{
int numero;
cout << "Digite varios numeros inteiros (0 para terminar)" << endl;

cout << "Obrigado" << endl;


}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

27 / 55

Nmero indefinido de repeties com teste no final: exemplo


Ler nmeros inteiros at o nmero zero ser digitado
#include <iostream>
using namespace std;
int main()
{
int numero;
cout << "Digite varios numeros inteiros (0 para terminar)" << endl;
do
{

}
while (

);

cout << "Obrigado" << endl;


}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

27 / 55

Nmero indefinido de repeties com teste no final: exemplo


Ler nmeros inteiros at o nmero zero ser digitado
#include <iostream>
using namespace std;
int main()
{
int numero;
cout << "Digite varios numeros inteiros (0 para terminar)" << endl;
do
{
cin >> numero;

}
while (numero != 0);
cout << "Obrigado" << endl;
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

27 / 55

Nmero indefinido de repeties com teste no final: exemplo


Ler nmeros inteiros at o nmero zero ser digitado
#include <iostream>
using namespace std;
int main()
{
int numero;
int quantidade = 0;
cout << "Digite varios numeros inteiros (0 para terminar)" << endl;
do
{
cin >> numero;
if (numero != 0)
quantidade += 1;
}
while (numero != 0);
cout << "Voce digitou " << quantidade << " numeros" << endl;
cout << "Obrigado" << endl;
}
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

27 / 55

Nmero indefinido de repeties com teste no incio

O comando do while pode ser definido recursivamente como:


do
comando;
while (condio);

Jos Romildo Malaquias (DECOM UFOP)

comando;
if (condio)
do
comando;
while (condio);

Programao de Computadores

2011.1

28 / 55

Nmero definido de repeties


Sabe-se o nmero de vezes que um trecho do programa deve ser repetido.
for (inicialiazao; condio; incremento)
comando;
1

O comando inicializao executado


uma nica vez, no incio do comando de
repetio.

A expresso booleana condio


avaliada para decidir se continua
repetindo:
falso termina o comando de repetio
verdadeiro repetir:
a) executa o comando no corpo da
estrutura de repetio
b) executa o comando incremento a
fim de alterar o estado da
computao, preparando para a
prxima repetio
c) volta na avaliao da condio em 2
e repete o processo.

Jos Romildo Malaquias (DECOM UFOP)

inicializac
ao

condic
ao

Programao de Computadores

comando

incremento

2011.1

29 / 55

Nmero definido de repeties: exemplo

Calcular o fatorial de um nmero natural.


#include <iostream>
using namespace std;
int main()
{

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

30 / 55

Nmero definido de repeties: exemplo

Calcular o fatorial de um nmero natural.


#include <iostream>
using namespace std;
int main()
{
cout << "Digite um numero natural: ";
int n;
cin >> n;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

30 / 55

Nmero definido de repeties: exemplo

Calcular o fatorial de um nmero natural.


#include <iostream>
using namespace std;
int main()
{
cout << "Digite um numero natural: ";
int n;
cin >> n;
int i;
int fat = 1;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

30 / 55

Nmero definido de repeties: exemplo

Calcular o fatorial de um nmero natural.


#include <iostream>
using namespace std;
int main()
{
cout << "Digite um numero natural: ";
int n;
cin >> n;
int i;
int fat = 1;
for (i = 1; i <= n; i++)

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

30 / 55

Nmero definido de repeties: exemplo

Calcular o fatorial de um nmero natural.


#include <iostream>
using namespace std;
int main()
{
cout << "Digite um numero natural: ";
int n;
cin >> n;
int i;
int fat = 1;
for (i = 1; i <= n; i++)
fat = fat * i;
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

30 / 55

Nmero definido de repeties: exemplo

Calcular o fatorial de um nmero natural.


#include <iostream>
using namespace std;
int main()
{
cout << "Digite um numero natural: ";
int n;
cin >> n;
int i;
int fat = 1;
for (i = 1; i <= n; i++)
fat = fat * i;
cout << n << "! = " << fat;
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

30 / 55

Estruturas de Dados
Valores simples: indivisveis
nmeros inteiros: 12, 324, -1324
nmeros fracionrios: 0.212, -132.412, 78.13e-17
caracteres: B, @, n
booleanos: true , false
Valores compostos: formados por partes:
registro de um livro na biblioteca:
ttulo
autor
editora
ano publicao

notas dos alunos em uma prova:


nota do primeiro aluno
nota do segundo aluno
..
.
nota do ltimo aluno
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

31 / 55

Estruturas de Dados

Valores compostos so estruturas de dados.


Estruturas homogneas: todos os componentes so do mesmo tipo.
vetores

Estruturas heterogneas: os componentes podem ser de diferents tipos.


registros (structs)
unies

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

32 / 55

Vetores

Vetor
Estrutura formada por uma sequncia de variveis do mesmo tipo.
Identificadas por um nico nome.
Cada componente identificado por um ndice, um nmero inteiro que
referencia sua localizao dentro da estrutura.
Em C++ os ndices utilizados para identificar as posies em um vetor
comeam sempre em 0 (zero) e vo at o tamanho do vetor menos uma
unidade.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

33 / 55

Vetores
Declarao
Na declarao de uma varivel vetor especificamos:
o tipo dos componentes do vetor
o nome da varivel
o nmero de componentes que formam o vetor
os elementos do vetor (opcional)
tipo nome[tamanho];
tipo nome[n] = { e0 , e1 , . . ., en1 };
tipo nome[] = { e0 , e1 , . . ., en1 };

Exemplos:
int notas[10];
bool resultados[2*n+3];
double alfa[3] = { 1.2, -0.45, 5.5 };
string mensagens[] = { "comeco", "meio", "fim", "end" };
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

34 / 55

Vetores

Indexao
Operao bsica com vetor: indexao
Permite selecionar um componente especfico da estrutura pela sua posio
(ndice)
O ndice do primeiro elemento 0 (zero)
O ndice do ltimo elemento o tamanho do vetor menos um
vetor[ndice]

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

35 / 55

Vetores

Exemplo: exibe um elemento do vetor


string mensagens[] = { "comeco", "meio", "fim", "end" };
cout << mensagens[2] << endl;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

36 / 55

Vetores

Exemplo: modifica um elemento do vetor


int vet[] = { 10, 20, 30 };
vet[2] = 2*vet[0] + vet[1] - vet[2];
cout << vet[2] << endl;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

37 / 55

Vetores

Exemplo: exibe todos os elementos do vetor


int vet[] = { 10, 20, 30 };
for (int i = 0; i < 3; i++)
cout << vet[i] << ;
cout << endl;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

38 / 55

Vetores

Exemplo: preenchendo um vetor


cout << "Quantidade de alunos: ";
int tamanho;
cin >> tamanho;
double vet[tamanho];
for (int i = 0; i < tamanho; i++)
{
cout << "nota " << i << ": ";
cin >> vet[i];
}

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

39 / 55

Vetores

Exemplo: mdia dos elementos do vetor


const int n = 5;
double notas[n] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
double soma = 0.0;
for (int i = 0; i < n; i++)
soma += notas[i]
double media = soma / n;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

40 / 55

Vetores: Problemas I

Problema
Faa um programa que leia as notas dos alunos de uma turma, determine e mostre
a mdia das notas, e o nmero de alunos com notas superiores ou iguais mdia.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

41 / 55

Vetores: Problemas II
Problema
Faa um programa que simule o lanamento de um dado com vinte jogadas.
Mostrar os nmeros sorteados e a frequncia com que apareceram.
Para gerar nmeros aleatrios em C++, temos duas funes que trabalham de
forma semelhante:
rand
random

Estas duas funes geram nmeros aleatrios de 0 a RAND_MAX (definido na


biblioteca stdlib.h). Se voc quiser gerar valores randmicos em uma
determinada faixa numrica, basta fazer assim:
numero = rand() % valor_maximo;

ou
numero =random() % valor_maximo;

Para us-las, porm, necessrio inicializar o gerador de nmeros aleatrios com a


funo srand.
Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

42 / 55

Vetores: Problemas III


Problema
Uma pequena loja de artesanato possui um vendedor e comercializa dez tipos de
objetos. O vendedor recebe, mensalmente, salrio de R$ 400,00, acrescido de 5%
do valor total de suas vendas. O valor unitrio dos objetos deve ser informado e
armazenado em um vetor; a quantidade vendida de cada pea deve ficar em outro
vetor, mas na mesma posio. Crie um programa que receba os preos e as
quantidades vendidadas, armazenando-os em seus respectivos vetores (ambos com
tamanho dez). Depois, determine e mostre:
um relatrio contendo quantidade vendida, valor unitrio e valor total de
cada objeto; ao final, dever ser mostrado o valor geral das vendas e o valor
da comisso que ser paga ao vendedor;
o valor do objeto mais vendido e sua posio no vetor (no se preocupe com
empates).

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

43 / 55

Vetores: Problemas IV

Problema
Faa um programa que preencha um vetor com os modelos de cinco carros
(exemplos de modelos: fusca, gol, vectra, etc.), carregue outro vetor com o
consumo desses carros, isto , quantos quilmetros cada um deles faz com um
litro de combustvel, calcule e mostre:
o modelo de carro mais econmico,
quantos litros de combustvel cada um dos carros cadastrados consome para
percorrer uma distncia de de mil quilmetros.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

44 / 55

Matrizes

matriz: varivel composta homognea multidimensional.


Formada por uma sequncia de variveis, todas do mesmo tipo, com o
mesmo nome, e alocadas sequencialmente na memria.
Os componentes so identificados por um conjunto de ndices.
Utiliza-se um ndice para cada dimenso.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

45 / 55

Matrizes
Declarao
Na declarao de uma varivel matriz especificamos:
o tipo dos componentes da matriz
o nome da varivel
o nmero de componentes que formam cada dimenso da matriz
os elementos do vetor (opcional)
tipo nome[dimenso1 ][dimenso2 ]...[dimensoN ];

Exemplos:
int notas[2][6];
float y[2][4][3];
char mat [4][3] [= {
{
{
{
};

{ A, E, I },
6, 5, 4 },
#, @, = },
m, n, z }

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

46 / 55

Matrizes

Indexao
Permite selecionar um componente especfico da estrutura pela sua posio,
dada por um conjunto de ndices.
Exemplos:
int mat[2][4] = { { 10, 20, 30, 40}, {9, 8, 7, 6} };
// acessar um elemento da matriz
cout << "segunda linha, terceira coluna > " << mat[1][2];
// atribuir um valor a um elemento da matriz
mat[1][2] = 2*mat[0][0] + 1;
cout << "segunda linha, terceira coluna > " << mat[1][2];

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

47 / 55

Matrizes

Problema 1
Obter do usurio uma matriz m3x2 , calcular e mostrar a matriz r3x2 resultante da
multiplicao de todos os elementos de m pelo seu maior elemento.

Problema 2
Faa um programa que preencha uma matriz 10x3 com as notas de dez alunos em
trs provas. O programa dever mostrar um relatrio com o nmero dos alunos
(nmero da linha) e a prova em que cada aluno obteve menor nota. Ao final do
relatrio, dever mostrar quantos alunos tiveram menor nota em cada uma das
provas: na prova 1, na prova 2 e na prova 3.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

48 / 55

Registros

Registros so estruturas de dados capazes de agregar vrias informaes.


Os componentes de um registro so chamados de campos.
Os campos podem ser de tipos diferentes.
Por isto registros so estruturas de dados heterogneas.
Os tipos registro so novos tipos de dados definidos pelo programador, de
acordo com a sua necessidade.
Em C++ os registros so chamados de struct.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

49 / 55

Registros: Uso

Utiliza-se a palavra reservada struct para declarar um novo tipo registro.


A seleo de um componente feita pelo operador . (ponto).

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

50 / 55

Registros: Exemplo de uso


// declaracao de um tipo registro
struct conta_bancaria
{
int numero;
string titular;
double saldo;
};
// declaracao de variaveis de tipo registro
struct conta_bancaria conta1;
struct conta_bancaria conta2 = { 10231, "Ivo Mascarenhas", 125.45 };
struct conta_bancaria todas_as_contas[10];
// acesso aos componentes de um registro
cout << "Titular: " << conta2.titular << endl;
conta2.saldo = conta2.saldo - 0.20 * conta2.saldo;

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

51 / 55

Registros: Problema 1
Problema 1
Faa um programa que realize o cadastro de contas bancrias com as seguintes
informaes: nmero da conta, nome do cliente, e saldo. O banco permitir o
cadastramento de apenas 15 contas e no poder haver mais que uma conta com
o mesmo nmero. Crie o menu de opes a seguir e implemente cada uma das
opes.
Menu
1
2
3
0

Cadastrar nova conta


Visualizar todas as contas de determinado cliente
Excluir a conta com menor saldo
Terminar

Escolha uma opcao:

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

52 / 55

Registros: Problema 2
Problema 2
Crie um programa para ler o cdigo, o sexo (M masculino; F feminino) e o
nmero de horas/aula ministradas pelos professores de uma escola durante um
ms. Sabe-se que um professor ganha R$40,50 por hora-aula. Aps a leitura, o
programa dever mostrar:
uma listagem contendo o cdigo, o salrio bruto, o desconto calculado de
acordo com a tabela 1, e o salrio lquido de todos os professores;
a mdia aritmtica dos salrios brutos dos professores do sexo masculino;
a mdia aritmtica dos salrios brutos dos professores do sexo feminino.
sexo
masculino
feminino

at 70 horas/aula ao ms
10%
7%

mais que 70 horas/aula ao ms


8%
5%

Tabela: Descontos salariais

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

53 / 55

Funes: Problemas

Elabore um programa contendo uma sub-rotina (funo) que receba as trs


notas de um aluno como parmetros e uma letra. Se a letra for A, a
sub-rotina dever calcular a mdia aritmtica das notas do aluno; se for P,
dever calcular a mdia ponderada, com pesos 5, 3 e 2. A mdia calculada
dever ser devolvida ao principal para, ento, ser mostrada.

Faa um programa com uma funo que receba como parmetro a hora de
incio de a hora de trmino de um jogo, ambas subdivididas em dois valores
distintos: horas e minutos. A funo dever retornar a durao expressa em
minutos, considerando que o tempo mximo de durao de um jogo de 24
horas e que ele pode comear em um dia e terminar no outro.

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

54 / 55

FIM

Jos Romildo Malaquias (DECOM UFOP)

Programao de Computadores

2011.1

55 / 55

Вам также может понравиться