domingo, 2 de novembro de 2008

Estruturas de controle-ciclos while

Problema
Uma turma de 10 alunos fez um teste. Os resultados são valores inteiros de 0-100. Determine a media da classe neste teste


using System;
using System.Collections.Generic;
using System.Text;
namespace media
{
class Media
{
static void Main(string[] args)
{
int total, numNotas, nota, media;
total = 0;
numNotas = 1;
while (numNotas <= 10) { Console.Write("Registe a nota: "); nota = Int32.Parse(Console.ReadLine()); total = total + nota; numNotas++; } media = total / 10; Console.WriteLine("\nA media da turma ‚ de: {0}", media); } } // class Media }

Estruturas de controle - algoritmos de sentinela

No anterior exemplo o numero de notas (10) era conhecido partida, era um dado do problema. No proximo programa (Media2) pretendemos que se possa digitar pelo teclado um numero qualquer de notas. Ou seja, o programa deve processar um numero qualquer de notas fornecidas pelo standard input (teclado). Como é que o programa vai saber que deve poder parar com a entrada de notas ? E como sabe quando vai poder calcular e imprimir a media ? Um tipo de solucao para este problema é usar um "Algoritmo de Sentinela". O utilizador introduz os dados e quando achar que concluiu então introduz um valor de sentinela que geralmente é uma 'flag' ou um valor com sinal.

namespace Media2
{
class Media2
{
static void Main(string[] args)
{
int nota, numNotas, total;
double media;
total = 0;
numNotas = 0;

Console.Write("Registe a nota, -1 para Sair ");
nota=Int32.Parse(Console.ReadLine());
while (nota != -1)
{
total = total + nota;
numNotas++;
Console.Write("Registe a nota, -1 para Sair ");
nota = Int32.Parse(Console.ReadLine());
}
if (numNotas != 0)
{
media = (double)total / numNotas;
Console.WriteLine("\nA media da turma ‚ de: {0}", media);
}
else
{
Console.WriteLine("nao foram introduzidas quaisquer notas !");
}
} // Main
} // Media2
} // namespace Media2

Apresentação do Blog

Este Blog é sobre a linguagem C#.NET da Microsoft e é destinado a todos aqueles que como eu estão a iniciar-se nesta linguagem, ou pelo menos têm curiosidade em tomar algum contacto com a mesma. Este espaço será assim um local onde conto poder publicar regularmente o código de alguns programas que vou encontrando em alguns manuais, testando-os e até adaptando. Adicionalmente irei colocando outros programas por mim propostos ou imaginados. A ideia em geral é dar um pequeno contributo para a divulgação desta linguagem, conferindo a este blog um certo caracter didático. Todos os comentários e discussão em torno desta matéria são desejáveis, e espero que os mesmos sejam feitos com espirito construtivo e respeito entre todos os partipantes.