Você está na página 1de 24

Lista de exercícios práticos em C Sharp

Nesse exercício iremos apenas preparar o ambiente com a instalação do Dotnet mais
recente e aprender o básico dos seus comandos. Para desenvolver com dotnet você
precisa baixar o SDK. Para baixar a versão mais atual do Dotnet acesse o
link: https://dotnet.microsoft.com/download

Comandos básicos do dotnet:


Comandos básicos do dotnet:

Após a instalação podemos verificar se o dotnet foi instalado com sucesso


verificando sua versão com o comando: dotnet --version
1. dotnet --help: Esse comando é usado para acessar a ajuda do CLI do
dotnet.
2. dotnet new: Cria um novo projeto, arquivo de configuração ou solução
com base no modelo especificado.

Exemplos:

dotnet new console -o MinhaAplicacaoConsole: cria um novo projeto de


console no diretório atual com o nome "MinhaAplicacaoConsole"
dotnet new webAPI -o MinhaAPI: cria um novo projeto API no diretório
atual com o nome "MinhaAPI"
3. dotnet build: Compila um projeto e todas as suas dependências.
4. dotnet run: Executa o código-fonte sem qualquer comando de
compilação ou inicialização explícito.
Existem diversos outros comandos, mas os que utilizaremos durante os
exercícios estão acima.

Para mais detalhes do CLI do Dotnet, acesse a


documentação: https://docs.microsoft.com/pt-br/dotnet/core/tools/
01_Introducao_VSCode_Git

Como usar VS Code, git e github


Este exercício irá te preparar para usar o VS Code junto com git para
desenvolver nossos projetos práticos e subir para seu repositório no github.

Visual Studio Code (Vs Code):

Passos para instalação VS Code:

1. Baixe o VS Code pelo link: https://code.visualstudio.com/

2. O VS Code possui um CLI, não abordaremos com detalhes, mas para


testar a instalação, abra um software de linha de comando e digite code -
-version para verificar a versão instalada.

1. Após instalado, clique no botão de extensões do VS Code:

2. Localize a extensão do C# e faça a instalação.

Git

Git é um software de controle de versão. Pense nele como um repositório onde


você "guardará" seus projetos e controlará as alterações feitas nele. Neste
ponto você aprenderá os comandos básicos de git para fazer o controle de
alterações do seu projeto.

Para seguir com os exemplos práticos de git, baixe-o no link: https://git-


scm.com/downloads
Após instalação do git, use o comando abaixo no terminal para verificar se o
mesmo foi instalado corretamente: git --version
Antes de usá-lo é necessário configurar um nome de usuário e um e-mail
usando os comandos abaixo no terminal: git config --global user.name "Seu
Nome" git config --global user.email "seu_email@example.com"

Criando seu primeiro projeto com git

Criaremos um projeto simples em C# e faremos o controle de versão desse


projeto usando Git, siga os passos abaixo para criar um projeto console em C#.

1. Crie no repositório de sua escolha um projeto com o nome


"ControleDeVersaoComGit": dotnet new console -o
ControleDeVersaoComGit
2. Acesse a pasta do projeto criado acima com o comando cd
ControleDeVersaoComGit
3. Por fim, abra o projeto no VS code usando o comando code ., se preferir,
pode usar o próprio VS Code para abrir a pasta do projeto no menu File
> Open Folder...

4. Quando a mensagem abaixo for exibida, clique em sim.

5. Não faremos nenhuma alteração nesse projeto por enquanto, nosso


objetivo é controlar a versão dele, o primeiro comando que iremos
aprender é o git status. Estando com o repositório desse projeto aberto
no VS Code pressione o atalho Control + ' para abrir o terminal e digite
o comando git status (você pode realizar os comando de qualquer
terminal, se preferir utilize outro de sua escolha). Você receberá uma
mensagem de erro: fatal: not a git repository (or any of the parent
directories): .git Isso ocorre por que não iniciamos nosso projeto do git.
6. Para iniciar o git nesse projeto use o comando git init. Será possível ver
agora no Source Control do VS Code uma notificação que indica a
quantidade de arquivos modificados ou alterados do projeto. Como
iniciamos o git agora no projeto, todos arquivos dele serão notificados.
Configurando o .gitignore

