apostila algoritimos

43
CURSO ANALISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA: ALGORÍTMO E LÓGICA DE PROGRAMAÇÃO Presidente Prudente 2015

Upload: felipe-camacho

Post on 16-Jul-2016

52 views

Category:

Documents


3 download

DESCRIPTION

aprenda o basico sobre algoritmos e logica de progamaçao.

TRANSCRIPT

Page 1: Apostila Algoritimos

CURSO ANALISE E DESENVOLVIMENTO DE SISTEMAS

DISCIPLINA: ALGORÍTMO E LÓGICA DE PROGRAMAÇÃO

Presidente Prudente 2015

Page 2: Apostila Algoritimos

1

SUMÁRIO 1 INFORMAÇÕES SOBRE A DISCIPLINA _____________________________________________________________ 2

1.1 CONTEÚDO PROGRAMÁTICO _________________________________________________________________ 2 1.2 BIBLIOGRAFIA _____________________________________________________________________________ 2 1.3 REGRAS PARA AS AULAS _____________________________________________________________________ 2 1.4 ONDE CHEGAREMOS? _______________________________________________________________________ 3

2 ALGORITMO _________________________________________________________________________________ 5 2.1 LÓGICA DE PROGRAMAÇÃO __________________________________________________________________ 5 2.2 SEQUENCIA LÓGICA ________________________________________________________________________ 5 2.3 INSTRUÇÕES ______________________________________________________________________________ 5 2.4 DEFINIÇÃO DE ALGORITMO ___________________________________________________________________ 6 2.5 ALGORITMO NÃO COMPUTACIONAL ___________________________________________________________ 7 2.6 RESOLUÇÃO DE PROBLEMAS POR MEIO DE COMPUTADORES _______________________________________ 9 2.7 PROGRAMA _______________________________________________________________________________ 9 2.8 LINGUAGENS DE PROGRAMAÇÃO ________________________________________________________________ 9 2.9 TÉCNICAS ATUAIS DE PROGRAMAÇÃO __________________________________________________________ 9 2.10 ALGORITMOS COMPUTACIONAIS __________________________________________________________ 10

2.10.1 Diretrizes para a Elaboração de Algoritmos _____________________________________________ 10 2.11 DESCRIÇÃO DE ALGORITMOS ______________________________________________________________ 10

2.11.1 Descrição - Narrativa _______________________________________________________________ 11 2.11.2 Descrição - Fluxograma _____________________________________________________________ 11 2.11.3 Descrição - Linguagem Algorítmica ou Pseudolinguagem __________________________________ 11

2.12 OPERADORES __________________________________________________________________________ 12 2.12.1 Operadores Aritméticos _____________________________________________________________ 12 2.12.2 Operadores Relacionais _____________________________________________________________ 13 2.12.3 Operadores Lógicos ________________________________________________________________ 13 2.12.4 Prioridade de execução entre todos os operadores _______________________________________ 14

2.13 TIPOS DE DADOS (PRIMITIVOS) ____________________________________________________________ 14 2.14 ESTRUTURAS DE DADOS __________________________________________________________________ 15

2.14.1 Constantes _______________________________________________________________________ 15 2.14.2 Variáveis _________________________________________________________________________ 16

2.15 DECLARAÇÃO DE VARIÁVEIS __________________________________________________________________ 16 2.16 UTILIZANDO COMENTÁRIOS NO ALGORITMO _______________________________________________________ 17 2.17 COMANDO DE ATRIBUIÇÃO ___________________________________________________________________ 17 2.18 COMANDOS DE ENTRADA DE DADOS ____________________________________________________________ 17 2.19 COMANDOS DE SAÍDA DE DADOS _______________________________________________________________ 18 2.20 ESTRUTURA BÁSICA DE UM ALGORITMO __________________________________________________________ 18 2.21 EXERCÍCIOS – CONSTRUÇÃO DOS PRIMEIROS ALGORITMOS _____________________________________________ 20

3 COMPARAÇÃO PORTUGOL X LINGUAGEM C++ ___________________________________________________ 21 4 ESTRUTURA DE SELEÇÃO/DECISÃO _____________________________________________________________ 22

4.1 TABELA DA VERDADE __________________________________________________________________________ 22 4.2 ESTRUTURAS FUNDAMENTAIS DE ALGORITMOS ________________________________________________________ 23

4.2.1 Seleção Simples ______________________________________________________________________ 23 4.2.2 Seleção Composta ____________________________________________________________________ 24 4.2.3 Seleção Composta Aninhada ___________________________________________________________ 24 4.2.4 Seleção de Múltipla Escolha ____________________________________________________________ 25

4.3 EXERCÍCIOS – ESTRUTURA DE SELEÇÃO ______________________________________________________________ 26 5 ESTRUTURAS DE REPETIÇÃO __________________________________________________________________ 27

5.1 REPETIÇÃO COM TESTE NO INÍCIO – ENQUANTO _______________________________________________________ 27 5.2 CÓDIGOS DE CONVERSÃO DA FUNÇÃO SCANF() E PRINTF() _________________________________________________ 28 5.3 REPETIÇÃO COM TESTE NO FINAL – REPITA ___________________________________________________________ 29 5.4 REPETIÇÃO COM VARIÁVEL DE CONTROLE – PARA ______________________________________________________ 31 5.5 BREAK __________________________________________________________________________________ 33 5.6 CONTINUE ________________________________________________________________________________ 33 5.7 EXERCÍCIOS – ESTRUTURA DE REPETIÇÃO ___________________________________________________________ 34

6 ARRAY - VETOR _____________________________________________________________________________ 35 6.1 EXERCÍCIOS – VETOR _________________________________________________________________________ 37

7 ARRAY – MATRIZ ____________________________________________________________________________ 39 7.1 EXERCÍCIOS – MATRIZ _________________________________________________________________________ 40

Page 3: Apostila Algoritimos

2

1 INFORMAÇÕES SOBRE A DISCIPLINA 1.1 CONTEÚDO PROGRAMÁTICO

• Estudo e desenvolvimento de algoritmos. – Pseudocódigo – Fluxograma

• Tipos de Dados Básicos e Estruturados – Tipos de variáveis – Declaração de variáveis – Inicialização de variáveis

• Operadores – Aritméticos – Relacionais – Lógicos

• Métodos de Entrada e Saída – Métodos de saída – Métodos de entrada

• Comandos de Decisão – se – caso ... escolha

• Comandos de Iteração – Para – Enquanto – Repita... até

• Arrays – Vetores – Matrizes

• Implementação de algoritmos - Linguagens de Programação C

1.2 BIBLIOGRAFIA • Básica

– ZIVIANI, N. Projeto de Algoritmos com Implementações em Pascal e C. 2 ed. Thomson Pioneira, 2004.

– AVILLANO, Israel de Campos. Algoritmos e Pascal – Manual de Apoio. 2 ed. Ciência Moderna, 2006.

• Complementar

– ASCENCIO, A. F. G, CAMPOS, E. A. V. Fundamentos da Programação de Computadores: algoritmos, Pascal e C/C++ e Java. Longman, 2007.

– FORBELLONE, L. V., EBERSPACHER, H. F. Lógica de Programação: a construção de algoritmos e estruturas de dados. Prentice Hall, 2005.

– FARRER, H. et al. Algoritmos Estruturados. Rio de Janeiro: LTC - Livros Técnicos e Científicos S.A., 1989.

– GUIMARÃES/LAJES. Algoritmos e Estrutura de Dados. Rio de Janeiro: LTC - Livros Técnicos e Científicos S.A., 1994.

– WIRTH, N. Algoritmos e Estrutura de Dados. Rio de Janeiro, LTC – Livros Técnicos e Científicos, 1989.

– 1.3 REGRAS PARA AS AULAS

• Para um bom funcionamento das aulas: – Deixar o celular no vibracall; – Controlar as faltas e notas; – Aula prática (laboratório), não é aula de internet.

Page 4: Apostila Algoritimos

3

– Respeitar os colegas e professores; – Participar das aulas e tirar dúvidas; – NÃO DORMIR NAS AULAS; – Não namorar dentro da sala; – Quando for possível conversar, use tom de voz baixo; – Não usar internet nas aulas; – Quem tira nota (alta ou baixa) é o aluno; – O aluno deve somar 12 pontos pra não ir para exame.

************************************************************************************************ O ALUNO ESCOLHEU O CURSO DE ANALISE E DESENVOLVIMENTO DE

SISTEMAS (ADS) E VEIO A FACULDADE PARA CURSÁ-LO, ENTÃO DEVE SE DEDICAR.

************************************************************************************************ 1.4 ONDE CHEGAREMOS?

Chegaremos ao desenvolvimento de programas simples e SEM recursos gráficos.

Por exemplo, desenvolveremos programas simples como esse que está na tela do

Prompt (acima).

Page 5: Apostila Algoritimos

4

A ATENÇÃO CERTA GERA RESULTADO CERTO

Page 6: Apostila Algoritimos

5

2 ALGORITMO 2.1 LÓGICA DE PROGRAMAÇÃO

• Computadores são dispositivos que só sabem fazer um tipo de coisa: executar algoritmos para processar informação.

• Lógica de programação é a técnica de encadear pensamentos para atingir

determinado objetivo. 2.2 SEQUENCIA LÓGICA

• Estes pensamentos podem ser descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa.

• Sequência Lógica são passos executados até atingir um objetivo ou solução de um

problema. 2.3 INSTRUÇÕES

• Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”.

• Em informática, porém, a instrução é a informação que indica ao computador a ação a executar.

