• Nenhum resultado encontrado

Faça um algoritmo para ler uma quantidade indefinida

No documento Programação 1 Linguagem C (UFRPE) (páginas 82-93)

Dicas para Escrever Bons Algoritmos

Problema 2: Faça um algoritmo para ler uma quantidade indefinida

de bois (código do boi e peso do boi), parando quando for digitado o código zero. Depois, calcule e imprima o código e o peso do boi mais gordo da fazenda. Considere, para simplificar, que não há dois pesos iguais. Neste problema temos: ENTRADA: o código e o peso do boi

PROCESSAMENTO: calcular qual o boi mais gordo SAÍDA: o código e o peso do boi mais gordo

O que mais podemos saber da leitura? Vamos precisar usar estrutura de repetição. Porém, não pode ser um laço para/faça, porque vamos ler um número indefinido de bois. Mas, nós temos uma condição de parada (código do boi igual a zero). Dessa forma, podemos usar ou um laço enquanto/faça ou um laço repita/até. Vamos escolher esse último, porque o algoritmo teria de executar ao menos uma vez.

======================================================

Algoritmo pesado

// e uma variável para guardar o que vai ser calculado codGordo, pesoGordo.

Var codBoi, codigoGordo: inteiro

peso, pesoGordo: real

inicio

// antes de entrar no laço, temos de dar um valor inicial (inicializar) as variáveis // que vamos usar para os cálculos. Como não temos ainda o código do boi mais gordo // inicializamos o código do mais gordo com zero. E, como queremos descobrir o peso // do boi mais gordo, começamos o peso com zero também. Para que qualquer que seja //o peso do primeiro boi lido, ele já possa substituir esse valor zero, como você verá abaixo.

codigoGordo <- 0 pesoGordo <- 0 repita

// assim que entramos no repita, vamos ler os valores de entrada escreval(“******************************************”)

escreva (“Digite o código do boi: ”) leia(codBoi)

// só continuo o algoritmo se o código lido for diferente de zero. Isso evita que o // primeiro código digitado seja zero e você tenha que executar o algoritmo todo, // antes de sair do laço – porque o teste do laço só é no final.

se (codBoi <> 0) entao

escreva (“Digite o peso do boi: ”) leia(peso)

// agora vamos usar uma estrutura condicional para tomar a decisão se esse boi // que acabou de ser lido é mais gordo do que o que já temos armazenado na // variável pesoGordo

se (peso > pesoGordo) entao

// se o peso do boi que foi lido for maior do que o peso que estava // armazenado, você deve substituir o valor armazenado, pelos valores // que acabaram de ser lidos.

pesoGordo <- peso codigoGordo <- codBoi

fimse

fimse

// esse algoritmo continua até que a condição de parada (codBoi =0) seja satisfeita até (codBoi = 0)

// quando sai do laço, deve imprimir o resultado

escreval(“O boi mais gordo é o de código: “, codigoGordo, “ que pesa ”, pesoGordo)

Desafio

O que mudaria se que eu quisesse saber qual era o boi mais magro???

Conheça Mais

O assunto dessa unidade é linguagem algorítmica e qualquer livro de algoritmos ou de lógica de programação terá esse assunto (na verdade um ou mais capítulos sobre o assunto). Sugiro, então, a leitura dos capítulos 2 e 3 do livro-texto da disciplina: FORBELLONE, André Luiz. Lógica de Programação. Makron Books, 3ª. Edição, 2005.

Outro livro que pode ser consultado é o: FARRER, Harry; BECKER, C. G.; FARIA, E.C.; MATOS, H.F.; SANTOS, M.A.; MAIA, M.L. Algoritmos Estruturados. Editora LTC, 3ª. Edição, 1999.

Outra fonte de pesquisa pode ser a internet. Você pode consultar por “Linguagem Algorítmica” que virão várias dicas de apostilas, tutoriais, apresentações e sites. Além da própria página do VisuAlg: http://www.apoioinformatica.inf.br/visualg/linguagem.htm