Usando git é importante sempre configurarmos o arquivo .gitignore do nosso


projeto antes do primeiro commit (que será explicado na próxima etapa). Esse
arquivo informa quais arquivos o git pode ignorar do projeto, pois, quando
estamos trabalhando em um projeto de software, muitos arquivos são apenas
temporários, gerados durante a compilação ou logs e não precisam ser
controlados pelo git.

Siga os passos abaixo para criarmos um gitignore para nosso projeto:

O próprio CLI do dotnet gera o arquivo .gitignore com os principais arquivos de


um projeto dotnet a serem ignorados. Para isso basta executar o comando
abaixo na pasta do projeto:

dotnet new gitignore


Ou, se preferir, pode cria-lo manualmente seguindo os passos abaixo:

1. Pelo "Explorer" do VS Code crie um arquivo na raiz do nosso projeto


"ControleDeVersaoComGit" com o nome .gitignore
2. Coloque os arquivos e pastas que deseja ignorar dentro do arquivo criado e
salve-o.

Após a criação do .gitignore você terá menos arquivos na notificação do


"Source Control".

Commit

Um commit grava as alterações feitas no projeto. Antes de realizar o commit,


procure sempre revisar tudo que você alterou antes, para garantir que você não
alterou nada que comprometa o funcionamento da sua aplicação. Nosso
projeto não teve nenhuma alteração, mas antes de subir vamos realizar
um dotnet run para verificar se nossa aplicação está funcionando normalmente:

Após garantir que sua aplicação está funcionando, siga os passos abaixo para
fazer o nosso primeiro commit:

1. Use o comando git status para vermos a situação atual do nosso repositório.
Tente entender o retorno do git. Note que o git mostra os arquivos que não
estão sendo ainda rastreados por ele, esses arquivos precisam ser adicionados
ao git, como ele mesmo informa.
2. Para adicionar todos os arquivos listados use o comando git add .
3. Use novamente o comando git status e agora podemos ver os arquivos que
foram adicionados ao git.
4. Use o comando git commit -m "Meu primeiro commit" para confirmar as
alterações do projeto com uma mensagem simples do que fizemos nesse
commit.
5. Se rodarmos novamente o git status veremos que não temos mais
modificações no projeto. E no "Source Control" do VS Code também não temos
mais alterações notificadas.
6. Modifique o arquivo "Program.cs" do seu projeto, vamos adicionar uma linha
nova a ele imprimindo a data de hoje. A linha deve ficar abaixo do "Hello
World!":

Console.WriteLine(DateTime.Now.ToLongDateString());
7. Após salvar o arquivo alterado você poderá ver que o VS Code notificará a
alteração no "Source Control", vamos conferir também pelo git status.
Veremos a mensagem: modified: Program.cs
8. Vamos realizar novamente os passos para "commitar" nossa alteração ao
projeto. Primeiro o git add ., para adicionar todos arquivos novos ou
alterados.
9. Por fim, o commit da alteração: git commit -m "Adicionado comando para
imprimir a data de hoje."

Github

Git e github não são a mesma coisa. O github.com é um site onde podemos
subir nossos repositórios para a nuvem. Isso pode ser feito pelos comandos do
git. Configuraremos o projeto que criamos acima para subirmos para um
repositório no github.

Antes de seguir os passos baixo, crie uma conta no github.com, se ainda não
tiver uma e siga os passos abaixo:

1. Crie um repositório em Repositories > New


2. Coloque o nome "ControleDeVersaoComGit"
3. Coloque a descrição que achar mais adequada, deixe o repositório como
público e deixe o restante das opções desmarcadas.

Push

Para subirmos o nosso projeto para o github, no repositório que acabamos de


criar, utilizaremos o comando git push, mas antes utilizaremos os comandos
abaixo pra configura-lo:
1. git remote add ControleDeVersaoComGit A url você pode pegar assim
que criar seu repositório, será algo parecido com o exemplo grifado na
imagem
abaixo:

2. Agora vamos realizar o push: git push --set-upstream


ControleDeVersaoComGit main O comando acima indica que estamos
fazendo um push para o repositório com nome
"ControleDeVersaoComGit" na branch "main"

