Buscar

Algoritmos Revisão

Prévia do material em texto

Algoritmos – Prof. Anita Lopes 
 
 
2 
 
 
FUNDAMENTOS DA LINGUAGEM C++
 
1 A linguagem C++
 
1.1 Introdução 
 
A linguagem C++ é uma linguagem de alto nível e herda muitos conceitos da linguagem C. 
Além disso, acrescenta características de uma linguagem orientada a objetos. 
Em nosso estudo, usaremos como uma linguagem estruturada. 
Assim como várias linguagens hoje em dia, a linguagem C++ é case sensitive, isto é, 
diferencia letras maiúsculas de minúsculas. 
 
 
1.2 Estrutura de um programa em C++
 
 Cada linguagem de programação cria, ou herda da linguagem que lhe originou, uma 
estrutura para o programa. A estrutura de um programa codificado em C++ será 
apresentada a seguir 
[arquivos de cabeçalho] 
[definições de constantes] 
[uso de namespaces] 
[declaração de variáveis globais] 
int main() 
{ 
 [declarações das demais funções] 
 Bloco de comandos 
} 
tipo de retorno da função1 nome_da_função1 (parâmetros) 
{ 
 Bloco de comandos da função1 
} 
... 
tipo de retorno da funçãon nome_da_funçãon ( parâmetros) 
{ 
 Bloco de comandos da funçãon 
} 
 
 
A função main poderá ser, ou não, a primeira função. Se for a primeira, os 
protótipos das demais funções precisarão estar presentes na main, mas se as 
demias vierem antes da main, não. 
 
Algoritmos – Prof. Anita Lopes 
 
 
3 
 Exemplo de um programa em C++: 
#include <iostream> 
using namespace std; 
int main() 
{ 
 cout<<"\nPRIMEIRO PROGRAMA EM C++"; 
 return 0; 
} 
 
 Explicando: 
#include <iostream> instrui o compilador a usar a biblioteca padrão 
using namesapce std; uso do namespace padrão std(cin..., cout) 
int main() cabeçlhao da função principal(main) 
{ inicia a função 
 cout... ; Exibe msg na tela a msg após alimentar linha 
 return 0; Comando que retorna ao sistema operacional Se omitirmos no 
caso da main, nenhum erro ocasionará. 
} finaliza a função 
 
 
 
 
 
A diretiva using possibilita que todos os identificadores de um 
namespace(entenda como um “pacote de nomes”) fiquem disponibilizados de 
maneira global. 
 
1.2.1 Conjunto de caracteres 
 
Um programa fonte em C++ é um texto não formatado que faz uso do conjunto 
padrão de caracteres ASCII. Poderá ser escrito em qualquer editor de texto e salvo 
com a extensão cpp. 
 
 
1.2.2 Comentários 
 
Muitas vezes para facilitar a manutenção ou elucidar, precisaremos escrever 
comentários sobre trechos do programa. A linguagem C++ permite que comentários 
apareçam em qualquer parte e podem ser de dois tipos: 
¾ Comentários de bloco, herança da linguagem C, terão um /* antes e um */ 
depois. 
¾ Comentário de linha será precedido por //. 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
4 
Exemplos: 
 
/* A disciplina de Algoritmos é simplesmente apaixonante. Estou ficando cada vez mais 
exigente com minhas soluções. */ 
 
 // A cada aula tem sempre algo interessante. 
 
 
1.2.3 Diretivas de Compilação 
 
Você perceberá que nossos programas começarão com alguns comandos para que as 
bibliotecas e constantes possam ser anexadas a eles no momento que o programa 
executável for gerado. 
Nem sempre existiram as bibliotecas, chamadas de unidades por outras linguagens, 
mas quando as linguagens foram se tornando mais complexas ficou inviável carregar todas 
as funções/comandos. Sendo assim, foram agrupadas de acordo com suas finalidades e só 
teremos que incluí-las em nossos programas quando formos, de fato, usá-las. 
A biblioteca iostream será obrigatória porque agrega as funções/comandos básicos. 
Sintaxes: 
#include <nome_da_biblioteca > 
#include ”...nome_da_biblioteca ” 
 onde nome_da_biblioteca é o nome da biblioteca que se deseja incluir. 
Estando entre os sinais < e > significa que está no diretório padrão e ficando entre 
”, significa que precisamos fornecer o caminho onde se encontra a biblioteca. 
 
Exemplos de bibliotecas: 
 
BIBLIOTECA cctype 
Converte para maiúscula ou para minúscula uma letra 
toupper(letra) 
tolower(letra) 
 
 
BIBLIOTECA cmath 
Calcula o valor absoluto real d 
fabs(double d) 
Funções trigonométricas do ângulo arco, em radianos 
sin(double arco) 
cos(double arco) 
tan(double arco) 
asin(double arco) 
acos(double arco) 
atan(double arco) 
 
Algoritmos – Prof. Anita Lopes 
 
 
5 
Funções de arredondamento para inteiro 
ceil(double num) Ex. ceil(3.2) => 4.0 arredonda pra cima 
floor(double num) Ex. floor(3.2) => 3.0 arredonda para baixo 
Funções logarítmicas: log() é logaritmo natural (base e), log10() é logaritmo 
decimal (base 10) 
log(double num) 
log10(double num) 
Funções: potência e raiz quadrada 
pow(double base, double exp); Potenciacao: pow(3.2,5.6) => 3.25.6
sqrt(double num); Raiz quadrada: sqrt(9.0) = >3.0. 
 
 
BIBLIOTECA cstdlib 
 Calcula o valor absoluto do inteiro i e do real d, respectivamente 
abs(int /float) 
Converte para inteiro, se possível, um vetor de char 
atoi( vetor de char ) 
Converte para real, se possível, um vetor de char 
atof( vetor de char ) 
 
 
 
BIBLIOTECA cstring 
 Concatena duas strings 
strcat(str1, str2); 
Copia o conteúdo de uma variável em outra variável 
strcpy(str1, str2) /* não é permitido: str1 =str2;*/ 
Fornece o número de caracteres de uma string 
strlen(str1) 
Compara duas strings 
 devolve número menor que 0 se str1 vier antes de str2 
strcmp(str1, str2) devolve número maior que 0 se str1 vier depois de str2 
 devolve 0 se str1 for igual à str2 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
6 
2.Saída 
 
O objeto cout tem como objetivo o envio de dados/mensagens para a tela. Ele pode ser 
usado das três formas abaixo: 
 
Usando: using namespace std; cout<<”…”; 
cout<<variável ou expressão<<endl; 
Usando: using std::cout; cout<<”…”; 
cout<<variável ou expressão<<endl; 
Sem using std::cout<<”…”; 
std::cout<<variável ou expressão<<endl; 
 
Na tabela abaixo, encontramos alguns caracteres de controle que poderão ser usados 
com o objeto cout: 
 
Caracter de Controle Sequência de escape 
nulo(null) 
tabulação horizontal(tab) 
nova linha(new line/enter) 
aspas(”) 
apostrofo(’) 
barra invertida(\) 
\0 
\t 
\n 
\“ 
\’ 
\\ 
 
Exemplo 
#include <iostream> 
using namespace std; 
int main() 
{ cout<<"Aprendendo a usar \"cout\"\n" ; 
 // o caracter \" imprime aspas na tela 
 cout<<"O operador de insercao << separa os elementos que se desja colocar 
na tela\n"; 
 cout<<"O caracter de controle \'\\n\' equivale a endl, alimenta 
linha"<<endl; 
 cout<<"Usando \'\\t\' \timprime-se na proxima zona\n"; 
 // o caracter \’ imprime apostrofo na tela e o carcater \\ imprime \ na 
teal 
 system("pause"); 
} 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
7 
3. Constantes e variáveis 
 
3.1 Constantes 
 
Em nosso estudo, faremos uso de quatro tipos básicos de constantes: inteiras, de ponto 
flutuante, caracteres, cadeia de caracteres(strngs) e booleanas. Constantes inteiras e de 
ponto flutuante representam números de um modo geral. 
 
3.1.1 Constantes inteiras 
 
As constantes inteiras na linguagem C++ podem ser escritas no formato decimal 
(base 10), hexadecimal (base 16) ou octal (base 8). 
Exemplos: 
 Decimal: 12 
Octal : 033 ( em decimal vale 27. O zero antes do número caracteriza a constante 
octal) 
Hexadecimal: 0xff ( em decimal vale 255. O zero e o x antes do número 
caracterizam a constante hexadecimal) 
 
Exemplo 
#include <iostream> 
using namespace std; 
int main() 
{ int n=033, n1=0xA0; 
 cout<<"\nA constante em octal 033 equivale em decimal: "<<n; 
 cout<<"\nA constante em hexadecimal 0xA0 equivale em decimal: "<<n1; 
 cout<<"\n\n"; 
 system("pause"); 
} 
 
 
 
3.1.2 Constantes de ponto flutuante 
 
São números reais com um ponto decimal. 
 
Exemplos: 23.12 -18.123 
 
 
 
 
Algoritmos – Prof. Anita Lopes8 
3.1.3 Constantes caracteres 
 
Uma constante caracter é uma letra ou símbolo colocado entre plicas(asapas 
simples). 
Exemplo: 
 ’A’ ’N’ ’I’ ’T’ ’A’ 
As constantes caracter são armazenadas como números inteiros. Estes números 
correspondem aos valores de cada caracter dentro do código ASCII. 
 
 
3.1.4 Constantes strings 
 
Uma constante string consiste de um conjunto de caracteres do código ASCII 
padrão ou estendido, colocados entre aspas duplas. 
 
 Exemplos: 
 ”UAL!” ”Matemática” ”APRENDENDO A PROGRAMAR EM C++ ” 