• Assim as instruções devem ser colocadas em ordem sequencial lógica. Exemplo:

Page 7: Apostila Algoritimos

6

2.4 DEFINIÇÃO DE ALGORITMO

• Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa.

• Pode-se pensar em algoritmo como uma receita, uma sequência de instruções que atendem um objetivo.

• Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.

• Como exemplos de algoritmos pode-se citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais.

• Outros exemplos seriam os manuais de aparelhos eletrônicos, como um celular, que explicam passo-a-passo como, por exemplo, gravar um contato, etc.

Page 8: Apostila Algoritimos

7

2.5 ALGORITMO NÃO COMPUTACIONAL • Até mesmo as coisas mais simples, podem ser descritas por sequencias lógicas.

Por exemplo: • “Chupar uma bala”.

– Pegar a bala – Retirar o papel – Chupar a bala – Jogar o papel no lixo

• “Somar dois números quaisquer”.

– Conhecer o primeiro número – Conhecer o segundo número – Some o primeiro número com o segundo número e mostre o resultado

EXERCÍCIOS

1. Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número.

2. Descreva com detalhes a sequência lógica para Trocar um pneu de um carro. 3. Faça um algoritmo para trocar uma lâmpada. Descreva com detalhes.

4. Considere o seguinte problema:

– Temos três hastes. Uma das hastes serve de suporte para três discos de tamanhos diferentes. Os discos menores são sempre colocados sobre os discos maiores. A figura abaixo mostra uma possível situação inicial das hastes e discos.

– Deseja-se mover todos os discos para outra haste, porém só podemos movimentar um disco de cada vez e um disco maior nunca pode ser colocado sobre um disco de menor tamanho.

Page 9: Apostila Algoritimos

8

Curiosidade: Este problema foi criado m 1883 pelo matemático francês Edouard Lucas (1842-1891), que também criou uma lenda curiosa para enunciar o problema. Deixo para vocês procurarem na Internet a lenda das Torres de Hanói. Resolução com sete passos.

5. Temos três recipientes de tamanhos distintos: o primeiro com capacidade para 8 litros, outro para 5 litros e o terceiro com capacidade para 3 litros. O recipiente de 8 litros está totalmente cheio. Deseja-se colocar 4 litros em dois recipientes. Considere que os recipientes não sejam graduados.

Situação atual Situação esperada

Page 10: Apostila Algoritimos

9

2.6 RESOLUÇÃO DE PROBLEMAS POR MEIO DE COMPUTADORES O Computador é uma ferramenta que permite a realização do processamento

automático (ou eletrônico) de dados. Define-se por Processamento de Dados qualquer atividade que, utilizando

informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado.

O computador desempenha apenas parte das etapas de solução de um problema. As etapas na solução de problemas são:

– Entendimento do problema; – Criação de uma sequência de operações (ou ações) que, quando

executadas, produzem a solução para o problema; – Execução desta sequência de operações. – Verificação da adequação da solução.

As etapas de entendimento do problema, criação de sequência de ações e verificação da adequação da solução são tarefas desempenhadas por pessoas.

Já a execução das operações pode ser desempenhada por computadores. – Os computadores tem a capacidade de executar processos complicados e

com grande quantidade de informações com rapidez e confiabilidade. 2.7 PROGRAMA

Um programa é um Algoritmo escrito em uma linguagem computacional. Programas são formulações completas de algoritmos abstratos, baseados em

representações específicas de dados. [Wirth] Curiosidade: Quem foi Nicklaus Wirth? Em 1984 ele recebeu o mais prestigioso

prêmio técnico da ACM (Association for Computing Machinery) – o “A.M. Turing Award” por sua valiosa contribuição para a computação. O resto eu deixo para vocês pesquisarem. Aproveite e procure saber também sobre a ACM. Qual a relevância dessa associação? O que ela faz?

2.8 LINGUAGENS DE PROGRAMAÇÃO São softwares que permitem o desenvolvimento de programas. Possuem um poder

de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais.

Exemplos: • Pascal, Clipper, Cobol, C, C++, Visual Basic, Delphi, Java, Python, C# e etc.

2.9 TÉCNICAS ATUAIS DE PROGRAMAÇÃO

• Programação estruturada • Programação orientada a eventos • Programação orientada a objetos • Programação orientada a aspectos

Programação Estruturada é a arte ou técnica de construir e formular algoritmos

de forma sistemática. [Wirth]

Page 11: Apostila Algoritimos

10

2.10 ALGORITMOS COMPUTACIONAIS

Como saber se já temos detalhes suficientes em um algoritmo para que a AÇÃO possa ser entendida e realizada?

Vai depender do agente que irá executar o Algoritmo. No caso de algoritmos computacionais, sabemos que o computador possui um conjunto limitado de instruções e o algoritmo deve ser expresso nos termos destas instruções.

O computador utiliza dois conceitos básicos para construir e interpretar algoritmos: • Estruturas de Dados => para manipulação das informações • Estruturas de Controle => para manipulação das ações

2.10.1 Diretrizes para a Elaboração de Algoritmos

Identificação do problema: determinar o que se quer resolver ou qual objetivo a ser atingido.

Identificação das “entradas de dados”: informações fornecidas, a partir das quais se desenvolverão os cálculos.

Identificação das “saídas de dados”: as informações a serem geradas como resultado.

Identificação das regras e limitações do problema ou das limitações do agente executante (ex: se o agente fosse uma calculadora não científica, iriam existir limitações no cálculo de funções, por exemplo).

Determinação do que deve ser feito para transformar as “entradas” em “saídas”. Neste ponto deve ser determinada a sequência de ações que leve à solução do problema. Para isto é preciso:

1. observar as regras e limitações já identificadas; 2. determinar ações possíveis de serem realizadas pelo agente.

• Construção do Algoritmo, utilizando uma das formas de representação de

algoritmos

• Teste da solução - execução de todas as ações do algoritmo, seguindo o fluxo estabelecido para verificar se ele está realmente gerando os resultados esperados ou detectar possíveis erros em sua descrição.

EXEMPLO: Imagine o seguinte problema: Calcular a média final de uma aluno da faculdade. O aluno realizara duas provas: P1, P2. A Média Final é calculada por: (P1 + P2) / 2 Para montar o algoritmo proposto, faremos três perguntas: a) Quais são os dados de entrada? R: Os dados de entrada são P1, P2 b) Qual será o processamento a ser utilizado? R: O procedimento será somar todos os dados de entrada e dividi-los por 4 (P1 + P2)/2 c) Quais serão os dados de saída? R: O dado de saída será a média final 2.11 DESCRIÇÃO DE ALGORITMOS

Page 12: Apostila Algoritimos

11

A descrição de um algoritmo de forma clara e fácil de ser seguida ajuda no seu desenvolvimento, depuração (correção de erros) e a subsequente transformação do mesmo num programa. 2.11.1 Descrição - Narrativa

Especificação verbal dos passos em linguagem natural. Desvantagens: a linguagem natural é prolixa e imprecisa e frequentemente pouco

confiável como um veículo de transferir informação. Sua utilização pode ser adotada, entretanto, para a apresentação de comentários

sobre o algoritmo (ou parte dele), esclarecendo ou realçando pontos específicos. 2.11.2 Descrição - Fluxograma

Uso de ilustrações gráficas para transmitir informações (Ex. Gerais: mapas, diagramas explicativo para montagem de aparelhos, etc.).

Um fluxograma mostra, de forma gráfica, a lógica de um algoritmo, enfatizando passos individuais e o fluxo de execução.

Desvantagens: utilização questionável de fluxogramas detalhados, pois obscurecem a estrutura do programa. 2.11.3 Descrição - Linguagem Algorítmica ou Pseudolinguagem

Linguagem especial para expressão de algoritmos; funciona como uma "linguagem simplificada de programação", utilizando expressões concisas e pré-definidas para representar as ações e o fluxo de execução. É uma descrição textual, estruturada e regida por regras que descrevem os passos executados no algoritmo. Utiliza-se palavras-chaves, identação, apenas um passo por linha, normalmente usa-se um símbolo para indicar o final de um passo (como por exemplo, o ponto-e-vírgula “;”), etc.

Portugol, vem da mistura de português com algoritmo, também conhecido como Português estruturado, é um pseudocódigo escrito em português. É bastante utilizado para ensinar lógica de programação e algoritmos.

Usaremos o Portugol, pois ela possui uma estrutura similar à linguagem C.

Exemplo: Três representações para o algoritmo do problema do aluno da faculdade. Descrição - Narrativa 1. Receba a nota da prova1 2. Receba a nota da prova2 5. Some todas as notas e divida o resultado por 2 6. Mostre o resultado da divisão Descrição - Fluxograma

Page 13: Apostila Algoritimos

12

Descrição – Pseudocódigo - Portugol Algoritmo Média Inicio /* declaração de variáveis */ real p1, p2, Media;

/* comandos de entrada de dados */ escreva(“Digite a P1: “); leia(p1); escreva(“Digite a P1: “); leia (p2); /* processamento - Calculo da media */ Media ← (p1 + p2) / 4; /* saída de dados */ escreva (“Media final = “, Media);

Fim. 2.12 OPERADORES 2.12.1 Operadores Aritméticos

Operadores aritméticos são os sinais que representam as operações básicas da matemática.

* multiplicação / divisão + soma - subtração % resto da divisão (apenas o valor inteiro)

Exemplo:

resto 5 % 2; → resto = 1 Exemplo:

resto 4 % 2; → resto = 0

Prioridade das operações: 1. Parênteses mais internos 2. pow, raiz 3. *, /, % 4. +, -

Dentro da mesma prioridade as operações são executadas da esquerda para a direita. Para alterar a prioridade devemos utilizar os parênteses.

Funções Matemáticas São funções que estão prontas e podem ser usadas quando necessário. Sintaxe: Nome da função (argumento);

Page 14: Apostila Algoritimos

13

O argumento é a informação que é dada à função para que ela possa ser efetuada adequadamente. Pode ser uma constante ou uma variável.

Exemplos de algumas Funções Matemáticas que utilizaremos: • sin (X) - Função que calcula o seno da variável X • sqrt (y) - Função que calcula a raiz quadrada de y • int (z) - Função que retorna a parte inteira da variável z (que deve ser do tipo real) • pow(x,y) – Potenciação. Significa x elevado a y. Ex.: pow (3,2) = 9

2.12.2 Operadores Relacionais

Operadores relacionais são sinais utilizados para realizar comparações entre dois valores de mesmo tipo.

Os valores comparados podem ser constantes, variáveis ou expressões aritméticas.

OPERADOR FUNÇÃO EXEMPLO

= igual a 5 = 5, x = y

> maior que 8 > 4, x > y

< menor que 1 < 5, x < y

>= maior ou igual a 11 >= 5, x >= y

<= menor ou igual a 2 <= 5, x <= y

!= diferente de 34 != 5, a != b

Exercícios 1. Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe

se as expressões são verdadeiras ou falsas. SALÁRIO IR SALLIQ EXPRESSÃO V ou F

100,00 0 100,00 (SALLIQ >= 100,00) 200,000 10,00 190,00 (SALLIQ < 190,00) 300,00 15,00 285,00 SALLIQ=SALARIO - IR

2. Encontre o resultado das expressões identificando se é verdadeira ou falsa as

comparações dos operadores relacionais. a) 2 * 4 = 24 / 3 b) 15 % 4 < 19 % 6 c) (3 * 4) / 4 <= pow (2,3) d) 2 + 8 % 7 >= 3 * 6 - 15

2.12.3 Operadores Lógicos Os operadores lógicos são sinais usados para montar operações relacionais compostas. São eles: não, e e ou

Exemplo: (notafinal >= 6,0) e (presença >= 75) O resultado desta operação será V se a variável "notafinal" for maior ou igual a 6,0 e a variável "presença" for maior ou igual a 75.

Prioridade de execução entre os operadores lógicos 1. não 2. e, ou

Page 15: Apostila Algoritimos

14

2.12.4 Prioridade de execução entre todos os operadores 1º. Parênteses mais internos 2º. Operadores aritméticos 3º. Operadores relacionais 4º. Operadores lógicos

2.13 TIPOS DE DADOS (PRIMITIVOS) Basicamente existem quatro tipos de dados. São eles: inteiro, real, caracter e lógico.

São os grupos de informações que o computador manipula. • Numéricos

a) inteiro: representa todo e qualquer número que pertença ao conjunto dos números inteiros. Na prática são os números positivos e negativos sem partes decimais. Ex: 1 -4 100 0 -905 ... b) real: representa todo e qualquer número que pertença ao conjunto dos números reais. Na prática são os números positivos e negativos que tem parte decimal Ex: 1,3 -816,97 3,0 -0,0055 ...

• Não-numéricos

a) caracter (alfanumérico): é qualquer dado composto por um conjunto de caracteres alfanuméricos. Os caracteres alfanuméricos são os números, as letras e os caracteres especiais (!,@,#,$,%, etc). Ex: “CASA” “livro” “18” “R$ 55,36”... b) lógico ou booleanos: é um tipo de dado que só pode assumir dois valores Ex: Falso, Verdadeiro (ou False, True)

Page 16: Apostila Algoritimos

15

2.14 ESTRUTURAS DE DADOS

Representam as informações do problema a ser resolvido, tais estruturas estão organizadas em tipos distintos de informações. Dentro do escopo das estruturas de dados, definimos os termos CONSTANTE, VARIÁVEL e IDENTIFICADOR. 2.14.1 Constantes

Representam valores constantes, ou seja, que não variam no decorrer do algoritmo. E um dado que não sofre nenhuma variação durante todo o algoritmo.

As constantes do tipo caracter sempre devem ser colocadas entre aspas ("). Exemplo: "Isto é uma constante caracter".

Ex: Pi= 3,1415, “Opção:”, -8.69, Falso

Page 17: Apostila Algoritimos

16

“Tecle algo para continuar”, ... Exemplos de Constantes e Variáveis

2.14.2 Variáveis Representam informações cujos valores são modificados durante a execução do

algoritmo. Podemos definir variáveis também como um local onde um determinado valor (de um dos tipos definidos) é armazenado. Assim, a variável é composta de dois elementos básicos:

• conteúdo - valor atual da variável • identificador - nome dado à variável para possibilitar sua manipulação

O conceito de variável, na verdade, corresponde a “posições de memória RAM”,

onde serão armazenados os dados manipulados pelo programa quando este for implementado.

Regras para Definição de Identificadores em Pseudolinguagem (Portugol):

• devem começar por um caracter alfabético (uma letra); • pode ser seguido de letras e/ou dígitos; • é permitido o uso do caracter especial “_” situado entre letras e/ou dígitos; • não devem ser utilizados nomes reservados da linguagem de programação C.

Ex. de identificadores válidos: Operador, Nome, X, y, ENDEREÇO, Aluno_01 2.15 DECLARAÇÃO DE VARIÁVEIS

É a criação (ou definição) de locais na memória rotulados com o identificador da variável (ou constante) que será utilizada no algoritmo para a manipulação de um determinado tipo de informação.

Sintaxe Geral Portugol Linguagem C

Tipo lista de variáveis; Tipo lista de variáveis;

Page 18: Apostila Algoritimos

17

O Tipo pode ser inteiro, real, caracter (alfanumérico) ou lógico (booleano).

Exemplos: • real parcela, salário; • booleano resposta; • inteiro idade, ano, dia; • real PI; { declaração de uma constante real } • caracter nome, endereço;

Neste momento, as variáveis ainda não contém nenhum valor associado a elas. A

declaração de variáveis deve ser feita antes da definição das ações do algoritmo. Duas variáveis não devem ter o mesmo nome.

2.16 UTILIZANDO COMENTÁRIOS NO ALGORITMO

A fim de dar ao seu algoritmo um entendimento melhor por parte de outros leitores, ou até para você mesmo, você deve sempre comentá-lo. Para inserir um comentário utilizaremos os comandos /* (barra e asterisco) e */ (asterisco e barra). O que vier escrito entre estes dois comandos deve ser interpretado como comentário e não haverá ação alguma por parte do programa. Exemplo:

preco ←←←← preço_bruto + IMPOSTO; escreva ("O preço do produto é", preço);

A linha que está entre /* */ não é executada pelo algoritmo, pois é apenas um comentário.

Eles podem ser colocados em qualquer ponto do algoritmo e é considerada uma boa prática de programação. 2.17 COMANDO DE ATRIBUIÇÃO

Serve para atribuir (ou associar) um valor a uma variável ou constante. Sintaxe em Pseudolinguagem:

identificador <- expressão;

onde expressão pode ser um(a): Constante, Variável, Expressão matemática, Função matemática, Expressão booleana, etc.

Ex: NOME <- “Fulano de Tal” o PI ← 3,14 o Erro ← Verdadeiro (ou, simplesmente, Erro <- T) o Media ← (P1 + P2)/2

2.18 COMANDOS DE ENTRADA DE DADOS Representam as ações básicas de algoritmos para recebimento e apresentação de

dados, respectivamente. Entrada de Dados: informações que são fornecidas ao programa pelo “usuário”

durante a resolução do problema. Sintaxe em Portugol: leia (identificador1) ; leia (identificador2); Ex: leia (altura, idade, sexo);

Page 19: Apostila Algoritimos

18

2.19 COMANDOS DE SAÍDA DE DADOS Saída de Dados: informações que são mostradas ao usuário como resposta ao

problema. Sintaxe em Pseudolinguagem: escreva (expressão, expressão, ...) ; Ex: escreva (“Seu peso ideal é: “, peso_ideal) ; escreva (“Media final = “, (P1 + P2)/2) ; 2.20 ESTRUTURA BÁSICA DE UM ALGORITMO

O algoritmo como um todo é um bloco de instruções, então deve ser delimitado pelos comandos início e fim.

As constantes e variáveis devem ser declaradas no início. Os comandos são executados sequencialmente de cima para baixo e da esquerda

para a direita, assim, devem ser escritos nesta sequência. Cada comando deve terminar com ; (ponto-e-vírgula).

Modelo da estrutura básica de um algoritmo: Início

/* declaração das constantes e variáveis*/ inteiro var1, var2; real var3; caracter nome; /* comandos */ comando 1; comando 2; comando 3; .......... .......... comando n;

fim Observe que os comandos delimitados por início e fim estão recuados de quatro espaços. Isto será muito utilizado, pois facilita o entendimento do algoritmo. Exemplo: Calcular a média aritmética de um aluno da faculdade que realizou 2 provas bimestrais. Algoritmo Média Inicio /* declaração de variáveis */ real p1, p2, Media;

/* Comandos*/ /* Entrada de dados */ escreva ("Digite a P1: ");

leia (p1); escreva ("Digite a P2: "); leia (p2); /* Processamento */

media ← (p1+p2)/ 2 ; /* Saída de dados */ escreva ("A média aritmética é ", media);

fim

Page 20: Apostila Algoritimos

19

Exemplo: Algoritmo para calcular juros início real preco, taxa, juros, total; escreva ("Entre com o preço :"); leia (preco); escreva ("Qual a taxa de juros (%)?"); leia (taxa);

juros ← preco * (taxa / 100); total ← preco + juros; escreva ("O total a pagar é ", total);

fim Observação: Observe o uso dos comentários para tornar o algoritmo mais legível. Exemplos para alguns conceitos vistos até o momento:

a) declaração de variáveis; Portugol Linguagem C/C++

inteiro ano, dia, qtde; real salário, deposito;

int ano, dia, qtde; float salário, deposito;

b) inicialização de variáveis

