C#
- Os doze trabalho de Hércules - 12 Desafios cumpridos pela linguagem C# - I
Para
começar, um pouco de mitologia
Alcmena era esposa de Anfitrião. Quando seu marido
estava na guerra, Zeus tomou a sua forma para fazer amor com Alcmena.
Anfitrião desconfiou da infidelidade da esposa, e no fim, Zeus esclareceu-lhe
tudo. Mas, surpreendentemente, Anfitrião ficou contente e honrado com a
presença do deus em sua casa. A partir daí, o termo anfitrião passou a ter o
sentido de "aquele que recebe em casa". Daquela noite de amor nasceu o
semideus Hércules (ou Héracles, em grego).
O nascimento de Hércules provocou a ira de Hera, a ciumenta esposa oficial de
Zeus, que mandou duas serpentes matarem o recém-nascido fruto do adultério.
Este, porém, sem grande esforço, estrangulou as cobras, mostrando desde cedo
possuir uma força descomunal. Hércules cresceu, mas Hera continuou a
persegui-lo e usou seus poderes para provocar um acesso de loucura no herói,
que acabou matando a própria esposa, Mégara, e os filhos, ateando fogo na
própria casa. Quando Hércules recuperou a razão, procurou o Oráculo de Delfos
- o mais famoso templo de consulta às divindades gregas - para buscar
orientação sobre como enfrentar a tragédia.
O Oráculo mandou-o se entregar em servidão a Euristeus, rei da cidade de
Micenas, que ordenou a realização das 12 famosas tarefas. Os 12 trabalhos
foram realizados para que Hércules se redimisse das mortes que cometeu.
Agora um pouco de programação
Mas o que tem a ver
toda essa história com a linguagem C#. Nada, ou melhor, quase nada.
A título de
exercício vamos propor 12 tarefas básicas que deverão ser cumpridas pela
linguagem C#. Elas não se comparam com os trabalhos que Hércules teve que
fazer para se redimir, mas vai ajudar quem esta iniciando os estudos em C# a
aprender um pouco mais e também sentir o potencial da linguagem.
Em todos os trabalhos
de programação iremos usar o seguinte recurso:
-
Visual Studio Express 2012 for Windows Desktop
Abra o Visual Studio Express 2012 for Windows
Desktop e crie um novo projeto clicando em New Project;
A seguir selecione o
template : Other Project Types -> Blank Solution e informe o nome DozeTrabalhos_CSharp
e clique no botão OK;
Dessa forma teremos
uma solução vazia chamada DozeTrabalhos_CSharp;
Para cada um dos
trabalhos propostos iremos incluir um novo projeto na solução via menu
FILE -> Add New Project selecionando o tipo do projeto
Windows Forms Application ou
Console Application conforme o trabalho;
Para ativar o
projeto atual para execução clique com o botão do mouse sobre o nome da
Solução e
defina qual o projeto deseja executar em Single startup project:
Agora ao trabalho...
Trabalho 1 |
Escreva um programa
que receba um caractere informado pelo usuário e determine se o caractere é
uma string maiúscula ou minúscula, um digito ou um símbolo especial.
Teoria
Vamos
usar a tabela ASCII padrão e estendida para exibir o código do caractere
digitado e fazer a verificação:
Prática
Vamos incluir um novo
projeto na solução via menu FILE -> Add New Project selecionando a
Visual C# -> Windows e o tipo do projeto Windows Forms Application e informando o nome
Verifica_Caractere;
No formulário form1.cs inclua os controles :
Label, TextBox(txtCaractere) , Button(btnVerifica) e Label(lblResultado)
a partir da ToolBox conforme o
leiaute abaixo:
Declare as variáveis
no início do formulário form1.cs:
char
entrada;
int valor;
No evento Click
do botão de comando btnVerifica digite o código abaixo:
private void btnVerifica_Click(object sender, EventArgs e)
{
entrada = Convert.ToChar(txtCaractere.Text);
valor = Convert.ToInt32(entrada); if (valor >= 65 && valor <= 90)
{
lblResultado.Text = "String Maiúscula";
}
if (valor >= 97
&& valor <= 122)
{
lblResultado.Text = "String Minúscula";
}
if (valor >= 48
&& valor <= 57)
{
lblResultado.Text = "Dígito";
}
if (valor == 0 && valor <= 47 || valor >= 58 && valor <= 64 || valor >= 91
&& valor <= 96 || valor >= 123
&& valor <= 127)
{
lblResultado.Text = "Símbolo Especial";
}
if (valor >= 127)
{
lblResultado.Text = "Caractere Especial";
}
} |
|
Trabalho 2 |
Escreva um programa
que produza a seguinte resultado no Console:
*
**
***
****
***
**
*
Teoria
Usando um laço
for, você pode executar uma instrução ou um bloco de instruções
repetidamente até que uma expressão especificada seja avaliada como
false.
Esse tipo do laço é útil para iterar sobre matrizes e para outros aplicativos
em que você sabe com antecedência quantas vezes você deseja que o laço vai
iterar.
Sintaxe :
for(inicialização; condição; passo)
código
-
inicialização
: inicializar o valor da variável
-
condição :
avalia a condição do passo
-
passo :
passo para cada execução do corpo do laço
Ex:
for (int i = 1; i < = contador; i++)
Console.WriteLine(i);
-
Inicialização : int i=1
-
condição
: i < contador
-
passo :
i++ (i=i+1)
Código a ser executado em cada passo:
Console.WriteLine(i); |
|
Prática
-
Vamos incluir um novo
projeto na solução via menu FILE -> Add New Project selecionando a
Visual C# -> Windows e o tipo do projeto
Console Application e informando o nome
Trabalho2;
-
Ative o projeto
atual.
Código do Projeto:
using System;
namespace Trabalho2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\t\t
Macoratti .net");
for (int i =
0; i < 6; i++)
{
for (int j = 0; j <= i; j++)
{
Console.Write("*");
}
Console.WriteLine("\n");
}
for (int i =
0; i <= 4; i++)
{
for (int j = 4; j >i; j--)
{
Console.Write("*");
}
Console.WriteLine("\n");
}
Console.ReadKey();
}
}
} |
|
Trabalho 3 |
Escreva um programa
que imprima todos os valores dos códigos ASCII e seus respectivos caracteres
usando um laço do-while.
Teoria
A instrução While
é executada uma instrução ou um bloco de instruções até que uma expressão
especificada for avaliada como false.
Como o teste da
expressão do while ocorre antes de cada execução
do laço, um laço while é executado zero ou mais vezes. Isso se difere do laço
For, que executa uma ou mais vezes.
Um laço while
pode ser terminado quando uma instrução break, goto, return ou throw
transferir o controle para fora do laço. Para passar o controle para a próxima
iteração sem sair do loop, use a instrução Continue.
A instrução do
executa uma instrução ou um bloco de instruções repetidamente até que uma
expressão especificada for avaliada como false.
O corpo do laço deve ser colocado entre chaves{}, a menos que exista
apenas uma única instrução. Nesse caso, as chaves são opcionais.
Ao contrário da
declaração while , um laço do-while é executado uma vez antes que a expressão
condicional seja avaliada.
Em qualquer ponto de um bloco do-while, você pode sair fora do laço
usando a instrução break.
Você pode ir diretamente para a expressão de avaliação do while usando a
instrução Continue.
Se a expressão while expressão for avaliada como
true, a execução continua na
primeira instrução no laço. Se a expressão for avaliada como false, a execução
continua na primeira instrução após o laço do-while.
Um laço do-while também pode ser encerrado por instruções goto, return ou
throw.
Prática
-
Vamos incluir um novo
projeto na solução via menu FILE -> Add New Project selecionando a
Visual C# -> Windows e o tipo do projeto
Console Application e informando o nome
Trabalho3;
-
Ative o projeto
atual.
Código do Projeto:
using System;
namespace Trabalho3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\t\t Macoratti .net\n\tQuase tudo para Visual Basic\n");
char ch;
int i = 10;
do
{
Console.Write(i);
Console.Write(" ");
ch = (char)i;
Console.WriteLine(ch);
i++;
} while (i <= 255);
Console.ReadKey();
}
}
}
|
|
Trabalho 4 |
Escreva um programa
que imprime no Console uma matriz identidade n por n usando um laço for.
Teoria
Matriz identidade,
em matemática, é uma matriz quadrada e uma matriz diagonal, cuja função é de
ser o elemento neutro, na multiplicação de matrizes. É denotada por In (onde n
é a ordem da matriz), ou simplesmente por I. A matriz é construída da seguinte
forma: os elementos da diagonal principal têm valor um, e os demais elementos
da matriz são zero.
Uma matriz identidade se apresenta da seguinte forma:
Prática
-
Vamos incluir um novo
projeto na solução via menu FILE -> Add New Project selecionando a
Visual C# -> Windows e o tipo do projeto
Console Application e informando o nome
Trabalho4;
-
Ative o projeto
atual.
Código do Projeto:
using System;
namespace Trabalho4
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\t\t Macoratti .net\n\tQuase tudo para Visual Basic\n");
int tamanho;
Console.WriteLine("Informe o tamanho da Matrix Identidade: ");
tamanho = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\n\n Matrix Identidade\n\n");
for (int i = 0; i < tamanho; i++)
{
for (int j = 0; j < tamanho; j++)
{
if (i == j)
{
Console.Write(1);
}
else
{
Console.Write(0);
}
}
Console.WriteLine("\n");
}
Console.ReadKey();
}
}
|
|
|
|
Trabalho 5 |
Escreva um programa
que calcule e exiba a soma da seguinte série :
1*x + 2*x^2 + 3*x^3
+ 4*x^4 + 5*x^5 + … + n*xn
Teoria
Em matemática, o
conceito de série, ou ainda, série infinita, surgiu da tentativa de
generalizar o conceito de soma para uma sequência de infinitos termos.
Esta generalização, longe de acontecer de forma impune, traz diversas
dificuldades:
-
nem sempre é
possível definir um valor resultante da soma para uma série;
-
não é possível em
geral trocar a ordem dos termos da série;
-
algumas séries
possuem soma infinita.
Embora a ideia de
soma infinita seja bastante antiga, uma formulação matemática rigorosa só veio
a surgir no
século XVIII, com o advento da análise real, que denota e define uma série
de termos
da seguinte forma:
Prática
-
Vamos incluir um novo
projeto na solução via menu FILE -> Add New Project selecionando a
Visual C# -> Windows e o tipo do projeto
Console Application e informando o nome
Trabalho5;
-
Ative o projeto
atual.
Código do Projeto:
using System;
namespace Trabalho5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\t\t Macoratti .net\n\tQuase tudo para Visual Basic\n");
int numero;
double soma=0;
double x;
Console.WriteLine("Informe o intervalor de valores a exibir para série :
\n1*^x + 2*x^2 + 3*x^3 + 4*x^4 + 5*x^5 + … + n*x^n");
numero = Convert.ToInt32(Console.ReadLine());
for (int i = 1; i <= numero; i++)
{
Console.Write(i + "*x^" + i );
if (i < numero)
Console.Write(" + ");
x = (double)i;
soma = soma +(i * Math.Pow(x,x));
}
Console.WriteLine("\nA soma da série é : " + soma);
Console.ReadKey();
}
}
}
|
|
Trabalho 6 |
Escreva um programa
que usando a instrução switch e que a partir de um valor informado pelo
usuário realize as seguintes conversões :
-
P -> Polegadas para Centímetros
-
G -> Galão para Litros
-
M -> Milhas para
Kilometros
Para a primeira conversão o usuário
deverá informar a opção P , para a segunda deve informar G e para a terceira
deve informar M.
Teoria
-
1 milha é igual a
1,609 Km ou 1609 metros ou 160934 centímetros
-
1 polegada é igual
a 2,54 cm, ou 0,0254 metros ou 25,4 milímetros
-
1 galão é igual a
3,78 litros
Prática
-
Vamos incluir um novo
projeto na solução via menu FILE -> Add New Project selecionando a
Visual C# -> Windows e o tipo do projeto
Console Application e informando o nome
Trabalho6;
-
Ative o projeto
atual.
Código do projeto :
using System;
namespace Trabalho6
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\t\t Macoratti .net\n\tQuase tudo para Visual Basic\n");
int valor;
string temp;
char escolha;
double centimetro, litros, Kilometro;
Console.WriteLine("Informe um valor inteiro para converter :");
valor = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("\n\n Pressione uma das opções dadas : \n P -> converte de Polegadas para Centímetros.
\n G -> converte de Galões para Litros.\n M -> converte de Milas para Kilômetros");
temp = Console.ReadLine().ToString().ToUpper();
escolha = Convert.ToChar(temp);
switch (escolha)
{
case'P':
centimetro = valor / 0.3937; //1 cm é igual a 0.3037 polegadas
Console.WriteLine( "\n\n" + valor + " Polegadas são " + centimetro + " centímetros (cm) ");
break;
case'G':
litros = valor * 3.78; // 1 galão é igual a 3.78 litros
Console.WriteLine("\n\n" + valor + " Galões são " + litros + " litros (l) ");
break;
case'M':
Kilometro = valor * 1.60; // 1 Milha é igual a 1.60 Kilometros
Console.WriteLine("\n\n" + valor + " Milhas são " + Kilometro + " Kilometros (Km) " );
break;
default:
Console.WriteLine("Opção Inválida. Informe uma das opções oferecida: P , G ou M ");
break;
}
Console.ReadKey();
}
}
}
|
|
Ufa !!! Foram 6
trabalhos cumpridos e eu já estou cansado...
Veja
neste link
os 6
trabalhos restantes que prometem ser mais difíceis e desafiadores...
Filipenses 1:29 pois vos foi concedido, por amor de Cristo, não somente o crer
nele, mas também o padecer por ele,
Filipenses 1:30 tendo o mesmo combate que já em mim tendes visto e agora ouvis
que está em mim.
Referências:
José Carlos Macoratti