Na linguagem, C++ uma string é um vetor de caracteres terminado com um caracter 
nulo. O caracter nulo é um caracter com valor inteiro igual a zero (código ASCII igual a 0). 
O finalizador nulo também pode ser escrito usando a convenção de barra invertida do C 
como sendo '\0'. 
char nome_da_string[tamanho]; 
 
 
Como precisamos reservar uma posição para o finalizador, sempre iremos 
declarar o tamanho necessário mais um. 
 
Vamos supor que declaremos uma variável de nome palavra de 11 posições(char 
palavra[11]; ) e armazenemos a palavra PROGRAMAS nela. 
 
É bom ressaltar que a linguagem C++ não inicializa as variáveis e toda célula não 
usada têm valor indeterminado. 
Não se esqueça de inicializar as variáveis de seus programas, pois coisas 
incríveis podem acontecer! 
As strings são consideradas vetores de caracteres( matriz linha). Como na 
Matemática, para se acessar um determinado caracter de uma string, basta "indexarmos". 
 
Algoritmos – Prof. Anita Lopes 
 
 
9 
 
str[1] = 'o' 
str[2] = 'a'
 
No exemplo acima, percebemos que o primeiro caracter se encontra na posição 0( 
em algumas linguagens, seria a posição 1). Desta forma, se indexarmos com 1, na verdade 
estaremos nos referindo ao segundo caracter da string; se indexarmos com 2, na verdade 
estaremos nos referindo ao terceiro caracter da string e assim sucessivamente. 
 
 
3.1.5 Constantes Booleanas 
 
As constantes booleanas são: true ou false. 
 
 
3.1.6 Constantes Simbólicas 
 
A constante pi é muito conhecida nossa desde o ensino no fundamental quando 
começamos a estudar trigonometria. 
Algumas linguagens de programação já tem essa constante definida, mas outras não. 
Além dessa, temos outras constantes que precisarão ser definidas em nossos 
programas para facilitar os cálculos. 
A diretiva define possibilitará a definição de constantes ou de pequenas “funções”. 
Sintaxe: 
#define <nome> < valor > 
 
3.2 Variáveis 
 
A variável é um lugar(endereço) na memória principal que armazena um dado e tem um 
nome associado para facilitar a programação . 
Em C++, as variáveis podem ser declaradas no inicio do programa, mas poderemos 
também declarar dentro de algumas estruturas, diferentemente de outras linguagens. Estas 
variáveis podem ser de vários tipos, mas, inicialmente, usaremos: int (inteiro), float (real de 
simples precisão) , char (caracter único), double (real de dupla precisão). 
 
Tipo Tamanho Intervalo Uso 
char 
int 
float 
double 
1 byte 
4 bytes 
4 bytes 
8 bytes 
-128 a 127 
-2147483648 a 2147483647 
3.4e-38 a 3.4e38 
1.7e-308 a 1.7e308 
número muito pequeno e caracter ASCII 
contador, controle de laço 
real (precisão de 6dígitos) 
científico (precisão de 10 dígitos) 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
10 
Quando se define um tipo de variável, informamos ao computador quanto de memória 
será necessária para armazenar esse dado e que tipos de operações poderão ser realizadas 
com esse dado. 
Para se declarar uma variável, usamos a seguinte sintaxe: 
 
< tipo> nome_da_variável ; 
 
 O nome de uma variável deve obedecer algumas regras: 
1. O primeiro caracter pode ser uma letra (maiúscula ou minúscula) ou o caracter 
sublinha. Aconselha-se a não usar o caracter sublinha no inicio para não confundir 
com algumas funções. 
2. Os demais caracteres, letras algarismos ou o caracter sublinha. 
 
Exemplos: 
 int a; float peso; char sexo; int idade1, idade2; 
 
 
3.2.1 Palavras reservadas 
 
Existem certos nomes que não poderão ser usados como identificadores. São 
chamadas as palavras reservadas e são de uso restrito da linguagem C++. 
 
3.2.2 Tipos modificados 
 
Além dos tipos de dados mencionados, existem os modificadores: long, short, signed 
e unsigned. Tipicamente o modificador long aumenta o número de bytes usados para o 
registro do número. O modificador unsigned, usado somente em inteiros, permite que um 
bit usado para guardar o sinal do número seja usado para guardar o valor do número. 
 
Tipo Tamanho (bytes) Intervalo 
unsigned char 1 0 a 255 
unsigned int 2 0 a 65 535 
unsigned long int 4 0 a 4 294 967 295 
long int (int) 4 -2 147 483 648 a 2 147 483 647 
short int 2 -32768 a 32767 
long double 10 3.4e-4932 a 1.1e4932 
 
 
 
3.2.3 Conversão de tipo (Casting) 
 
Algumas vezes precisamos, momentaneamente, modificar o tipo de dado para usá-lo 
como argumento de uma função, por exemplo, mas não desejamos declará-lo com esse tipo. 
 
Algoritmos – Prof. Anita Lopes 
 
 
11 
 
A conversão de tipo nos possibilita isso e é uma herança da linguagem C. 
 
Sintaxe: 
(tipo) variável ou expressão 
 
onde tipo é o nome do tipo ao qual queremos converter o dado ou a expressão. 
 
Exemplo 
#include <iostream> 
using namespace std; 
int main() 
{ cout<<"\nNumero 7 DIVIDIDO por 3" ; 
 cout<<"\n\nsem conversao: "<<7/3<<"\tcom conversao: "<< 
(float)7/3<<"\n\n"; 
 system("pause"); 
} 
 
 
 
3.2.4 Variável ponteiro 
 
Nós já sabemos que uma variável é um endereço na MP que armazena um dado. É 
bom deixar claro que não é um único endereço, pois, dependendo do tipo, poderemos estar 
alocando 1, 2, 4, 8 ou mais posições para cada variável como vimos na última tabela. 
Uma variável ponteiro armazena o endereço de outra variável. Em outra disciplina, 
você estudará esse tipo. 
 
 
4. Atribuição 
 
Consiste em atribuir um valor a uma variável. Em C++, o comando de atribuição tem a 
seguinte sintaxe: 
 
nome_da_variável = conteúdo ; 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
12 
Exemplos: 
a = 12 ; peso = 65.2; sexo ='f'; idade1 = 21; idade2 = 34; 
Observação 1: Em C++, é possível declarar e inicializar uma variável: int a = 12; 
Observação 2: Em C++, é possível inicializar várias variáveis: x =t =s = 0; 
Na atribuição múltipla as operações ocorrem da direita para a 
esquerda, isto é, inicialmente o valor 0 é atribuído a s, depois o valor de 
s é atribuído a t e, por último, o valor de t é atribuído a x. 
 
4.1 Atribuição múltipla. 
A linguagem C++ permite que se atribua um valor a muitas variáveis. em uma única 
instrução. 
 
 
Sintaxe: 
 
var1 = var2 = valor; 
 
Exemplo: 
a = b = 0; 
 
 
 
 
5. Entrada de dados 
 scanf 
5.1 cin 
 
cin>>nomedavariável; 
cin>>nomedavariável1>> nomedavariável2; 
 
O objeto cin permite que o usuário digite dados através do dispositivo padrão de 
entrada: teclado. O operador >> é chamado de extração. 
 
Exemplo 1: Escreva o enunciado deste programa. 
#include <iostream> 
using namespace std; 
int main() 
{ int idade; float altura; 
 cout<<"\nDigite idade: " ; cin>>idade; 
 cout<<"\nDigite altura: " ; cin>>altura; 
 cout<<"\n\n\nIdade: "<<idade; 
 cout<<"\nAltura: "<<altura<<endl; 
 system("pause"); 
} 
 
Algoritmos – Prof. Anita Lopes 
 
 
13 
 
 
Exemplo 2: Escreva o enunciado deste programa. 
#include <iostream> 
using namespace std; 
int main() 
{ char sexo; char nome[30]; 
 cout<<"\nDigite nome: " ; cin>>nome; 
 cout<<"\nDigite sexo(m/f): " ; cin>>sexo; 
 system("pause"); 
 system("cls"); 
 cout<<"\nNome; "<<nome; 
 cout<<"\nSexo; "<<sexo<<endl;; 
 system("pause"); 
} 
 
 
 
 
 
O objeto cin quando lê um vetor de char(string) termina a leitura no primeiro 
espaço, deixando RENATO no buffer. 
Quando um outro cin para ler o sexo éexecutado, o teclado não é liberado e a 
letra R é ”apanhada” e armazenada na variável sexo. 
Por estas razões, precisamos conhecer outros métodos. 
 
 
Se você escolher o formato cin>>var1>>var2;, na entrada de dados, separe-os 
com um espaço ou pressione enter após cada valor. 
 
Algoritmos – Prof. Anita Lopes 
 
 
14 
5.2 cin.get
 
Est sive com espaços e não deixa 
line 
 método permite a leitura de um vetor de char inclue
nada no buffer. 
 
Sintaxe: 
 
cin.getline(nome do vetor de caracteres, tamanho ); 
 
Exem Escreva o enunciado deste programa. 
#inc
sin
nt main() 
 nome[30]; 
nome: " ; cin.getline(nome,30); 
sexo(m/f): " ; cin>>sexo; 
"\n\n\nNome: "<<nome; 
l;; 
plo: 
lude <iostream> 
g namespace std; u
i
{ 
 char sexo; char
 cout<<"\nDigite 
"\nDigite cout<<
cout<< 
 cout<<"\nSexo: "<<sexo<<end
 system("pause"); 
} 
 
 
 
5.3 cin.get 
 
Este método permite a leitura de um char. 
es: Sintax
 
cin.get(nome da variável char); 
cin.get(); 
 