Portugol Linguagem C/C++ ano ← 2012; soma ← 0;

ano= 2012; soma= 0;

c) entrada de dados;

Portugol Linguagem C++ leia(ano); leia(salário);

cout<< “Digite o ano”; cin>> ano; cout<< “Digite o salário: “; cin>> salario;

d) atribuição de uma expressão aritmética a uma variável Portugol Linguagem C/C++

media ← (p1+p2)/2; novo ← salário+(salário*0.15);

media = (p1+p2)/2; novo = salário+(salário*0.15);

e) saída de dados;

Portugol Linguagem C++ escreva(media); escreva(“Novo salario: “, novo);

cout << media; cout << “Novo salario: “<< novo;

Page 21: Apostila Algoritimos

20

2.21 EXERCÍCIOS – CONSTRUÇÃO DOS PRIMEIROS ALGORITMOS 1. Construa um algoritmo que leia a cotação do dólar, leia um valor em dólares, converta esse valor para Real e mostre o resultado. 2. Desenvolva um algoritmo que leia dois números, calcule o quadrado para cada um, somem todos e mostre o resultado. 3. Construa um algoritmo que apresente a comissão de um vendedor de peças, levando-se em consideração que sua comissão será de 5% do total de uma venda e que tem-se os seguintes dados de entrada: nome do vendedor, preço unitário da peça e quantidade vendida. 4. Faça um programa que calcule e mostre a área de um círculo. Área=pi*Raio2. 5. Faça um programa que receba três notas, calcule e mostre a média aritmética entre elas. 6. Faça um programa que receba duas notas e seus respectivos pesos, calcule e mostre a média ponderada dessas notas. (N1*P1 + N2*P2) / (P1+P2) 7. Faça um programa que receba o salário de um funcionário, calcule e mostre o novo salário, sabendo-se que este sofreu um aumento de 25%. 8. Faça um programa que receba o salário de um funcionário e o percentual de aumento, calcule e mostre o valor do aumento e do novo salário. 9. Faça um programa que receba o salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem uma gratificação de 5% sobre o salário-base e paga um valor de imposto(%) sobre o salário-base. 10. Faça um programa que receba o valor de um depósito e o valor da taxa de juros, calcule e mostre o valor do rendimento e o valor total depois do rendimento. 11. Crie um algoritmo que conheça a quantidade de filmes que uma locadora de vídeo possui e o valor que ela cobra por cada aluguel.

a) Sabendo que um terço dos filmes são alugados por mês, informe o faturamento anual da locadora;

b) Quando o cliente atrasa a entrega, é cobrada uma multa de 11% sobre o valor do aluguel. Sabendo que um décimo dos filmes alugados no mês são devolvidos com atraso, calcule o valor ganho com multas por mês.

c) Sabendo ainda que 2% de filmes estragam ao longo do ano, e um décimo do total é comprado para reposição, informe a quantidade de filmes que a locadora terá no final do ano.

Page 22: Apostila Algoritimos

21

3 COMPARAÇÃO PORTUGOL X LINGUAGEM C++

Portugol Linguagem C++ *declaração de variáveis -

comentário // comentário para uma linha /* ....... comentário para várias linhas */

início {

fim }

inteiro int

real float caracter char (para uma caracter/letra)

string (para várias caracteres/letras) lógico bool

0 => verdadeiro 1 => falso leia (); cin >> ano;

escreva (); cout << ano;

se ... então ... senão se ... então ... senão se

if ... - ... else if ... - ... else if

escolha (opção) inicio caso: comandos parar; caso: comandos parar; caso contrário: comandos parar; fim

switch(opcao){ case 1: //comandos; break; case 1: //comandos; break; default: //comandos; break; }

para cont de 1 até 20 início .... fim

for (cont=1; cont < 20; cont++){ .... .... }

enquanto (cont <= 20) faça início .... fim

while (cont <= 20) { .... .... }

repita .... até (cont <= 20);

do .... while (cont <=20);

não ! e &&

ou || (digitar dois pipe)

Page 23: Apostila Algoritimos

22

4 ESTRUTURA DE SELEÇÃO/DECISÃO 4.1 TABELA DA VERDADE

É um conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações (V ou F) e é utilizada em conjunto com os operadores lógicos.

Relembrando os operadores lógicos: Utilizaremos três conectivos básicos para a formação de novas proposições lógicas simples.

Operador Função Linguagem C

não negação ! - not

e conjunção && - and

ou disjunção || - or

TABELA DA VERDADE

Operação de Negação

A não A

F V

V F

Operação de conjunção

A B A e B

F F F

F V F

V F F

V V V

Operação de disjunção não exclusiva

A B A ou B

F F F

F V V

V F V

V V V

Exemplo: Suponha que temos três variáveis A = 5, B = 8 e C =1. Os resultados das expressões seriam:

Page 24: Apostila Algoritimos

23

Exercícios 1. Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras ou falsas.

a) (A > C) e (C <= D) b) ((A+B) > 10) ou (A+B) = (C+D) c) (A>=C) e (D >= C) d) não ( (A < D) e (D > C) )

2. Resolva esses exercícios detalhadamente.

a) F ou ( (20 - (18/3)) != ((21/3) * 5) ) b) não V ( ou (6 – 3 / 3 < 15 – 35 % 7) ) c) não ( ( (5 != 10/2) ou V) e ( (2 – 5 > 5 – 2) e V) ) d) pow(2,3) != 4 + 2 ou 2 + 10 % 5 > 0

4.2 ESTRUTURAS FUNDAMENTAIS DE ALGORITMOS

As estruturas de decisão são também chamadas de seleção ou estrutura de controle condicional e permite a escolha de um grupo de ações para serem executadas de acordo com a aceitação ou não de certas condições. São testados parâmetros e, a depender de seus valores, tomamos um caminho ou outro.

As condições que são testadas num Algoritmo são do tipo lógica (booleana), portanto podem ter somente dois resultados: Verdadeiro ou Falso. Assim, a seleção de ações pode seguir, no máximo, duas alternativas: uma se a condição for verdadeira e outra se a condição testada for falsa. Existem seleções mais simples e seleções compostas. 4.2.1 Seleção Simples

O comando só será executado se a condição for verdadeira. Uma condição é uma comparação que possui dois valores possíveis, verdadeiro ou falso. Sintaxe Portugol Linguagem C/C++ Se (condição ) então início bloco de comandos fim ;

if (condição){ .... bloco de comandos .... }

Exemplo: Calcular a média aritmética de um aluno da faculdade que realizou 2

provas bimestrais, indicando se foi aprovado, sabendo-se que a média para aprovação deve ser maior ou igual a 6. Portugol Linguagem C++ Algoritmo Media inicio

/*declaração de variáveis*/ real P1, P2, media; escreva (“Digite a P1: “); leia(P1); escreva( “Digite a P2: “); leia(P2); media ← (P1 + P2) / 2; escreva(media); Se (media >= 6) então escreva(“Aluno Aprovado”);

fim.

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

/*declaração de variáveis*/ float P1, P2, media; cout << “Digite a P1: “; cin >> P1; cout<< “Digite a P2: “; cin >> P2; media = (P1 + P2) / 2; cout << “Media= “<< media; if (media >= 6) cout<<(“Aluno Aprovado”);

} system(“pause>null”);

Page 25: Apostila Algoritimos

24

4.2.2 Seleção Composta

Se a condição for verdadeira, será executado o bloco de comandos 1; caso contrário, se a condição for falsa, será executado o bloco de comandos 2. Sintaxe: Portugol Linguagem C/C++ se (condição) então início bloco de comandos 1 fim; senão início bloco de comandos 2 fim;

if (condição){ .... bloco de comandos 1 .... } else { .... bloco de comandos 2 }

Exemplo: Calcular a média aritmética de um aluno da Fatec que realizou 2 provas bimestrais, indicando se foi aprovado ou reprovado, sabendo-se que a média para aprovação deve ser maior ou igual a 6. Portugol Linguagem C++ Algoritmo Media inicio

/*declaração de variáveis*/ real P1, P2, media; escreva (“Digite a P1: “); leia(P1); escreva( “Digite a P2: “); leia(P2); leia(P1, P2); media <- (P1 + P2) / 2; escreva(media); se (media >= 6) então escreva(“Aluno Aprovado”); senão escreva(“Aluno Reprovado”);

fim.

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

/*declaração de variáveis*/ float P1, P2, media; cout << “Digite a P1: “; cin >> P1; cout<< “Digite a P2: “; cin >> P2; media = (P1 + P2) / 2; cout << “Media= “<< media; if (media >= 6) cout <<“Aluno Aprovado”; else cout <<“Aluno Reprovado”; system(“pause>null”);

} 4.2.3 Seleção Composta Aninhada