Atividade de Estudo

Construa algoritmos em linguagem algorítmica para resolver os problemas abaixo.

Usando só estrutura sequencial

1) Leia o nome e o salário de um funcionário e exiba com

resultado o nome do mesmo com o salário reajustado em 12%. 2) Leia 2 notas, calcule e exiba a média ponderada dessas notas.

Considere que a nota1 tem peso 6 e a nota2 tem peso 4. 3) Faça um algoritmo que receba um valor em dólar e transforme

dólar = R$ 1.70.

4) Leia uma distância em km entre dois pontos e o preço da gasolina em reais. Depois, exiba quantos litros de gasolina o carro irá consumir e quanto será o gasto em reais, sabendo que o carro em questão consegue percorrer 12 km com um litro de gasolina.

5) Leia as variáveis inteiras n1 e n2 e troque o valor destas variáveis. Isto é, n1 deve ficar com o valor de n2 e n2 deve ficar com o valor de n1. Exiba os valores antes e depois da troca.

Usando só estrutura de decisão

6) Leia um número inteiro e mostre uma mensagem indicando se este número é par ou ímpar (pra calcular se é par ou ímpar, use a função MOD).

7) Leia 3 notas, calcule a média aritmética dessas e, de acordo com o resultado, escreva como saída o valor da média e a mensagem apropriada: Reprovado (média < 4), Em Prova Final (média >= 4 e < 7) e Aprovado (média >= 7).

8) Leia a idade de um nadador e exiba sua categoria segundo as regras: Junior (5 até 7 anos); Infantil (8 até 12 anos); Pré (13 até 18) e Avançada ( Idade > 18)

9) Desenvolva um algoritmo que funcione como uma calculadora, com as quatro operações básicas: adição, subtração,

multiplicação e divisão. Para isso, deve ser pedido ao usuário o primeiro número, o sinal da operação e o segundo número. Dê uma mensagem se o sinal digitado não for um dos quatro presentes na calculadora e lembre que não existe número divisível por zero.

10) Leia três números inteiros e mostre-os em ordem crescente. 11) Leia um número inteiro entre 20 e 39 e escreva seu valor

por extenso. Exiba uma mensagem apropriada se o número estiver fora desse intervalo.

Usando estrutura de repetição (e talvez, outras estruturas)

12) Leia o nome e a idade de várias pessoas até que uma idade igual a ZERO seja digitada. E, ao final, informe o nome da pessoa mais velha e o nome da pessoa mais nova, entre todos os nomes lidos. Para simplificar, considere que não existem idades iguais.

13) Escreva um algoritmo para calcular e imprimir a soma dos números inteiros e pares de 1 a 50.

14) Um órgão de pesquisa deseja efetuar um mapeamento das condições econômicas das pessoas de uma determinada região e efetuou uma pesquisa perguntando Nome, idade, sexo, se trabalha, e quantos salários mínimos recebem por mês. Elaborar um algoritmo para determinar:

• A quantidade de pesquisas realizadas por sexo (quantos homens e quantas mulheres foram entrevistados)

• A quantidade pessoas menores de 18 anos que trabalham • A renda média dos homens

• A renda média das mulheres

• Nome e Renda da pessoa que trabalha e que tem a menor renda

• Quantidade de pessoas que não trabalham • A média de idade dos entrevistados

Considere:

Nome = “FIM” indica que já foram lidos todos as pesquisas ou seja, é a condição de parada do algoritmo.

Sexo vai ser informado como “M” ou “F”; Idade deverá estar entre 00 e 100 anos

Se trabalha deverá receber um valor lógico, ou seja, V ou F (verdadeiro ou falso)

15) Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21,34, ... etc. Consegue ver a lógica de criação da mesma? Pense um pouquinho, não é tão

difícil assim!

16) Faça um algoritmo para calcular e escrever a soma da seguinte série:

Soma = (X25 / 1) – (X24 /2) + (X23 /3) – (X22 /4) +. . . + (X /25) 17) Uma empresa de compras através da Internet decidiu realizar

uma pesquisa entre os seus clientes para determinar o perfil dos mesmos. Considerando uma amostra de 200 clientes, faça um algoritmo que leia o nome, a idade de seus clientes e se eles têm acesso à Internet e forneça como resultado:

• A média de idade dos clientes; • A quantidade de mulheres;

• Quantas pessoas têm acesso a Internet.

• O nome e a idade do homem mais velho que tem acesso a Internet

• O nome e a idade da mulher mais nova.

Resumo

A linguagem algorítmica é uma das formas de representação de algoritmos mais utilizadas. Porém, ela não é padronizada. Logo, adotamos na nossa disciplina a linguagem algorítmica utilizada dentro da ferramenta VisuAlg, que usaremos depois para executar nossos algoritmos.

Para começar a construir o algoritmo em linguagem algorítmica precisamos sempre identificar as três fases de um programa: entrada,

em variáveis. As variáveis podem ser de quatro tipos diferentes: inteiro (para valores numéricos sem parte decimal), real (para valores numéricos com parte decimal), caracter (para letras, números e símbolos) e lógico (que só pode assumir valor verdadeiro ou falso). Nós podemos colocar valors diretamente nas variáveis pelo comando de atribuição ou podemos fazer a leitura dos dados usando o comando Leia(nomevariável). Esse comando pega valores do teclado, leitores de código de barras, etc e armazena nos espaços da memória do computador, nomeados pelas variáveis.

É na fase de processamento que são realizados os cálculos dos algoritmos. Por isso, nessa parte você vai fazer uso de operadores e expressões. Os operadores podem ser do tipo aritmético (+, -, *, /, \, MOD, ^), relacional (<, >, <=, >=, <>, =), lógico (não, e, ou), de atribuição (<-) e de caracter (+ significando concatenação de valores).

A parte de processamento pode fazer uso de:

• estruturas seqüenciais - onde um comando vem atrás do outro e eles são executados, sequencialmente, seguindo a ordem de aparição.

• estruturas de decisão ou condicionais, que podem ser de quatro tipos: condicionais simples (se-então), condicionais compostas (se-então-senão), condicionais aninhadas (quando colocamos estruturas condicionais, dentro de estruturas

condicionais) e de decisão múltipla (escolha)

• estruturas de repetição – que podem ser de dois tipos, condicionais ou contada. As condicionais podem realizar o teste no início (enquanto/faça) ou no final (repita/até). Elas costumam ser usadas quando não se sabe quantas vezes será preciso repetir um determinado bloco de comandos. A estrutura de repetição contada é usada quando se sabe o número de repetições e é representada pelo comando para/faça.

Qualquer uma das estruturas podem ser utilizadas juntas, colaborando para a resolução do problema.

Já na fase de SAÍDA, geralmente, se imprimem valores ou mensagens na tela. Para imprimir variáveis, textos ou as duas coisas na tela, se usa o comando escreva(“texto”, variável).

dados. Eles servem para agrupar dados do mesmo tipo ou de tipos diferentes em conjuntos. E isso vai lhe dar muito mais “poder de fogo” na construção dos algoritmos.

Vice-Reitor: Prof. Reginaldo Barros

Pró-Reitor de Administração: Prof. Francisco Fernando Ramos Carvalho Pró-Reitor de Extensão: Prof. Paulo Donizeti Siepierski

Pró-Reitor de Pesquisa e Pós-Graduação: Prof. Fernando José Freire Pró-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira Pró-Reitora de Ensino de Graduação: Profª. Maria José de Sena Coordenação de Ensino a Distância: Profª Marizete Silva Santos Produção Gráfica e Editorial

Capa e Editoração: Allyson Vila Nova e Rafael Lira Revisão Ortográfica: Ivanda Martins

Ilustrações: Allyson Vila Nova

No documento Programação 1 Linguagem C (UFRPE) (páginas 82-93)