3. Atualize seu repositório no github e poderá ver agora todos os arquivos


que estavam até então apenas na máquina local.

Para praticar, vamos realizar mais uma alteração:

1. Inclua a linha abaixo logo depois da linha que imprime a data de hoje:

Console.WriteLine("Versão da aplicação: 1.0");


2. Teste sua aplicação e depois use o comando git add . para adicionar a
alteração (Se quiser observar o que está sendo alterado, lembre-se de
usar o git status).
3. Use o comando git commit -m "Adicionada linha com versão da
aplicação." para fazer o commit da alteração.
4. Como já fizemos a configuração você pode usar agora apenas o
comando git push.

5. Atualize seu repositório no github e você poderá observar as alterações.


Entre também no histórico do seu repositório no github e você
visualizará todos seus commits. Navegue pelo histórico e tente entendê-
lo.

Pull

Com o comando git pull você pode atualizar seu projeto local com alterações
realizadas por outros desenvolvedores.
Clonando projetos existentes

No nosso exemplo, criamos um projeto do zero fizemos o controle de versão


com o git e colocamos em um repositório na nuvem usando o github. Mas e se
quisermos usar um projeto já existente? Para esse exemplo vamos clonar um
repositório simples do meu perfil do github. Mas o passo a passo serve para
qualquer repositório público. Se preferir crie um repositório novo pelo seu
github colocando apenas o README.md e depois clone-o seguindo os mesmos
passos abaixo:

1. Para clonar um repositório use o comando git clone <url> e o mesmo


será clonado pro seu repositório atual.
2. A URL pode ser visualizada no github pelo botão "Code" do repositório
que deseja clonar. Acesse o repositório que iremos clonar e tente
encontrar a URL. O comando completo ficará assim: git clone
https://github.com/Wurthma/HackerHankExercises.git

3. Acesse a pasta onde fez o clone e você poderá ver o repositório.

Branchs

(Branchs é abordado de forma simplificada, não será necessário para realizar os


exercícios)

Branchs são "ramos" do nosso projeto, usamos elas para ter um melhor controle
das alterações que estamos subindo para nossas aplicações. Você pode criar
novas branchs em seus repositórios usando o comando git branch ou pelo

próprio github:
Você pode definir como será a divisão das suas branchs, abaixo segue um
exemplo:

 main (Branch principal, onde só serão aplicadas as alterações que já passaram


por testes e já podem subir para produção)
 develop (Branch onde todos os desenvolvimentos serão aplicados para
posteriormente ir para teste)
Merge

(Merge é abordado de forma simplificada, não será necessário para realizar os


exercícios)

É comum, durante um projeto real, antes de iniciar a alteração, você tirar uma
branch sua da develop, e quando você terminar todas as alterações no projeto
você faz o "merge" das alterações para a develop. Isso é seguido por todo o
time e durante o merge é necessário verificar se houve conflitos (se outros
desenvolvedores do time alteraram os mesmos trechos que você alterou).

Existem ferramentas específicas que facilitam a visualização do merge, o próprio


VS Code pode ser utilizado para isso. Mas é possível fazê-lo com o comando git
merge.
Aqui encontramos apenas o básico do git, o suficiente para você seguir com os
exercícios. Caso queira aprofundar seus conhecimentos sobre git, acesse sua
documentação: https://git-scm.com/doc
Calculadora
Objetivo: usando uma aplicação do tipo console do dotnet, criar uma
calculadora simples que terá as operações de soma, subtração, multiplicação e
divisão. Faça o controle de versionamento da sua aplicação com git e suba a
mesma para o github.

Novos conceitos ou funcionalidades desse exercício

Nossa primeira aplicação é bem simples e, se você já tem conhecimentos em


lógica de programação, algoritmos e alguma linguagem de programação não
terá problemas para desenvolver a aplicação. Faremos uso de operadores
condicionais, estrutura condicional 'switch', criação e chamada de métodos
simples.

Requisitos para desenvolver a aplicação

 Ao entrar na calculadora o usuário deverá ter um menu com as opções 1,


2, 3, 4 e 0. Sendo elas:

1 - Somar

2 - Subtrair

3 - Multiplicar

4 - Dividir