ler uma variável do tipo char, mas deixa enter no 
buffe que o objeto cin sempre libera o teclado para o usuário digitar. 
 
Exemp
A primeira sintaxe serve para 
r enquanto 
lo: Escreva o enunciado deste programa. 
#include <iostream> #include <iostream> 
 
Algoritmos – Prof. Anita Lopes 
 
 
15 
 namespace std; 
o(m/f) " ; 
(m/f): " ; 
using namespace std; 
 main() 
 
o(m/f) " ; 
(m/f) " ; 
 
using
int main() 
 
int
{ char sexo1,sexo2;
 cout<<"\nDigite sex
sexo1); cin.get(
 cout<<"\nDigite sexo
 cin.get(sexo2); 
o: "<<sexo1; cout<<"\n\n\nSex
 cout<<"\nSexo: "<<sexo2<<endl; 
 system("pause");
} 
{ char sexo1,sexo2; 
 cout<<"\nDigite sex
o1; cin>>sex
 cout<<"\nDigite sexo
 cin>>sexo2; 
nSexo: "<<sexo1; cout<<"\n\n\
 cout<<"\nSexo: "<<sexo2<<endl;;
e"); system("paus
} 
 
 
 
Não se surpreenda se encontr alguns bugs quando usar cin, cin.get() ou ar
cin.getline() em alguns compiladores. 
 
 
Não gosta de usar system(“pause”); ? Veja o exemplo abaixo: 
 
#include <iostream> 
using namespace std; 
t ain() 
 
o(m/f) " ; cin>>sexo1; 
o(m/f): " ; cin>>sexo2; 
<<sexo1; 
arda o pressionamento de uma 
in m
{ char sexo1,sexo2; 
 cout<<"\nDigite sex
nDigite sex cout<<"\
 cout<<"\n\n\nSexo: "
 cout<<"\nSexo: "<<sexo2<<endl; 
 cin.get();cin.get(); 
e o segundo agu // o primeiro limpa o buffer 
tecla 
 }
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
16 
. Operadores Aritméticos 
 
Além dos quatros operadores aritméticos básicos, adição, subtração, multiplicação e 
divisão, a linguagem C++ ainda disponibiliza o operador (%) chamado de módulo cujo significado 
é o resto da divisão inteira(Em alguma linguagens é conhecido como mod). 
 
6
Operador Operação 
+ 
- 
* 
/ 
% 
adição 
subtração 
multiplicação 
divisão 
módulo (resto da divisão inteira) 
 
 Sintaxe: 
 
operando1 operador operando2 
 
 onde operador é um dos símbolos mostrados acima e operando é uma constante ou um 
identificador de variável. 
 Exemplos: 
 12 + 5 -> 17 
 12 - 5 -> 7 
 12 * 5 -> 60 
 12 / 5 -> 2 quando se divide dois inteiros, o resultado é um inteiro 
 12 % 5 -> 2 resto da divisão inteira 
 
 
Se você precisar dividir dois números inteiros e quiser a resposta em real, existe 
duas saídas: 
1- Coloque um ponto em um dos operandos caso, pelo menos um, seja uma 
constante: 12 / 5.0 . 
2- Caso os dois operandos sejam variáveis, faça: (float) a/b . 
 
 
Não existe em C++, como existe em outras linguagens, um operador específico para 
a operação de potenciação (ab). Existe, porém, uma função de biblioteca 
(pow(...,...)) que realiza esta operação, ou você poderá criar quando aprender a 
usar as funções log e exp.. 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
17 
s 6.1 Hierarquia das operaçõe
 
Categoria Operadores 
parênteses ( ) 
função nome() 
incremental, l ++ --ógico ! 
aritmético % * / 
aritmético + - 
relacional < > <= >= 
relacional == != 
lógico && 
lógico || 
condicional ?: 
atribuição = += -= *= /= %= 
 
 
 
6.2 e Atribuição Aritmética 
uma operação 
A forma clássica será permitida na maioria das linguagens como por exemplo: 
 
 Operadores d
 