Você pode aninhar mais de uma estrutura "se" e analisar mais de uma condição: Portugol Linguagem C/C++ se (condição 1) então início bloco de comandos 1 fim senão se (condição 2) bloco de comandos 2 fim senão início bloco de comandos 3 fim

if (condição 1){ .... bloco de comandos 1 .... } else if (condição 2) { .... bloco de comandos 2 } else { .... bloco de comandos 3 }

Page 26: Apostila Algoritimos

25

4.2.4 Seleção de Múltipla Escolha Outra instrução condicional, muito utilizada nas avaliações de igualdade, é a

seleção de múltipla escolha. Ela verifica somente a igualdade do valor avaliado, onde sua veracidade resultará na execução de um bloco, ou de uma única instrução específica. Sintaxe: Portugol Linguagem C/C++ escolha (X) início caso <v1>: comandos; parar; caso <v2>: comandos; parar; caso <v3>: comandos; parar; caso contrario: comandos; parar; fim;

switch (X){ case v1: ...comandos; break; case v2: ...comandos; break; case v3: ...comandos; break; default : ...comandos; break; }

onde <v1>, <v2>, <v3> são supostos valores a serem relacionados por meio da operação de igualdade com o valor da variável X. Exemplo 1: Portugol Linguagem C++ Algoritmo Menu Inicio Inteiro opcao; escreva(“Menu”); escreva(“1- Ver Saldo”); escreva(“2- Depositar”); escreva(“3- Sacar”); escreva(“Digite a opção desejada:”); leia(opcao); escolha (opcao) início caso 1: escreva (“Saldo atual.”); parar; caso 2: escreva(“Qual valor? ”); parar; caso 3: escreva(“Quanto sacará? ”); parar; caso contrario:escreva (“Opção inválida.”); parar; fim fim

#include <iostream> using namespace std; int main(){ int opcao; cout<< “Menu”; cout<< “1- Ver Saldo”; cout<< “2- Depositar”; cout<< “3- Sacar”; cout<< “Digite a opção desejada:”; cin >> opcao; switch (opcao){ case 1: cout << “Saldo atual.”; break; case 2: cout << “Qual valor? ”; break; case 3: cout << “Quanto sacará? ”; break; default: cout << “Opção inválida.”; break; } system(“pause>null”); }

Exemplo 2: Portugol Linguagem C++ Algoritmo Menu Inicio Inteiro opcao; escreva(“Épocas do ano”); escreva(“1- Verão”); escreva(“2- Outono”); escreva(“3- Inverno”);

#include <iostream> using namespace std; int main(){ int opcao; cout<< “Épocas do ano”; cout<< “1- Verão”; cout<< “2- Outono”;

Page 27: Apostila Algoritimos

26

escreva(“4- Primavera”); escreva(“Digite a época desejada:”); leia(opcao); escolha (opcao) início caso 1: escreva (“Verão”); parar; caso 2: escreva(“Outono ”); parar; caso 3: escreva(“Inverno ”); parar; caso 4: escreva (“Primavera.”); parar; caso contrário: escreva (“Opção inválida)”; break; fim fim

cout<< “3- Inverno”; cout<< “4-Primavera”; cout<< “Digite a opção desejada:”; cin >> opcao; switch (opcao){ case 1: cout << “Verão”; break; case 2: cout << “Outono”; break; case 3: cout << “Inverno”; break; case 4: cout << “Primavera”; break; default: cout << “Opção inválida”; break; } system(“pause>null”); }

4.3 EXERCÍCIOS – ESTRUTURA DE SELEÇÃO 1. Elaborar um algoritmo para ler um valor numérico e apresentar se é positivo. 2. Elaborar um algoritmo para ler um valor numérico e apresentar se é positivo ou

negativo. 3. Faça um algoritmo que calcule e exiba o salário reajustado de um funcionário de

acordo com a seguinte regra: Salário até 300, reajuste de 50%; Salários maiores que 300, reajuste de 30%.

4. Elabore um algoritmo que informando a idade de um nadador o mesmo terá condições de classificar em uma das seguintes categorias: infantil = 5 - 10 anos; juvenil = 11-17 anos; adulto = maiores de 18 anos.

5. Faça um algoritmo que verifique se a pessoa e menor ou maior de idade. Considera-se maior de idade uma pessoa com 18 anos ou mais. Como saída o algoritmo deve informar o nome e a idade da pessoa e depois a mensagem se ela é ou não maior de idade.

6. Faça um algoritmo que leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar, e se é positivo ou negativo.

7. Tendo como dados de entrada a altura e o sexo (M/F) de uma pessoa (M-masculino ou F-feminino), construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: -homens: (72.7*altura)-58; - mulheres: (62.1*altura)-44.7

8. Um banco concederá um crédito especial aos seus clientes, variável com o saldo médio no último ano. Faça um algoritmo que leia o saldo médio de um cliente e calcule o valor do crédito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo médio e o valor do crédito.

Saldo médio Percentual de 0 a 200 nenhum crédito

de 201 a 400 20% do valor do saldo médio de 401 a 600 30% do valor do saldo médio acima de 601 40% do valor do saldo médio

9. A Organização Mundial de Saúde usa a seguinte tabela para determinar a condição de um adulto, para isso desenvolva um algoritmo para calcular o Índice de Massa Corporal (IMC) e apresenta-lo, dado pela fórmula: IMC = peso / (altura)2

Condição IMC em adultos Abaixo do peso Abaixo de 18.5 No peso normal Entre 18.5 e 25 Acima do peso Entre 25.1 e 30 Obeso Acima de 30

Page 28: Apostila Algoritimos

27

5 ESTRUTURAS DE REPETIÇÃO É uma estrutura de desvio do fluxo de controle presente em linguagens de

programação que realiza e repete diferentes ações dependendo se uma condição é verdadeira ou falsa, em que a expressão é processada e transformada em um valor lógico (booleano). Estão associados a uma estrutura de repetição, uma condição (também chamada "expressão de controle" ou "condição de parada") e um bloco de código: verifica-se a condição, e caso seja verdadeira, o bloco é executado. Após o final da execução do bloco, a condição é verificada novamente, e caso ela ainda seja verdadeira, o código é executado novamente.

Deve-se observar que, caso o bloco de código nunca modificar o estado da condição, a estrutura será executada para sempre, uma situação chamada laço infinito (looping infinito). Da mesma forma, é possível especificar uma estrutura em que o bloco de código modifica o estado da condição, mas esta é sempre verdadeira.

Algumas linguagens de programação especificam ainda uma palavra reservada para sair da estrutura de repetição de dentro do bloco de código, "quebrando" a estrutura. Também é oferecida por algumas linguagens uma palavra reservada (break) para terminar uma iteração específica do bloco de código, forçando nova verificação da condição.

Existem ocasiões em que é necessário efetuar a repetição de um determinado número de vezes. Neste caso, poderá ser criado um looping que efetue o processamento de um determinado trecho, tantas vezes forem necessárias. Os loopings também são chamados de laços de repetição ou malhas de repetição.

A principal vantagem deste recurso é que o programa passa a ter um tamanho menor, aumentando o processamento sem alterar o tamanho do código de programação.

5.1 REPETIÇÃO COM TESTE NO INÍCIO – ENQUANTO

A estrutura de repetição "enquanto" (também chamada "repetição pré-testada"/"teste no início") é a mais difundida estrutura de repetição, e sua estrutura básica é a seguinte: Sintaxe: Portugol Linguagem C/C++ enquanto (condição) início /*bloco de códigos*/ fim

while (condição) { /*bloco de códigos*/ }

Exemplo 1: Calcule a média de idades de cinco alunos. Portugol Linguagem C++ Algoritmo Media_Enquanto Início inteiro qtde_alunos, idade, soma; real media; qtde_alunos <- 0; soma<- 0; enquanto (qtde_alunos < 5) início escreva ("Digite a idade: "); leia(idade); soma<- soma + idade; qtde_alunos <- qtde_alunos + 1; fim; media<- soma/qtde_alunos; escreva (“Media= “, media); fim

#include <iostream> using namespace std; int main(){ float media; int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; while (qtde_alunos <5) { cout << "Digite a idade: "; cin >> idade; soma= soma + idade; qtde_alunos= qtde_alunos + 1; } media= soma/qtde_alunos; cout << “Media= “ << media<< endl; system(“pause>null”); }

Page 29: Apostila Algoritimos

28

5.2 CÓDIGOS DE CONVERSÃO DA FUNÇÃO SCANF() E PRINTF() Codigo Elemento armazenado %c um único caracter %d ou %i um inteiro do sistema decimal %o um inteiro do sistema octal %x um inteiro do sistema hexadecimal %ld um valor do tipo long %e um número na notação científica %f um número em ponto flutuante %s uma cadeia de caracteres Linguagem C #include<stdio.h> main(){ float media; int qtde_alunos, idade, soma; soma= 0; qtde_alunos= 0; while (qtde_alunos <5) { //comando PRINTF para mostrar dados printf("Informe a idade: "); //comando SCANF para ler dados scanf("%d",&idade); soma= soma + idade; qtde_alunos= qtde_alunos + 1; } media= soma/qtde_alunos; printf("A Media eh= %.2f", media,"\n"); getch(); }