0 - Sair

 Todas as operações devem solicitar que o usuário entre com dois valores
e então estes valores devem ser utilizados para realizar a operação
escolhida. Exemplo de fluxo da operação de Soma:

i. Aplicação solicita o primeiro valor;


ii. Usuário digita valor e pressiona enter;
iii. Aplicação solicita o segundo valor;
iv. Usuário digita valor e pressiona enter;
v. Aplicação escreve em tela o resultado da soma;
vi. Usuário pressiona Enter;
vii. Aplicação retorna para o menu;

 Para a operação de divisão, validar se o divisor é 0. Se verdadeiro deve


ser exibida a mensagem "Não é possível dividir por zero."
Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.

Desafios
1. Crie uma nova opção na calculadora (opção número 5 do menu) que retorne o
resto da divisão.
2. Crie uma nova opção na calculadora (opção número 6 do menu) que retorne o
resultado da potenciação de uma determinada base pelo seu expoente.
Exemplo 2³ = 8.
Soma e Média
Objetivo: usando uma aplicação do tipo console do dotnet, criar uma aplicação
que lê 3 à 10 números e realiza a soma e a média deles. Faça o controle de
versionamento da sua aplicação com git e suba a mesma para o github.

Novos conceitos ou funcionalidades desse exercício

Faremos uso de loops e arrays no exercício, tente fazer o mesmo usando ´for´ e
o ´foreach´. Faça o possível também para criar métodos que recebam
parâmetros e retornem valores, dessa forma teremos uma codificação mais
limpa e de fácil leitura.

Estudar:

 Criação de métodos
 Receber parâmetros nos métodos
 Retorno de valores nos métodos
 Classe ´List´ do Dotnet
 Loops ´for´ e ´foreach´

Requisitos para desenvolver a aplicação

 Ao abrir a aplicação deverá ser solicitado a quantidade de números que


o usuário deseja informar. O número de valores deve ser entre 3 e 10.

 A aplicação deve aceitar números decimais, positivos e negativos.

 A aplicação deve percorrer a lista de números, calcular a soma e a média


dos valores informados e imprimir o resultado para o usuário.

Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.

Desafios
1. Validar se os números digitados pelo usuário são validos (estude o TryParse
para fazer esse desafio).
2. Faça o uso da biblioteca "System.Linq" do Dotnet para fazer a soma (sum) e a
média (average) da lista (array) de valores.
Jogar dados
Objetivo: usando uma aplicação do tipo console do dotnet, criar um jogo
simplificado onde dois jogadores podem jogar dados e a aplicação informa qual
dos jogadores tirou o maior número. Faça o controle de versionamento da sua
aplicação com git e suba a mesma para o github.

Novos conceitos ou funcionalidades desse exercício

Usaremos nesse exercício a classe Random do dotnet para simular uma jogada
de dados com 6 lados. O random irá possibilitar que tiremos um número
aleatório (de 1 a 6 para nosso exemplo). Você pode usar loop para esse
exercício, estude sobre loops caso não conheça. Poderá também optar por
usar recursão (o exemplo de consulta usa recursão no método
"IniciarRodadas"), recomendo estudar sobre recursão também antes de iniciar o
exercício.

Requisitos para desenvolver a aplicação

 Quando o usuário abrir o jogo deverá ser solicitado o nome do primeiro


e do segundo jogador. Não será possível jogar com mais do que dois
jogadores.

 O jogo deverá solicitar um nome para cada jogador e os nome não


podem ser iguais.

 O jogo terá 3 rodadas, o jogador que tirar o maior número no dados na


maioria das jogadas vence a partida.

 Em caso de empate (onde os dois tiram o mesmo número) nenhum


jogador pontuará.

 A cada rodada a aplicação deve informar quem foi o jogador vencedor.


Exemplos de mensagens:

o João tirou o número 2 e Maria o número 6. Maria venceu a rodada


1.
o João tirou o número 1 e Maria o número 1. Empate.

 Um placar sempre deve ser exibido até o final do jogo para que os
jogadores acompanhem o resultado. Exemplo: Pontos do jogador Maria:
1 Pontos do jogador João: 0

 Ao final da rodada 3 a aplicação deve informar quem foi o vencedor ou


se foi um empate.
Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.

