Notasdeaula Algoritmoseprogramacao Ele Eca

45
 Faculdade Pitágoras Engenharia  Elétrica  / Automação  Algoritmos  e Programação  semestre 2011 Professora: Silvana Diniz NOTAS DE AULA UNIDADE I Introdução aos Algoritmos 1  Definição de algoritmos: Dado um problema,  um algoritmo é a especificação  de uma sequência de ações cuja execução resulta na resolução do problema.  Dada a definição de algoritmos,  vemos que os algoritmos  não são específicos  do domínio da computação.  Algoritmos  fazem parte do diaadia das pessoas,  mesmo que elas não saibam o que são algoritmos.  Por  exemplo, abaixo está um algoritmo de como preparar uma “Picanha de sol”: Modo de preparo (algoritmo) da “Picanha de sol”  ‐ Numa tigela coloque 1 kg de sal grosso,  1 peça de picanha cortada ao meio no sentido do comprimento  e cubra com mais 1 kg de sal grosso.  Deixe descansando  por 24 horas em local  arejado.   ‐ Depois de 24 horas,  retire o excesso de sal grosso e mergulhe a picanha em 2 litros  de leite.  Deixe repousar por mais 24 horas para dessalgar.   ‐ Passado este período,  retire a picanha do leite e sequea bem com um papel  toalha.  Corte a picanha em fatias e numa chapa com manteiga  de garrafa,  grelheos rapidamente  OU coloque as fatias de picanha numa assadeira  untada e asse em forno préaquecido  a 180º C por 35 minutos.  4 ºSirva com vinagrete de feijão verde,  ou purê de banana da terra,  ou farofa, ou mandioca cozida ou chips de mandioca.  Fonte: http://receitas.maisvoce.globo.com/Receitas/Carnes/0,,REC25021 777023+PICANHA+DE+SOL,00.html  Outros exemplos de algoritmos  na nossa vida cotidiana podem ser citados: algoritmo de como tomar um medicamento;  algoritmo de como ir de um ponto a outro numa cidade;  algoritmo de como montar uma bicicleta.  Algoritmos e Lógica: Via  de regra, a elaboração  de um algoritmo para solucionar um determinado  problema envolve definir  os passos intermediários  numa seqüência lógica.  Exemplo:  Um senhor está numa das margens de um rio com três cargas: uma raposa,  um galo e um saco de milho. Ele deve atravessar o rio com suas três cargas e dispõe de um barco que comporta  apenas ele próprio e uma de suas cargas de cada vez. Especifique uma sequência de viagens  tal que o problema seja solucionado.  1  Material baseado no conteúdo desenvolvido pelo professor Marco Aurélio Guimarães Moreira 1 

Transcript of Notasdeaula Algoritmoseprogramacao Ele Eca

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 1/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

UNIDADE I 

Introdução aos Algoritmos1 

Definição de algoritmos: 

Dado um problema, um algoritmo é a especificação de uma sequência de ações cuja execução 

resulta na resolução do problema. 

Dada  a  definição  de  algoritmos,  vemos  que  os  algoritmos  não  são  específicos  do  domínio  da 

computação. Algoritmos fazem parte do dia‐a‐dia das pessoas, mesmo que elas não saibam o que 

são algoritmos. Por exemplo, abaixo está um algoritmo de como preparar uma “Picanha de sol”: 

Modo 

de 

preparo 

(algoritmo) 

da 

“Picanha 

de 

sol” 

1º ‐ Numa tigela coloque 1 kg de sal grosso, 1 peça de picanha cortada ao meio no sentido do comprimento e cubra 

com mais 1 kg de sal grosso. Deixe descansando por 24 horas em local arejado. 

2º ‐ Depois de 24 horas, retire o excesso de sal grosso e mergulhe a picanha em 2 litros de leite. Deixe repousar por 

mais 24 horas para dessalgar. 

3º ‐ Passado este período, retire a picanha do leite e seque‐a bem com um papel toalha. Corte a picanha em fatias e 

numa chapa com manteiga de garrafa, grelhe‐os rapidamente OU coloque as fatias de picanha numa assadeira untada 

e asse em forno pré‐aquecido a 180º C por 35 minutos. 

4  º‐ Sirva  com  vinagrete de  feijão  verde, ou purê de banana da  terra, ou  farofa, ou mandioca  cozida ou  chips de 

mandioca. 

Fonte: http://receitas.maisvoce.globo.com/Receitas/Carnes/0,,REC25021 ‐7770‐23+PICANHA+DE+SOL,00.html 

Outros exemplos de algoritmos na nossa vida cotidiana podem ser citados: 

‐ algoritmo de como tomar um medicamento; ‐ algoritmo de como ir de um ponto a outro numa cidade; ‐ algoritmo de como montar uma bicicleta. 

Algoritmos e Lógica: 

Via de  regra,  a  elaboração de  um  algoritmo para  solucionar  um determinado  problema 

envolve definir os passos intermediários numa seqüência lógica. 

Exemplo: Um senhor está numa das margens de um rio com três cargas: uma raposa, um galo e um saco de 

milho. Ele deve atravessar o rio com suas três cargas e dispõe de um barco que comporta apenas 

ele próprio e uma de  suas cargas de cada vez. Especifique uma  sequência de viagens  tal que o 

problema seja solucionado. 

1 Material baseado no conteúdo desenvolvido pelo professor Marco Aurélio Guimarães Moreira

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 2/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

A  tabela a seguir mostra uma possível seqüência de operações cuja execução resulta na solução 

para o problema. Observe que, dependendo da ordem das operações, o galo pode  ficar sozinho 

com a raposa ou o milho pode ficar sozinho com o galo. Isso implicaria perda de uma das cargas, o 

que vai contra os requisitos da solução. 

Cargas do lado esquerdo 

depois da operação 

Operação  Cargas do lado direito depois da operação 

galo, raposa, milho, senhor  Início 

raposa, milho  Atravesse com o galo  galo, senhor 

raposa, milho, senhor  Volte sozinho  Galo 

Milho  Atravesse com a raposa  Raposa, galo, senhor 

galo, milho, senhor  Volte com o galo  Raposa 

Galo  Atravesse com o milho  Milho, raposa, senhor 

Galo, senhor  Volte sozinho  Milho, raposa 

Atravesse com o galo  Galo, raposa, milho, senhor 

Algoritmo de como construir um algoritmo: 

Podemos definir alguns passos básicos para a construção de um algoritmo: 

Passo  1) Dado  um  problema,  faça  uma  análise  preliminar  e  entenda  o  problema  com  a maior 

precisão possível; 

Passo 2) Desenvolva um algoritmo para resolver o problema; 

Passo 3) Execute o algoritmo para vários testes cujos resultados sejam conhecidos, ou seja, faça um 

Teste de Qualidade; 

Passo 4) Caso o resultado seja satisfatório, o algoritmo está pronto para ser implementado; 

Passo 5) Caso contrário, volte ao passo 2. 

Algoritmos e programas: 

Os  programas  de  computador  são  algoritmos  implementados  numa  linguagem  de 