Nesta estrutura, a condição é primeiramente verificada, e se for verdadeira, o bloco é executado. No final de execução do bloco a condição é novamente testada. Exemplo 2: Calcule a média de idades de uma sala de aula, não é conhecida a quantidade de alunos. Portugol Linguagem C++ Algoritmo Media_Enquanto Início Inteiro qtde_alunos, idade, soma; real media; qtde_alunos <- 0; soma<- 0; escreva ("Digite a idade: "); leia(idade); Enquanto (idade > 0) Início Soma<- soma + idade; qtde_alunos <- qtde_alunos + 1; escreva ("Digite a idade: "); leia(idade); fim media<- soma/qtde_alunos; escreva (“Media= “, media); fim

#include <iostream> using namespace std; int main(){ float media; int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; cout << "Digite a idade: "; cin >> idade; while (idade > 0) { soma= soma + idade; qtde_alunos = qtde_alunos + 1; cout << "Digite a idade: "; cin >> idade; } media= soma/qtde_alunos; cout << “Media= “ << media<< endl; system(“pause>null”); }

Page 30: Apostila Algoritimos

29

Linguagem C #include<stdio.h> main(){ float media; int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; printf("Digite a idade: "); scanf(“%d”, &idade); while (idade > 0) { soma= soma + idade; qtde_alunos = qtde_alunos + 1; printf("Digite a idade: "); scanf(“%d”, &idade); } media= soma/qtde_alunos; printf("Media= %.2f “, media,”\n”; getch(); } 5.3 REPETIÇÃO COM TESTE NO FINAL – REPITA

Esta estrutura também permite repetir um trecho de algoritmo diversas vezes, porém o fluxo é controlado por um teste feito no final da execução. Sintaxe: Portugol Linguagem C/C++ repita /*bloco de códigos*/ até (condição);

do { /*bloco de códigos*/ } while (condição);

Exemplo 1: Calcule a média de idades de cinco alunos. Portugol Linguagem C++ Algoritmo Media_Enquanto início inteiro qtde_alunos, idade, soma; real media; qtde_alunos <- 0; soma<- 0; repita escreva ("Digite a idade: "); leia(idade); soma<- soma + idade; qtde_alunos <- qtde_alunos + 1; até (qtde_alunos < 5); media<- soma/qtde_alunos-1; escreva (“Media= “, media); fim

#include <iostream> using namespace std; int main(){ float media; int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; do { cout << "Digite a idade: "; cin >> idade; soma= soma + idade; qtde_alunos = qtde_alunos + 1; } while (qtde_alunos < 5); media= soma/qtde_alunos; cout << “Media= “ << media<< endl; system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ float media;

Page 31: Apostila Algoritimos

30

int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; do { printf("Digite a idade: "); scanf(“%d”,&idade); soma= soma + idade; qtde_alunos = qtde_alunos + 1; } while (qtde_alunos < 5); media= soma/qtde_alunos; printf("Media= %.2f “, media,”\n”; getch(); }

Observe que os COMANDOS são executados pelo menos uma vez, independente da CONDIÇÃO. Isto acontece porque a condição é avaliada após a execução dos comandos, o que representa a característica principal desta estrutura.

Exemplo 2: Calcule a média de idades de uma sala de aula, não é conhecida a quantidade de alunos. Portugol Linguagem C++ Algoritmo Media_Enquanto início inteiro qtde_alunos, idade, soma; real media; qtde_alunos <- 0; soma<- 0; repita escreva ("Digite a idade: "); leia(idade); soma<- soma + idade; qtde_alunos <- qtde_alunos + 1; até (idade > 0); media<- soma/qtde_alunos-1; escreva (“Media= “, media); fim

#include <iostream> using namespace std; int main(){ float media; int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; do { cout << "Digite a idade: "; cin >> idade; soma= soma + idade; qtde_alunos= qtde_alunos + 1; } while (idade > 0); media= soma/qtde_alunos-1; cout << “Media= “ << media<< endl; system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ float media; int qtde_alunos, idade, soma; qtde_alunos = 0; soma= 0; do { printf("Digite a idade: "); scanf(“%d”,&idade); soma= soma + idade; qtde_alunos = qtde_alunos + 1; } while (idade > 0); media= soma/qtde_alunos-1; printf("Media= %.2f “, media,”\n”; getch(); }

Page 32: Apostila Algoritimos

31

5.4 REPETIÇÃO COM VARIÁVEL DE CONTROLE – PARA Esta estrutura permite repetir um trecho de algoritmo, um número específico de

vezes.

Sintaxe: Portugol Linguagem C/C++ para contador de inicio até fim incremento nr início /*bloco de códigos*/ fim

for(contador=inicio; inicio< fim; contador ++) { /*bloco de códigos*/ }

onde: • "contador" é a variável de controle; • "inicio" é o valor inicial de "contador"; • "fim" é o valor final de "contador"; • "nr" é o valor segundo o qual "contador" será incrementado a cada execução.

Exemplo: Esse algoritmo imprime os números de 1 até 500. Portugol Linguagem C++ Algoritmo Contador Início /*q_al= qtde_alunos */ inteiro cont; para cont de 1 até 50 incremento de 1 inicio escreva (cont, " - "); fim fim

#include <iostream> using namespace std; int main(){ int cont; for(cont=1; cont <=50; cont ++) { cout << cont << " - "; } system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ int cont; for(cont=1; cont <=50; cont ++) { printf( " - "); } getch(); } Exemplo: Calcule e apresente a média de idades de uma sala de aula de cinco alunos. Portugol Linguagem C++ Algoritmo Media_Para Início /*q_al= qtde_alunos */ inteiro q_al, idade, soma; real media; soma<- 0; para q_al de 1 até 5 incremento de 1 inicio escreva ("Digite a idade: "); leia(idade); soma<- soma + idade; fim media<- soma/5; escreva (“Media= “, media); fim

#include <iostream> using namespace std; int main(){ float media; int q_al, idade, soma; soma= 0; for(q_al=1; q_al <=5; q_al++) { cout << "Digite a idade: "; cin >> idade; soma= soma + idade; } media= soma/5; cout << “Media= “ << media<< endl;

Page 33: Apostila Algoritimos

32

system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ float media; int q_al, idade, soma; soma= 0; for(q_al=1; q_al <=5; q_al++) { printf("Digite a idade: "); scanf(“%d”,&idade); soma= soma + idade; } media= soma/5; printf("Media= %.2f“, media, “\n”; getch(); } Exemplo usando decremento: Calcule e apresente a média de idades de uma sala de aula de cinco alunos. Portugol Linguagem C++ Algoritmo Media_Para Início /*q_al= qtde_alunos */ inteiro q_al, idade, soma; real media; soma<- 0; para q_al de 5 até 1 decremento de 1 inicio escreva ("Digite a idade: "); leia(idade); soma<- soma + idade; fim media<- soma/5; escreva (“Media= “, media); fim

#include <iostream> using namespace std; int main(){ float media; int q_al, idade, soma; soma= 0; for(q_al=5; q_al <=1; q_al--) { cout << "Digite a idade: "; cin >> idade; soma= soma + idade; } media= soma/5; cout << “Media= “ << media<< endl; system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ float media; int q_al, idade, soma; soma= 0; for(q_al=5; q_al <=1; q_al--) { printf("Digite a idade: "); scanf(“%d”,&idade); soma= soma + idade; } media= soma/5; printf("Media= %.2f“, media, “\n”; getch(); }

Page 34: Apostila Algoritimos

33

5.5 BREAK O comando break serve para determinar uma quebra de estrutura, ou seja, ele faz

com que, por exemplo, um loop (repetição) pare. No comando switch, por exemplo, ele determina que não pode ser executado o case seguinte, e assim por diante.

No exemplo abaixo, temos uma repetição que se inicia em 1 e deve terminar em cem (100), mas dentro desta estrutura há uma condição: se a variável for igual a 10, saia da estrutura de repetição.

Portugol Linguagem C++ Algoritmo Break_ Início/*q_al= qtde_alunos */ inteiro contador; para contador 1 até 100 incremento de1 inicio escreva ("Esta é a repetição nr: “, contador); se (contador = 10) parar; fim fim

#include <iostream> using namespace std; int main(){ for(int contador=1; contador<=100; contador ++) { cout << "Esta é a repetição nr: “<< contador; if (contador == 10) break; } system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ for(int contador=1; contador<=100; contador ++) { printf(“Esta é a repetição nr: %d“, contador); if (contador == 10) break; } getch(); }

Como podemos observar, mesmo a estrutura de repetição for determinando que a

repetição deve ir até 100, ao executarmos esse código, apenas conseguimos chegar até a repetição número 10. Isso ocorre porque quando o if for verdadeiro ele executa o break. Dessa forma, conseguimos sair do loop sem ele ter terminado. 5.6 CONTINUE

Continue a sua função é ignorar o código, e não sair como acontece com o break. Exemplo: O algoritmo a seguir contém uma estrutura de repetição que irá contar de 1 a 50, mas sempre que o número não for múltiplo de 5, o código para apresentar o número na tela será ignorado e a repetição continuará com o número seguinte. Portugol Linguagem C++ Algoritmo Continue_ Início/*q_al= qtde_alunos */ inteiro contador; para contador 1 até 50 incremento de1 inicio se (contador%5 != 0) continue; escreva (contador);

#include <iostream> using namespace std; int main(){ for(int contador=1; contador<=50; contador ++) { if (contador%5 != 0) continue;

Page 35: Apostila Algoritimos

34

fim fim

cout << contador << “\n”; } system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ for(int contador=1; contador<=1000; contador ++) { Printf(“Esta é a repetição nr: %d“, contador); if (contador%5 != 0) continue; printf(contador,”\n”); } getch(); }

Como podemos ver, sempre que um número não for múltiplo de 5 (ou não é divisível por 5), o programa deve ignorar o resto do bloco do for e repetir o código com o número seguinte. É como se o resto do código nem estivesse lá.

5.7 EXERCÍCIOS – ESTRUTURA DE REPETIÇÃO 1. Elabore um algoritmo que calcule e informe a média de idades de 5 alunos. 2. Faça um algoritmo que receba a idade de 10 pessoas, calcule e exiba a quantidade de

pessoas maiores de idade, sendo que a maioridade é obtida após completar 18 anos. 3. Faça um algoritmo que calcule e exiba o salário reajustado de dez funcionários de acordo com

a seguinte regra: Salário até 300, reajuste de 50%; Salários maiores que 300, reajuste de 30%.

4. Faça um algoritmo que leia de dez alunos altura e matricula. Mostre o aluno mais alto e mais baixo e sua respectiva matricula.

5. Escreva um algoritmo que receba 23 números, calcule e exiba as quantidades de números pares e impares.

6. Construir um algoritmo para calcular a média aritmética de um conjunto de valores inteiros positivos. Digitar zero para sair.

7. Construir um algoritmo que, dado um conjunto de valores inteiros e positivos, determine qual é o menor valor dentre eles. Digitar zero para sair.

8. Elabore um algoritmo que informada a idade de alguns nadadores o mesmo terá condições de classificar em uma das seguintes categorias: infantil = 5 - 10 anos; juvenil = 11-17 anos; adulto = maiores de 18 anos. Digite 0 para sair.

9. Escreva um algoritmo que receba 5 valores inteiros, calcule e exiba o maior e o menor valor deles.

10. Escreva um algoritmo que receba um conjunto de valores inteiros, calcule e exiba o maior e o menor valor do conjunto.

� Para encerrar a entrada de dados, deve ser digitado o valor zero; � Para valores negativos, deve ser enviada uma mensagem; � Esses valores (zero e negativos) não entrarão nos cálculos.

11. Faça um algoritmo que receba a idade e a altura de várias pessoas. Calcule e exiba a média das alturas das pessoas com mais de 20 anos. Para encerrar a entrada de dados, digite uma idade negativa ou igual a zero.

12. No final do ano muitas pessoas compram presentes. Crie um algoritmo para registrar as pessoas, usando como critério de parada a letra ‘n’, para a pergunta “Deseja cadastrar outro (‘s’/’n’)?”, para identificar o perfil dos compradores numa loja de roupas e apresente como resultado a:

� quantidade de mulheres e de homens; � quantidade de mulheres e de homens abaixo e acima de 18 anos; � quantidade de mulheres e de homens acima de 60 anos.

13. Faça um algoritmo que leia cinco pares de valores (A,B), todos inteiros e positivos, um de cada vez. Mostre os números inteiros pares de A até B (inclusive). Considere que sempre os valores de A, serão menores que B. Este algoritmo utiliza DUAS estruturas de repetição.

Page 36: Apostila Algoritimos

35

6 ARRAY - VETOR Um vetor é uma variável composta homogênea unidimensional formada por uma

sequência de variáveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome) e alocadas sequencialmente na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue são os índices que referenciam sua localização dentro da estrutura.