Muitas vezes queremos alterar o valor de uma variável realizando alg
aritmética com ela. 
cont = cont + 1; ou soma = soma + altura; 
A l da linguagem C os operadores de atribuição aritmética, 
simplifican , %=). 
Sintaxes: 
 
 
inguagem C ++ herdou 
do a expressão clássica. Os símbolos usado são (+=, -=, *=, /= 
var += exp; 
var -= exp; 
var *= exp; 
var /= exp; 
var %= exp; 
var = var + exp; 
var = var - exp; 
var = var * exp; 
var = var / exp; 
var = var % exp; 
 
onde var é o identificador da variável e exp é uma expressão válida. Estas instruções 
são equivalentes as seguintes: 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
18 
Exemplos: 
Atribuição Aritmética Instrução Equivalente 
con
j -= 
num
divid
 
c 
j = j – i ;
num = * k; 
divid e / 5; 
resto = resto % 2; 
t += 1; 
 i ; 
 *= k; 
e /= 5; 
resto %= 2; 
ont = cont + 1;
 
num 
e = divid
 
O operador de atribuição aritmética tem precedência menor que os outros 
operador discutidos. 
 
 
 
6.3 Opera
 
Em stem instruções muito comuns chamadas de incremento e 
decremento strução de incremento adiciona uma unidade ao conteúdo de uma 
variável. decremento su i uma unidade do conteúdo de uma variável. 
Ex C++, operadore realizar as operações de incremento 
(++) e decremento (--). Eles são genericamente chamados de operadores incrementais. 
 
Sintaxe: 
es até aqui 
dores Incrementais 
programação exi
. Uma in
 Uma instrução de btra
istem, em s específicos para
 Instrução Equivalente 
++ var; 
 ; 
var = var + 1; 
var = var – 1; 
var ++ ; 
-- var
var = var + 1; 
var -- ; var = var – 1; 
onde var é o nome da variável da qual se quer incrementar ou decrementar um unidade. 
 
Observe que existe duas sintaxes possíveis para os operadores: pode-se colocar o 
operad
ixo, o valor 
da var crementado (ou decrementado) antes que a variável seja usada em alguma 
outra operação. Caso o operador seja colocado como sufixo, o valor da variável será 
incremen rem ue a variável for usada em alguma outra operação. 
#includ > 
using n d; 
int mai
{ int n suf
 cout< "; 
 cin>>
 n1=n; //para nao perder o valor de n 
 n
 p
 c "\t n= "<<n1<<endl; 
 suf=n2++; 
or como prefixo ou como sufixo. Nos dois casos o valor da variável será incrementado 
(ou decrementado) de uma unidade. Porém se o operador for colocado como suf
iável será in
tado (ou dec entado) depois q
e <iostream
amespace st
n() 
,n1,n2,pre, ; 
<"\nnumero:
n; 
2=n; //para nao perder o valor de n 
re=++n1; 
out<<"\n\nprefixo= "<<pre<<
 
Algoritmos – Prof. Anita Lopes 
 
 
19 
 cou fixo= "<<suf<<"\t n= "<<n2<<endl; 
 cin.g
} 
t<<"\n\nsu
et();cin.get(); 
 
 
 
6.4 O
 
s 
relacio
 
 
6.4.1 Operadores relacionais 
 
Oper laciona onhecidos nossos da Matemática e sofreram 
pequenas mo ua , mas permanecem com os mesmos conceitos. 
 
 
peradores Relacionais e Lógicos 
 
As expressões lógicas usadas nas estruturas de teste são formadas pelos operadore
nais e lógicos. 
adores re is são velhos c
dificações na s apresentação
Operador Significado 
> maior que 
< menor que 
>= 
<= 
== 
!= 
maior ou igual a 
menor ou igual a 
igual a 
diferente de 
 
_1 operador expressão_2 
 Sintaxe: 
 
expressão
onde expressão_1 e exp
adores relacionais. 
ressão_2 são duas expressões numéricas quaisquer, e operador é 
 
ncia menor que os operadores aritméticos. 
um dos oper
Os operadores relacionais têm precedê
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
20 
Os operadores lógicos também são nossos conhecidos da Lógica Matemática. Quem 
não se lembra da negação, conjunção e disjunção? 
Aqui também sofreram modificações em suas representações, mas permanecem com 
os mesmos conceitos.São três os operadores lógicos de C: &&, || e !. Estes operadores têm os mesmos 
significados dos operadores lógicos Booleanos AND, OR e NOT. 
 
Sintaxes: 
 
expr_1 && expr_2 
expr_1 || expr_2 
!expr 
6.4.2 Operadores lógicos 
 
 
 onde expr_1 , expr_2 e expr são expressões quaisquer. 
 
 
Para esses operadores todo valor numérico diferente de 0 é considerado 1. 
Operador Matemática C 
conjunção 
negação 
 e ∧ 
 ou ∨ 
 não ! 
&& 
|| 
! 
disjunção 
 
 
Supon gunt ssoas. Se a resposta do candidato for 
negativa, deverá falar 0, ário, falará 1. 
Suponha também que só será chamado para entrevista o candidato que dominar as duas 
linguagens. 
 
 Você con C+ ê conhece JAVA? SAÍDA 
TABELA VERDADE DO OPERADOR && 
ha duas per as feitas a quatro pe
 caso contr
hece +? Voc
0 0 0 
0 1 0 
1 0 0 
1 1 1 
 
s
pressão como verdadeira se todas as expressões testadas 
forem verdadeiras. 
 
Neste exemplo, somente o quarto candidato seria chamado para a entrevista, poi o 
operador && (e) considera a ex
 
Algoritmos – Prof. Anita Lopes 
 
 
21 
ERADOR || 
 
 
 
 Você conhece C++? Você conhece JAVA? SAÍDA 
TABELA VERDADE DO OP
Suponha duas perguntas feitas a quatro pessoas. Se a resposta do candidato for 
negativa, deverá falar 0, caso contrário, falará 1. 
Suponha também que será chamado para entrevista o candidato que dominar pelo 
menos uma linguagem. 
0 0 0 
0 1 1 
1 0 1 
1 1 1 
 
Neste exemplo, somente o primeiro candidato não seria chamado para a entrevista, 
poi deira se, pelo menos uma 
expressão testada for verdadeira. 
s o operador || (ou), considera a expressão como verda
 
 
O O t ia sobre o operador ||. Estes dois têm perador && em precedênc
prec or q res re ais. edência men u doe os opera lacion
 
 
 
TABELA VERDADE DO OPERADOR ! 
 
Suponha uma pergunta feita a duas pessoas. Se a resposta do candidato for 
negativa, deverá falar 0, caso contrário, falará 1. 
Você Não conhece C++? SAÍDA 
1 0 
0 1 
 
 
O op dor ! tem a mesma precedência que os operadores incrementais. era
 
 
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
22 
7. 
era
ov estrutura de seleção nos dará uma visão maior da complexidade de 
arefas que ele poderá executar. 
 
 
 
7.1 Estrutura d ecisão - if...else 
 
A estrutura if...else é uma estrutura de controle do C++ muito fácil de ser usada 
Após o teste, o fluxo poderá seguir dois caminhos, isto é, se o teste resultar em uma 
verdade
p
c ndo else. 
 
 
 
 
7.1.1 Estrutura de decisão com um bloco(if simples) 
 
Estruturas de seleção - if 
 
Nossos programas até agora seguiram um mesmo padrão: entrava-se com dados, estes 
m processados e alguma informação era mostrada na tela. 
Agindo desta forma, o computador mais parecia uma máquina de calcular. O aprendizado de 
os conceitos como a dan
t
e d
, será executado o comando ou bloco de comandos que se encontra após o fecha 
arênteses do teste, caso contrário, se existir, será executado o comando ou bloco de 
omandos que se encontra após o coma
 
Sintaxe: 
 if(condição) 
 { 
 bloco 
 } 
 
onde: con ão é uma expressão u relacional. 
 bl unto de in ruções, separadas por ponto-e-vírgula. 
 { e } só serão obrigatórias se tiver mais de uma ação para ser executada
diç lógica o
oco é um conj st
. 
 
Se a não é 
executado. 
Vejamos exemplo na próxima página. Na primeira execução, o número de inscrição 
aparece porque a nota foi maior ou igual a 8 e, na segunda, nada saiu. 
 condição for verdadeira, o bloco é executado. Caso contrário, o bloco
 
Algoritmos – Prof. Anita Lopes 
 
 
23 
ste programa. 
include <iostream> 
sing namespace std; 
 if(nota >= 8) 
 cout<<inscricao<<"\n"; 
 cin.get();cin.get(); 
 
Exemplo: Escreva o enunciado de
#
u
int main() 
{ int inscricao; 
 float nota; 
 cout<<"\nDigite numero de inscricao:"; 
 cin>>inscricao; 
 cout<<"\nDigite nota:"; 
 cin>>nota; 
}
 
 
 
7.1.2 Estrutura de decisão com dois blocos(if composto) 
 
Sintaxe: 
 if(condição) 
 { 
 bloco 
 } 
 else 
 { 
 bloco 
 } 
 
aparece a mensagem 
classificado porque a nota foi maior ou igual a 8 e, na segunda, a mensagem Nao 
classificado porque a média foi menor do que 8. 
 
 
 
onde: condição é uma expressão lógica ou relacional. 
 bloco 1 e bloco 2 são conjuntos de instruções. 
 
Se a condição for verdadeira o bloco 1 é executado. Caso contrário, o bloco 2 é 
executado. 
Vejamos exemplo na próxima página. Na primeira execução, 
 
Algoritmos – Prof. Anita Lopes 
 
 
24 
 cout<<"Nao classificado\n"; 
 cin.get();cin.get(); 
} 
Exemplo: Escreva o enunciado desse programa. 
#include <iostream> 
using namespace std; 
int main() 
{ int inscricao; 
 float nota; 
 cout<<"\nDigite numero de inscricao:"; 
 cin>>inscricao; 
 cout<<"\nDigite nota:"; 
 cin>>nota; 
 if(nota >= 8) 
 cout<<"Classificado\n"; 
 else 
 
 
 
 
 
 
7.1.3 e múltiplos blocos (ifs encadeados) 
 
Muitas vezes, noss ogramas poderão envolver várias condições excludentes. 
Programas que envolvem faixas iais ou faixas de idades são exemplos clássicos do uso 
da instrução if ... else if ...
 
Sintaxe: Decisão de iplos blocos: 
 
 
Decisão d
os pr
 salar
 . 
 múlt
i dição 1) f(con
{ 
 bloco 1 
} 
... 
else if(condição N) 
{ 
 bloco N 
} 
else 
{ 
 bloco P 
} 
 
Algoritmos – Prof. Anita Lopes 
 
 
25 
pressões lógicas ou relacionais. 
1 , bloco 2,... são conjuntos de instruções. 
for verdadeira o bloco 1 é executado. Caso contrario, as condições 
rdadeira ou chegue ao último else, onde o 
 dos blocos é executado. 
o enunciado deste programa. 
ade3; 
cout<<"\nDigite 1a idade: "; 
 cin>>idade1; 
 cout<<"\nDigite 2a idade: "; 
 cin>>idade2; 
 cout<<"\nDigite 3a idade: "; 
 cin>>idade3; 
 if(idade1>idade2 && idade1>idade3) 
 cout<<"\nMaior idade: "<<idade1<<"\n"; 
 else if(idade2>idade3) 
 cout<<"\nMaior idade: "<<idade2<<"\n"; 
 else 
 cout<<"\nMaior idade: "<<idade3<<"\n"; 
 cin.get();cin.get(); 
} 
 onde: condição 1, condição 2, ... são ex
 bloco 
 
Se a condição 1 
serão avaliadas, sucessivamente até que seja ve
do. Observe que apenas umbloco P seria executa
 