Desafios
1. Se a terceira rodada terminar em empate, faça com que os jogadores
continuem jogando dados. O próximo a pontuar ganha o jogo.
2. Crie uma opção antes de iniciar o jogo que permite que o usuário selecione a
quantidade de rodadas. A quantidade deve estar entre 1 e 5.
Datas
Objetivo: usando uma aplicação do tipo console do dotnet, criar uma aplicação
que listará algumas datas importante da área da técnologia, escolhar 5 datas ou
utilize os sugeridos nos requisitos.

Novos conceitos ou funcionalidades desse exercício

Usaremos nesse exercício a classe DateTime do dotnet então antes ou durante


o exercício estude sua documentação. Tente desenvolver o exercício criando
uma classe chamada "DataConfiguracao" (você pode usar outro nome se
preferir) a classe deverá conter os métodos responsáveis por configurar o
formato escolhido, método para aplicar o formato da data, método para exibir o
cabeçalho com a data no formato específicado, etc.

Estude:

 Classes, métodos, propriedades e construtores.


 Modificadores de acesso: público, privado e protegido.
 Retornando valores nos métodos.
 Recebendo valores em atributos de métodos.

Requisitos da aplicação

 Quando o usuário abrir a aplicação deve ser solicitado qual o formato de data
ele deseja visualizar. Deve ser disponibilizada as formatações abaixo:

1. Utilizar minha configuração de sistema: 08/01/2021 20:48:13 (Este item deve


apenas converter a data para string, deixar que o sistema use o formato dele)
2. Formato simples: 08-01-21
3. Formato longo sexta-feira, 8 de janeiro de 2021
4. Formato longo personalizado 08-01-2021 08:48:13
5. Formato RFC1123 pattern Fri, 08 Jan 2021 20:48:13 GMT

 Você deverá mostrar as datas conforme os formatos nos exemplos acima.


Siga as dicas abaixo:

o Estude como usar o string.Format para personalizar o formato da data.


o Estude as conversões para string específicas para DateTime.
o Para o item 5, verifique como aplicar o formato RFC1123Pattern para
o DateTime.

 Na seleção do formato da data, valide a opção e exiba uma mensagem


caso não esteja entre 1 e 5 conforme opções do primeiro requisito, e
volte para o menu da seleção do formato da data para que o usuário
tente novamente.

 Após seleção correta de uma opção exiba um segundo menu com as


seguintes opções (ou use outras de sua escolha): 1- ENIAC 2- RFC1 3-
Alan Turing

 Ao escolher uma das opções o sistema deverá exibir para o usuário um


cabeçalho com a data do evento e um texto com a descrição do evento.
Abaixo você encontra as datas e textos dos eventos sugeridos acima:

(ENIAC) - 15 de agosto de 1946 No dia 15 de agosto de 1946 os norte-


americanos John Eckert e John Mauchly apresentaram o ENIAC, o primeiro
equipamento eletrônico chamado de computador no mundo.

(RFC1) - 17 de abril de 1969 Em 17 de abril de 1969 foi feita a publicação da


RFC1, por esse motivo considera-se esse o dia da internet até hoje.

(Alan Turing) - 23 de junho de 1912 Nascimento de Alan Turing, matemático


e criptoanalista britânico que é considerado o "pai da informática" por ter sido
essencial na criação de máquinas que, mais tarde, dariam origem aos PCs que
utilizamos hoje para trabalhar, estudar e realizar nossas atividades diárias. Sua
genialidade e influência fundamental na história da humanidade, entretanto,
foram ceifadas pelo preconceito de uma época que, felizmente, já ficou para
trás.

Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.

Desafios
1. Estude novos formatos de datas e aplique mais opções ao menu de escolha de
formato de data.
2. Estude a classe System.Globalization.CultureInfo e aplique nov
Conversão de Moedas
Objetivo: usando uma aplicação do tipo console do dotnet, criar uma aplicação
que converterá o real ( R$ ) para as moedas dólar ( $ ), euro ( € ), iene ( ¥ ) e
libra esterlina ( £ ).

Legenda

 Real: moeda brasileira


 Dólar: moeda norte americana
 Euro: moeda europeia
 Iene: moeda japonesa
 Libra esterlina: moeda do Reino Unido