Declaração de Vetor Sintaxe: Tipo Nome [tamanho];

• Onde tipo é o tipo de dado, tal como inteiro, ou real, ou caracter, nome é o nome da variável, tamanho é a quantidade de posições que estará disponível para armazenamento.

Exemplo de Vetor //declaração da variável //atribuição de valores int X[5]; X[2]= 55; X[4]= 11;

55 11 0 1 2 3 4 0 1 2 3 4

Inicializando vetor Inicializando com zeros: int zeros[75] = {0}; int vet [5] = { 16, 2, 77, 40, 12071 }; Representando o vetor

16 2 77 40 12071 0 1 2 3 4

Ler string que contenha espaço em branco entre a digitação getline(cin, nome); Seguindo o exemplo anterior no qual vet tinha 5 elementos e cada um desses

elementos é do tipo int, o nome que podemos usar para se referir a cada elemento é o seguinte:

vet[0] vet[1] vet[2] vet[3] vet[4]

16 2 77 40 12071 0 1 2 3 4

Algumas operações válidas com vetor:

int a= 2; vet[a]= 77; vet[2]= 77; int b= vet[a+2]; //b= 12071 vet[vet[a]]= vet[2] + 5; //vet[77]= 82

Lendo um Vetor Portugol Linguagem C++ Algoritmo Vetor início inteiro i, X[5]; Para i de 1 até 5 incremento de 1 faça início

escreva (“Digite o ”,i,” º número: ”); leia (X[i]) ;

fim fim

#include <iostream> using namespace std; int main(){ int i, X[5]; for (int i=0; i<5; i ++) { cout<<“Digite o ”<<i<<” º número: ”; cin >> X[i]; } system(“pause>null”); }

Page 37: Apostila Algoritimos

36

Linguagem C #include<stdio.h> main(){ int i, X[5]; for(i=0; i<5; i ++) { printf("Digite o Vetor X[%i]= ",i); scanf("%i", &X[i]); } getch(); } Simulação da leitura Variável: i Tela 1 Digite o 1º número: 95 2 Digite o 2º número: 13 3 Digite o 3º número: -25 4 Digite o 4º número: 45 5 Digite o 5º número: 88

95 13 -25 45 88 0 1 2 3 4

Mostrando os Elementos do Vetor Portugol Linguagem C++ Algoritmo Vetor início inteiro i, X[5]; Para i de 1 até 5 incremento de 1 faça início escreva(“Vetor X[“,i,”]: “,X[i]); fim fim

#include <iostream> using namespace std; int main(){ int i, X[5]={1,2,3,4,5}; for(i=0; i<5; i ++) { cout <<"Vetor X["<<i+1<<"]: "<<X[i]<<endl; } system(“pause>null”); }

Linguagem C #include<stdio.h> main(){ int i, X[5]={1,2,3,4,5}; for(i=0; i<5; i ++) { printf("Vetor X[%d]: %d \n",i+1, X[i]); } getch(); } Simulação da apresentação Variável: i Tela 0 Vetor X[1]: 95 1 Vetor X[2]: 13 2 Vetor X[3]: -25 3 Vetor X[4]: 45 4 Vetor X[5]: 88

Page 38: Apostila Algoritimos

37

Exemplo de código que lê e escreve um vetor de INTEIROS Linguagem C++ Linguagem C #include <iostream> using namespace std; int main() { int vet[4], pos; for (pos=0; pos < 4; pos++) { cout<<"Digite qualquer valor para o vetor[ "<<pos+1<<"]: "; cin >> vet[pos]; } //impressao do que foi digitado no vetor for (pos=0; pos < 4; pos++) { cout << vet[pos]; cout << endl; } system(“pause>null”); }

#include<stdio.h> main(){ int vet[4],pos; for (pos=0; pos < 4; pos++) { printf("Digite qualquer valor para o vetor[%i]: ",pos+1); scanf("%i", &vet[pos]); } //impressão do que foi digitado no vetor for (pos=0; pos < 4; pos++) { printf("%i",vet[pos]); printf("\n"); } getch(); }

6.1 EXERCÍCIOS – VETOR 1. Faça um algoritmo que calcule e apresente a média de idades de uma sala de 35

alunos. 2. Faça um algoritmo que calcule e apresente a média de idades de uma sala de 35

alunos e também encontre o aluno que possui idade igual a 30 anos. 3. Faça um algoritmo que calcule e apresente a média de idades de uma sala de 35

alunos e também encontre o aluno que possui idade igual a 30 anos, apresente o nome do aluno, para isso crie um vetor de mesmo tamanho do tipo caracter/string.

4. Faça um algoritmo que calcule e apresente a média de alturas de uma sala de 35 alunos. Informe também quantos alunos e quais são os que possuem idade superior a 25 anos.

5. Faça um programa que carregue um vetor de dez elementos que contenha o nome de pessoas e outro que contenha o peso, encontre qual a pessoa mais gorda e mais magra e apresente o nome o peso das mesmas.

6. Faça um programa que carregue um vetor com nota de dez alunos, calcule e mostre a média da sala e quantos alunos estão acima e abaixo da média da sala.

7. Faça um programa que carregue um vetor de oito elementos numéricos inteiros, calcule e mostre os números pares e suas respectivas posições.

8. Faça um programa que carregue um vetor com dez nomes e faça uma verificação se um determinado nome está nesse vetor.

9. Faça um algoritmo que calcule e apresente a média de alturas superior a 1,80. Informe também quantos e quais são os alunos.

10. Criar um algoritmo que a partir de um vetor de 10 elementos inteiros, crie outros dois vetores que receberão os elementos positivos e negativos e ao final apresente-os.

11. Criar um algoritmo que leia dados para um vetor de 100 elementos inteiros, imprimir o maior, o menor, o percentual de números pares e a média dos elementos do vetor.

12. Um vetor é palíndromo se ele não se alterar quando o mesmo for invertido. Por exemplo, o vetor original vo = {1, 3, 5, 2, 2, 5, 3, 1} é palíndromo, pois ele invertido é vi = {1, 3, 5, 2, 2, 5, 3, 1}, igual ao original. Escreva um algoritmo que verifique se um vetor é palíndromo, fazendo comparação de posição por posição do vetor origem (vo) com o vetor invertido(vi).

Page 39: Apostila Algoritimos

38