Exemplo: Escreva 
#include <iostream> 
amespace std; using n
int main() 
{ 
int idade1, idade2, id 
 
 
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
26 
7.2 Est t
 
A estrutura switch...case, também conhecida como alternativa de múltiplas escolhas, 
é uma e
q
co de cada um dos 
rótulos, e os comandos são executadas a partir desde rótulo. 
ru ura switch...case 
strutura que simplifica nossos programas no uso de decisão de múltiplos blocos 
uando a expressão de controle envolver tipos int ou char(de um caracter que também é 
nsiderada inteira). O resultado desta expressão é comparado ao valor 
 
 
apa
Já foi difícil o 
rece mais es
tal de if... else if e agora 
ta para complicar? Calma! É para facilitar. 
 
 
Vou poder usar sempre? Não! Veja as “regras” abixo. 
 
1- Se você tiver em seu programa ifs aninhados. 
nte a mesma variável. 
ualdade: == em 
2- Se em todos os ifs estiver prese
3- Se a variável for int ou char de um caracter. 
4- Se o operador relacional for o de ig
 todos os ifs, então você poderá usar a estrutura do 
itch. sw
 
 
Sintaxe: 
 
onde: expressão é uma expressão inteira ou char de um caracter
switch(expressão) 
{ 
 case rótulo_1: 
 bloco1; 
 break; 
 case rótulo_2: 
 bloco2 
 break; 
 ... 
 case rótulo_n: 
 bloco n 
 break; 
<default: bloco d>; 
} 
 
. 
 rótulo_1,rótulo_2,...rótulo_n e rótulo_d são constantes inteiras ou char 
 de um caracter. 
 bloco 1, bloco 2, ..., bloco n e bloco d são conjuntos de instruções. 
 
Algoritmos – Prof. Anita Lopes 
 
 
27 
A expressão é avaliada eo fluxo desviado para o conjunto cujo rótulo é igual ao 
Exem lo 1: Escreva o enunciado deste programa. 
#include 
using nam
int mai (
{ 
 in
 cout<<"\nDigite mes do seu nascimento: "; 
 cin>>me
 switch(
 { 
 1: 
 cou
 bre
 
 case 2: 
 cou
 bre
 
 case 3: 
 cout<< ; 
 break; 
 
 
 cout<<"Abril\n"
 break; 
 
 case 5: 
 cout<<"
 break; 
 
 case 6: 
 cout<<"
 break; 
 
 case 7: 
 cout<<"Julho\n"; 
 break; 
 
 case 8: 
 cout<<"Agosto\n"
 break; 
 
 case 9: 
 cout<<"Setembro\n"; 
;
 case 1
 "; 
 
Execução: 
resultado da expressão. O bloco abaixo do rótulo é executado. Se o valor da 
expressão não for igual a nenhum rótulo, o bloco do default é executado. Você não é 
obrigado a colocar o rótulo do default e por esta razão ele se encontra entre os 
sinais de menor e maior. 
 
p
<iostream> 
espace std; 
) n
t mes; 
s; 
mes) 
case
t<<"Janeiro\n"; 
ak; 
t<<"Fevereiro\n"; 
ak; 
"Marco\n"
case 4: 
 ; 
Maio\n"; 
Junho\n"; 
; 
 break 
 
0: 
 cout<<"Otubro\n
 break; 
 
Algoritmos – Prof. Anita Lopes 
 
 
28 
 
 ca 
 
 
 
 ca
 
 
 
i
in.get(); 
se 11: 
 cout<<"Novembro\n"; 
 break; 
se 12: 
 cout<<"Dezembro\n"; 
 break; 
 
 default: 
 cout<<"Mes nexistente\n"; 
 } 
 
 cin.get();c
} 
 
 
 
 
 
Po reak? r que usar b
 
Leia o parágrafo abaixo e veja o exemplo. 
 
 Normalmente, em outras linguagens de programação, após a avaliação da 
ão e a execução do bloco correspondente, o fluxo do programa passa para a 
 todos os outros rótulos. Na linguagem C++ isto não 
razer conseqüências indesejáveis para seus programas. O uso do 
orçará a saída do comando switch. 
nclu <io
ce std; 
 
int mes; 
gite mes do seu nascimento: "; 
switch(mes
{ 
"Janeiro\n"; 
 case 2: 
 cout<<"Marco\n"; 
 case 4: 
express
óximpr a instrução, ignorando
acontece e poderá t
break f
 
#i de stream> 
using namespa
nt main() i
{ 
 
 cout<<"\nDi
 cin> mes; >
 ) 
 
 case 1: cout<<
 
Fevereiro\n"; cout<<"
 
 case 3: 
 
Abril\n"; cout<<"
 
 
Algoritmos – Prof. Anita Lopes 
 
 
29 
"Maio\n"; 
 case 6: 
 case 7: cout<<"Julho\n"; 
 case 8: 
se 9: cout<<"Setembro\n"; 
; 
 case 12: cout<<"Dezembro\n"; 
 
 default: cout<<"Mes inexistente\n"; 
 } 
 
 cin.get();cin.get(); 
} 
 case 5: cout<<
 
 cout<<"Junho\n"; 
 
 
 
 cout<<"Agosto\n"; 
 
 ca
 
 case 10: cout<<"Otubro\n"; 
 
 case 11: cout<<"Novembro\n"
 
 
 
 
 
 
Entendi: quando comparou o mês com o 
rótulo e achou, daí em diante 
executou todos os comandos. 
Você está ficando ótimo! 
 
 
Então o break; será sempre 
obrigatório. 
Errado! 
Veja o exemplo abaixo. 
 
Exemplo 2: Escreva o enunciado deste programa. 
stream> #include <io
using namespace
main() 
 std; 
to: "; 
int 
{ 
 int mes; 
 cout<<"\nDigite mes do seu nascimen
 cin>>mes; 
 switch(mes) 
 { 
 case 1: 
 case 2: 
 
Algoritmos – Prof. Anita Lopes 
 
 
30 
 cout<<"Voce nasceu no primeiro trimestre\n"; 
 case 5: 
 cout<<"Voce nasceu no segundo trimestre\n"; 
 case 8: 
 cout<<"Voce nasceu no terceiro trimestre\n"; 
 11: 
case 12: 
 nasceu no quarto trimestre\n"; 
 break; 
 
 default: 
 cout<<"Mes inexistente\n"; 
 } 
 
 cin.get();cin.get(); 
} 
 
 case 3: 
 
 break; 
 
 case 4: 
 
 case 6: 
 
 break; 
 
 case 7: 
 
 case 9: 
 
 break; 
 
 case 10: 
 case
 
 cout<<"Voce
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
31 
8. Estruturas de repetição 
truturas de repetição disponíveis na linguagem C++: for, while e do ... while. 
Em turas estará presente pelo menos uma expressão para controlar a repetição. 
 
8 or 
ra do for é a mais simples estrutura de repetição, sendo usada para repetir 
u ra mais indicada quando 
o onhecido embora, as outras duas estruturas também possam 
s ntrole do número de repetições, na maioria das vezes, é feito por uma 
v de variável contadora. 
++ linguagens, pois 
a 
 
 
 
 
Três são as es
 todas as estru
 
.1 Estrutura de repetição: f
 
A estrutu
 ou vários com mandos tantas vezes quanto desejarmos. É a estrutu
 número de repetições for c
er usadas. O co
ariável chamada 
A estrutura do for na linguagem C é um pouco diferente das demais 
r somente a uma variável contadora. condição pode não se prende
 Sintaxes: 
for (inicialização;condição;incremento) comando; 
 
for (inicialização ;condição ;incremento) 
{ 
 bloco de comandos 
} 
 
onde: inicialização é uma expressão de inicialização da variável contadora e só é 
 executada uma vez.. 
condição é uma expressão lógica de controle de repetição. 
 incremento é uma expressão de incremento da variável contadora. 
bloco de comandos é um conjunto de instruções a ser executado. 
 
Exemplo 1: Escreva o enunciado deste programa. 
#include <iostream> 
using namespace std; 
int main() 
{ int n, c; 
 for(c=1;c<=3;c++) 
 { 
 cout<<"\nnumero inteiro:"; 
 cin>>n; 
 if(n%5 == 0) 
 cout<<"\nO numero e multiplo de 5\n"; 
 else 
 cout<<"\nO numero nao e multiplo de 5\n"; 
 } 
 cin.get();cin.get(); 
} 
 
Algoritmos – Prof. Anita Lopes 
 
 
32 
 
 
Exemplo 2: Escreva o enunciado deste programa. 
#include <iostream> 
using namespace std; 
int main() 
{ int c; 
 for(c=1;c<=10;c++) 
c<<"\t"; 
; 
 for(c=20;c>=2;c-=2) 
 
 c
 for(c=3;c<=59049;c*=3) 
 
 
 or(c=100000;c>=3125;c/=2) 
 
 cout<<
 cin.get();cin.get(); 
 
 cout<<
 cout<<"\n\n"
cout<<c<<"\t"; 
out<<"\n\n"; 
 cout<<c<<"\t"; 
 cout<<"\n\n"; 
 f
 cout<<c<<"\t"; 
"\n\n"; 
}
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
33 
 
 
Definição: É uma variável que tem seu valor alterado dentro de uma estrutura 
de repetição. Na verdade, quando falamos em acumulador, estamos nos 
referenciando a um comando de atribuição que incrementa, ou decrementa, o 
conteúdo da variável. 
Sintaxe: 
nomeVariável = nomeVariável Op. Aritmético valor ; 
Exemplos: 
Expressão Como se lê? 
a = a + valor ; 
A variável a recebe o valor que estava armazenado 
nela, acrescido do valor armazenado na variável valor. 
a = a * valor ; 
A variável a recebe o valor que estava armazenado 
nela, multiplicado pelo valor armazenado na variável 
valor. 
a = a - valor ; 
A variável a recebe o valor que estava armazenado 
nela, decrementado do valor armazenado na variável 
valor. 
a = a / valor 
A variável a recebe o valor que estava armazenado 
nela, dividido pelo valor armazenado na variável valor. ;
 
Quando a variáve
tante, costum
l é acrescida (ou decrementada) de um valor 
amos chamar o acumulador de contador. cons
Exemplos: 
Expressão Como se lê? 
a = a + 1 ; ou a++; A variável a é incrementada de 1. 
a = a - 1 ; ou a--; A variável a é decrementada de 1. 
a = a + 2 ; ou a+=2; A variável a é incrementada de 2. 
a = a - 2 ; ou a-=2; A variável a é dencrementada de 2. 
 
Quando devo usar? 
 
Em todo algoritmo que tenha repetição 
e você precise somar os números que 
entram, calcular a média, contar de 
acordo com uma condição, etc. 
Regras para se usar um acumulador 
 
1- Todo acumulador é uma variável, logo PRECISA SER DECLARADO. 
2- Todo acumulador precisa ser INICIALIZADO. 
 Como faço isto? 
 Use um comando de atribuição ANTES da estrutura de repetição em que 
ele aparece e 
 Atribua um valor inicial. Normalmente, o elemento neutro da operação. 
3- A expressão do acumulador precisa estar DENTRO DA ESTRUTURA DE 
REPETIÇÃO. 
4- Alguma operação deverá ser feita com o acumulador APÓS A ESTRUTURA 
DE REPETIÇÃO. 
 
Algoritmos – Prof. Anita Lopes 
 
 
34 
Exemplo 3: Escreva o enunciado deste programa. 
#include <iostream> 
using namespace std; 
int main() 
{ int c, idade, contaMaior, somaIdades; 
 contaMaior=0; somaIdades=0; 
 for(c
 { 
 
 
 ; 
 } 
 cout<< Maior; 
 cout<<"\n\nSocout< 
 cin.get();cin.get(); 
} 
=1;c<=4;c++) 
 cout<<"Digite idade: ";cin>>idade; 
 if(idade>=18) contaMaior++; 
somaIdades+=idade
"\n\nTotal de idades maiores ou iguais a 18: "<<conta
ma das idades: "<<somaIdades; 
<"\n\n"; 
 
 
 somaIdades. 
Observe que a v
sam
ariáve vezes no programa, 
ent como a variável 
l contaMaior aparece quatro 
seguindo rigoro e as quatro regras assim 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
35 
8.2
é uma estrutura "poderosa" da programação. Muitos 
prog Ela testa primeiro a condição e poderá 
nem ja falsa. Logo, a estrutura do while repete enquanto 
a co
m o tenha seu valor alterado dentro da 
repe . 
res mostram simplesmente a sintaxe da estrutura, mas 
esqu
da na prática: 
taxe Sintaxe na prática 
 Estrutura de repetição: while 
 
A estrutura while 
ramadores fazem uso somente desta estrutura. 
 executar o bloco caso a condição se
ndiçã
É i
o for verdadeira. 
portante que a variável presente na condiçã
ti o ará em loopção, p is, caso contrário, entr
rmalmente, todos os autoNo
ecem de informar como na prática ela deverá ser escrita. 
Abaixo, apresentarei a sintaxe geral e a sintaxe usa
 
 
Sin
while(condição) 
{ 
 bloco de comandos 
} 
 
 
 
atribuição ou leitura da variável presente na condição 
while(condição) 
{ 
 bloco de comandos 
 atribuição ou leitura da variável presente na condição 
} 
 
onde: condição é uma expressão lógica ou numérica. 
bloco de comandos é um conjunto de instruções. 
 
Exemplo 1: Escreva o enunciado deste programa. 
#include <
using name
int main )
{ int n, c
cout<<"\nnumero inteiro ou 0 para sair:"; 
cin>>n; 
cont=0; 
 while(n>0) 
 { 
 if(n%2==0) 
 cont++; 
 cout<<"\nnumero inteiro ou 0 para sair:"; 
 cin>>n; 
 } 
 cout<<"\n\nQuantidade de pares digitados "<<cont<<"\n"; 
 cin.get();cin.get(); 
} 
 