programação  (C,  C++,  Pascal,  Java,  C#  etc.).  Normalmente,  um  programa  de  computador  é 

composto por um conjunto de algoritmos, cada um dos quais responsável pela solução de um sub‐

problema. Existem duas principais diferenças entre escrever um algoritmo a ser seguido por um ser 

humano  e  escrever  um  algoritmo  e  ser  seguido  por  um  computador. A  primeira  delas  está  na 

linguagem utilizada. Enquanto para um  ser humano podemos utilizar o português, no  caso dos 

computadores, estamos restritos às linguagens de programação, que, por sua vez, são convertidas 

em linguagem de máquina pelos compiladores. A segunda principal diferença está no fato de que 

uma pessoa consegue tomar decisões por conta própria na ocorrência de situações inesperadas na 

execução  de  um  algoritmo.  Quando  escrevemos  um  algoritmo  para  ser  executado  por  um 

computador, todas as situações devem ser previstas e o tratamento adequado para cada uma delas 

deve ser especificado. 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 3/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Aplicações de algoritmos em Engenharia: 

Freqüentemente,  a  solução  de  problemas  de  engenharia  pode  ser  descrita  como  uma 

seqüência sistematizada de passos. Nesses casos, podemos escrever algoritmos para solucioná‐los 

e deixar o trabalho repetitivo para ser realizado pelo computador. 

Exemplos: ‐ algoritmo para cálculo das correntes num circuito; ‐ algoritmo para o processo de mistura de duas substâncias; ‐ algoritmo para determinar uma seqüência de movimentos de um manipulador robótico 

num processo de solda. Percebe‐se  que  o  domínio  das  técnicas  de  construção  de  algoritmos  é  uma  ferramenta 

essencial para um engenheiro. 

Nível de abstração: 

Abstração se refere à omissão de detalhes. Um algoritmo pode ser escrito com diferentes 

níveis de abstração. Considere, por exemplo, o algoritmo para ir de um ponto a outro numa cidade. Podemos  especificar  apenas  os  principais  pontos  de  passagem  (algoritmo  em  alto  nível  de 

abstração). Por outro  lado, pode‐se  também especificar cada rua do caminho, cada mudança de 

faixa que o motorista deve efetuar. Os níveis de abstração estão  também  ligados com a  linguagem de programação adotada. 

Dependendo da  linguagem, um procedimento conceitualmente simples pode se  transformar em 

dezenas  de  linhas  de  código.  Linguagens  de  mais  alto  nível  são  mais  próximas  da  linguagem 

humana (Português, Inglês etc.). Por outro lado, linguagens de mais baixo nível são mais próximas 

ao que o computador consegue processar (0s e 1s). 

Descrição de Algoritmos: 

Um mesmo problema pode ser resolvido por diferentes algoritmos. Por exemplo, para ir de 

um ponto a outro, pode‐se adotar diferentes caminhos ou ainda diferentes meios de transporte. Cada algoritmo, por sua vez, pode ser descrito de diferentes maneiras. 

Considere, como exemplo, o problema de construir um algoritmo para calcular a corrente no circuito abaixo: 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 4/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

A resolução do problema (especificação de um conjunto de ações que definem o algoritmo) pode, por exemplo, ser descrita de forma narrativa. 

Descrição Narrativa: 

‐ Obtenha do usuário o valor de V 

‐ Obtenha do usuário o valor de R 

‐ Calcule I por I = V/R 

‐ Informe ao usuário o valor de I 

Descrição por fluxograma: 

O mesmo algoritmo pode ser descrito na forma de um fluxograma: 

Fluxograma  é  uma  representação  gráfica  de  algoritmos,  onde  formas  geométricas 

diferentes implicam ações (instruções e/ou comandos) distintos. As formas geométricas diferentes 

facilitam o entendimento das idéias. 

Descrição por pseudocódigos: 

O pseudocódigo é a escrita, por meio de regra predefinida, dos passos a serem seguidos 

para a resolução de um problema exposto em um enunciado. A conversão de um algoritmo de pseudocódigo para uma linguagem de programação é um 

passo  fácil.  Basta,  para  isso,  o  conhecimento  do  vocabulário  e  regras  sintáticas  da 

linguagem/idioma desejado. 

Exemplo: Resolução do problema do cálculo da corrente. 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 5/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Algoritmo CalculaCorrente 

Variáveis R: Real V: Real 

I: Real Início 

Escreva “Informe a tensão: “ 

Leia V 

Escreva “Informa a resistência: “ 

Leia R 

I ← V/R 

Escreva “A corrente é de: “, I Fim 

Observe no  código acima que os  comandos entre os delimitadores  Início e Fim  têm um 

alinhamento  deslocado  à  direita  comparando  aos  delimitadores.  Esse  recurso  é  denominado 

indentação (também chamada de endentação ou identação). A indentação aumenta a legibilidade 

do código,  torna mais  fácil  identificar o conteúdo de cada porção do código. Outro recurso para 

aumentar a  legibilidade é utilizar nomes significativos para as variáveis. As variáveis, R, V e  I, por 

exemplo, poderiam se chamar “carro”, “ônibus” e “bicicleta”. O algoritmo  funcionaria da mesma 

forma  e  produziria  os  mesmos  resultados.  No  entanto,  um  programador  que  tivesse  que  dar 

manutenção no código teria grande dificuldade em entender o seu funcionamento. 

Exercícios para praticar EM AULA: 

Exercício 1: Com base no exemplo do algoritmo CalculaCorrente,   faça um  algoritmo em pseudocódigo para 

calcular o tempo gasto por um veículo num trajeto, dados a velocidade  (constante) e a distância 

percorrida. 

Exercícios para praticar EM CASA: 

Exercício 2: Dadas as medidas de uma sala em metros (comprimento e largura), informe a sua área em metros 

quadrados. 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 6/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

UNIDADE II 

Tipos de dados, variáveis e constantes 

Variável: 

Uma variável é um local (um endereço) na memória principal que armazena um conteúdo. Para facilitar a programação, nos é permitido dar nome a esse endereço. No exemplo do algoritmo 

de  cálculo de  corrente, V, R e  I podem  ser  classificados  como variáveis. Um dado é  classificado 

como variável quando existe a possibilidade de que seja alterado em algum  instante no decorrer 

do tempo, ou seja, durante a execução do algoritmo/programa. Em C++ todas as variáveis devem ser declaradas antes de serem usadas. Uma declaração 

especifica um tipo, e é seguida por uma lista de uma ou mais variáveis daquele tipo. A declaração 

de uma variável tem a seguinte forma geral: 

<tipo> <nome> = <valor>; Exemplos: 

int inicio, fim, numero; float valor; short int codigo; char c, linha [100]; 

float media=0; 

Os tipos de dados (int, float, short, char, etc.) serão explicados mais a frente. O <valor> é 

facultativo,  ou  seja,  não  é  obrigatório  em  toda  a  declaração.  O  <valor>  será  muito  útil  na 

inicialização de variáveis, assunto que será abordado, mais tarde, quando iniciarmos a unidade de 

Estruturas de Repetição. 

Constante: 

Em oposição às variáveis, uma constante é um valor que não varia ao longo da execução de 

um  algoritmo/programa. Por exemplo, um programa para  calcular  a  área de um  círculo,  a  área seria dada por: 

A = PI*R*R 

R  é variável  (é um valor  que depende do raio do círculo que o usuário informa) PI  é constante (vale sempre 3,14159265...)  A  é variável  (representa a área e depende do raio que o usuário informa) Em C++ , utilizamos o prefixo const  associado a um tipo, um nome e um valor para definir 

uma constante. A declaração de uma constante 

tem a seguinte forma geral: 

const  <tipo> <nome> = <valor>; 6 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 7/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Exemplos: 

const  int  eterna = 256; const   float  PI =3.14159265; 

Nomenclatura  de variáveis: 

Toda  variável  deve  ser  declarada  antes  de  ser  utilizada  (em  pseudocódigo  ou  em  C). Declarar uma  variável  significa  reservar um  espaço na memória no  computador utilizando uma 

nomenclatura  apropriada,  para  que  os  dados  (lidos  do  teclado  ou  calculados  por  expressões) 

possam ser guardados e acessados sempre que necessário. O nome dado às variáveis deve obedecer às seguintes regras: 

‐ deve começar com uma letra ou sublinhado “_”; ‐ todo o nome só pode conter letras, números ou sublinhado; ‐ Letras maiúsculas e minúsculas são consideradas diferentes (Soma é diferente de soma); ‐ Palavras  reservadas  não  podem  ser  usadas  como  nomes  de  variáveis  (veja  as  palavras 

reservadas no ANEXO I); ‐ Variáveis podem ter o tamanho de até 32 caracteres. 

Exemplo: Variáveis com nomes válidos: 

Soma,  _acumulador  j1, R, V, I, hg123, HG123, INPS, IR. 

Exemplo: Variáveis com nomes inválidos: 

1soma 

e(2,  j%, aq*,  joao&Maria, João 

É boa prática  (mas não é regra) escolher nomes que  indiquem a  função da variável. Para 

uma variável que representa velocidade, poderia ser dado o nome “p”. No entanto, isso dificultaria 

a leitura do código. Nomes mais indicados seriam “v”, “vel”, ou mesmo “velocidade”. Outro ponto de suma  importância: C é "case sensitive", ou seja, maiúsculas e minúsculas 

fazem diferença. Se declararmos uma variável  com o nome  ‘soma’ ela  será diferente de Soma, SOMA,  SoMa  ou  sOmA.  Da  mesma  maneira,  os  comandos  (todas  as  palavras  reservadas)  da 

linguagem C if  e for, por exemplo, só podem ser escritos em minúsculas, pois senão o compilador 

não irá interpretá‐los como sendo comandos, mas sim como variáveis. Por exemplo, se escreve If  ou  invés  if , o compilador  irá acusar um erro de “variável não declarada” e, consequentemente, 

não  irá  executar  o  algoritmo  até  que  o  erro  seja  corrigido,  e  o  programa  seja  compilado novamente. 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 8/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Tipos de dados: 

Os dados manipulados por variáveis em um programa em C podem ser do tipo numérico, literal ou literal. 

Dados numéricos inteiros: São  aqueles  que  não  possuem  componentes  decimais  ou  fracionários,  podendo  ser 

positivos ou negativos. Tentam representar o conjunto dos números inteiros da Matemática. 

Exemplo: Variáveis que seriam declaradas como do tipo inteiro: 

O que representa  Um possível nome  Um possível valor 

Número de filhos na escola  n_filhos  2 

Número de carros de uma empresa  n_carros  50 

Número de peças vendidas  Pecas  0 

Pontos por infração de trânsito  ptos_infracao ‐3 

Dados numéricos reais: São aqueles que podem possuir componentes decimais ou fracionários, e podem também 

ser positivos ou negativos. Aproximam o conjunto dos números reais da Matemática. 

Exemplo: Variáveis que seriam declaradas como do tipo real: 

O que representa  Um possível nome  Um possível valor 

Corrente em um circuito  I  2.03 

Força aplicada  F  50.0 

Altitude  altitude  1010.1 

Dados literais: Constituídos  por  uma  sequência  de  caracteres  contendo  letras,  dígitos  e/ou  símbolos 

especiais. Este tipo de dados é também muitas vezes chamado de cadeia de caracteres ou string. É 

comum, em algumas  linguagens, a diferenciação entre a representação de um único dado  literal, que  é  chamado  de  caractere  (por  exemplo,  ‘a’)  e  um  conjunto  de  caracteres  (por  exemplo, “abacate”.  Para  um  único  caractere,  utilizam‐se  aspas  simples;  para  uma  cadeia  de  caracteres, 

aspas duplas. 

Exemplo: Variáveis que seriam declaradas como do tipo literal 

O que representa  Um possível nome  Um possível valor 

Primeira letra do nome  primeira_letra  ‘A’ 

Nome  nome  “Astrogildo” 

Mensagem de erro  mensagem_erro  “operação inválida” 

Dados lógicos: São caracterizados como tipos lógicos os dados com valores Verdadeiro (1) ou Falso 

(0), sendo que este tipo de dado pode apresentar apenas um dos dois valores. A linguagem C não 

apresenta um tipo de dados especial para armazenar variáveis do tipo lógico. Normalmente, esse 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 9/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

tipo  de  informação  é  armazenada  em  variáveis  do  tipo  inteiro  (int). Valores  diferentes  de  zero 

representam Verdadeiro; Falso é representado pelo valor 0 (zero). 

Exemplo: 

Variáveis que seriam declaradas como do tipo lógico 

O que representa  Um possível nome  Um possível valor 

Porta está aberta  porta_aberta  Verdadeiro 

Nível acima de 10 metros  nivel10  Falso 

Sistema ligado  ligado  Falso 

Declaração dos vários tipos de variáveis em pseudocódigo e em C: 

Declaração em pseudocódigo  Declaração correspondente em C 

Variáveis: 

a: Inteiro 

b: Real c: Caractere 

d: Literal e: Lógico 

int a; float b; char c; char d[20]; int e; 

Obs.:  Uma  variável  real  pode  ser  declarada  em  C  como  do  tipo  float  ou  como  do  tipo 

double. Dessa forma, a declaração “float b;” poderia ser substituída por “double b;”. A diferença é 

que o tipo  float  ocupa metade do espaço em memória do tipo double. Por outro lado, variáveis do 

tipo double  são  representadas  com maior precisão. A utilização do  tipo double é  recomendada 

apenas  em  casos  específicos,  como  análise  numéricas  muito  complexas  são  necessárias  para 

garantir precisão. 

Operadores: São elementos  funcionais que  atuam  sobre operandos e produzem um  resultado. Como 

exemplo, na expressão 20 + 30, os números 20 e 30 são operandos relacionados pelo operador de 

adição (+). Os operadores são classificados quanto a dois critérios principais: ‐ número de operandos sobre os quais atuam: unários, binários e ternários. ‐ tipos de operandos sobre os quais atuam: aritméticos, lógicos, relacionais e literais. 

Expressões: Combinação de variáveis, constantes e operadores que, uma vez avaliada,  resulta em um 

valor. As expressões podem ser do tipo aritméticas ou lógicas. 

Expressões aritméticas: São aquelas cujo resultado é do tipo numérico, seja ele  inteiro ou real. Somente o uso de 

operadores aritméticos e variáveis numéricas é permitido em expressões desse tipo. 

Operação  Operador em 

pseudocódigo 

Operador 

em C 

Tipo  Prioridade  Exemplo 

Inversão de sinal ‐ ‐ Unário  1 ‐(‐1) = 1 

Manutenção de sinal  +  +  Unário  1  +1 = 1 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 10/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Multiplicação  *  *  Binário  3  6*7=42 

Divisão  /  /  Binário  3  8/2=4 

Adição  +  +  Binário  4  1+2=3 

Subtração ‐ ‐ Binário  4  4‐5=‐1 

A tabela de operadores aritméticos é válida  tanto na convenção de pseudocódigo quanto 

em  linguagem C. O valor na coluna de “Prioridade” define a ordem com que os operadores são 

aplicados.  Em expressões com operadores de mesma prioridade, são executados os operadores da 

esquerda primeiro. Exemplos: 

1 + 2 * 3 = 1 + (2*3) = 7 

1 + 2  – 3*20/5 = (1+2)  – ((3*20)/5) 

Note que a multiplicação é normalmente representada pelo símbolo * ao invés do símbolo 

x,  que  é  mais  comum  em  expressões  aritméticas  no  contexto  da  Matemática.  Em  algumas 

linguagens de programação, a exponenciação é por vezes representada pelo símbolo “^” ou com o 

uso de função.  Exemplos: 

Em Matlab: 3^2 

Em Java: Math.pow(3,2); Em C: pow(3,2); 

Expressões lógicas: São aquelas cuja avaliação resulta em um valor lógico (verdadeiro ou falso). 

Operação  Operador em 

pseudocódigo 

Operador em C 

Tipo  Prioridade  Exemplo 

em C 

Exemplo em 

pseudocódigo 

Disjunção  OU  ||  Binário  3  (3) || (0)  Verdadeiro OU Falso 

Conjunção  E  &&  Binário  2  (2) && (1)  Verdadeiro E  Verdadeiro 

Negação  NÃO  !  Unário  1  !1  NÃO Verdadeiro 

Tabela Verdade do Operador NÃO (NOT) Primeira condição  Resultado 

Verdadeira  Falso 

Falsa  Verdadeiro 

Tabela Verdade do Operador E (AND) Primeira Condição  Segunda Condição  Resultado 

Falsa  Falsa  Falso 

Verdadeira  Falsa  Falso 

Falsa  Verdadeira  Falso 

Verdadeira  Verdadeira  Verdadeiro 

Tabela Verdade do Operador OU (OR) 

Primeira Condição  Segunda Condição  Resultado 

Falsa  Falsa  Falso 

10 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 11/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Verdadeira  Falsa  Verdadeiro 

Falsa  Verdadeira  Verdadeiro 

Verdadeira  Verdadeira  Verdadeiro 

Expressões Relacionais: Realizam uma comparação entre duas variáveis de mesmo tipo e retornam um valor do tipo 

lógico. 

Comparação  Operador em 

pseudocódigo 

Operador em C 

Tipo  Exemplo 

em C 

Exemplo em 

pseudocódigo

Igual  =  ==  Binário  (a==b)  (a=b) 

Diferente  <>  !=  Binário  (a!=b)  (a<>b) 

Menor  <  <  Binário  (a<b)  (a<b) 

Menor ou igual  <=  <=  Binário  (a<=3)  (a<=3) 

Maior  >  >  Binário  (b>20)  (b>20) 

Maior ou igual  >=  >=  Binário  (c>=b)  (c>=b) 

Estrutura Básica de um Programa em C++ (Programando com Dev C++): 

Temos abaixo a estrutura básica de um programa escrito na linguagem C++ 

#include <stdio.h> 

#include <iostream> 

/* Um Primeiro Programa */ 

main() { 

printf  ("OLA! EU ESTOU VIVO! \n");  //Escreve na tela a frase entre aspas 

system ("PAUSE"); return 0; } 

Explicando cada parte 

#include <stdio.h> 

#include <iostream> 

O  cabeçalho  #include<>  serve  para  indicar  ao  compilador  todas  as  bibliotecas  que  este 

programa  utilizará.  Na  maioria  dos  programas  que  escreveremos  durante  esta  apostila, utilizaremos o #include <stdio.h> e  o #include <iostream>. A stdio.h contém as principais funções, comandos  e  classes  de  entrada  e  saída  de  C++,  necessárias  para  realizar  programas  que,  por 

exemplo,  recebam  dados  via  teclado  e  enviem  dados  via  monitor.  A  iostream  contém  outras 

funções  importantes  como  a  de  pausar  o  sistema  para  que  possamos  ver  os  resultados  no 

monitor. Leia mais no ANEXO II, sobre as bibliotecas da linguagem C. 

/* Um Primeiro Programa */ 

11 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 12/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Quando fazemos um programa, uma boa idéia é usar comentários que ajudem a elucidar o 

funcionamento  do  mesmo.  No  exemplo  apresentado  temos  um  comentário:  /*Um  Primeiro 

Programa*/.  O  compilador  desconsidera  qualquer  coisa  que  esteja  começando  com  /*  e 

terminando com */. Um comentário pode, inclusive, ter mais de uma linha. Aliás, se o comentário 

for de apenas uma linha, pode se usar //. 

int main() { ..... } 

main() indica que estamos definindo uma função de nome main. Todos os programas em C 

têm  que  ter  uma  função  main,  pois  é  esta  função  que  será  chamada  quando  o  programa  for 

executado. No exemplo, a função main não recebe argumentos (os parênteses estão vazios). Após 

o main  ()  inicia‐se um  {.  Esta  chave  irá delimitar que o  corpo  (conteúdo) da  função main e os 

comandos pertencentes a mesma. No final de todos os comandos um } deverá ser adicionado para 

finalizar a  função main. Sendo  assim, o O  código que estiver dentro das  chaves  será executado 

seqüencialmente quando a função for chamada. 

printf  ("OLA! EU ESTOU VIVO! \n");  //Escreve na tela a frase entre aspas 

Esta é a linha de comando do código que chama a função printf(), passando a string (uma 

string  é  uma  seqüência  de  caracteres,  como  veremos  a  seguir)  "Ola!  Eu  estou  vivo!\n"  como 

argumento. É por causa do uso da  função printf() pelo programa que devemos  incluir o arquivo 

cabeçalho stdio.h. A função printf( ) neste caso irá apenas colocar a string na tela do computador. O \n é uma constante chamada de constante barra  invertida. No caso, o \n é a constante barra 

invertida de "new line" e ele é interpretado como um comando de mudança de linha, isto é, após 

imprimir  “Ola!  Eu  estou  vivo!”  o  cursor  passará  para  a  próxima  linha.  É  importante  observar 

também que os comandos do C terminam com  ; e que strings são delimitadas por aspas duplas. Note também que após a função printf  há uma linha de comentário iniciada por // para indicar um 

comentário sobre a linha de comando. 

system ("PAUSE"); 

A  linha “system(“PAUSE”)” é uma chamada de função própria de C++. A função system( ) recebe  argumentos  como o  PAUSE que na  verdade  são  comandos para o  sistema operacional. Neste  caso,  ela  recebe  o  comando  “PAUSE”  para  pausar  a  execução  do  programa  até  que  o 

usuário aperte uma tecla qualquer. Utilizamos este recurso para que a tela do programa não seja 

terminada  automaticamente pelo  sistema,  impedindo que  vejamos os  resultados do programa. Nota:  É  por  causa  do  uso  da  função  system()  pelo  programa  que  devemos  incluir  o  arquivo 

cabeçalho iostream.h. Obs.:  Quando  estiver  digitando  seu  código  adicione  após  PAUSE  (dentro  das  aspas)  o 

comando > null  e veja o acontece. 

return 0; 

12 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 13/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

A última linha do programa, return(0); , indica o número inteiro que está sendo retornado 

pela  função, no caso o número 0. O comando “return 0” é a “resposta” da  função main para o 

sistema. Quase  toda  função  retorna um  valor para o  sistema ou programa que  a  chamou, por 

exemplo, uma função pode retornar o resultado de uma operação matemática executada por ela. 

No  caso  da  função  main,  ela  retorna  um  valor  para  o  sistema  operacional  que  executou  o 

programa. Esse valor é interpretado pelo sistema como uma mensagem indicando se o programa 

foi executado corretamente ou não. Um valor de retorno 0 indica que o programa foi executado 

sem  problemas;  qualquer  outro  valor  de  retorno  indica  problemas.  Quando  o  programa  é 

executado  até  o  fim,  ele  retorna  0  ao  sistema  operacional,  indicando  que  ele  foi  executado  e 

terminado corretamente. Quando o programa encontra algum erro ou é terminado antes da hora, ele retorna um valor qualquer ao sistema, indicando erro durante a execução. 

Saída de dados em Linguagem C: Operações de  saída de dados  referem‐se  a quaisquer  valores exibidos ou  retornados  ao 

usuário. Esses valores podem ser uma mensagem de orientação, o  resultado de uma expressão, um valor constante ou o conteúdo de uma variável. Conforme visto no algoritmo CalculaCorrente, 

em pseudocódigo, a saída de dados será representada pelo comando Escreva. Por exemplo: 

Escreva “O valor da corrente é de “, I Escreva “O programa executou uma operação inválida e será finalizado” 

Em linguagem C, a saída de dados, equivalente a “escreva” é feita pela função printf(). 

Exemplos: printf(“O valor da corrente é de %f“, I);  // variável real printf(“Maria tem %d filhos”, n_filhos);  // variável inteira 

printf(“A primeira letra do nome é %c”, letra);  // variável caractere 

printf(“%s”, nome);  // variável string (cadeia de caracteres) 

A função printf( ) tem a seguinte forma geral: 

 printf  (string_de_controle, lista_de_argumentos); Teremos, na string

 

de 

controle, uma descrição de tudo que a função vai colocar na tela. A string de controle mostra não apenas os caracteres que devem ser colocados na tela, mas também 

quais os  tipos de variáveis  serão exibidas e  suas  respectivas posições.  Isto é  feito usando‐se os 

códigos de controle, que usam a notação %. Na string de controle indicamos quais, de qual tipo e 

em que posições  estão  as  variáveis  a  serem  apresentadas.  É muito  importante que, para  cada 

código de controle, tenhamos um argumento na lista de argumentos. Resumindo, a função printf() converte,  formata  e  imprime  seus  argumentos  na  saída  padrão  (normalmente  a  tela)  sob  o 

controle da string_de_controle. 

Exemplos de printf( ) e o que eles exibem: 

printf  ("Teste %% %%")  Teste % % 

printf  ("%f",40.345)  40.345 

13 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 14/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

printf  ("%.2f",52.4578)  52.46 

printf  ("Um caractere %c e um inteiro %d",'D',120)  Um caractere D e um inteiro 120 

printf  ("%s eh um exemplo","Este")  Este eh um exemplo 

printf  ("%s%d%%","Juros de ",10)  Juros de 10% 

Note que nos exemplos acima, os valores as serem exibidos são diretamente caracteres ou 

números.  Porém  você  poderia  exibir  os  valores  de  uma  variável  que  acabou  de  armazenar  o 

resultado de um cálculo.  Por exemplo: 

printf  ("Media das temperatura lidas: %f", media) 

Neste caso, assumimos, por exemplo que o valor da media calculdado foi 78,45. Assim, o 

printf  acima irá exibir: 

Media das temperaturas lidas: 78.45 

Entrada de dados: 

Uma  operação  de  entrada  de  dados  refere‐se  a  qualquer  valor  que  seja  informado 

(digitado) pelo usuário, ou seja, fornecido através da digitação pelo teclado. Este valor pode ser um 

numérico ou literal e será armazenado, obrigatoriamente, em uma variável de seu respectivo tipo. Conforme  visto  no  algoritmo  CalculaCorrente,  em  pseudocódigo,  a  entrada  de  dados  será 

representada pelo comando Leia. Por exemplo: 

Leia V; Leia R; 

Em C, a operação de entrada de dados é realizada pela função scanf(). 

Exemplos: scanf(“%f”, &I);  // guarda valor digitado do teclado na variável real I scanf(“%d”, &n_filhos);  // guarda valor digitado do teclado na variável inteira n_filhos 

scanf(“%c”, &letra);  // guarda valor digitado do teclado na variável caracter letra 

scanf(“%s”, &nome);  // guarda valor digitado do teclado na variável string nome 

A função scanf  ( ) tem a seguinte forma geral: 

scanf  (string_de_controle, lista_de_argumentos); A função scanf( ) lê caracteres da entrada padrão (normalmente o teclado), interpretando‐

os de acordo com o  formato especificado na  string_de_controle, e armazena os  resultados nos 

argumentos  descritos  de  acordo  com  %  descrito.  Abaixo  uma  descrição  dos  principais  tipos  % 

(f,c,f,s) chamados de “máscaras”. 

Tipos de Máscaras: 

14 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 15/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Observe que  tanto  a  função printf()  como  a  função  scanf()  exige uma máscara diferente  (“%f”, “%d”, “%c”, “s”) para cada tipo de dado (int, float, char ou cadeia de caracteres). Na tabela a seguir 

são apresentados alguns dos códigos %: 

Códigos 

de 

Barra 

Invertida: 

Além  dos  códigos  de  controle,  existem  também  os  códigos  especiais,  tais  como  o  '\n'  que 

executam  tarefas especiais. Os  códigos de barra  invertida  são descritos na  string de  controle e 

servem  para  efeitos  de  apresentação/formatação  de  texto/dados  na  tela  do  computador.  Na 

tabela abaixo estão listados esses códigos especiais: 

Exemplos para praticar EM AULA: 

15 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 16/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Exercício 1 

Vamos transformar o algoritmo de Corrente Elétrica em código de C++: 

Em pseudocódigo  Código em C++ 

Algoritmo CalculaCorrente 

Variáveis R: Real V: Real I: Real 

Início 

Escreva “Informe a tensão: “ 

Leia V 

Escreva “Informa a resistência: “  Leia R 

I ← V/R 

Escreva “A corrente é de: “, I Fim 

//Programa para cálculo da corrente de um 

circuito elétrico V=RI 

#include <stdio.h> 

#include <iostream> 

float V; float R; float I; 

int main () { 

printf("\nInforme a tensao: "); scanf  ("%f",&V); printf("\nInforme a resistencia: "); scanf  ("%f",&R); I = V/R; printf("\nO valor da corrente eh de: %f\n",I ); system ("PAUSE"); return 0; 

Após compilar e executar o programa corretamente vá  fazendo as  seguintes mudanças, uma de 

cada vez. Após cada mudança, separadamente, compile e execute o programa e tente visualizar o 

que mudou. 

1.  Na linha printf("\nO valor da corrente eh de: %f\n",I );  troque o %f  por %.2f  Explique o que mudou. 

2.  Retire os “\n” das linhas com a função printf(); 

Explique o que mudou. 

3.  Na linha system ("PAUSE"); acrescente > null após o PAUSE (ainda dentro das aspas). Explique o que mudou. 

4.  “Enxugue” seu código declarando todas as variáveis em uma só linha:  float  V, R, I; Exercício 2 

Agora,  junto com um colega, tente implementar em o código C++ o pseudocódigo do exercício da 

aula  anterior  para  calcular  o  tempo  gasto  por  um  veículo  num  trajeto,  dados  a  velocidade 

(constante) e a distância percorrida. 

Dica:  Utilize  nomes  de  variáveis  mais  significativos  como  temo,  velocidade_media, 

16 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 17/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

distancia_percorridada,  etc. 

Exercício 3: 

Faça agora um programa para calcular a área de um círculo (A=π*r2), onde: 

A = área a ser calculada 

π = constante (3.141592653) r = raio da circunferência a ser fornecido pelo usuário 

Obs: Utilize o recurso de declaração da constante π conforme visto neste aula. 

Exemplos para praticar EM CASA: 

Em  casa,  altere os  códigos dos programas desenvolvidos no exemplo  acima, de  forma que eles 

fiquem mais claros para os programadores e para os usuários do programa. Exemplos: ‐ Utilize  linhas  de  comentários  para  explicar  o  que  determinada  linha  de  comando  está 

executando, caso esta seja de extrema importância para o programa. Ex.:  //Nesta linha, a corrente do circuito está sendo calculada.... 

‐ Informe  ao  usuário  (quando  estiver  usando  a  função  printf())  sobre  o  que  se  trata  o 

programa. Ex.: Este  programa  foi   feita  para calcular.... ‐ Informe ao usuário as unidades dos valores que eles devem fornecer. Exemplo: Entre com 

a distância  percorrida em Km. ‐ Informe ao usuário a unidade do valor calculado. Exemplo: O tempo gasto  pelo veículo no 

trajeto  foi  de ...... horas (segundos, minutos). 

‐ Se quiser incremente ainda mais com informando ao usuário: O tempo gasto  pelo veículo no trajeto de ..... Km a uma velocidade média de ..... Km/h  foi  de ...... horas. 

‐ Não se esqueça de controlar o número de casas decimais para que o valor mostrado fique 

muito grande. 

17 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 18/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

UNIDADE III 

Estruturas de Decisão 

Estrutura Condicional Simples: 

As estruturas de decisão permitem que o fluxo de execução das instruções siga diferentes 

caminhos dependendo do  resultado da avaliação de uma expressão  lógica  (reveja o que é uma 

expressão  lógica na unidade  anterior). A estrutura  condicional  simples é  aquela que determina 

uma condição para que um grupo de  instruções possa  ser executado. Se essa condição não  for 

atendida, o fluxo de execução é deslocado para a instrução seguinte ao fim do bloco de condição. 

Em pseudocódigo (algoritmo), a forma geral de uma estrutura condicional simples é: 

Se (Condição) então 

{instruções a serem executadas caso a condição seja verdadeira} 

FimSe 

Exemplo: Vejamos um algoritmo abaixo que informe na tela um aviso de alarme de temperatura. 

Algoritmo AlarmeDeTemperatura1 

Variáveis 

Temperatura: Real Início 

Escreva “Informe a temperatura:  ” 

Leia Temperatura 

Se (Temperatura > 120) então 

Escreva “Atenção: temperatura acima do máximo permitido” 

Escreva “Verifique o estado da válvula de ar frio” 

FimSe 

Fim 

No  algoritmo  acima,  se  a  temperatura  informada pelo  usuário  for maior  do  que  120,  o programa  imprime na  tela mensagens de alerta. Caso a  condição  (Temperatura > 120) não  seja 

satisfeita, o programa não faz nada. 

Em C, a estrutura condicional simples tem a seguinte forma: 

if  (condição) {  

Instrução 1  a ser  executada caso a condição seja verdadeira Instrução 2  a ser  executada caso a condição seja verdadeira ....

 Instrução n  a ser  executada caso a condição seja verdadeira 

 }  18 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 19/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

As chaves delimitam o início e fim do bloco de instruções a ser executado. Caso o bloco de 

instruções  seja  composto  por  apenas  uma  instrução  não  é  obrigatório  o  uso  das  chaves  (mas 

recomenda‐se regular em todas as situações). 

O algoritmo AlarmeDeTemperatura1 teria a seguinte forma em código C 

#include <stdio.h> 

#include <iostream> 

float temperatura; 

int main() { 

printf(“Informe a temperatura: ”); scanf(“%f”, &temperatura); if  (temperatura > 120) { 

printf(“Atenção: temperatura acima do máximo permitido”); printf(“Verifique o estado da válvula de ar frio”); 

} system (“PAUSE”); return 0; 

Estrutura Condicional Composta: 

A  estrutura  condicional  composta  trabalha  sempre  com  uma  condição  e  duas 

possibilidades  de  deslocamento  do  fluxo  de  execução  do  algoritmo:  o  primeiro  bloco  de 

instruções,  logo  após  a  verificação,  será  executado  sempre  que  a  condição  for  atendida 

(verdadeira) e, caso contrário, o segundo bloco de instruções será executado (condição falsa). 

A estrutura condicional composta em pseudocódigo tem a forma: 

Se (Condição) então 

{instruções a serem executadas caso a condição seja verdadeira} 

Senão 

{instruções a serem executadas caso a condição seja falsa} 

FimSe 

Exemplo: Vamos ver como ficaria o algoritmo temperatura, caso queiramos adicionar outra instrução (aviso 

na tela) para o caso da condição não ser atendida (falsa). 

Algoritmo AlarmeDeTemperatura2 

Variáveis Temperatura: Real 

19 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 20/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Início 

Escreva “Informe a temperatura: ” 

Leia Temperatura 

Se  (Temperatura > 120) então 

Escreva “Atenção: temperatura acima do máximo permitido” 

Escreva “Verifique o estado da válvula de ar frio” 

Senão 

Escreva “Temperatura está dentro da faixa esperada” FimSe 

Fim 

Comparando o algoritmo AlarmeDeTemperatura1 e o algoritmo AlarmeDeTemperatura2, a 

diferença é que o segundo imprime a mensagem “Temperatura está dentro da faixa esperada”, no 

caso de a condição  (Temperatura > 120)  ser  falsa enquanto o algoritmo AlarmeDeTemperatura1 

não executa nenhuma instrução. 

Em C, a estrutura condicional composta tem a seguinte forma: 

if  (condição) {  

Instrução 1  a ser  executada caso a condição seja verdadeira Instrução 2  a ser  executada caso a condição seja verdadeira .... Instrução n  a ser  executada caso a condição seja verdadeira 

 }  else {  

Instrução 1  a ser  executada caso a condição seja  falsa Instrução 2  a ser  executada caso a condição seja  falsa .... Instrução n  a ser  executada caso a condição seja  falsa 

 }  O algoritmo AlarmeDeTemperatura2 pode ser implementado em C da seguinte maneira: 

#include <stdio.h> 

#include <iostream> 

float temperatura; 

int main() { 

printf(“Informe a temperatura: ”); scanf(“%f”, &temperatura); 

if  (temperatura > 120) { 

printf(“Atenção: temperatura acima do máximo permitido”); 

20 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 21/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

printf(“Verifique o estado da válvula de ar frio”); } else 

printf(“Temperatura está dentro da faixa esperada”); } system (“PAUSE”); return 0; 

Na estrutura condicional composta sempre um, e apenas um, dos blocos de instruções será 

executado,  ou  o  bloco  que  segue  o  teste  if (condição)  ou  o  bloco  correspondente  ao  else.  As 

estruturas de decisão permitem, portanto, que o fluxo de execução de um programa não seja mais 

sequencial  conforme  vimos  até  o  momento,  onde  todas  as  instruções  necessariamente  serão 

executadas. Com as estruturas de decisão, somente um trecho da condição será satisfeito e o(s) outro(s) trecho(s)  jamais serão executados para aquela execução. 

Estrutura condicional com múltiplas possibilidades de escolha (Aninhado): 

A  estrutura  condicional  com  múltiplas  possibilidades  de  escolha  é  bastante  útil  em 

programação.  São  também  conhecidas  como  condições  “aninhadas”,  pois  consistem  de  uma 

combinação de condições se...então agrupadas. 

A estrutura geral em pseudocódigo é: 

Se (Condição1) então 

{conjunto de instruções caso condição1 seja verdadeira} 

Senão Se (Condição2) então 

{conjunto de instruções caso condição2 seja verdadeira} 

Senão Se (Condição3) então 

{conjunto de instruções caso condição3 seja verdadeira} 

Senão Se (CondiçãoN) então 

{conjunto de instruções caso condiçãoN seja verdadeira} 

Senão 

{conjunto de instruções caso nenhuma das N condições testadas seja verdadeira} 

FimSe 

Nessa  estrutura  condicional,  são  testadas  N  condições.  Para  cada  uma  delas,  existe  um 

conjunto de instruções que será executado caso a condição seja verdadeira. Apenas um conjunto 

de  instruções  será  executado,  aquele  correspondente  à  primeira  condição  avaliada  como 

verdadeira. Se nenhuma das condições for verdadeira, será executado o conjunto de instruções do 

correspondente ao Senão. Vale ressaltar que o comando Senão é opcional, ou seja, pode ou não existir. 

21 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 22/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Exemplo: 

Vejamos o algoritmo que informe o porte demográfico de uma cidade de acordo com o número de 

habitantes informados: 

Algoritmo TamanhoDaCidade 

Variáveis Populacao: Inteiro 

Início 

Escreva “Informe o número de habitantes da cidade:  ” 

Leia Populacao 

Se  (Populacao < 100000) então 

Escreva “Cidade pequena” 

Senão Se ( (Populacao >=100000) E (Populacao <500000) ) 

Escreva “Cidade de porte médio” 

Senão 

Escreva “Cidade grande”. FimSe 

Fim 

Em C, a estrutura condicional com múltiplas possibilidades de escolha tem a forma: 

if  (condição1) {  

Instrução 1  a ser  executada caso a condição 1 seja verdadeira Instrução 2  a ser  executada caso a condição 1 seja verdadeira .... Instrução n  a ser  executada caso a condição 1 seja verdadeira 

 }  else if  (condição2) {  

Instrução 1  a ser  executada caso a condição 2 seja verdadeira Instrução 2  a ser  executada caso a condição 2 seja verdadeira .... Instrução n  a ser  executada caso a condição 2 seja verdadeira 

 }  else if  (condição3) {  

Instrução 1  a ser  executada caso a condição 3 seja verdadeira Instrução 2  a ser  executada caso a condição 3 seja verdadeira .... Instrução n  a ser  executada caso a condição 3 seja verdadeira 

 }  else if  (condiçãoN) 

22 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 23/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

{  Instrução 1  a ser  executada caso a condição N seja verdadeira Instrução 2  a ser  executada caso a condição N seja verdadeira .... Instrução n  a ser  executada caso a condição N seja verdadeira 

 }  else {  

Instrução 1  a ser  executada caso todas as N condições seja  falsa Instrução 2  a ser  executada caso todas as N condições seja  falsa .... Instrução n  a ser  executada caso todas as N condições seja  falsa 

 }  O algoritmo TamanhoDaCidade teria a seguinte implementação em C: 

#include <stdio.h> 

#include <iostream> 

int populacao; 

int main() { 

printf(“Informe o número de habitantes na cidade: ”); 

scanf(“%d”, &populacao); if  (populacao < 100000) 

printf(“Cidade Pequena”); 

else if  ( (populacao >=100000) && (populacao <500000) ) { 

printf(“Cidade de médio porte”; } else 

printf(“Cidade grande”); return 0; 

system (“PAUSE”); } 

Estrutura condicional com múltiplas possibilidades de escolha (“Escolha...Caso”): 

Nos exemplos anteriores de estrutura condicional com múltiplas possibilidades de escolha, foi tratada a estrutura Se... Senão Se... FimSe. No entanto, quando as múltiplas possibilidades de 

desvio de  fluxo são escolhidas pela comparação de  igualdade entre uma expressão única e uma 

constante,  pode‐se  também  utilizar  a  estrutura  Escolha...  Caso  para  que  o  código  fique  mais 

“enxuto” e menos complexo, com maior clareza de entendimento para quem analisa sua execução 

posteriormente. 

Em pseudocódigo a forma geral da estrutura é: 

23 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 24/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Escolha (expressão) 

Caso <rótulo 1>: <bloco de instruções caso expressão seja igual a rótulo 1> 

Caso <rótulo 2>: <bloco de instruções caso expressão seja igual a rótulo 2> 

Caso <rótulo 3>: <bloco de instruções caso expressão seja igual a rótulo 3> 

... Caso <rótulo N>: 

<bloco de instruções caso expressão seja igual a rótulo N> 

Senão 

<bloco de instruções caso expressão seja diferente de todos os rótulos 

de 1 a N> 

FimEscolha 

Compara‐se a expressão  (no comando Escolha) com cada um dos  rótulos de 1 a N. Se a 

expressão for igual a algum dos rótulos, o bloco de instruções correspondente àquele rótulo será 

executado.  Caso  a  expressão  não  seja  igual  a  nenhum  dos  rótulos  será  executado  o  bloco  de 

instruções que segue a palavra  reservada Senão. O bloco do Senão é opcional. Caso não exista, nenhum comando é executado se a expressão for diferente de todos os rótulos. 

Exemplo: Algoritmo que informa o nome do dia da semana de acordo com número digitado pelo usuário. 

Algoritmo DiaDaSemana 

Variáveis dia: Inteiro 

Início 

Escreva “Informe o número do dia da semana:  ” 

Leia dia 

Escolha  (dia) Caso 1: 

Escreva “Domingo” 

Caso 2: Escreva “Segunda‐feira” 

Caso 3: Escreva “Terça‐feira” 

Caso 4: Escreva “Quarta‐feira” 

Caso 5: Escreva “Quinta‐feira” 

Caso 6: Escreva “Sexta‐feira” 

Caso 7: Escreva “Sábado” 

Senão 

24 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 25/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Escreva “Dia ”, dia, “não existe!” 

FimEscolha 

Fim 

No algoritmo DiaDaSemana, o usuário digita o número do dia da semana. Se o número for 

igual a algum dos inteiros de 1 a 7, exibe‐se a mensagem do dia correspondente. Se o número não 

corresponder  a  um  dia  válido,  a  execução  do  algoritmo  cai no bloco  de  instruções  Senão, que 

informa ao usuário que o dia não existe. 

Em  linguagem C, a estrutura Escolha... Caso é  implementada pelos comandos switch... case, que 

têm a forma geral: 

switch (expressão) {  

case <rótulo 1>: Instrução 1  a ser  executada caso a expressão seja rótulo 1 Instrução 2  a ser  executada caso a expressão seja rótulo 1 .... Instrução n  a ser  executada caso a expressão seja rótulo 1 break; 

case <rótulo 2>: Instrução 1  a ser  executada caso a expressão seja rótulo 2 Instrução 2  a ser  executada caso a expressão seja rótulo 2 .... Instrução n  a ser  executada caso a expressão seja rótulo 2 break; 

case <rótulo 3>: Instrução 1  a ser  executada caso a expressão seja rótulo 3 Instrução 2  a ser  executada caso a expressão seja rótulo 3 .... Instrução n  a ser  executada caso a expressão seja rótulo 3 break; 

... case <rótulo N>: 

Instrução 1  a ser  executada caso a expressão seja rótulo N Instrução 2  a ser  executada caso a expressão seja rótulo N .... Instrução n  a ser  executada caso a expressão seja rótulo N break; 

default: Instrução 1  a ser  executada caso expressão seja diferente de todos os rótulos Instrução 2  a ser  executada caso expressão seja diferente de todos os rótulos .... Instrução n  a ser  executada caso expressão seja diferente de todos os rótulos break; 

 }  25 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 26/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Comparando as estruturas em pseudocódigo e em C, temos a seguinte equivalência: 

Palavra‐chave em pseudocódigo  Palavra‐chave em C 

Escolha  switch 

Caso  case 

Senão  default 

Em C temos ainda um comando break no final de cada case. O comando break evita que se 

façam outras comparações entre rótulos e expressão de teste assim que encontrarmos um rótulo 

igual à expressão de teste, ou seja, após o rótulo da expressão atendido, seu bloco de intruções é 

executado  e  o  break  força  o  programa  a  sair  da  estrutura  switch  case,  sem  testar  nenhuma 

condição a mais. 

O algoritmo DiaDaSemana é equivalente ao seguinte código em C: 

#include <stdio.h> 

#include <iostream> 

int dia; 

int main() { 

printf("Informe o número do dia da semana: "); 

scanf("%d", &dia); 

switch (dia) { 

case 1: printf("\nDomingo"); break; 

case 2: printf("\nSegunda‐feira"); break; 

case 3: printf("\nTerça‐feira"); break; 

case 4: printf("\nQuarta‐feira"); break; 

case 5: printf("\nQuinta‐feira"); break; 

case 6: 

printf("\nSexta‐feira"); break; 

case 7: 

26 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 27/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

printf("\nSábado"); break; 

default: printf("\nDia %d não existe!", dia); 

system (“PAUSE”); return 0; 

Porém, o código acima poderia também ser perfeitamente ter sido implementado com if... else if..., conforme a seguir: 

#include <stdio.h> 

int dia; 

int main() { 

printf("Informe o número do dia da semana: "); scanf("%d", &dia); 

if  (dia == 1) printf("\nDomingo"); 

else if  (dia == 2) printf("\nSegunda‐feira"); 

else if  (dia == 3) printf("\nTerça‐feira"); 

else if  (dia == 4) printf("\nQuarta‐feira"); 

else if  (dia == 5) printf("\nQuinta‐feira"); 

else if  (dia == 6) printf("\nSexta‐feira"); 

else if  (dia == 7) printf("\nSábado"); 

else 

printf("\nDia %d não existe!", dia); system (“PAUSE”); return 0; 

Cabe,  então ao programador (você) a escolher a forma mais conveniente ou apropriada ao 

seu problema. 

Lembre‐se  que  um  dos  critérios  para  um  código  ser  considerado  bom  ou  “enxuto”,  o 

mesmo deve utilizar o menor número de linhas possíveis. 

27 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 28/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Exemplos para praticar EM AULA: 

Exercício 1 

Faça um algoritmo que e  informe  se a pessoa é  considerada obesa baseado no  IMC  (Índice de 

Massa  Corpórea)  fornecido  pelo  usuário.  Nota:  Para  ser  considerado  obeso  o  IMC  deve  ser 

superior a 30. 

Exercício 2 

Agora,  junto com um colega, tente implementar em o código C++  um programa para entrar com 

um número e: ‐ escreva a raiz quadrada do número, caso seja positivo 

‐ escreva o quadrado dele caso seja negativo. Dica: Neste caso, precisaremos da função sqrt () para fazer a raiz quadrada e pow() para fazer o 

quadrado do número. Será necessário também a inclusão da biblioteca math.h para executar essa 

funções. 

Exercício 3: Escreva um algoritmo que analise novamente o IMC de uma pessoa. Caso seja maior ou  igual 30 

informar “Obesidade”, caso seja menor do 30 ou maior que 18, informar “Dentro da faixa Normal” 

e caso seja menor ou igual, informar “Abaixo do Peso”. 

Exercício 4: Dado uma letra (S,C, D ou V), informe o estado civil (Solteiro, Casado, Divorciado ou Viúvo). 

Para praticar EM CASA: 

Exercício 5 

Numa fábrica, uma máquina precisa de manutenção sempre que o número de peças defeituosas 

supera  10%  da  produção  Dados  o  total  de  peças  produzidas  e  o  total  de  peças  defeituosas 

(fornecidos  pelo  usuário),  faça  um  programa  em  C++  que  informe  se  a  máquina  precisa  de 

manutenção. 

Exercício 6 

No  exercício  2, o que  acontecerá  se o usuário entrar  com o número 0  (zero)? Veja que não é 

positivo e nem negativo. Como o programa o tratará? Como resolver esse problema, informando ao  usuário  que  ele  entrou  com  um  número  nulo  (zero)?  Altere  o  código  do  exemplo  1  para 

resolver essa situação utilizando uma das estruturas de decisão com múltiplas possibilidades de 

escolha. Qual a melhor? Por quê? 

Exercício 7 

Implemente em  código C++, um programa no qual o usuário  fornece dois números  reais e um 

caracter  (A,S,M,D),  representando  adição,  subtração,  multiplicação  e  divisão  respectivamente. Calcule e  infome o  resultado da operação escolhida. Faça  também a previsão para um caracter 

diferente das opções fornecidas (A,S,M, D) e informe ao usuário “Opção Inválida”. 

Dica:  para  resolver  essa  situação  utilize  uma  das  estruturas  de  decisão  com  múltiplas possibilidades de escolha. Qual a melhor? Por quê? 

28 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 29/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

UNIDADE IV 

Estruturas de repetição: 

Todos os programas vistos até aqui seguem uma estrutura linear de comandos, ou seja, os 

comandos são executados na ordem em que são digitados. As estruturas de repetição permitem 

que determinada parte do código seja executada repetidas. Nesse caso, o fluxo de execução não é 

mais  linear, pois pode permite que o programa volte a um  inicial e  repita  se uma  sequencia de 

instruções novamente. 

Existem três tipos principais de estruturas de repetição: 

‐ repetição contada (repetição controlada por variável); 

‐ repetição condicional com teste no início; ‐ repetição condicional com teste no final. 

Estrutura de repetição contada (repetição controlada por variável): 

A  repetição  contada  é  utilizada  principalmente  em  situações  em  que  sabemos  a  priori  quantas vezes ela irá ocorrer. 

Exemplo: Suponha que queiramos imprimir todos os números inteiros de 1 a 100. Com o conhecimento que 

temos até aqui, o código para fazer um programa desses seria extremamente deselegante: 

Algoritmo Imprime1a100VersaoLinear  

Variáveis Início 

Escreva 1 

Escreva 2 

Escreva 3 

... Escreva 100 

Fim 

Utilizando a estrutura de repetição contada, poupamos muitas linhas de código e deixamos 

o programa menos sujeito a erros de digitação: 

Algoritmo Imprime1a100VersaoRepContada  

Variáveis i: Inteiro 

Início 

Para i = 1 Até 100 

Escreva i FimPara 

Fim 

29 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 30/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

No  algoritmo  Imprime1a100VersaoRepContada,   a  variável  i   funciona  como um  contador. Inicialmente, assume o valor 1 e depois é incrementada de um em um até que atinja o valor 100, condição que determina o término da repetição (loop). Para cada valor de i , executa‐se o comando 

Escreva i . Isso é equivalente ao pseudocódigo abaixo: 

Algoritmo Imprime1a100VersaoLinearEquivalenteRepeticao  

Variáveis i : Inteiro 

Início 

i ←1 

Escreva i  

i ← i  +1 

Escreva i  

i ← i  +1 

Escreva i  

... i ← i  +1 

Escreva i  Fim 

É importante notar que a quantidade de vezes que o laço (loop) Para será executado pode 

ser determinada em tempo de execução. Por exemplo, ao invés de imprimir os números inteiros de 

1 a 100, poderíamos imprimir os números de 1 a N, em que N é um valor informado pelo usuário. 

Veja o algoritmo a seguir: 

Algoritmo Imprime1aN 

Variáveis I, N: Inteiro 

Início 

Escreva “Informe quantos números deseja imprimir: ” Leia N 

Para I = 1 Até N 

Escreva I 

FimPara 

Fim 

Em  linguagem C, a  repetição contada é  feita pelo comando  for. O comando  for  tem  três 

partes principais: inicialização, condição e incremento. A forma geral do comando for é: 

for (<inicializacao>; <condicao>; <incremento>) 

{ Instrução 1  a ser  executada Instrução 2  a ser  executada .... Instrução n  a ser  executada 

30 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 31/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

As chaves do comando for podem ser omitidas caso o bloco de comandos seja composto 

por apenas um comando. O código a seguir é o equivalente em C ao algoritmo para imprimir números de 1 a N: 

/* Codigo fonte para imprimir numeros de 1 a N  */ 

#include <stdio.h> 

#include <iostream> 

int i, N; 

int main() { 

printf(“Informe quantos numeros deseja imprimir: ”); scanf(“%d”, &N); 

for (i = 1; i<=N; i++) printf(“%d ”, i); 

system (“PAUSE”); return 0; 

Loop Infinito Caso nada seja feito para tornar a condição se torne falsa, os comandos do laço se repetirão 

infinitas vezes e teremos um loop infinito. Por exemplo, se omitíssemos o comando de incremento, o loop for seria executado infinitamente. Veja abaixo o código que cai em loop infinito. 

/* Codigo fonte com problemas e que cai em loop infinito  */ 

#include <stdio.h> 

#include <iostream> 

int i, N; 

int main() { 

printf(“Informe quantos numeros deseja imprimir: ”); scanf(“%d”, &N); 

for (i = 1; i<=N; ) printf(“%d ”, i); 

system (“PAUSE”); return 0; 

31 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 32/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Veja  que  no  algoritmo  anterior,  i  seria  sempre  igual  a  1  e,  portanto,  a  condição  para 

finalização I<=N  jamais seria alcançada. 

Loop Flexível  O loop for é bastante flexível. Poderíamos, por exemplo, mudar o comando de incremento 

para imprimir apenas os números ímpares: 

/* Codigo fonte para imprimir todos os numeros impares de 1 a N  */ 

#include <stdio.h> 

#include <iostream> 

int i, N; 

int main() { 

printf(“Informe o maior numero da sequencia: ”); scanf(“%d”, &N); 

for (i = 1; i<=N; i=i+2) // incremento de 2 

printf(“%d ”, i); 

system (“PAUSE”); 

return 0; } 

Poderíamos ainda imprimir os números de 1 a N em ordem decrescente: 

/* Codigo fonte para imprimir todos os numeros de 1 a N em ordem decrescente  */ 

#include <stdio.h> 

#include <iostream> 

int i, N; 

int main() { 

printf(“Informe quantos numeros deseja imprimir: ”); scanf(“%d”, &N); 

for (i = N; i>0; i‐‐) // incremento de ‐1 

printf(“%d ”, i); 

system (“PAUSE”); return 0; 

32 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 33/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Programa que calcula o fatorial de um número inteiro e positivo informado pelo usuário: 

/* Programa que calcula o fatorial de N  */ 

#include <stdio.h> 

#include <iostream> 

int main() { 

int i;  // contador int N;  // numero para calcular fatorial int fat = 1;  // valor do fatorial 

printf("Informe  N, o numero cujo fatorial deve ser calculado: "); scanf("%d", &N); 

for (i = 2; i<=N; i++) { 

fat = fat * i; } 

printf("\nO valor do fatorial de %d eh %d", N, fat); 

system (“PAUSE”); return 0; 

Variável   Auxiliar  Programa  que  calcula  a  soma  dos  números  inteiros  compreendidos  num  intervalo 

informado pelo usuário. Veja que necessitamos de uma variável auxiliar que permite que valores 

entre duas variáveis sejam trocados entre si, sem a perda de nenhum deles. 

/* Programa que calcula o fatorial de N */ 

#include <stdio.h> 

#include <iostream> 

int i;  // contador 

int aux;  // variável auxiliar int lim1;  // primeiro limite do intervalo 

int lim2;  // segundo limite do intervalo 

int soma = 0;  // resultado desejado 

int main() { 

33 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 34/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

printf("Informe  o primeiro limite: "); scanf("%d", &lim1); 

printf("\nInforme o segundo limite: "); 

scanf("%d", &lim2); 

if  (lim2 < lim1) // trocar lim1 por lim2 

{ aux = lim2; lim2 = lim1; lim1 = aux; 

for (i = lim1; i<=lim2; i++) 

{ soma = soma + i; 

printf("\nO valor da soma eh %d ", soma); 

system (“PAUSE”); return 0; 

Estrutura de repetição condicional com teste no início: 

Conforme o próprio nome indica, na estrutura de repetição condicional com teste no início, um  bloco  de  comandos  é  executado  dependendo  da  inspeção  de  uma  expressão  condicional colocada  antes  do  bloco.  Os  comandos  só  são  executados  se  a  expressão  for  verdadeira  e 

enquanto ela for verdadeira os comandos do bloco continuam a ser executados. 

Exemplo: Considere novamente o problema de mostrar todos os números  inteiros de 1 a 100. Utilizando a 

estrutura de repetição condicional com teste no início, a solução seria: 

Algoritmo Imprime1a100VersaoEnquanto  

Variáveis k: Inteiro 

Início 

k ← 1 

Enquanto (k <= 100) Faça 

Escreva k 

k ← k+1 

FimEnquanto 

Fim 

34 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 35/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Conforme se observa nesse problema de exemplo, a estrutura de repetição com teste no 

início  pode,  com  algumas  adaptações,  ser  equivalente  à  estrutura  de  repetição  contada.  A 

diferença  nesse  exemplo  é  que  as  operações  de  inicialização  e  incremento  da  variável  k  (que 

funciona como contador) não são parte da construção base do loop mas são adicionadas à parte. 

Em  linguagem  C,  a  estrutura  de  repetição  com  teste  no  início  é  implementada  pelo 

comando while, que é também o comando mais utilizado em outras  linguagens, tais como  Java, Matlab ou Pascal. 

A forma geral do comando é: 

while ( <condicao>) { 

Instrução 1  a ser  executada Instrução 2  a ser  executada .... Instrução n  a ser  executada 

As chaves do comando while podem ser omitidas caso o bloco de comandos seja composto 

por apenas um comando. Comparando  com  o  comando  for,  vemos  que  no  caso  do  comando  while  as  etapas  de 

inicialização e incremento não fazem parte da sintaxe do loop, apesar de poderem ser adicionadas 

ao bloco de comandos e ao código que precede o comando while. 

/* Codigo fonte para imprimir numeros de 1 a 100 utilizando o comando while  */ 

#include <stdio.h> 

#include <iostream> 

int k = 1; 

int main() { 

while (k<=100) 

{ printf(“%d ”, k); k = k+1; 

system (“PAUSE”); return 0; 

Exemplo: 

Elabore um código que solicita vários salários até quando o salário digitado for 0 (zero) e  imprima: -  Total de pessoas com salário menor ou igual a R$540,00 

-  Total de pessoas com salário maior que R$5000,00. 

35 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 36/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

#include <stdio.h> 

#include <iostream> 

#include <stdio.h> 

#include <iostream> 

float salario; int conta_salmenor=0; int conta_salmaior=0; 

int main () { 

printf  ("PROGRAMA VERIFICA FAIXA SALARIAL"); 

printf  ("\nPara sair digite salario igual a 0(zero)"); printf("\n\nInforme seu salario mensal: "); scanf  ("%f",&salario); 

while (salario!=0) { 

if  (salario<=540) conta_salmenor=1+conta_salmenor;  

else if  (salario>=5000) conta_salmaior=1+conta_salmaior;  

printf("\nInforme seu salario mensal: "); scanf  ("%f",&salario); 

printf("\n\nNumero de pessoas <= R$540,00 ‐‐> %d\n", conta_salmenor);  

printf("\n\nNumero de pessoas >= R$5000,00 ‐‐> %d\n\n", conta_salmaior);  

system ("PAUSE"); return 0; 

}} 

Estrutura de repetição condicional com teste no final: 

Lembremo‐nos da analogia em C da estrutura de repetição condicional com teste no início: 

Estrutura  de  repetição  condicional  com  teste 

no início 

while ( <condicao>) { 

//comandos 

Nessa estrutura, faz‐se o teste no início e, caso o resultado seja verdadeiro, executam‐se os 

36 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 37/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

comandos do bloco. A condição é então testada novamente e os mesmos passos são repetidos até 

que a condição seja falsa. 

A  estrutura  de  repetição  condicional  com  teste  no  final  tem  funcionamento  similar.  No 

entanto, os comandos são executados e só depois o teste é feito. Dessa forma, os comandos são 

executados pelo menos uma vez. 

A forma do comando em pseudocódigo é: 

Faça 

{Comandos} Enquanto (<condição>) 

Exemplo: Considere  um  programa  que  dá permissões  de  acesso  especiais  a  usuários que  tenham 

conhecimento de um código secreto. 

Algoritmo CodigoSecretoComFacaEnquanto  

Variáveis Codigo: Inteiro 

Início 

Faça 

Escreva “Digite o código secreto: ” 

Leia Codigo 

Enquanto (Codigo <> 123456) 

Escreva “Bem vindo ao sistema!” 

Fim 

A solução para o mesmo problema usando o loop while seria um pouco mais complicada: 

Algoritmo CodigoSecretoComEnquanto  

Variáveis Codigo: Inteiro 

Início 

Escreva “Digite o código secreto: ” 

Leia Codigo 

Enquanto (Codigo <> 123456) Faça 

Escreva “Digite o código secreto: ” 

Leia Codigo 

FimEnquanto 

Escreva “Bem vindo ao sistema!” 

Fim 

Em linguagem C, o Faça‐Enquanto é representado pelo comando do‐while, cuja sintaxe é: 

do 

37 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 38/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

{ Instrução 1  a ser  executada Instrução 2  a ser  executada .... Instrução n  a ser  executada 

} while (<condicao>) 

O exemplo do código secreto ficaria assim em linguagem C: 

#include <stdio.h> 

#include <iostream> 

int codigo; 

int main() { 

do 

{ printf("\n\nDigite o codigo secreto: "); scanf("%d", &codigo); 

} while(codigo != 123456); 

printf("Bem vindo ao sistema!\n"); 

system (“PAUSE”); return 0; 

Uma das aplicações do comando do‐while é para forçar que o usuário escolha uma opção 

válida entre alternativas pré‐definidas. 

Exemplo: Veja o código a seguir e tente descobrir o que ele faz: 

#include <stdio.h> 

#include <iostream> 

int x, y, opcao, resultado; 

int main() { 

printf("Informe  x: "); scanf("%d", &x); 

printf("\nInforme y: "); scanf("%d", &y); 

38 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 39/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

do 

{ printf  ("\n\nEscolha a sua opcao: \n\n"); 

printf  ("\t(1)...Somar x + y\n"); printf  ("\t(2)...Subtrair x ‐ y\n"); printf  ("\t(3)...Multiplicar x * y\n\n"); scanf("%d", &opcao); 

} while ( (opcao <1) || (opcao >3) ); 

switch (opcao) { 

case 1: resultado = x+y; 

break; case 2: 

resultado = x‐y; break; 

case 3: resultado = x*y; break; 

printf("\n\nResultado  da operacao: %d", resultado); 

system (“PAUSE”); return 0; 

Veja que  no  código  acima,  a  operação  (somar,  subtrair  ou multiplicar)  só  será  realizada 

quando o usuário digitar uma opção válida. O laço do...while só é interrompido quando o usuário 

digitar um número válido, neste caso, 1 a 3. 

Outra aplicação usual é repetir um mesmo programa várias vezes, até que o usuário deseje 

sair. Exemplo 3: 

/* Programa que calcula a media de dois numeros repetidas vezes */ 

#include <stdio.h> 

#include <iostream> 

int resposta; float n1, n2, media; 

int main() { 

39 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 40/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

do 

{ printf("\nInforme o primeiro numero: "); 

scanf("%f", &n1); printf("\nInforme o segundo numero: "); scanf("%f", &n2); media = 0.5f  * ( n1 + n2 ); printf("\nA media vale: %f", media); printf("\nDeseja repetir o programa?”); printf(“Digite:  1  – para Continuar e 0  – para Sair"); scanf("%d", &resposta); 

} while (resposta == 1); 

return 0; } 

Para praticar EM AULA: 

Exercício 1 

Elabore em código C++, um programa para ler o número de alunos existentes em uma turma, ler 

as notas destes alunos, e calcular a média aritmética destas notas. 

Exercício 2 

Agora,  junto com um colega, tente implementar em o código C++  um programa para entrar com 

um número e: 

‐ escreva a raiz quadrada do número, caso seja positivo 

‐ escreva o quadrado dele caso seja negativo. 

Como pode perceber esse código  já foi feito na unidade anteriot, porém agora você deverá 

controlar  através  de  uma  das  condições  de  repetição  a  execução  desse  programa  da  seguinte 

forma: enquanto os números  forem positivos ou negativos, o programa deverá  continuar a  ser 

executado ininterruptamente sempre pedindo que o usuário em com novos números. O programa 

só será interrompido quando o usuário digitar “0” (zero). 

Após a finalização de seu código, teste para este caso a necessidade ou não de acrescentar 

o system (“PAUSE”) ou não. Justifique sua experiência. 

Exemplo 3: Dadas as notas duas de um aluno, informe sua média. Seu programa deve forçar o usuário a digitar 

notas na faixa de 0 a 10, para então fazer a média. 

Para 

praticar 

EM 

CASA: 

Exercício 4 

40 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 41/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

Dados o número de pacientes de uma clinica, escreva um programa em C++ para  ler o peso de 

cada um dos pacientes. Informe o peso do paciente mais pesado. 

Exercício 5 

Escreva um programa em C++ que solicite a idade de várias pessoas e imprima: ‐ Total de pessoas com menos de 21 anos. ‐ Total de pessoas com mais de 50 anos. 

O programa termina quando a idade for ‐99. 

Exercício 7 

Refaça o programa do Exercício 7 da unidade III para implementar uma estrutura de repetição as 

seguinte maneira. O programa deverá exibir um menu com as seguintes opções: 1  – Somar 

2  – Subtrair 

3  – Multiplicar 

4  – Dividir 

5  – Sair 

Após a escolha da opção, o usuário deve  fornecer dois números e o programa dever mostrar o 

resultado da operação escolhida. Faça também a previsão para um número diferente das opções 

fornecidas e informe ao usuário “Opção Inválida”. 

41 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 42/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

ANEXO I  – PALAVRAS RESERVADAS 

Palavras Reservadas na Linguagem C++ 

Na  linguagem  C++  existem  palavras  que  são  de  uso  reservado,  ou  seja,  que  possuem 

funções  específicas  na  linguagem  de  programação  e  não  podem  ser  utilizadas  para  outro  fim, como por exemplo,  ser usada  como nome de  variável.  Por exemplo,  a palavra  reservada  “for” 

serve para chamar um laço de repetição, e não pode ser utilizada como nome de uma variável. 

A lista abaixo relaciona as palavras reservadas da linguagem C++: 

asm  auto  bool  break  case 

catch  char  class  const  cast 

Continue  default  delete  do  double Dynamic_cast  else  enum  explicit  export 

extern  false  float  for  friend 

goto  if   inline  int  long 

mutable  namespace  new  operator  private 

protected  public  register  reinterpret_cast  return 

short  signed  sizeof   static  static_cast 

struct  switch  template  this  throw 

true  try  typedef   typeid  typename 

union  unsigned  using  virtual  void 

Volatile  wchar_t while 

É  importante  também  notar  que  a  linguagem  C++  diferencia  letras  maiúsculas  e 

minúsculas, ou seja, char é uma palavra reservada de C++ mas CHAR ou ChAr não é (entretanto, 

normalmente desaconselha‐se o uso dessa diferenciação por atrapalhar a legibilidade do código). 

42 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 43/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

ANEXO II  – FUNÇÕES DAS BIBLIOTECAS 

Bibliotecas C++ 

Em C++, a biblioteca é uma coleção de classes, funções e variáveis escritas na própria  linguagem 

para facilitar o desenvolvimento de aplicações. Também incorpora bibliotecas do C. 

Importante ressaltar que as bibliotecas do C++ não possuem o .h, como as bibliotecas do C. 

Exemplo:  <stdio.h> (biblioteca do C) <algorithm> (biblioteca do C++) 

Funções das Bibliotecas do C 

#include  <stdio.h> ‐  Essa  biblioteca  é  responsável  pela  entrada  e  saída  "Standard  In/Out",  ou 

melhor, entrada e saída padrão. Nela encontramos funções para esse tipo de coisa, o que pode ser a leitura do teclado, escrita formatada (ou não) na tela e operações com arquivos. 

Algumas funções dessa biblioteca: fprintf, printf, fscanf, scanf, getchar, putc, getc, fopen e fclose. 

#include <ctype.h> ‐ Esta biblioteca serve para testar caracteres. Testar se é maiúsculo, testar se é 

minúsculo, testar se é espaço, testar dígito decimal... Além disso, essa biblioteca permite converter 

maiúscula  em  minúscula  e  vice‐versa.  Algumas  funções  dela:  isupper,  islower,  isspace,  isdigit, toupper e tolower. 

#include <string.h> ‐ A biblioteca  string é  responsável por disponibilizar  funções para  trabalhar 

com conjuntos de caracteres, isto é, "strings". Possui dois grupos de comandos, os que começam com str  e os que começam com mem. O primeiro grupo permite, por exemplo: copiar, concatenar, comparar e ver o tamanho de uma string. As funções referentes a isso são: strcpy, strcat, strcmp e 

strlen. As funções do segundo grupo mencionado fazem coisas semelhantes como copiar, mover e 

comparar: memcpy, memmove, memcmp. 

#include <math.h> ‐ Está biblioteca declara funções matemáticas que podem servir para: achar a 

raiz quadrada, achar o seno, co‐seno, tangente, logaritmo na base 10. As funções referentes a isso 

são:  sqrt,  sin,  cos,  tan,  log10.  Fora  isso,  um  outro  uso  para  declaração  desta  biblioteca  é  a 

possibilidade de arredondar um número. Para isso usamos a função que retorna o valor absoluto: fabs. 

#include <stdlib.h> ‐ Ela é responsável pela conversões de números, as alocações na memórias e 

outras funções. Com ela podemos converter um "char" em um "double", converter um "char" para 

"long",  criar  um  número  randômico,  alocar  na  memória,  realocar  na  memória,  desalocar  da 

memória,  execução  de  comandos  do  sistema  operacional  respectivamente.  As  funções  citadas 

são: atof,  atol,  rand, malloc,  realloc,  free e  system. Também não podia deixar de  falar que ela 

retorna o valor absoluto de um número inteiro usando abs. 

#include <time.h> ‐ Esta biblioteca declara  funções para manipularmos a data e hora. Podemos 

usar esta biblioteca para pegar o horário do processador, pegar o horário do sistema, fazermos a 

diferença 

entre 

dois 

horários. 

As 

funções 

referentes 

são: 

clock, 

time 

difftime. 

#include  <stddef.h> ‐  Este  arquivo  define  macros  e  tipos  de  uso  geral  em  programas:  NULL, offsetof, ptrdiff_t, size_t e muitos outros. 

43 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 44/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

#include <windows.h> ‐ Todas as definições de  janelas: criar, abrir, etc. É um arquivo cabeçalho 

grande  com  cerca  de  500  mega  de  definições.  Saiba  que  o  lcc‐win32  incorpora  neste  arquivo 

muitos  dos  arquivos  que  normalmente  são  individualizados  em  outras  distribuições  (como  o 

winbase.h, por exemplo). 

Outras bibliotecas do C: #include <assert.h>, #include <complex.h>, #include <ctype.h>, #include 

<errno.h>,  #include  <fenv.h>,  #include  <float.h>,  #include  <inttypes.h>,  #include  <iso646.h>, #include  <limits.h>,  #include  <locale.h>,  #include  <setjmp.h>,  #include  <signal.h>,  #include 

<stdarg.h>,  #include  <stdbool.h>,  #include  <stddef.h>,  #include  <stdint.h>,  #include  <stdint.h>, #include <tgmath.h>, #include <wchar.h>, #include <wctype.h> 

Funções das Bibliotecas do C++ 

#include  <algorithm> ‐  Este  cabeçalho  fornece  diversos  algoritmos  genéricos  úteis  para  busca, ordenação e transformação de containers (estruturas de dados), entre outros. 

#include  <fstream> ‐  É  um  manipulador  de  fluxos  de  dados  de  arquivos  de  computador 

especializado para o  tipo de dado nativo  char. Ele permite  ler e escrever em modo de  texto. A 

biblioteca padrão também fornece classes para casos de uso de (std::fstream) somente para leitura 

(std::ifstream) ou somente para escrita (std::ofstream). 

#include  <functional> ‐  Este  cabeçalho  fornece  suporte  para  funções‐objeto,  classes  que 

encapsulam  funções de  forma que a  instância da classe possa ser  invocada  tal qual uma  função 

qualquer.  O  cabeçalho  ainda  define  algumas  funções‐objeto  de  uso  geral  tais  como  operações 

aritméticas e

 lógicas.

 Um

 exemplo

 é

 equal_to,

 uma

 função

‐objeto

 binária

 que

 testa

 se

 dois

 valores

 

são iguais. Nada mais é que uma função de comparação genérica encapsulada em uma classe. 

#include <iostream> ‐ Este cabeçalho é responsável pela manipulação de fluxo de dados padrão do 

sistema  (entrada padrão,  saída padrão  e  saída de erros padrão) e  representa uma evolução do 

cabeçalho <stdio.h> da linguagem C. São apresentados os objetos cin, cout, cerr e clog para o envio 

e  recebimento  de  dados  dos  fluxos  de  entrada,  saída,  erro  sem  buffer   e  erro  com  buffer, respectivamente; 

#include <locale> ‐ Este cabeçalho manipula diversas convenções culturais do utilizador, como a 

representação de números, moeda e datas, para efeitos de  internacionalização. A biblioteca  faz 

uso  da  faceta,  uma  interface  para  um  serviço  dum  locale  específico.  Cada  locale  possui  um conjunto  de  facetas.  O  construtor  padrão  da  classe  std::locale  define  uma  cópia  do  locale  da 

máquina executando o programa, com as convenções atuais do utilizador. 

#include  <map> ‐ O  container  std::map<Key,  Data,  Compare,  Alloc>  é  um  conjunto  associativo 

ordenado que mapeia objetos do tipo Key (a chave) em objetos do tipo Data (o valor). As chaves 

são únicas: se um objeto é inserido com uma chave  já existente, o valor presente é substituído pelo 

valor  inserido.  Internamente,  os  elementos  do  mapa  são  ordenados  através  das  chaves.  Uma 

variação do container é o std::multimap, que permite chaves repetidas. 

#include <set> ‐ O container std::set<Key, Compare, Alloc> é um conjunto associativo que permite 

acesso  aleatório  rápido  aos dados. Difere do  container  std::map pois os  valores dos  elementos 

também são suas chaves. Por esse motivo, cada valor (e, portanto, sua chave) é único, não pode 

repetir. O  container pode  ser  acessado de  forma bidirecional,  a partir do  começo ou do  fim. A 

44 

5/10/2018 Notasdeaula Algoritmoseprogramacao Ele Eca - slidepdf.com

http://slidepdf.com/reader/full/notasdeaula-algoritmoseprogramacao-ele-eca 45/45

Faculdade Pitágoras  Engenharia Elétrica / Automação 

Algoritmos e Programação  2º semestre 2011 

Professora: Silvana Diniz  NOTAS DE AULA 

45 

implementação interna do container geralmente é uma árvore de busca binária. Uma variação do 

container é o std::multiset, um multiconjunto associativo, que permite valores repetidos. 

#include  <sstream> ‐  std::stringstream  é  um  manipulador  de  fluxos  de  dados  de  cadeias  de 

caracteres especializado para o tipo de dado nativo char. Ele permite  ler e escrever em modo de texto. A biblioteca padrão também fornece classes para casos de uso de std::stringstream somente 

para leitura (std::istringstream) ou somente para escrita (std::ostringstream). 

#include <string> ‐ O container std::string é uma cadeia de caracteres especializada para o tipo de 

dado nativo char. Ele  remove vários dos problemas  introduzidos pela  linguagem C ao confiar no 

programador  no  gerenciamento  de  cadeias  de  caractere,  encapsulando  internamente  rotinas  e 

considerações que o programador não precisa tomar conhecimento. 

#include <vector> ‐ O container std::vector é um arranjo e generaliza o conceito dum vetor em C. Pode  ser  acessado  através  de  índices  para  os  elementos  assim  como  em  C  (através  de  uma 

sobrecarga  do  operador  adequado)  e  sua  memória  é  alocada  de  forma  contígua.  Entretanto, diferente dum vetor em C, o tamanho do container é dinâmico com gerenciamento automático e 

há uma flexibilidade maior para adicionar elementos. 

Outras bibliotecas do C++: #include <functional>, #include <iterator>, #include <locale>, #include 

<memory>, #include <stdexcept>, #include <utility>, #include <fstream>, #include <ios>, #include 

<iostream>,  #include  <iosfwd>,  #include  <iomanip>,  #include  <istream>,  #include  <ostream>, #include  <sstream>,  #include  <streambuf>,  #include  <complex>,  #include  <numeric>,  #include 

<valarray>, #include <cassert>, #include <cctype>, #include <cerrno>, #include <cfloat>, #include 

<climits>, #include <cmath>, #include <csetjmp>, #include <csignal>, #include <cstdlib>, #include 

<cstddef>, #include <cstdarg>  ,#include <ctime>, #include <cstdio>, #include <cstring>, #include <cwchar>, #include <cwctype>