13. Escreva um programa que crie um vetor inicialmente zerado e insira um valor no vetor, numa posição informada. Por exemplo, para o vetor vazio v = { }, posição 4 e valor 10, o programa deve gerar v={ , , ,10}. Se a posição for 2 e o valor 5, o vetor ficara v = { , 5, ,10}. E assim, sucessivamente. Caso a posição esteja ocupada, os valores devem ser remanejados, de modo a deixar a posição escolhida, livre para a inserção do novo valor, o vetor ficara v = { , 23, 5, ,10}. Mostre o vetor após as inserções.

14. Uma empresa necessita de um sistema que valide senhas. A regra para cadastro dessa senha é que a mesma deve conter 2 números e 6 caracteres. Crie um algoritmo que use vetor e que atenda ao cadastro correto da mesma se isso não acontecer peça para digitar novamente, conforme apresenta o exemplo.

15. Para fazer o cadastro do FACEBOOK o usuário deve preencher vários dados, inclusive um e-mail válido, ou seja, um e-mail deve conter no mínimo um ‘@’ e um ’.’. Crie um algoritmo que identifique se um e-mail é válido ou não. Use vetor de char.

16. Uma empresa possui um cadastro de dez funcionários, mas apenas pode armazenar suas informações de forma informatizada por meio de vetores, ou seja, um vetor de salário, outro com nome, outro com quantidade de filhos dos funcionários. Crie um programa para cadastrar esses dados, para consultar por nome (mostre o salário normal e também considerando os dependentes, caso exista), mostre o montante dos salários pagos, lembrando que um funcionário ganha por dependente R$ 20,00. Mostre também quantos funcionários tem filhos.

17. A partir da digitação de uma frase (use um vetor de caracteres), conte a quantidade de vogais, para isso crie dois vetores de mesmo tamanho, um para armazenar as vogais e outro para armazenar a quantidade (zere esse vetor), ao final mostre uma frase explicando que determinada vogal apareceu na frase tantas vezes, conforme mostra a figura a seguir.

Exemplo: B O A S F É R I A S P A R A T O D O S 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Vetor de vogais Resultado A E I O U 0 1 2 3 4 Vetor de quantidades 4 1 1 3 0 0 1 2 3 4

Page 40: Apostila Algoritimos

39

7 ARRAY – MATRIZ Uma matriz é uma variável composta homogênea bidimensional formada por uma

sequência de variáveis, todas do mesmo tipo, com o mesmo identificador (mesmo nome) e alocadas sequencialmente na memória. Uma vez que as variáveis têm o mesmo nome, o que as distingue são índices que referenciam sua localização dentro da estrutura. Uma variável do tipo matriz é composta por linhas e colunas. Declaração de Matriz Sintaxe: Tipo Nome[qtde de linhas][qtde de colunas];

• Onde tipo é o tido de dados, nome é o nome da variável do tipo matriz, linha é a quantidade de linhas que vão compor a matriz, coluna é a quantidade de colunas que vão compor a matriz e que poderá ser armazenado na sequência de variáveis que formam a matriz.

Exemplo: int X[3][5];// Esta matriz terá 3 linhas e 5 colunas para cada linha. Atribuindo Valores a Matriz X[0][2] = 45; X[1][0] = 13; X[1][4] = 0; X[2][3] = -4;

0 1 2 3 4

0 45 1 13 0 2 -4

Inicializando a matriz int matriz [ ][ ] = { {1,2,3,4,5}, {2,,4,6,8,10}, {3,6,9,12,15} };

Representando a matriz inicializada 0 1 2 3 4

0 1 2 3 4 5 1 2 4 6 8 10 2 2 6 9 12 15

Lendo uma matriz Portugol Linguagem C++ Algoritmo Vetor início inteiro X[3][5]; escreva(“Digite os valores para a matriz”); Para L de 1 até 3 incremento de 1 Início Para C de 1 até 5 incremento de 1 Início escreva(“Matriz[”,L,”] [”, C,”]: ”); leia ( X[L][C] ) ; Fim; Fim; fim

#include <iostream> using namespace std; int main(){ int L,C, X[3][5]; for(L=0; L<3; L ++) { for(C=0; C<5; C ++) { cout <<“Matriz[”<<L<<”][“<<C<<”]: ”; cin >> X[L][C]; } } system(“pause>null”); }

Mostrando os Elementos da Matriz

Page 41: Apostila Algoritimos

40

Portugol Linguagem C++ Algoritmo Vetor início inteiro X[3][5]; escreva(“Digite os valores para a matriz”); Para L de 1 até 3 incremento de 1 Início Para C de 1 até 5 incremento de Início escreva ( X[L][C] ) ; Fim; Fim; fim

#include <iostream> using namespace std; int main(){ int L,C, X[3][5]; for(L=0; L<3; L ++) { for(C=0; C<5; C ++) { cout << X[L][C]; } } system(“pause>null”); }

Exemplo de código que lê e escreve uma matriz de caracteres #include <iostream> using namespace std; int main() { char mat[4][3]; int lin, col; for (lin=0; lin < 4; lin++) for (col=0; col <3; col++) { cout<<"Digite qualquer letra na linha "<<lin+1<<" e coluna "<<col+1<<": "; cin >> mat[lin][col]; } for ( lin=0; lin < 4; lin++) { for(col=0; col <3; col++) cout << mat[lin][col]<< " "; cout << endl; } system(“pause>null”); } 7.1 EXERCÍCIOS – MATRIZ 1. Faça um programa que carregue uma matriz 2 x 2 e encontre o maior elemento da

matriz, crie uma matriz resultante que armazene e mostre o cálculo dos elementos da matriz original multiplicados pelo maior valor encontrado.

2. Criar uma matriz para os 6 módulos com 35 alunos que armazene as notas. Apresente o aluno de cada módulo e o do curso que possui maior nota, também apresente se existe algum aluno que possui nota igual a 2 identificando que número é o aluno (coluna) e qual módulo (linha).

3. Faça um programa que a partir de uma matriz 4x4 mostre a soma dos elementos da diagonal principal. Mostre também a soma dos elementos que estão acima da diagonal principal.

4. Faça um programa que carregue uma matriz 10 x 20 com números inteiros e some cada uma das linhas, armazenando o resultado das somas em um vetor. A seguir, multiplique cada elemento da matriz pela soma da linha e mostre a matriz resultante.

5. Faça um programa que carregue: *um vetor com oito posições com os nomes das lojas; * um outro vetor com quatro posições com os nomes dos produtos; * uma matriz com os preços de todos os produtos em cada loja. O programa deve mostrar todas as

Page 42: Apostila Algoritimos

41

relações (nome do produto – nome da loja) nas quais o preço não ultrapasse R$ 120,00.

6. Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o maior elemento da linha onde se encontra o menor elemento da matriz. Faça um programa que carregue uma matriz 4 x 7 com números reais, calcule e mostre seu MINMAX e sua posição (linha e coluna).

7. Num avião de 3 fileiras com 100 poltronas há preços diferenciados, ou seja, as fileiras das extremidades custam R$ 200,00 e a do meio custa R$ 150,00. Crie um algoritmo que controle as vendas das passagens, a pessoa interessada deve informar a fileira, a poltrona. Se estiver ocupado avise para trocar e escolher outro e apresente toda a disposição para facilitar a nova escolha, ao final das vendas apresente a quantidade de passagens que foram vendidas, qual o montante adquirido pelas vendas e a disposição das poltronas do avião. Como critério de parada informe -1 para a fileira e lembre-se de zerar a matriz para começar a desenvolver o algoritmo. Para zerar a matriz que deve ser char/caracter, crie uma variável char com o valor 255 e zere a matriz toda, para preencher a poltrona escolhida, use uma variável char com o valor declarado 176 e armazene-a na matriz no local desejado. Siga o exemplo.

8. Uma máquina automática de venda de refrigerantes que fica num corredor de shopping está totalmente abastecida, ela é composta de 3 andares com 6 compartimentos cada andar. Os dois primeiros andares (superiores/linhas) possuem refrigerantes diet e ligth que custam R$ 2,50, os outros dois andares possuem produtos que custam R$ 2,00, ou seja, primeiro andar, refrigerante diet, segundo andar refrigerante ligth, terceiro andar refrigerante guaraná e quarto andar água. Crie um programa que armazene inicialmente a matriz com os respectivos valores e durante a requisição/venda um a um dos produtos zere cada posição, ao final faça uma verificação dos produtos vendidos, apresentando a quantidade vendida por andar e total e também o valor total obtido após a venda. Para facilitar a venda deve-se perguntar qual refrigerante quer comprar escolhendo a opção pelo menu a seguir:

VENDA DE REFRIGERANTE 1- Refrigerante diet 2- Refrigerante ligth 3- Refrigerante guaraná 4- Água 5- Sair

9. Faça um algoritmo que receba o estoque atual de 4 produtos (colunas) que estão armazenados em 4 armazéns (linhas) e coloque estes dados em uma matriz 5x4. Sendo que a última linha da matriz contém o custo de cada produto, calcule e exiba:

• A quantidade de itens armazenados em cada armazém; • Qual armazém possui maior estoque do produto 2; • Qual armazém possui menor estoque do produto 4; • Qual o custo total de cada produto; • Qual o custo total de cada armazém.

Page 43: Apostila Algoritimos

42

10. Faça um algoritmo que receba as vendas semanais (de um mês) de 5 vendedores de uma loja e armazene essas vendas em uma matriz. Calcule e exiba:

• Total de vendas do mês (4 semanas) de cada vendedor; • Total de vendas de cada semana (todos os vendedores juntos); • Total de vendas do mês.