Novos conceitos ou funcionalidades desse exercício

Enum (Enumeration types) pode ser utilizado para controlar as moedas, estude
como usar enumeradores no C#. Usaremos nesse exercício a
classe System.Globalization.CultureInfo. Você pode customizar a exibição do
valor da moeda usando as conversões de string sem utilizá-la, mas o ideal é
conhecer o CultureInfo, isso facilitará seu trabalho, então estude como formatar
as moedas utilizando-a. Estude também sobre os tipos mais indicados para
moedas e qual o motivo. Durante o exercício dê preferência para o decimal, pois
geralmente ele é o mais indicado na maioria das situações. Lembre-se de utilizar
os conceitos já utilizados nos exercícios anteriores.
Estude:

 Enumeration types.
 Classe System.Globalization.CultureInfo.
 Tipos decimal, double, float.
 Classe Math.
 Conversão de string para moedas.
 Conversões implícitas e explicitas.
 Documentação XML para C#.

Requisitos da aplicação

 Ao abrir a aplicação solicite o valor em real (R$) que o usuário deseja


converter.

 Após leitura do valor a ser convertido, exibir um menu para selecionar


para qual moeda o usuário deseja converter: dólar ($), euro (€), iene (¥)
ou libra esterlina (£).
 Para realizar a conversão utilize os valore fictícios abaixo:

o dólar ( $ ) = R$ 4,50
o euro ( € ) = R$ 6,20
o iene ( ¥ ) = R$ 0,052
o libra ( £ ) = R$ 6,95

Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.
 Estude o uso de Dictionary e utilize-o para armazenar o valor de cada moeda
que será usado na conversão.

Desafios
1. Crie na sua aplicação a opção de converter as moedas dólar ( $ ), euro ( € ), iene
( ¥ ) e libra esterlina ( £ ) em real ( R$ ).
2. Permita que o usuário informe qualquer uma das moedas (real , dólar, euro,
iene ou libra esterlina) e depois converta pra qualquer uma das opções
restantes.
Jogo da Forca
Objetivo: usando uma aplicação do tipo console do dotnet, criar um jogo da
forca que irá ler uma lista de nomes de filmes, nomes de jogos (vídeo game) e
países. Com essa aplicação você poderá evoluir seus conhecimentos sobre
manipulação de strings e leitura e escrita de arquivos.

Novos conceitos ou funcionalidades desse exercício

Gravação e leitura de arquivos para armazenar os nomes de filmes, carros e


países.

Estude:

 Gravação e leitura de arquivos.


 Orientação a objetos (encapsulamento, herança, abstração e polimorfismo).

Caso não conheça os conceitos de orientação a objetos, pause um pouco a


execução do exercício, estude esses conceitos e coloque-os em prática em
alguns exemplos, pois no próximo exercício aprofundaremos em orientação a
objetos.

Requisitos da aplicação

 Ao abrir a aplicação o sistema deverá sortear aleatoriamente uma das 3


categorias: filmes, carros ou países e, após isso, sortear um dos nomes da
categoria selecionada.

 Após a seleção feita pelo sistema, exiba um placar na tela com a


quantidade de tentativas disponíveis e quantas tentativas já foram
realizadas. Nesse mesmo placar crie uma lista com as letras e números já
utilizados pelo jogador.

 Mostre na tela também, a categoria sorteada e a quantidade de letras da


palavra. Além da quantidade de letras, inicialmente todas as letras da
palavra devem ser substituídas por underline (_). Exemplo:

o Se a palavra for o filme Matrix, deverá ser exibido 6 underline no lugar


da palavra.
o Ao acertar a letra A, deverá ser exibido apenas a letra a na posição
correta.

 As palavras devem ficar armazenadas em um arquivo de texto do tipo


CSV que terá a palavra seguido pela categoria, onde Filme = 0, Jogo = 1,
e Pais = 2. Segue um exemplo de como cada tipo deve ficar no arquivo:
o Matrix;0;
o Batman;1;
o Brasil;2;
 Se alguma palavra possui letra com acentuação, ela deve ser reconhecida