iostream> 
space std; 
 
ont; 
(
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
36 
 
 
Exemplo 2: Escreva o nu ama. 
<iostream> 
e e std; 
t main() 
c
c=1; 
 while(c<=5) 
 { 
 cout<<"\nnumero inteiro:"; 
 cin>>n; 
(
 o
 c++;
 "<<cont*100.0/(c-1)<<"\n"; 
; 
e nciado deste progr
#include 
using nam spac
in
{ int n, cont,c; 
ont=0; 
 
 
 
 
 if n%2==0) 
 c nt++; 
 
 } 
 cout<<"\n\nPercentual de pares digitados:
 cin.get();cin.get()
} 
 
 
 
No segundo exemplo, simulamos a estrutura do for. 
 
Algoritmos – Prof. Anita Lopes 
 
 
37 
8.3 Estrutura de repetição: do...while 
 
Esta estrutura é parecida com while. Sua diferença é que o bloco é executado pelo 
menos uma vez, pois testa ao final. Esta estrutura repete enquanto a condição for 
verdadeira. 
 
Sintaxe: 
 
do 
{ 
 bloco de comandos 
} 
while(condição); 
 
 
 onde: condição é uma expr
o de coman
essão lógica ou numérica. 
dos é um conjunto de instruções. 
 
eva o enunciado deste programa. 
 
iro:"; 
 cin>>n; 
 if(n%2==0) 
 cont++; 
 c++; 
 } 
 while(c<=5); 
 cout<<"\n\nPercentual de pares digitados: "<<cont*100.0/(c-1)<<"\n"; 
 cin.get();cin.get(); 
} 
bloc
Exemplo 1: Escr
#include <iostream> 
ace std; using namesp
int main() 
,c;{ int n, cont
; cont=0
1; c=
 do 
 { 
 cout<<"\nnumero inte 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
38 
 exemplo 2 da estrutura while. 
Estranho. Igual à solução do É porque as duas simularam a 
estrutura do for. 
 
 
 
Esta estrutura é ideal para programas com menus como veremos a seguir. 
 
 
 Exemplo 2 
 
 
RA CONSTRUIR UM PROGRAMA COM MENU 
 
1. C diretivas e o 
cab
#include <iostream> 
using namespace std; 
ain() 
PASSOS PA
oloque as
eçalho int m
Abra chaves { 2. 
3. Declare todas as variáveis 
nec lgoritmo 
int op; 
float num1, num2, num3,soma, prod; essárias para o a
4. Use a do do para 
rep
 do 
 { estrutura etir 
impe a tela system("cls"); 5.L
6. Coloque tantos comandos cout 
quantas forem as linhas do menu 
ou um comando cout, usando \n. 
 cout<<"\n\n\tMAQUINA ESPERTA "; 
 cout<<"\n1 - Soma dois numeros "; 
 cout<<"\n2 - Multiplica tres numeros "; 
 cout<<"\n3 - Sai do programa "; 
 cout<<"\nOPCAO: "; 
7. Coloque um comando cin para 
que possa armazenar a escolha do 
usuário. 
A variável poderá ser inteira ou 
char. 
 cin>> op; 
8. Limpe a tela system("cls"); 
9. Faça uso do switch. 
 
switch(op ) 
{ 
 
Algoritmos – Prof. Anita Lopes 
 
 
39 
 
 
10. Em 
um trecho de programa que 
satisfaça o que foi pedido. 
 case 1: 
out<<"\
 cin>>n
 cout<<"\nSoma: "<<soma<<endl; 
 break; 
 
 cin>>num1>>num2>>num3; 
 prod=num1 * num2 * num3; 
 cout<<"\nProduto: "<<prod<<endl; 
 break; 
 
 case 3: 
 cout<< "\nSai do programa\n"; 
 break; 
 
 default: cout<<"\nOpcao nao disponível\n" ; 
} 
cada caso deverá conter 
 c
 
 soma=num1+num2; 
nDois numeros: "; 
1>>num2; um
 case 2: 
 cout<<"\nTres numeros: "; 
11. Coloque cin.get para parar cin.get();cin.get(); 
12. Feche o do while }while(op!=3); 
13. Feche o programa } 
 
 
 
Agora você inventa um tal de endl. Eu ainda 
nem
Leia as notas abaixo. 
 entendi por que dois cin.get(). 
 
 
 
endl serve para alimentar linha. É igual ao ”\n” que foi herdado da linguagem C. 
endl é mais usado pelos programadores de C++ 
 
 
 
 
Quando se digita um núm cla enter fica no buffer do teclado. ero, o código da te
O objeto cin.get() serve ler um caracter que foi digitado, mas se existir um 
caracter no buffer, ele ”apanha” este caracter. Nossa idéia é usá-lo para 
simular o system(”pause”); e se colocarmos só um de nada vai adiantar. Assim, 
colocando dois, o primeir egundo, espera o ”apanha” o código da tecla enter e, o s
que o usuário digite um caracter. 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
40 
9 Estruturas 
 
cialmente, vamos abordar 
as temática 
qua
 
9.1 Estruturas homogêneas 
 
Em C++, o uso de matrizes é d mento 
estreito entre matrizes e ponteiros ais adiante. 
As matrizes são tabelas na ter uma ou mais dimensão e todos os 
elementos são do mesmo tipo. 
Quando uma matriz tem some
As estruturas em C++ podem ser ho
homogêneas, pois são mais familiare
ndo estudamos matrizes. 
m as e heterogêneas. Inogêne i
s uma vez que conhecemos seu conceito da ma
e fundamental importância e existe uma relaciona
 que estudaremos m
 MP e podem 
nte uma dimensão, também chamamos de vetor. 
Na linguagem C++, como já vim um 
caracter, faz uso de matriz, pois po seus caracteres em separado, 
u posi
na linguagem a posição do primeiro caracter é 0 ? 
 
O endereço guardado é o do primeiro caracter que chamamos de base, logo qualquer 
outro carac a posição
os, uma variável char ,que precisa armazenar mais de 
demos acessar cada um de
ção entre colchetes. sando o nome da variável e sua
 
Por que será que C++
ter será acessado pelo endereço base mais su . Se o endereço é o da 
r na mesma posição. primeira po ido para permanecesição, somente o 0 poderia ser acresc
 
 
Se declararmos pal com tamanho 5, lembre-se de que só podemos usar 4 posições, 
pois uma reservada para o finaliza
É bo
programar 
 
 
9.1.1 De
 
dor \0 que indica o fim do vetor. 
m você já ir se acostumando com este conceito de apontamento, pois para se 
bem em C, precisaremos dominar o conceito de ponteiros. 
clarando uma matriz: 
 tipo nomeDoConjunto [ ... ] [ ...] ... ; 
 
Exemplos: 
/* declara uma matriz unidimensional de 5 elementos inteiros */ 
 int num[ 5 ]; 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
41 
clara uma matriz bidimensional com 100 linhas e 4 colunas do tipo float */ 
 float notas [ 100 ][ 4 ]; 
 ][ 30 ]; 
 
rdar nomes, na linguagem C++, é bidimensional, pois o primeiro 
índice indica a quantidade de nomes e o segundo o número de caracteres –1 que serão 
arma
 
 
 
9
/*uma dimensao */ 
 
 } 
 ... 