quando o usuário informar sem acentuação, além disso a aplicação não
deve diferenciar maiúsculo de minúsculo. Estude como usar
o System.Text.Encoding.CodePages para remoção de acentos usando o
'ISO-8859-8'.

 A cada tentativa atualize o placar com as pontuações.

 Caso o jogador a 0 no número de tentativas exiba a mensagem "Fim de


jogo, você perdeu!".

 Caso o jogador acerte todas as letras, exiba a mensagem "Fim de jogo,


você venceu!".

Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.
 Faça o uso de todos os pilares da programação Orientada a Objetos.
 Utilize Enumeradores para a categoria das palavras.
 Estude o tratamento de erros com C# (Exceptions).
 Estude a biblioteca System.Linq; para facilitar sua manipulação de listas.

Desafios
1. Crie mais uma categoria para o jogo dê sua preferência.
2. Antes de iniciar o jogo dê a opção de o usuário escolher a dificuldade do jogo:
fácil, normal ou difícil:
o Fácil: 7 tentativas
o Normal: 6 tentativas
o Difícil: 5 tentativas
Orientação a Objetos - Drone de Exploração
Objetivo: aprender conceitos de orientação a objetos (OO).

Nos requisitos para fazer os exercícios foi solicitado que você já conhecesse os
conceitos de orientação a objetos e aqui você não terá um livro onde aprenderá
tudo sobre OO, nosso objetivo maior é pôr em prática esses conceitos no C#. Se
não conhece sobre OO, não desanime, leia artigos, livros, assista vídeos, faça
cursos etc. Conteúdo sobre o assunto não falta! Para atingir esse objetivo, a
aplicação que vamos utilizar simula o controle de um drone robô.

Esse é facilmente o exercício mais importante da lista, no entanto, um único


exercício de orientação a objetos não é o suficiente. Então pratique mais, procure
por outros exercícios, retorne aos exercícios que já fez e aplique os novos conceitos
que vai aprender.

Usando uma aplicação do tipo console do dotnet desenvolva uma


aplicação Drone de Exploração que deve simular o controle de um drone que
além das capacidades já conhecidas de um drone comum, terá câmera de alta
resolução, 2 braços mecânicos para permitir coletar materiais e 1 recipiente para
armazenar o material coletado. Cada braço terá ferramentas específicas que
serão detalhadas nos requisitos e o software também deverá permitir o controle
de voo e movimentação do drone.

Novos conceitos ou funcionalidades desse exercício

Nos exercícios anteriores já fizemos o uso de alguns conceitos que você vai
agora estudar mais a fundo.

Entenda o que é cada pilar da Programação Orientada a Objetos e como


implementar elas em exemplos práticos no C#. Esses pilares são:

 Encapsulamento
 Herança
 Abstração
 Polimorfismo

Para aprender esses pilares você precisa dominar alguns conceitos básicos do
C#:

 Modificadores de acesso: public, private e protected.


 Classes, classes abstratas (modificador abstract) e classes estáticas
(modificador static).
 Construtores.
 Propriedades, métodos e seus modificadores.
 Interfaces.

No código de exemplo há diversos comentários que exemplificam a


aplicação de cada um dos pilares. Tente realizar seu exercício e
posteriormente consulte o exemplo e faça as melhorias necessários no seu.

Requisitos da aplicação

 O usuário deve ser capaz de controlar o drone por um menu da


aplicação, o menu deve disponibilizar as opções de acordo com as regras
especificadas abaixo.

 Controle de voo:

o Regra: altura máxima deve ser 25 metros do chão;


o Regra: altura mínima deve ser 0,5 metros do chão;
o Usuário deve ser capaz de informar a qual altura deseja voar,
respeitando as regras de voo acima.
o Usuário deve ser capaz de mudar a altura progressivamente também,
onde cada comando sobe ou desce 0,5 metros, respeitando as regras de
voo.

 Direção de movimento:

o Usuário deve ser capaz de mudar a direção do drone e 0º à 360º,


informando exatamente em qual ângulo deseja ficar direcionado (leve
em consideração que o drone sempre começa na direção norte, que
representa nosso ângulo zero).
o Usuário deve ser capaz de mudar a direção do drone progressivamente,
onde cada comando muda a direção para esquerda ou direita em 5º.
 Exemplo 1: se atualmente o drone está na direção 100º, ao usar
o comando para ir para esquerda progressivamente, a direção
deve mudar para 95º.
 Exemplo 2: se atualmente o drone está na direção 100º, ao usar
o comando para ir para direita progressivamente, a direção deve
mudar para 105º.
 Exemplo 3: se atualmente o drone está na direção 2º, ao usar o
comando para ir para esquerda progressivamente, a direção
deve mudar para 357º.
 Exemplo 4: se atualmente o drone está na direção 359º, ao usar
o comando para ir para direita progressivamente, a direção deve
mudar para 4º.

 Velocidade de movimento:
o Regra: velocidade máxima de movimento deve ser 15 metros por
segundos (estado "Em movimento" para qualquer valor acima de 0).
o Regra: velocidade mínima de movimento deve ser 0 metros por
segundos, onde o drone ficará no estado "Sem movimento".
o Usuário deve ser capaz de mudar a velocidade do drone
progressivamente, onde cada comando muda aumenta ou diminui a
velocidade de 0,5 em 0,5 metro/s.

 Aproximação de objeto:

o Regra: aproximação de objeto só pode ser realizada após estar parado (0


metro/s);
o Aproximação de objeto deverá ser um comando dado ao drone que
aproximara ele lentamente até determinado objeto, com o objetivo de
ficar no alcance dos braços mecânicos.
o Após realizar a aproximação de objeto o drone deve ficar impedido de
fazer nova aproximação, ou mudança de altura, direção e deve estar
parado (0 metro/s).
o Estando próximo de um objeto o Drone deve ser capaz de se distanciar
desse mesmo objeto para voltar as suas funções normais.

 Ações dos braços

o Regra: Os braços do drone, só podem ser utilizados após realizar


"aproximação de objeto".
o Regra: Os braços do drone, quando "em movimento" devem estar no
estado "Repouso".
o Regra: Os braços do drone, quando "sem movimento" podem passar
para o estado "Em atividade".
o Regra: Qualquer movimento do braço só pode ser realizado quando ele
estiver "Em atividade".
o Regra: o braço não pode ficar "Em repouso" se estiver no estado
"Ocupado".
o Braço Esquerdo:
 Cotovelo
a. Em Repouso
b. Contraído
 Pulso
a. Rotação positiva a cada 5º
b. Rotação negativa a cada -5º
c. Rotação para ângulo específico informado pelo usuário
de 0º a 360º
 Ferramentas do braço esquerdo
a. Pegar: só pode ser utilizada se o cotovelo estiver
contraído. (pinça para manipular objetos)
 Regra: Ao pegar um objeto o braço deve ficara em
um estado de "Ocupado" e só sairá desse estado
depois de armazenar.
b. Armazenar: só pode ser utilizada se o cotovelo estiver Em
repouso. (leva objeto até recipiente de armazenamento)
c. Bater: só pode ser utilizada se o cotovelo estiver
contraído e braço desocupado. (martelo pequeno para
quebrar rochas e outros objetos para coleta)
o Braço Direito:
 Cotovelo (mesmas ações do braço esquerdo)
 Pulso (mesmas ações do braço esquerdo)
 Ferramentas do braço direito
a. Pegar (mesma do braço esquerdo)
 Regra: Ao pegar um objeto o braço deve ficara em
um estado de "Ocupado" e só sairá desse estado
depois de armazenar.
b. Armazenar (mesma braço esquerdo)
c. Cortar: só pode ser utilizada se o cotovelo estiver
contraído e braço desocupado. (tesoura para cortar
objetos)
d. Coletar: só pode ser utilizada se o cotovelo estiver Em
Repouso e braço desocupado. (pá/colher utilizado para
objetos não sólidos)
 Regra: Ao coletar alguma substância o braço deve
ficar em um estado de "Ocupado" e só sairá desse
estado depois de armazenar.

Opcional

 Fazer o controle de versionamento da sua aplicação usando git;


 Subir a aplicação para um repositório do github.

Desafios
1. Crie funções para seu drone que permitam ao usuário controlar a câmera de
alta resolução. Leve em consideração que a câmera pode fazer rotações
horizontais e verticais e capturar foto ou vídeo.

Você também pode gostar