/* de
 
/* declara uma matriz bidimensional com 100 linhas e 30 colunas do tipo char */ 
 char nomes [ 100
Toda matriz paragua
zenados em cada nome. 
 
9.1.2 Armazenamento 
O armazenamento na matriz poderá ser feito através de um comando de leitura ou 
de atribuição. 
 
.1.2.1 Leitura 
... 
 for(a=0;a<tamanho;a++) 
 { 
 cout<<"\n…: "<<a+1; 
 cin>>nomeVetor[a]; 
/*duas dimensoes */ 
 ... 
 for(L=0;L<tamanhoLinha;L++) 
 for(c=0;c<tamanhoColuna;c++) 
 { 
 cout<<"\nNumero da Linha "<<L+1<<" coluna "<<c+1<<": "; 
 
 
 cin>>nomeMatriz[L][c]; 
 } 
 ... 
 
.1.2.2 Atribuição 
 matrizes através de atribuições: 
xemplos: 
int vet[4]={6,7,8,9}
float nota[3]={8.5,6.2,9.8}; 
cha ="João Renato"; 
cha
int 
/* de ação/atribuição acima, é assumido 3 como número de linhas */ 
 
 
9
 
Podemos também inicializar as
E
; 
r nome[12]
r nomes[4][30]={"JOÃO", "MARIA", "PEDRO","FILIPE"}; 
4,5,6,7,8,9}; mat[][3]={1,2,3,
clarna
 
Algoritmos – Prof. Anita Lopes 
 
 
42 
#i
us
in
{int L,c; 
 i
dias_meses[][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,
31
 cout<<"\n\nPara anos nao bissextos, primeira linha e para bissextos, 
se
[L][c]<<" "; 
 cout<<"\n\n"; 
 } 
 cin.get(); cin.get(); 
nclude <iostream> 
ing namespace std; 
t main() 
nt 
,31,30,31,30,31}; 
gunda linha\n\n"; 
 for(L=0;L<2;L++) 
 { for(c=0;c<12;c++) 
 cout<<dias_meses
} 
 
 
 
9 1.3 S
mensao – MATRIZ COLUNA*/ /*uma dimensao – MATRIZ LINHA*/ 
 ... 
 system("cls"); 
 cout<<"\nTitulo\n"; 
 for(a=0;a<tamanho;a++) 
 cout<<nomeVetor <<"\t"; 
. aída 
/*um dia
 ... 
 system("cls"); 
 cout<<"\nTitulo\n"; 
 for(a=0;a<tamanho;a++) 
 cout<<"\n…: "<<nomeVetor; 
 ... ... 
/*duas dimensoes TODOS OS ELEMENTOS*/ 
 ... 
 sy tes
 cout
m("cls"); 
<<"\nTitulo\n"; 
 for(L=0;L<tamanhoLinha;L++) 
 { for(c=0;c<tamanhoColuna;c++) 
atriz[L][c]<<"\t"; 
 
 cout<<nomeM
 cout<<"\n"; 
 } 
 ... 
 
Algoritmos – Prof. Anita Lopes 
 
 
43 
uns Elementos*/ 
"); 
tulo\n"; 
 
Condição 
 
(L==c) 
só diagonal Principal 
/*duas dimensoes Alg
 ... 
 system("cls
t<<"\nTi cou
 for(L=0;L<tamanhoLinha;L++) 
hoColuna;c++) 
 
(L!=c) { for(c=0;c<taman
 if( condição ) 
 cout<<nomeMatriz[L][c]<<"\t"; 
 else 
 cout<<"\t"; 
 cout<<"\n"; 
 } 
 ... 
todos menos a diagonal
Principal 
 
 
(L<c) elementos acima da 
diagonal principal 
 
(L>c) elementos abaixo da 
diagonal principal 
 
 
 
9.1.4 Matrizes somaLinha e somaColuna 
 
 
9 aLinha 
 
l(vetor o tas linhas 
quantas forem as linhas da matriz original e todos os 
e iz original. Em outras palavras, cada 
e s os elementos das colunas de uma linha. 
ha 
mo é uma matriz de acumuladores precisa ser inicializada. 
for(L=0; L<tamanhoLinha; L++) 
 somaLinha[L]=0; 
 
.1.4.1 Matriz som
 
 É uma matriz unidimensiona u matriz coluna) que terá tan
a elemento será a soma de cad
lementos da linha correspondente na matr
lemento soma de todo
 
 
9.1.4.1.1 Inicializando a matriz somaLin
 
 Co
 
 
 
9.1.4.1.2 Gerando a matriz somaLinha 
 
for(L=0;L< tamanhoLinha;L++) 
 for(C=0;C< tamanhoColuna;C++) 
 somaLinha[L]+=mat[L][C]; 
 
Algoritmos – Prof. Anita Lopes 
 
 
44 
o
manhoLinha;L++) 
n"; 
9.1.4.1.3 Imprimindo a matriz somaLinha s zinha 
 
for(L=0;L< ta
 cout<<somaLinha[L]<<"\
 cout<<endl;
 
 
primindo a matriz somaLinha c9.1.4.1.4 Im o inal 
ls"); 
cout<<"\nMatriz Original com matriz 
SomaLinha\n\n"; 
for(L=0;L< tamanhoLinha;L++) 
{ for(C=0;C< tamanhoColuna;C++)
 cout<<matOriginal[L][c]<<"\t
 cout<<somaLinha[x]<<"\n"; 
} 
m a matriz orig
 
system("c
 
"; 
 
 
 
9.1.4.2 Matriz somaColuna 
 
 É uma matriz unidimensional(vetor ou matriz linha) que terá tantas colunas 
quantas forem as colunas da matriz original e cada elemento será a soma de todos os 
elementos da coluna correspondente na matriz original. Em outras palavras, cada 
elemento é a soma de todos os elementos das linhas de uma coluna. 
 
.2.1 Inicializando a matriz somaColuna 
 somaColuna[c]=0; 
 
9.1.4
 
 Como é uma matriz de acumuladores precisa ser inicializada. 
 
for(c=0; c<tamanhoColuna; c++) 
 
 
9.1.4 Gerando a matriz somaColuna 
for(L=0;L< tamanhoLinha;L++) 
.2.2 
 
 for(c=0;c< tamanhoColuna;c++) 
mat[L][c]; somaColuna[c]+=
 
na sozinha 
 
9.1.4.2.3 Imprimindo a matriz somaColu
 
for(c=0;c< tamanhoColuna;c++) 
 cout<<somaColuna[c]<<"\t"; 
cout<<endl; 
 
Algoritmos – Prof. Anita Lopes 
 
 
45 
atriz original 
matriz 
\n"; 
for(L=0;L< tamanhoLinha;L++) 
{ for(c=0;c< tamanhoColuna;c++) 
 
hoColuna;c++) 
9.1.4.2.4 Imprimindo a matriz somaColuna com a m
 
system("cls"); 
cout<<"\nMa riz Original com t
SomaColuna\n
 cout<<matOriginal[L][c]<<"\t"; 
 cout<<"\n"; 
}
for(c=0;c< taman
 cout<<somaColuna[c]<<"\t"; 
cout<<"\n"; 
 
 
9.1.5 Operaçõe
 
Em relação às matrizes numéricas, podemos realizar todas as operações que já 
conhecemos com matrizes: produto escalar, soma, subtração, multiplicação por escalar, 
mul plicação de matrizes, cálculo do determinante, etc. 
 
 
 
9.2 
O uso e estruturas heterogêneas, o tão conhecido struct, será visto mais adiante. 
Este tipo de estrutura não faz parte do nosso estudo, mas tenha certeza de que você 
vai gos
 
 
s 
ti
 
Estruturas heterogêneas 
 
 d
tar de conhecê-la. 
 
Algoritmos – Prof. Anita Lopes 
 
 
46 
10 Funçõ
 
 10.1 Conceito 
 
Função é u s específicos. 
Um progra ormado por várias funções. 
 
 
10.2 Vantagen
 
As fu es at dos parâmetros e através do seu nome permitem 
que sejam retornados valores à rotina chamadora e desta forma esses valores poderão ser 
im ídos a uma variável ou podem servir em operações aritméticas entre 
outras. 
 O
 legibilidade do 
programa uma vez que a função main ficará menor; 
• Possibilidade de testar os trechos em separados; 
• Permitir que o programador construa sua própria biblioteca de funções, tornando 
ficiente uma vez que poderá fazer uso de funções por ele 
escritas em vários outros programas com a vantagem de já terem sido testadas; 
 
10.3. Funções Pré-definidas 
 
O conjunto de funções pré-definidas é muito extenso e aqui vamos estudar algumas 
funções das bibliotecas: cmath, cstring, cctype, cstdlib, etc. 
Quando estudamos uma função, temos vários parâmetros a observar. Veja, por 
exemplo a seguinte função pré-definida da biblioteca cmath: 
 
double sqrt(double x) 
 
Este é o protótipo da função, isto é, informações sobre o tipo de retorno da função 
e tipos dos parâmetros. 
Esta função retorna um valor double, seu nome é sqrt e o tipo da variável que recebe 
o valor passado é double. 
Quando você criar suas funções, elas precisarão ter uma declaração semelhante a 
esta. 
As funções que você criar poderão ser localizadas antes da função principal(main) ou 
es 
m trecho de programa com objetivo
ma escrito em linguagem C++ poderá ser f
s 
nçõ ravés da passagem 
pressos ou atribu
s principais objetivos de uma função são: 
• Evitar que uma seqüência de comandos se repita em várias partes de um programa ; 
• Dividir o programa em partes menores(modularizar), aumentando a
sua programação mais e
 
Tudo isto justifica o uso de funções em nossos programas 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
47 
uma função for declarada antes, o protótipo da função não precisará ser 
declarado na função main, mas se declarada depois, o protótipo precisará ser declarado na 
D
) 
depois. Se 
função main. 
 
eclaração de uma função: 
tipo identificador (lista de parâmetros
int, float, char, void Nome da função ( tipo1 nome1, tipo2 nome2 ) 
 
Exemplos: 
int quadrado(int l) 
char maiuscula(char n[] ) 
 
 
Calma! Você vai começar a Muito difícil. Não enetendi nada! 
usar as funções que já estão 
prontas. 
 
 
10.3
Bi
 
#i
#i
#d
using namespace std; 
int main() 
{
 cout<<"\nFUNCOES NUMERICAS\n"; 
 cout<<"\nDigite numero real: "; 
f; 
<<fabs(f); 
"\nCEIL: "<<ceil(f); 
 
 
 cout<<"\nPotencia de 2 elevado a 3: "
 cout<<"\nLogaritmo de8 na og(8.0); 
 cout<<"\nLogaritmo de 8 na base 10: "<<log10(8.0); 
 
 
.1 Funções Numéricas 
blioteca: cmath 
nclude <iostream> 
nclude <cmath> 
efine PI (3.14159265) 
 float f; 
 cin>>f; 
 cout<<"\nNumero: "<<
 cout<<"\nABSOLUTO: "
 cout<<
cout<<"\nFLOOR: "<<floor(f); 
 cout<<"\nFMOD: "<<fmod(f,3); 
 cout<<"\nSQRT: "<<sqrt(f+0.5); 
cout<<"\nSeno de 30: "<<sin(30*PI/180); 
 cout<<"\nCo-seno de 30: "<<cos(30*PI/180); 
 cout<<"\nTangente de 30: "<<tan(30*PI/180); 
<<pow(2.0,3.0); 
base neperiana: "<<l
cout<<"\nLogaritmo 8 na base 2: "<<log(8.0)/log(2.0); 
 cout<<"\nRaiz cubica de 8: "<<exp(1./3*log(8.0)); 
 cout<<"\n\n"; 
system("pause"); 
} 
 
Algoritmos – Prof. Anita Lopes 
 
 
48 
 
 
 
10.3.2 Funções que Convertem strings em Números 
NCOES CHAR-NUMER0\n"; 
nteiro: "; 
"<<atoi(s)/2; 
(s)); 
Biblioteca: cstdlib 
 
#include <iostream> 
> #include <cstdlib
using namespace std; 
int main() 
]; { char s[30
 cout<<"\nFU
 cout<<"\nDigite numero real: "; 
 cin>>s; 
nDobro: "<<atof(s)*2; cout<<"\
 cout<<"\nDigite numero i
 cin>>s; 
r 2: cout<<"\nNumero dividido po
 cout<<"\nABSOLUTO: "<<abs(atoi
 cout<<"\n\n"; 
 system("pause"); 
} 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
49 
10.3.3 Funções Strings 
Biblioteca: ctring, cctype 
 
#include <iostream> 
#include <cstring> 
#include <cctype> 
using namespace std; 
int main() 
{char c,s1[30],s2[30]; 
 cout<<"\nBIBLIOTECA cctype\n"; 
 cout<<"\nLetra: "; 
 cin>>c; cin.get(); 
 c=toupper(c); 
 cout<<"Convertida para maiuscula: "<<c; 
 c=tolower(c); 
 cout<<"\nConvertida para minuscula: "<<c; 
 cout<<"\n\nBIBLIOTECA cstring\n"; 
 cout<<"\nDigite palavra: "; cin.getline(s1,30); 
 strcat(s1,"FIM"); 
"\nConcatenacao da palavra digitada com FIM: "<<s1; 
"\nDigite palavra: "; cin.getline(s2,30); 
arando strings\n"; 
"Digite PAZ: "; cin.getline(s1,30); 
; cin.getline(s2,30); 
 
rentes"; 
e(s1,30); 
(s2,30); 
 cout<<
 cout<<
 strcpy(s1,s2); 
 cout<<"\nApos copia de toda palavra2: "<<s1; 
o de s2: "<<strlen(s2); cout<<"\nTamanh
 cout<<"\n\nComp
 cout<<
 cout<<"Digite PAZ: "
0) if(strcmp(s1,s2)==
 cout<<"\nIGUAIS"; 
 else 
 cout<<"\nDife
 cout<<"\nDigite PAZ: "; cin.getlin
ne cout<<"Digite AMOR: "; cin.getli
p(s1,s2)!=0) if(strcm
 cout<<"\nDIFERENTES"; 
 else 
\nIguais"; cout<<"
 cout<<"\n\n"; 
 system("pause"); 
} 
 
Algoritmos – Prof. Anita Lopes 
 
 
50 
 
 
 
1
 
dor e um conteúdo que irá ser substituído toda vez que o 
id grama. 
a 
fu
gens o uso de funções. 
riação de suas “funções”. 
 
E unciado deste programa. 
 
nclude <cmath> 
#define quadrado(x) ((x)*(x)) 
#define pi (3.14159265) 
#define NP (2.71828182846) 
#define conv(x) ((x)*(pi)/(180)) 
using namespace std; 
int main() 
{ 
 cout<<"\nnumero: 12" ; 
 cout<<"\n\nquadrado= "<< quadrado(12); 
 cout<<"\n\nangulo: 30"; 
 cout<<"\n\nseno de 30 eh "<<sin(conv(30.0)); 
 cout<<"\n\nneperiano:"<<NP ; 
 cout<<"\n\n" ; 
 system("pause"); 
} 
0.4. Diretiva #define 
Define um identif
dor aparecer em um pro
ica
entifica
Esta diretiva pode ser associada a uma string ou a uma macro semelhante a um
nção. 
ro for pequena, substitui com vantaSe o tamanho da mac
Será seu primeiro contato com a c
xemplo 1: Escreva o en
#i
#i
nclude <iostream>
 
Algoritmos – Prof. Anita Lopes 
 
 
51 
 
 
Exemplo 2: Escreva o enunciado deste programa. 
#include <iostream> 
#define AREA(b,h) (b*h) 
using namespace std; 
int main() 
{ float base,alt; 
"\nBASE: " ; 
 ; 
 cout<<"\nAREA: "<<AREA(base,alt) ; 
 c
 cout<<
 cin>>base ; 
 cout<<"\nALTURA: "
 cin>>alt ; 
out<<"\n\n" ; 
 system("pause"); 
} 
 
 
E nciado deste programa. 
lude <iostream> 
1: " ; 
 cout<<"\nCATETO 2: " ; 
 cin>>cat2 ; 
 cout<<"\nHIPOTENUSA: "<<HIPO(cat1,cat2); 
 cout<<"\n\n" ; 
xemplo 3: Escreva o enu
#inc
#include <cmath> 
#define HIPO(c1,c2) (sqrt(c1*c1+c2*c2)) 
using namespace std; 
int main() 
{ float cat1,cat2; 
 cout<<"\nCATETO 
 cin>>cat1 ; 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
52 
 system("pause"); 
} 
 
 
Exemplo 4: Escreva o enunciado deste programa. 
og(b))) 
nte; 
nte); 
#include <iostream> 
#include <cmath> 
#define POT(b,e) (exp(e*l
using namespace std; 
int main() 
{ float base, expoe
 cout<<"\nBase: "; 
 cin>>base ; 
 cout<<"\nexpoente: "; 
e; cin>>expoent
 cout<<"\nPotencia: "<<POT(base,expoe
 cout<<"\n\n" ; 
 system("pause"); 
} 
 
 
 
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
53 
1 o pré-definida 
 
Quando uma função pré-definida é chamada, o fluxo de controle é desviado para a 
função, no momento em que ela é ativada no na função que a chama. Em nosso estudo será 
sempre chamda da main(principal). Ao terminar a execução dos comandos da função, o fluxo 
de controle retorna ao ponto que foi ativada. 
 
0.5 Chamada da funçã
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Algoritmos – Prof. Anita Lopes 
 
 
54 
 
3. EVARISTO, Jayme. Aprendendo a Programar em C. Rio de Janeiro: Book Express, 
2001. 
4. Kernighan, Brian W. Ritchie, Dennis M. C- A linguagem de Programação padrão 
ANSI . Rio de Janeiro , Campus , 2002 
5. MIZRAHI, V.V. Treinamento dem liguagem C – Curso completo.Módulos 1 e 2. São 
Paulo: Mc Graw Hill, 1990 
6. MRALES,Celso R. Estruturas de daos e Algoritmos. São Paulo: Berkley,2001. 
 
7. SCHILDT, Herbert. C completo e total. Makron Book 
 
8. UFMG. Apostila de C. 
 
. UNIVERSIDADE DE CAXIAS DO SUL. Apostila de C. 
 
0. PROF. SILVIO – Anotações. ni.faj.br/nourau/document/get.php/2934/aula8.pdf 
 
 
 
 
Bibliografia: 
1. LOPES, Anita, GARCIA, Guto. Introudção à Programação- 500 Algoritmos. 6a 
ed.Rio de Janeiro: Campus, 2002. 
2. LOPO,Erik de Castro, JONES Bradlely, AIKTEN Peter. C for Linux Programming 
.SAMS 
9
1
 
	FUNDAMENTOS DA LINGUAGEM C++
	1 A linguagem C++
	Converte para maiúscula ou para minúscula uma letra
	Funções de arredondamento para inteiro
	Funções: potência e raiz quadrada
	Converte para inteiro, se possível, um vetor de char
	Converte para real, se possível, um vetor de char
	Fornece o número de caracteres de uma string
	Compara duas strings 
	 
	Caracter de Controle
	 scanf
	Não gosta de usar system(“pause”); ? Veja o exemplo abaixo:
	Operador
	Operação
	Atribuição Aritmética
	Instrução Equivalente
	cont += 1; 
	j -= i ; 
	num *= k;
	divide /= 5; 
	resto %= 2; 
	cont = cont + 1;
	Instrução Equivalente
	++ var;
	var ++ ; 
	-- var ; 
	var -- ; 
	var = var + 1; 
	Significado
	 Você conhece C++?
	Já foi difícil o tal de if... else if e agora aparece mais esta para complicar?
	 
	Calma! É para facilitar.
	Vou poder usar sempre?
	 
	Não! Veja as “regras” abixo.
	Por que usar break?
	 
	Leia o parágrafo abaixo e veja o exemplo. 
	Entendi: quando comparou o mês com o rótulo e achou, daí em diante executou todos os comandos.
	 
	Você está ficando ótimo!
	Então o break; será sempre obrigatório.
	 
	Errado!
	Veja o exemplo abaixo.
	Três são as estruturas de repetição disponíveis na linguagem C++: for, while e do ... while. Em todas as estruturas estará presente pelo menos uma expressão para controlar a repetição.
	8.1 Estrutura de repetição: for
	Expressão
	Expressão
	Regras para se usar um acumulador
	Estranho. Igual à solução do exemplo 2 da estrutura while.
	 
	É porque as duas simularam a estrutura do for.
	Agora você inventa um tal de endl. Eu ainda nem entendi por que dois cin.get().
	 
	Leia as notas abaixo.
	 9 Estruturas
	Muito difícil. Não enetendi nada!
	 
	Calma! Você vai começar a usar as funções que já estão prontas.
	10.3.1 Funções Numéricas 
	10.3.2 Funções que Convertem strings em Números 
	10.3.3 Funções Strings

Continue navegando