From 32e29ed745cb2117c5d1a71a209d701b44e8fc23 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Thu, 29 Apr 2021 22:52:23 -0300 Subject: [PATCH 01/41] Create "Aula 11 - Criando um Projeto C#" --- .gitignore | 263 +++++++++++++++++++++ CursoCSharp/CursoCSharp.sln | 25 ++ CursoCSharp/CursoCSharp/CursoCSharp.csproj | 8 + CursoCSharp/CursoCSharp/Program.cs | 9 + 4 files changed, 305 insertions(+) create mode 100644 .gitignore create mode 100644 CursoCSharp/CursoCSharp.sln create mode 100644 CursoCSharp/CursoCSharp/CursoCSharp.csproj create mode 100644 CursoCSharp/CursoCSharp/Program.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d88d337 --- /dev/null +++ b/.gitignore @@ -0,0 +1,263 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +################### +# compiled source # +################### +*.com +*.class +*.dll +*.exe +*.pdb +*.dll.config +*.cache +*.suo +# Include dlls if they’re in the NuGet packages directory +!/packages/*/lib/*.dll +# Include dlls if they're in the CommonReferences directory +!*CommonReferences/*.dll +#################### +# VS Upgrade stuff # +#################### +_UpgradeReport_Files/ +############### +# Directories # +############### +bin/ +obj/ +TestResults/ +################### +# Web publish log # +################### +*.Publish.xml +############# +# Resharper # +############# +/_ReSharper.* +*.ReSharper.* +############ +# Packages # +############ +# it’s better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip +###################### +# Logs and databases # +###################### +*.log +*.sqlite +# OS generated files # +###################### +.DS_Store? +ehthumbs.db +Icon? +Thumbs.db + + +# User-specific files +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Visual Studo 2015 cache/options directory +.vs/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ +bower_components/ +orleans.codegen.cs + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt diff --git a/CursoCSharp/CursoCSharp.sln b/CursoCSharp/CursoCSharp.sln new file mode 100644 index 0000000..6ad921e --- /dev/null +++ b/CursoCSharp/CursoCSharp.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1500 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CursoCSharp", "CursoCSharp\CursoCSharp.csproj", "{221B5627-003F-4C52-A6B4-B84B96949485}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {221B5627-003F-4C52-A6B4-B84B96949485}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {221B5627-003F-4C52-A6B4-B84B96949485}.Debug|Any CPU.Build.0 = Debug|Any CPU + {221B5627-003F-4C52-A6B4-B84B96949485}.Release|Any CPU.ActiveCfg = Release|Any CPU + {221B5627-003F-4C52-A6B4-B84B96949485}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {D4922850-EEA3-4B65-BBD8-3B02F9A79F12} + EndGlobalSection +EndGlobal diff --git a/CursoCSharp/CursoCSharp/CursoCSharp.csproj b/CursoCSharp/CursoCSharp/CursoCSharp.csproj new file mode 100644 index 0000000..23df604 --- /dev/null +++ b/CursoCSharp/CursoCSharp/CursoCSharp.csproj @@ -0,0 +1,8 @@ + + + + Exe + netcoreapp2.1 + + + diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs new file mode 100644 index 0000000..8575414 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -0,0 +1,9 @@ +using System; + +namespace CursoCSharp { + class Program { + static void Main(string[] args) { + Console.WriteLine("Hello World!"); + } + } +} From 4d9450b1baa4422eb73781de188005fefb729767 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Fri, 30 Apr 2021 21:40:24 -0300 Subject: [PATCH 02/41] =?UTF-8?q?Create=20"Aula=2012=20-=20Organiza=C3=A7?= =?UTF-8?q?=C3=A3o=20B=C3=A1sica=20do=20C=C3=B3digo"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...7\303\243o \303\240 Estrutura de Dados.md" | 31 ++++++++++++++++ .../Aula 7 - O que \303\251 o dotNET.md" | 23 ++++++++++++ .../Aula 8 - Commom Language Runtime.md" | 20 +++++++++++ ...Configura\303\247\303\243o do Ambiente.md" | 7 ++++ ...ra de uma Solu\303\247\303\243o CSharp.md" | 13 +++++++ .../Aula 11 - Criando um Projeto CSharp.md" | 17 +++++++++ ...03\243o b\303\241sica do c\303\263digo.md" | 35 +++++++++++++++++++ 7 files changed, 146 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 6 - Introdu\303\247\303\243o \303\240 Estrutura de Dados.md" create mode 100644 "Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 7 - O que \303\251 o dotNET.md" create mode 100644 "Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 8 - Commom Language Runtime.md" create mode 100644 "Aulas/Se\303\247\303\243o 2 - Configura\303\247\303\243o do Ambiente/Aula 9 - Configura\303\247\303\243o do Ambiente.md" create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 10 - Arquitetura de uma Solu\303\247\303\243o CSharp.md" create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 11 - Criando um Projeto CSharp.md" create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" diff --git "a/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 6 - Introdu\303\247\303\243o \303\240 Estrutura de Dados.md" "b/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 6 - Introdu\303\247\303\243o \303\240 Estrutura de Dados.md" new file mode 100644 index 0000000..4a15fc0 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 6 - Introdu\303\247\303\243o \303\240 Estrutura de Dados.md" @@ -0,0 +1,31 @@ +# Estrutura de Dados + +Organiza os dados. +Diz como o dado será organizado +* Define: + * critérios + * conjunto de regras + * restrições, de como os dados têm que ser organizados que o dado precisa atender, para se encaixar para estar dentro daquela estrutura. + +## Estrutura Clássica + + * Lista + * Fila (FIFO) + * Pilha (LIFO) + * Árvore + +## Estruturas Básicas + +* Primitivas + * Número real + * Alfabeto + * Números inteiros + +* Personalizadas + * Estruturas de dados que podemos construir + + +## Estruturas Booleanas + +* Verdadeiro +* Falso \ No newline at end of file diff --git "a/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 7 - O que \303\251 o dotNET.md" "b/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 7 - O que \303\251 o dotNET.md" new file mode 100644 index 0000000..206c5c7 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 7 - O que \303\251 o dotNET.md" @@ -0,0 +1,23 @@ +# O que é o .NET? + +> Framework desenvolvido pela Microsoft. + +## Definição + +### .NET + +* **Framework:** Estrutura utilizada para desenvolver uma aplicação. + * Conjunto de funcionalidades que é disponibilizado + * Multi-plataforma (Win - Mac - Linux) + * Mobile (Android - iOS) + +### C# + +* É uma das funcionalidades do .NET + * É a Linguagem + +## O .NET é separado em duas grandes partes + +### CLR (Commom Language Runtime) + +### LIB (Libraries) \ No newline at end of file diff --git "a/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 8 - Commom Language Runtime.md" "b/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 8 - Commom Language Runtime.md" new file mode 100644 index 0000000..5b63853 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 1 - Introdu\303\247\303\243o/Aula 8 - Commom Language Runtime.md" @@ -0,0 +1,20 @@ +# Commom Language Runtime (CLR) + +> Virtual Machine + +## Motivação da sua criação + +* **ILCode** (Intermedian Language Code) + * é interpretado pelo **CLR** + +* **CLR** (Commom Language Runtime) + * é compilado em tempo de execução pelo **JIT** + +* **JIT** (Just-In-Time Compiled) + * compila o código para executar o programa no **SO** + +* **SO** (System Operational) + * Win + * Mac + * Linux + diff --git "a/Aulas/Se\303\247\303\243o 2 - Configura\303\247\303\243o do Ambiente/Aula 9 - Configura\303\247\303\243o do Ambiente.md" "b/Aulas/Se\303\247\303\243o 2 - Configura\303\247\303\243o do Ambiente/Aula 9 - Configura\303\247\303\243o do Ambiente.md" new file mode 100644 index 0000000..d42e2b3 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 2 - Configura\303\247\303\243o do Ambiente/Aula 9 - Configura\303\247\303\243o do Ambiente.md" @@ -0,0 +1,7 @@ +# Configuração do Ambiente + +## Instalação do Visual Studo Community 2017 + +> 15.9.35 + +[Instalação do Visual Studio Community 2017 - Windows](https://www.youtube.com/watch?v=lwmVwBE1AXI) \ No newline at end of file diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 10 - Arquitetura de uma Solu\303\247\303\243o CSharp.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 10 - Arquitetura de uma Solu\303\247\303\243o CSharp.md" new file mode 100644 index 0000000..5e9e058 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 10 - Arquitetura de uma Solu\303\247\303\243o CSharp.md" @@ -0,0 +1,13 @@ +# Arquitetura de Solução .NET + +* Inicia-se definindo uma solução + * uma **SOLUÇÃO** (Aplicação) pode ter diversos + * **PROJETOS** (Assembly) que pode gerar arquivos + * **`.EXE`** + * **`.DLL` (Dynamic Link Library)** + * dentro de um *projeto* pode conter + * ~(PASTAS) - que chamamos de **NAMESPACE** + * dentro do *namespace* poderá conter + * ~(ARQUIVOS) - que são as **CLASS** + * dentro da *class* irá conter + * o código **C#** \ No newline at end of file diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 11 - Criando um Projeto CSharp.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 11 - Criando um Projeto CSharp.md" new file mode 100644 index 0000000..a6c6482 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 11 - Criando um Projeto CSharp.md" @@ -0,0 +1,17 @@ +# Criando um Projeto C# + +## Novo Projeto + +Arquivo > Novo > Projeto... > Visual C# > .NET Core > Aplicativo do Console (.NET Core) Visual C# + +## Alteração do estilo de código + +Ferramentas > Opções... > Editor de Texto > C# > Estilo de Código > Formatação > Novas Linhas + +* **Desmarcar todas:** + * Novas opções de linha para chaves + * novas opções de linha para palavras-chaves + +* Atalho para formatar o código conforme a nova padronização escolhida: + * `CTRL` + `K` + `D` + diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" new file mode 100644 index 0000000..374df1e --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" @@ -0,0 +1,35 @@ +# Organização Básica do Código + +* Códigos em C# são organizados por sentenças de códigos + * Uma sentença de código é finalizada com **;** + * pode estar em mais de uma linha + +* Pares de chaves **{ }** + * chaves de abertura e de fechamento + * denominam um bloco + * servem para agrupar um conjunto de sentenças + +* Ponto **.** (separador) + +* Aspas duplas **" "** - delimitadores de texto livre (Strings) + +```cs +using System; + +namespace CursoCSharp +{ + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} +``` + +## Executando o código criado + +* Clicando no botão **Play** da IDE (modo Debug) +* Tecla **`F5`** (modo Debug) +* **`CTRL`** + **`F5`** - Mantém o terminal aberto apresentando a saída do código, até que seja precionada uma tecla para fechá-lo. \ No newline at end of file From 0184d77b19712fc674e5e94a02833b6c420da9e1 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 1 May 2021 19:51:03 -0300 Subject: [PATCH 03/41] Create "Aula 13 - Primeiro Programa" --- ...03\243o b\303\241sica do c\303\263digo.md" | 11 ++-- .../Aula 13 - Primeiro Programa.md" | 54 +++++++++++++++++++ .../Fundamentos/PrimeiroPrograma.cs | 14 +++++ CursoCSharp/CursoCSharp/Program.cs | 4 ++ 4 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" index 374df1e..2f10c2d 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 12 - Organiza\303\247\303\243o b\303\241sica do c\303\263digo.md" @@ -2,7 +2,7 @@ * Códigos em C# são organizados por sentenças de códigos * Uma sentença de código é finalizada com **;** - * pode estar em mais de uma linha + * e pode estar em mais de uma linha * Pares de chaves **{ }** * chaves de abertura e de fechamento @@ -23,6 +23,10 @@ namespace CursoCSharp static void Main(string[] args) { Console.WriteLine("Hello World!"); + + { + Console.WriteLine("Hello World!"); + } } } } @@ -31,5 +35,6 @@ namespace CursoCSharp ## Executando o código criado * Clicando no botão **Play** da IDE (modo Debug) -* Tecla **`F5`** (modo Debug) -* **`CTRL`** + **`F5`** - Mantém o terminal aberto apresentando a saída do código, até que seja precionada uma tecla para fechá-lo. \ No newline at end of file + * Tecla **`F5`** (modo Debug) + +* **`CTRL`** + **`F5`** - Mantém o terminal aberto apresentando a saída do código, até que seja precionada uma tecla para fechá-lo. diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" new file mode 100644 index 0000000..eea4817 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" @@ -0,0 +1,54 @@ +# Primeiro Programa + +## Criando uma nova pasta no Projeto + +* Na tela de **Gerenciador de Soluções** + * botão direito no projeto *CursoCSharp* + * Adicionar > Nova Pasta + * Nomear a pasta como *"Fundamentos"* + +## Criando um novo arquivo na pasta Fundamentos + +* Na tela de **Gerenciador de Soluções** + * botão direito na pasta *Fundamentos* + * Adicionar > Classe... + * no campo **Nome** + * Nomear como *PrimeiroPrograma.cs* + * clicar no botão [Adicionar] + * > ***Obs.:*** *não é necessário incluir o ".cs" pois o próprio VS inclui a extensão ".cs".* + +### Conceito: + +#### **using** - [7:13] + +* `System.Console.Write("Primeiro ");` + * a palavra reservada *System*, está em cinza porque não há a necessidade de usá-lo, uma vez que o *System* foi declarado no **`using System;`** + * o que simplifica a utilização dos métodos da *classe System* +durante o desenvolvimento do código. + * se não utilizássemos o `using`, deveriamos escrever a nossa +sentença da seguinte forma: +>```cs +> System.Console.Write("Primeiro "); +> System.Console.WriteLine("Programa"); +> System.Console.WriteLine("Terminou!"); +>``` + * Para adequarmos a nossa sentença devemos retirar a palavra +reservada *System* da sentença, mantendo-a apenas na declaração do `using`. + * `Console.Write("Primeiro ");` + +### [!Tips] +* **`CTRL` + `.`**, exibe a resolução propósta pela IDE para +correção de erros na sintáxe do código e deixá-lo mais simples e elegante. + +* **`cw`** - ao digitarmos e teclarmos `TAB` a IDE irá escrever o código `Console.WriteLine();` + +#### **Console.Write** - [5:40] + +* Significa que o texto será escrito na linha do *console* e o prompt permanecerá na mesma linha + * > Escreve e permanece na mesma linha + +#### **Console.WriteLine** - [5:59] + +* Significa que o texto será escrito na linha do *console* e o prompt irá para uma nova linha. + * > Escreve e quebra a linha + diff --git a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs new file mode 100644 index 0000000..b7bf9e9 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs @@ -0,0 +1,14 @@ +using System; + +namespace CursoCSharp.Fundamentos +{ + class PrimeiroPrograma + { + static void Main() + { + Console.Write("Primeiro "); + Console.WriteLine("Programa"); + Console.WriteLine("Terminou!"); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 8575414..639ea36 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -4,6 +4,10 @@ namespace CursoCSharp { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); + + { + Console.WriteLine("Hello World!"); + } } } } From f4d3955bc9cc5510b56033df0f60ea3e2f5275e0 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 1 May 2021 21:49:07 -0300 Subject: [PATCH 04/41] Update "Aula 13 - Primeiro Programa" --- .../Aula 13 - Primeiro Programa.md" | 19 +++++++++++++++++++ CursoCSharp/CursoCSharp/CursoCSharp.csproj | 1 + 2 files changed, 20 insertions(+) diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" index eea4817..bc3a439 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" @@ -52,3 +52,22 @@ correção de erros na sintáxe do código e deixá-lo mais simples e elegante. * Significa que o texto será escrito na linha do *console* e o prompt irá para uma nova linha. * > Escreve e quebra a linha +### Método Main() - [12:04] + +O ponto de entrada de um programa é definido do método **`Main()`** + +### Erro - CS0017 + +> *Programa tem mais de um ponto de entrada definido. Compilar com /main para especificar o tipo que contém o ponto de entrada.* + +### Possíveis resoluções: + +* Resolução 1: Renomeando o método **`Main()`** em cada arquivo de classe. + * Ex.: **`Main2()`**, no arquivo de classe *PrimeiroPrograma.cs*. + +* Resolução 2: Alterando as propriedades do projeto + * botão direito no projeto *CursoCSharp* + * Opção "Propriedades" > Aplicativo + * No campo *Objeto de inicialização:* + * podemos definir qual ponto de entrada será lido prioritariamente pelo VS. + * Mas para objetivo de aula iremos manter a opção *(Não definido)*, como padrão. diff --git a/CursoCSharp/CursoCSharp/CursoCSharp.csproj b/CursoCSharp/CursoCSharp/CursoCSharp.csproj index 23df604..22f479e 100644 --- a/CursoCSharp/CursoCSharp/CursoCSharp.csproj +++ b/CursoCSharp/CursoCSharp/CursoCSharp.csproj @@ -3,6 +3,7 @@ Exe netcoreapp2.1 + From 05f4cf40bc9268022e62b34aa8e0eba169ec2d89 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 1 May 2021 22:25:30 -0300 Subject: [PATCH 05/41] Create "Aula 14 - Link para material" --- .../Aula 14 - Link para material.md" | 5 ++ .../Fundamentos/PrimeiroPrograma.cs | 6 +-- "Exerc\303\255cios/CentralDeExercicios.cs" | 51 +++++++++++++++++++ "Exerc\303\255cios/Program.cs" | 16 ++++++ 4 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" create mode 100644 "Exerc\303\255cios/CentralDeExercicios.cs" create mode 100644 "Exerc\303\255cios/Program.cs" diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" new file mode 100644 index 0000000..92c6f6c --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" @@ -0,0 +1,5 @@ +# Aula 14 - Link para material + +* **Link para acessar o material que será utilizado na próxima aula:** + +[Central de exercícios](D:\repoCode\cod3r\Exercícios\CentralDeExercicios.cs) diff --git a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs index b7bf9e9..c7237c9 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs @@ -1,9 +1,7 @@ using System; -namespace CursoCSharp.Fundamentos -{ - class PrimeiroPrograma - { +namespace CursoCSharp.Fundamentos { + class PrimeiroPrograma { static void Main() { Console.Write("Primeiro "); diff --git "a/Exerc\303\255cios/CentralDeExercicios.cs" "b/Exerc\303\255cios/CentralDeExercicios.cs" new file mode 100644 index 0000000..ec54416 --- /dev/null +++ "b/Exerc\303\255cios/CentralDeExercicios.cs" @@ -0,0 +1,51 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace CursoCSharp { + public class CentralDeExercicios { + Dictionary Exercicios; + + public CentralDeExercicios(Dictionary exercicios) { + Exercicios = exercicios; + } + + public void SelecionarEExecutar() { + int i = 1; + + foreach (var exercicio in Exercicios) { + Console.WriteLine("{0}) {1}", i, exercicio.Key); + i++; + } + + Console.Write("Digite o número (ou vazio para o último)? "); + + int.TryParse(Console.ReadLine(), out int num); + bool numValido = num > 0 && num <= Exercicios.Count; + num = numValido ? num - 1 : Exercicios.Count - 1; + + string nomeDoExercicio = Exercicios.ElementAt(num).Key; + + Console.Write("\nExecutando exercício "); + Console.BackgroundColor = ConsoleColor.Yellow; + Console.ForegroundColor = ConsoleColor.Black; + Console.WriteLine(nomeDoExercicio); + Console.ResetColor(); + + Console.WriteLine(String.Concat( + Enumerable.Repeat("=", nomeDoExercicio.Length + 21)) + "\n"); + + Action executar = Exercicios.ElementAt(num).Value; + try { + executar(); + } catch(Exception e) { + Console.BackgroundColor = ConsoleColor.Red; + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine("Ocorreu um erro: {0}", e.Message); + Console.ResetColor(); + + Console.WriteLine(e.StackTrace); + } + } + } +} \ No newline at end of file diff --git "a/Exerc\303\255cios/Program.cs" "b/Exerc\303\255cios/Program.cs" new file mode 100644 index 0000000..2095291 --- /dev/null +++ "b/Exerc\303\255cios/Program.cs" @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; + +using CursoCSharp.Fundamentos; + +namespace CursoCSharp { + class Program { + static void Main(string[] args) { + var central = new CentralDeExercicios(new Dictionary() { + {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, + }); + + central.SelecionarEExecutar(); + } + } +} \ No newline at end of file From 410cb442652a97356884111077aec19908be4546 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 1 May 2021 22:26:21 -0300 Subject: [PATCH 06/41] Create "Aula 15 - Problema - Multiplos Main" --- .../Aula 15 - Problema - Multiplos Main.md" | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" new file mode 100644 index 0000000..2d6afcb --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" @@ -0,0 +1,19 @@ +# Aula 15 - Problema - Multiplos Main + +### Erro - CS0017 + +> *Programa tem mais de um ponto de entrada definido. Compilar com /main para especificar o tipo que contém o ponto de entrada.* + +### Possíveis resoluções: + +* Resolução 1: Renomeando o método **`Main()`** em cada arquivo de classe. + * Ex.: **`Main2()`**, no arquivo de classe *PrimeiroPrograma.cs*. + +* Resolução 2: Alterando as propriedades do projeto + * botão direito no projeto *CursoCSharp* + * Opção "Propriedades" > Aplicativo + * No campo *Objeto de inicialização:* + * podemos definir qual ponto de entrada será lido prioritariamente pelo VS. + * Mas para objetivo de aula iremos manter a opção *(Não definido)*, como padrão. + +#### Resolução 3: \ No newline at end of file From 54b60a1f02e5382832b13ac5f595b9cb0c6b2084 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 4 May 2021 08:16:41 -0300 Subject: [PATCH 07/41] Update "Aula 14 - Link para material" --- .../Aula 14 - Link para material.md" | 2 +- .../CursoCSharp/CentralDeExercicios.cs | 0 .../CursoCSharp/Fundamentos/PrimeiroPrograma.cs | 2 +- CursoCSharp/CursoCSharp/Program.cs | 13 ++++++++----- "Exerc\303\255cios/Program.cs" | 16 ---------------- 5 files changed, 10 insertions(+), 23 deletions(-) rename "Exerc\303\255cios/CentralDeExercicios.cs" => CursoCSharp/CursoCSharp/CentralDeExercicios.cs (100%) delete mode 100644 "Exerc\303\255cios/Program.cs" diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" index 92c6f6c..2673dd9 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 14 - Link para material.md" @@ -2,4 +2,4 @@ * **Link para acessar o material que será utilizado na próxima aula:** -[Central de exercícios](D:\repoCode\cod3r\Exercícios\CentralDeExercicios.cs) +[Central de exercícios](D:\repoCode\cod3r\util\central.zip) diff --git "a/Exerc\303\255cios/CentralDeExercicios.cs" b/CursoCSharp/CursoCSharp/CentralDeExercicios.cs similarity index 100% rename from "Exerc\303\255cios/CentralDeExercicios.cs" rename to CursoCSharp/CursoCSharp/CentralDeExercicios.cs diff --git a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs index c7237c9..4bb373d 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs @@ -2,7 +2,7 @@ namespace CursoCSharp.Fundamentos { class PrimeiroPrograma { - static void Main() + public static void Executar() { Console.Write("Primeiro "); Console.WriteLine("Programa"); diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 639ea36..2095291 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -1,13 +1,16 @@ using System; +using System.Collections.Generic; + +using CursoCSharp.Fundamentos; namespace CursoCSharp { class Program { static void Main(string[] args) { - Console.WriteLine("Hello World!"); + var central = new CentralDeExercicios(new Dictionary() { + {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, + }); - { - Console.WriteLine("Hello World!"); - } + central.SelecionarEExecutar(); } } -} +} \ No newline at end of file diff --git "a/Exerc\303\255cios/Program.cs" "b/Exerc\303\255cios/Program.cs" deleted file mode 100644 index 2095291..0000000 --- "a/Exerc\303\255cios/Program.cs" +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; - -using CursoCSharp.Fundamentos; - -namespace CursoCSharp { - class Program { - static void Main(string[] args) { - var central = new CentralDeExercicios(new Dictionary() { - {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, - }); - - central.SelecionarEExecutar(); - } - } -} \ No newline at end of file From 7090678acbdf662dc93c8fd8650fbc8d259b4c17 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 4 May 2021 09:01:37 -0300 Subject: [PATCH 08/41] Update "Aula 15 - Problema - Multiplos Main" --- .../Aula 13 - Primeiro Programa.md" | 2 +- .../Aula 15 - Problema - Multiplos Main.md" | 21 +++++++++++++++++-- .../Fundamentos/PrimeiroPrograma.cs | 3 +-- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" index bc3a439..64d4d20 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 13 - Primeiro Programa.md" @@ -40,7 +40,7 @@ reservada *System* da sentença, mantendo-a apenas na declaração do `using`. * **`CTRL` + `.`**, exibe a resolução propósta pela IDE para correção de erros na sintáxe do código e deixá-lo mais simples e elegante. -* **`cw`** - ao digitarmos e teclarmos `TAB` a IDE irá escrever o código `Console.WriteLine();` +* **`cw`** - ao digitarmos e teclarmos `TAB` 2x, a IDE irá escrever o código `Console.WriteLine();` #### **Console.Write** - [5:40] diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" index 2d6afcb..6b30f04 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 15 - Problema - Multiplos Main.md" @@ -4,7 +4,7 @@ > *Programa tem mais de um ponto de entrada definido. Compilar com /main para especificar o tipo que contém o ponto de entrada.* -### Possíveis resoluções: +### Possibilidades para resolver: * Resolução 1: Renomeando o método **`Main()`** em cada arquivo de classe. * Ex.: **`Main2()`**, no arquivo de classe *PrimeiroPrograma.cs*. @@ -16,4 +16,21 @@ * podemos definir qual ponto de entrada será lido prioritariamente pelo VS. * Mas para objetivo de aula iremos manter a opção *(Não definido)*, como padrão. -#### Resolução 3: \ No newline at end of file +#### Resolução 3 + +* Nossas classes serão criadas com um padrão para cada aula. + +>```cs +> public static void Executar() {} +>``` + + * e iremos acrescentar ao nosso arquivo **Program.cs**, +dentro do método **`Main()`** uma nova linha referenciando essa classe. +Ex.: +>```cs +> {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, +>``` + + * Descrição: *"Primeiro Programa - Fundamentos"* - para identificarmos o programa que será lido + * Classe: *`PrimeiroPrograma`* - chamada da classe + * Método: *`Executar`* - o método dentro dessa classe que será executado. \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs index 4bb373d..8ff2615 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/PrimeiroPrograma.cs @@ -2,8 +2,7 @@ namespace CursoCSharp.Fundamentos { class PrimeiroPrograma { - public static void Executar() - { + public static void Executar() { Console.Write("Primeiro "); Console.WriteLine("Programa"); Console.WriteLine("Terminou!"); From b39083d46f79762bbbec101da4123b7af82a8419 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 4 May 2021 10:28:47 -0300 Subject: [PATCH 09/41] =?UTF-8?q?Create=20"Aula=2016=20-=20Coment=C3=A1rio?= =?UTF-8?q?s=20de=20C=C3=B3digo"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... - Coment\303\241rios de C\303\263digo.md" | 70 +++++++++++++++++++ .../CursoCSharp/Fundamentos/Comentarios.cs | 18 +++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 89 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 16 - Coment\303\241rios de C\303\263digo.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/Comentarios.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 16 - Coment\303\241rios de C\303\263digo.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 16 - Coment\303\241rios de C\303\263digo.md" new file mode 100644 index 0000000..2d432f8 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 16 - Coment\303\241rios de C\303\263digo.md" @@ -0,0 +1,70 @@ +# Aula 16 - Comentários de Código + +## Iniciando a Rotina de aula + +* Criar um arquivo dentro do nosso projeto + * Botão direito na pasta *Fundamentos* + * Adicionar > Novo item... + * Itens do Visual C# > Classe + * No campo *Nome:* - nomeie o arquivo + * Ex.: *Comentarios.cs* + * Botão Adicionar para concluir o processo. + +* Criar um método `Executar()` + * dentro da `class Comentarios {}` + + >```cs + > public static void Executar() {} + >``` + +* Add a referência do exercício dentro de *Program.cs* + * dentro do método **`Main()`** + + > ```cs + > {"Comentários - Fundamentos", Comentarios.Executar}, + >``` + +## Comentários de Código - (2:59) + +* **`//`** - Comentário de linha + * Utilizamos para comentar uma linha de código específica + * Para adicionar algum comentário simples sobre o trecho de código a seguir + +* **`///`** - XML Comments + * o C# tem o comentário que cria tags XML + * como por exemplo: `` + * onde podemos criar um sumário do código desenvolvido + * especificando, por exemplo, o que o método faz + * especificação sobre um parâmetro se colocarmos o +*XML Comments* diretamente acima da método com parametros + * o C# irá criar as tags `` + * e tudo isso serve também para gerar documentação fora do código + * que poderá se consumida em um formato mais amigável + * Ex.: tag `` + * que faz uma referência para outra parte da documentação + +* **`/* */`** - Comentários de Múltipas linhas + * Utilizamos para adicionar comentários que ocupará mais de uma linha + * também utilizado para comentar blocos de códigos + +## Boas práticas + +* Faz com que tenhamos pouca necessidade de comentários no meio do código + * Código claro + * Bons nomes + * fácil leitura + +* Num contexto de CURSO é importante que todo o código seja comentado + +* Em um contexto REAL, não faz sentido o uso de um comentário óbivio + +#### Teclas de atalho + +* **`CRTL`+ `C`** - para comentar uma linha ou um trecho de código selecionado + +* **`CTRL` + `U`** - para descomentar uma linha ou um trecho de código selecionado + +#### Menu +* Editar > Avançado + * Definir Seleção Como Comentário + * Remover definição de seleção como comentário \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/Comentarios.cs b/CursoCSharp/CursoCSharp/Fundamentos/Comentarios.cs new file mode 100644 index 0000000..0ce2f99 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/Comentarios.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos { + + /// + /// + /// + class Comentarios { + public static void Executar() { + // Cuidado com os comentários desnecessários + Console.WriteLine("Código claro é sempre melhor!"); + + Console.WriteLine("O C# tem o XML Comments"); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 2095291..de16a1f 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -8,6 +8,7 @@ class Program { static void Main(string[] args) { var central = new CentralDeExercicios(new Dictionary() { {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, + {"Comentários - Fundamentos", Comentarios.Executar}, }); central.SelecionarEExecutar(); From 7f4879f8f715479ba1d173edf79058a07a68e36f Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 4 May 2021 13:49:48 -0300 Subject: [PATCH 10/41] =?UTF-8?q?Create=20"Aula=2017=20-=20Vari=C3=A1veis?= =?UTF-8?q?=20e=20Constantes"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ula 17 - Vari\303\241veis e Constantes.md" | 98 +++++++++++++++++++ .../Fundamentos/VariaveisEConstantes.cs | 65 ++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 7 +- 3 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 17 - Vari\303\241veis e Constantes.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 17 - Vari\303\241veis e Constantes.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 17 - Vari\303\241veis e Constantes.md" new file mode 100644 index 0000000..ccb0b70 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 17 - Vari\303\241veis e Constantes.md" @@ -0,0 +1,98 @@ +# Aula 17 - Variáveis e Constantes + +### Atalho + +* **`CTRL` + `D`** - Duplicar linha + +* Rotina de criação do arquivo da aula + * Na pasta Fundamentos + * `VariaveisEConstantes.cs` + * No método **`Main()`** do **Program.cs** + * `{"Variáveis e Constantes - Fundamentos",VariaveisEConstantes.Executar},` + +* C# é uma linguagem fortemente tipada + +## Variáveis + +Pode ser alterada durante a execução do algoritmo do programa + +### Exemplo de Declaração: + +* `double raio = 4.5;` + * **`double`**: Tipo da variável (números de ponto flutuante) + * **`raio`**: Nome da variável (identificador) + * **`=`**: sinal de atribuição à variável + * **`4.5`**: Valor atribuido à variável + * **`;`**: para finalizar a sentença + +## Constantes + +Não permite que esse identificador seja alterado +durante todo o algoritmo do programa + +* `const double PI = 3.14;` + * **`const`**: Define que o identificador será uma constante + * **`double`**: Tipo da variável (números de ponto flutuante) + * **`PI`**: Nome da variável (identificador) + * **`=`**: sinal de atribuição à variável + * **`3.14`**: Valor atribuido à variável + * **`;`**: para finalizar a sentença + +## Tipos Internos + +### Tipo Booleano + +* **bool** -> `true` e `false` + +### Tipos Inteiros + +* **byte** -> constituído por 8 Bits (0 a 255) +* **sbyte** -> tipo byte que aceita sinal, aceita um range entre positivos e negativos (-127 a 128) + * `MinValue` -> método que exibe o valor mínimo + * neste caso o menor valor de **sbyte** + +* **short** -> constituído por 2 bytes (maior valor: 32767) + +* **int** -> constituído por 4 bytes (menor valor: -2147483648) + * Mais usado dos inteiros! +* **uint (unsigned Int)** -> constituído por 4 bytes sem sinal (menor valor: 0 - maior: 4.294.967.295) + * `populacaoBrasileira = 207_600_000;` + * podemos usar o "_" como separador universal + * isso permite clareza na leitura do número no código + +* **long** -> 8 bytes, range entre positivos e negativos +* **ulong (unsigned long)** -> apenas positivos + * `populacaoMundial = 7_600_000_000;` + * podemos usar o "_" como separador universal + * isso permite clareza na leitura do número no código + +### Tipos Reais + +* **float** -> 4 bytes + * deve ter a letra *f* após o número com ponto flutuante + * sem essa notação o C# irá entender que o número é um **double** (que é dobro do float) + +* **double** -> 8 bytes + * Mais usado dos reais! + * utilizar preferencialmente + +* **decimal** + * muito utilizado para números astronômicos + * valor máximo: 79228162514264337593543950335 + +### Tipos Caracteres + +* **char** -> 1 caractere + * delimitado por aspas simples + * Ex.: `char letra = 'b';` + * se colocarmos mais de uma letra dentro das aspas simples o C# acusará erro + +* **string** -> cadeia de caracteres + * delimitado por aspas duplas + * Ex.: `string texto = "Seja bem vindo ao Curso de C#!";` + +## Notação + +* **Camel Case** é a prática de escrever palavras compostas ou frases de modo que cada palavra ou abreviatura no meio da frase comece com uma letra maiúscula. + +* **Pascal Case** é a prática de escrever palavras compostas ou frases de modo que cada palavra ou abreviatura comece com uma letra maiúscula. diff --git a/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs b/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs new file mode 100644 index 0000000..36cb18f --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class VariaveisEConstantes + { + public static void Executar() { + // área da circunferência + double raio = 4.5; + const double PI = 3.14; + + // modificando o valor da variável + raio = 5.5; + //PI = 3.1415; -> mostra que não é possível alterar uma constante + + double area = PI * raio * raio; + Console.WriteLine(area); + Console.WriteLine("A área da da circunferência é: " + area); + + // Tipo internos + + bool estaChovendo = true; + Console.WriteLine("Está chovendo? " + estaChovendo); + + //byte idade = 41; + byte idade = byte.MaxValue; + Console.WriteLine("Idade " + idade); + + sbyte saldoDeGols = sbyte.MinValue; + Console.WriteLine("Saldo de Gols " + saldoDeGols); + + short salario = short.MaxValue; + Console.WriteLine("Salario " + salario); + + int menorValor = int.MinValue; // Mais usado dos inteiros! + Console.WriteLine("Menor Int " + menorValor); + + uint populacaoBrasileira = 207_600_000; // podemos usar o "_" como separador universal + Console.WriteLine("População 'fake' brasileira é " + populacaoBrasileira); + + long menorValorLong = long.MinValue; + Console.WriteLine("Menor long " + menorValorLong); + + ulong populacaoMundial = 7_600_000_000; + Console.WriteLine("População Mundial " + populacaoMundial); + + float precoComputador = 1299.99f; + Console.WriteLine("Preço Computador " + precoComputador); + + double valorDeMercadoDaApple = 1_000_000_000_000.00; // Mais usdado dos reais! + Console.WriteLine("Valor de mercado da Apple " + valorDeMercadoDaApple); + + decimal distanciaEntreEstrelas = decimal.MaxValue; + Console.WriteLine("Distância entre as estrelas " + distanciaEntreEstrelas); + + char letra = 'b'; + Console.WriteLine("Letra " + letra); + + string texto = "Seja bem vindo ao Curso de C#!"; + Console.WriteLine(texto); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index de16a1f..9a6e2e7 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -3,12 +3,15 @@ using CursoCSharp.Fundamentos; -namespace CursoCSharp { - class Program { +namespace CursoCSharp +{ + class Program + { static void Main(string[] args) { var central = new CentralDeExercicios(new Dictionary() { {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, {"Comentários - Fundamentos", Comentarios.Executar}, + {"Variáveis e Constantes - Fundamentos",VariaveisEConstantes.Executar}, }); central.SelecionarEExecutar(); From 3f75363537ee0e6e455ff3fec5677380d46190c0 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 4 May 2021 14:22:09 -0300 Subject: [PATCH 11/41] =?UTF-8?q?Create=20"Aula=2018=20-=20Infer=C3=AAncia?= =?UTF-8?q?=20de=20Tipos"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 18 - Infer\303\252ncia de Tipos.md" | 24 +++++++++++++++++++ .../CursoCSharp/Fundamentos/Inferencia.cs | 24 +++++++++++++++++++ .../Fundamentos/VariaveisEConstantes.cs | 2 +- CursoCSharp/CursoCSharp/Program.cs | 3 ++- 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 18 - Infer\303\252ncia de Tipos.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/Inferencia.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 18 - Infer\303\252ncia de Tipos.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 18 - Infer\303\252ncia de Tipos.md" new file mode 100644 index 0000000..0bed9df --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 18 - Infer\303\252ncia de Tipos.md" @@ -0,0 +1,24 @@ +# Aula 18 - Inferência de Tipos + +* `Inferencia.cs` +* `{"Inferências - Fundamentos", Inferencia.Executar},` + +* A **inferência** dentro do C# é tratada internamente pela linguagem +* Ex.: `var nome = "Hamilton";` +* **`var`**: mesmo não sendo um padrão de tipagem forte, o C# acata + * internamente o C# olha para o valor `"Hamilton"` + * por estar entre aspas duplas, ele infere que o valor é um tipo **string** + * se tentarmos colocar um valor do tipo inteiro posteriormente + * o C# reclamará erro de conversão do tipo int para string + * entendendo que uma variável do tipo **string** + * não pode receber um valor inteiro + +* outra deficiência da **inferência** + * quando se cria uma variável com tipo **`var`** + * para que o próprio compilador descubra o seu tipo + * essa variável não pode ser criada sem um valor definido + * se ocorrer de fazermos a atribuição em outra linha o C# reclamará o seguinte erro: + * > `var idade;` - **declaração** + * > `idade = 41;` - **atribuição** + * *Variáveis de tipo implícito devem ser inicializadas* + * > `var idade = 41;` - **declaração e inicialização** \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/Inferencia.cs b/CursoCSharp/CursoCSharp/Fundamentos/Inferencia.cs new file mode 100644 index 0000000..40e689a --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/Inferencia.cs @@ -0,0 +1,24 @@ +using System; + +namespace CursoCSharp.Fundamentos +{ + class Inferencia + { + public static void Executar() { + var nome = "Hamilton"; + // nome = 123; + Console.WriteLine(nome); + + // int idade; + var idade = 41; + Console.WriteLine(idade); + + int a; + a = 3; + + int b = 2; + + Console.WriteLine(a + b); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs b/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs index 36cb18f..ed87f19 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs @@ -49,7 +49,7 @@ public static void Executar() { float precoComputador = 1299.99f; Console.WriteLine("Preço Computador " + precoComputador); - double valorDeMercadoDaApple = 1_000_000_000_000.00; // Mais usdado dos reais! + double valorDeMercadoDaApple = 1_000_000_000_000.00; // Mais usado dos reais! Console.WriteLine("Valor de mercado da Apple " + valorDeMercadoDaApple); decimal distanciaEntreEstrelas = decimal.MaxValue; diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 9a6e2e7..8ad885f 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -11,7 +11,8 @@ static void Main(string[] args) { var central = new CentralDeExercicios(new Dictionary() { {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, {"Comentários - Fundamentos", Comentarios.Executar}, - {"Variáveis e Constantes - Fundamentos",VariaveisEConstantes.Executar}, + {"Variáveis e Constantes - Fundamentos", VariaveisEConstantes.Executar}, + {"Inferências - Fundamentos", Inferencia.Executar}, }); central.SelecionarEExecutar(); From 57c6df08c377e645743f166d713af14a3b1e8089 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 4 May 2021 14:53:49 -0300 Subject: [PATCH 12/41] =?UTF-8?q?Create=20"Aula=2019=20-=20Interpola=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20Strings"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Interpola\303\247\303\243o de Strings.md" | 31 +++++++++++++++++++ .../CursoCSharp/Fundamentos/Interpolacao.cs | 25 +++++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 57 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 19 - Interpola\303\247\303\243o de Strings.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/Interpolacao.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 19 - Interpola\303\247\303\243o de Strings.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 19 - Interpola\303\247\303\243o de Strings.md" new file mode 100644 index 0000000..1c092b2 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 19 - Interpola\303\247\303\243o de Strings.md" @@ -0,0 +1,31 @@ +# Aula 19 - Interpolação de Strings + +* Interpolacao.cs +* `{"Interpolação de Strings - Fundamentos", Interpolacao.Executar},` + +* Até aqui estavamos utilizando como padrão, + * a **concatenação** para exibição do texto no console. + * Ex.: + + >```cs + > Console.WriteLine("O " + nome + " da marca " + marca + " custa R$" + preco + "."); + >``` + +## Utilizando a interpolação + +### Primeira forma: + +* Numerando as interpolações com índices + +```cs + Console.WriteLine("O {0} da marca {1} custa R${2}.", nome, marca, preco); +``` + +### Segunda forma: + +* Informando os nomes das próprias variáveis +* para isso, add **`$`** (modificador) no início da string. + +```cs + Console.WriteLine($"A marca {marca} é legal!"); +``` \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/Interpolacao.cs b/CursoCSharp/CursoCSharp/Fundamentos/Interpolacao.cs new file mode 100644 index 0000000..93c14f2 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/Interpolacao.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class Interpolacao + { + public static void Executar() { + string nome = "Notebook Gamer"; + string marca = "Dell"; + double preco = 5800.00; + + Console.WriteLine("O " + nome + " da marca " + + marca + " custa R$" + preco + "."); + + Console.WriteLine("O {0} da marca {1} custa R${2}.", + nome, marca, preco); + + Console.WriteLine($"A marca {marca} é legal!"); + + Console.WriteLine($"A soma de 1 + 1 = {1 + 1}"); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 8ad885f..347fabc 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -13,6 +13,7 @@ static void Main(string[] args) { {"Comentários - Fundamentos", Comentarios.Executar}, {"Variáveis e Constantes - Fundamentos", VariaveisEConstantes.Executar}, {"Inferências - Fundamentos", Inferencia.Executar}, + {"Interpolação de Strings - Fundamentos", Interpolacao.Executar}, }); central.SelecionarEExecutar(); From 13e83c458ead6b958e75511968df2afb87d57aea Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Wed, 5 May 2021 20:31:29 -0300 Subject: [PATCH 13/41] =?UTF-8?q?Create=20"Aula=2020=20-=20Nota=C3=A7?= =?UTF-8?q?=C3=A3o=20Ponto"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 20 - Nota\303\247\303\243o Ponto.md" | 38 +++++++++++++++++++ .../CursoCSharp/Fundamentos/NotacaoPonto.cs | 20 ++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 59 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 20 - Nota\303\247\303\243o Ponto.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 20 - Nota\303\247\303\243o Ponto.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 20 - Nota\303\247\303\243o Ponto.md" new file mode 100644 index 0000000..7885e51 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 20 - Nota\303\247\303\243o Ponto.md" @@ -0,0 +1,38 @@ +# Aula 20 - Notação Ponto + +* NotacaoPonto.cs +* {"Notação Ponto - Fundamentos", NotacaoPonto.Executar}, + +* Utilizamos a **Notação Ponto** para acessar os membros de classe. + * nos dá acesso a muitas funcionalidades + * sempre associado ao que está antes da **Notação Ponto**. Ex.: + * Se for um **texto**, então funcionalidades referente a texto + * Se for **número**, então funcionalidades referente a número + * Se for algo que esteja **vázio**, podemos usar uma **`?`** + >```cs + > string valorImportante = null; + > Console.WriteLine(valorImportante?.Length); + >``` + + * Isso faz com que esse valor só seja acessado + * se de fato a variável **`valorImportante`** + * esteja definida + * se estiver vazia ela não será acessada e retonará um valor vazio + * é o que chamamos de ***Navegação Segura*** entre as chamadas- (evitar erro) + * ***Object reference not set to an instance of an object.*** + +```cs +var saudacao = "olá".ToUpper().Insert(3, " World!").Replace("World!", "Mundo!"); +``` + +* A variável `saudacao` irá receber + * uma string "olá" + * com a **Notação Ponto** serão chamadas + * a funcionalidade **`ToUpper()`**, que transformará esse texto em maiúsculas "OLÁ" + * a funcionalidade **`Insert()`**, que adicionará na posição 3, o texto " World!" + * a funcionalidade **`Replace()`**, que substituirá + * o texto "World!" + * pelo texto "Mundo!" + +* Podemos encadear várias chamadas em uma única sentença de código. + diff --git a/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs b/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs new file mode 100644 index 0000000..ccb141d --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class NotacaoPonto + { + public static void Executar() { + var saudacao = "olá".ToUpper().Insert(3, " World!") + .Replace("World!", "Mundo!"); + Console.WriteLine(saudacao); + + Console.WriteLine("Teste".Length); + + string valorImportante = null; + Console.WriteLine(valorImportante.Length); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 347fabc..47f6fb4 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -14,6 +14,7 @@ static void Main(string[] args) { {"Variáveis e Constantes - Fundamentos", VariaveisEConstantes.Executar}, {"Inferências - Fundamentos", Inferencia.Executar}, {"Interpolação de Strings - Fundamentos", Interpolacao.Executar}, + {"Notação Ponto - Fundamentos", NotacaoPonto.Executar}, }); central.SelecionarEExecutar(); From 417d15f743518e0c36d1b2894cbd65b0850ce5cd Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Fri, 7 May 2021 18:57:17 -0300 Subject: [PATCH 14/41] Update NotacaoPonto.cs --- CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs b/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs index ccb141d..56e4477 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/NotacaoPonto.cs @@ -14,7 +14,7 @@ public static void Executar() { Console.WriteLine("Teste".Length); string valorImportante = null; - Console.WriteLine(valorImportante.Length); + Console.WriteLine(valorImportante?.Length); } } } From 0b4ab754a6ef32591758f25a48913b890e5fe31e Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Fri, 7 May 2021 20:43:00 -0300 Subject: [PATCH 15/41] Create "Aula 21 - Lendo Dados do Console" --- .../Aula 21 - Lendo Dados do Console.md" | 43 +++++++++++++++++++ .../CursoCSharp/Fundamentos/LendoDados.cs | 22 ++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 66 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 21 - Lendo Dados do Console.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/LendoDados.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 21 - Lendo Dados do Console.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 21 - Lendo Dados do Console.md" new file mode 100644 index 0000000..015c364 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 21 - Lendo Dados do Console.md" @@ -0,0 +1,43 @@ +# Aula 21 - Lendo Dados do Console + +* LendoDados.cs +* {"Lendo Dados do Console - Fundamentos", LendoDados.Executar}, + +## Recuperando informação do Console + +* **`Console.ReadLine()`** + * Sentença de código responsável por ler uma linha digitada no console + * Utilizamos para pegar a entrada de dado pelo próprio console + * e armazenar de forma dinâmica na variável + * Por padrão todo dado capturado pelo **`ReadLine`** é uma string + +### Conversões + +* Quando as informações capturadas forem dados do tipo numérico: + * precisaremos converter conforme necessidade + * Para isso utilizaremos o **`Parse()`**, Ex.: + * conversão para um tipo inteiro + + >```cs + > int idade = int.Parse(Console.ReadLine()); + >``` + + * conversão para um tipo double + + >```cs + > double salario = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); + >``` + +### System.Globalization + +* Em relação ao *salário*, no terminal o separador de casas decimais deverá ser digitado com: + * *vírgula*, se a configuração do Sistema Operacional estiver em pt-BR. + + * *ponto*, se a configuração do Sistema Operacional estiver no padrão americano. + +> Porém é possível padronizarmos o *ponto* como separador de casas decimais, independente da configuração do S.O. + +Pra isso utilizaremos do **`System.Globalization;`** o + * **`CultureInfo.InvariantCulture`** + * Ou seja, utilizará a *cultura Invariante* + * não olhando para o símbolos culturais configurados no S.O. \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/LendoDados.cs b/CursoCSharp/CursoCSharp/Fundamentos/LendoDados.cs new file mode 100644 index 0000000..f807677 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/LendoDados.cs @@ -0,0 +1,22 @@ +using System; +using System.Globalization; + +namespace CursoCSharp.Fundamentos +{ + class LendoDados + { + public static void Executar() { + Console.Write("Qual o seu nome? "); + string nome = Console.ReadLine(); + + Console.Write("Qual é a sua idade? "); + int idade = int.Parse(Console.ReadLine()); + + Console.Write("Qual é o seu salário? "); + double salario = double.Parse(Console.ReadLine(), + CultureInfo.InvariantCulture); + + Console.WriteLine($"{nome} tem {idade} anos e recebe um salário de R${salario}"); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 47f6fb4..091ea09 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -15,6 +15,7 @@ static void Main(string[] args) { {"Inferências - Fundamentos", Inferencia.Executar}, {"Interpolação de Strings - Fundamentos", Interpolacao.Executar}, {"Notação Ponto - Fundamentos", NotacaoPonto.Executar}, + {"Lendo Dados - Fundamentos", LendoDados.Executar}, }); central.SelecionarEExecutar(); From b61c2eea17ca997a83088dd0f8b0d3e39de9920a Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Fri, 7 May 2021 22:50:33 -0300 Subject: [PATCH 16/41] =?UTF-8?q?Create=20"Aula=2022=20-=20Formatando=20N?= =?UTF-8?q?=C3=BAmeros"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 22 - Formatando N\303\272meros.md" | 44 +++++++++++++++++++ .../Fundamentos/FormatandoNumero.cs | 25 +++++++++++ .../Fundamentos/VariaveisEConstantes.cs | 2 +- CursoCSharp/CursoCSharp/Program.cs | 1 + 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 22 - Formatando N\303\272meros.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/FormatandoNumero.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 22 - Formatando N\303\272meros.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 22 - Formatando N\303\272meros.md" new file mode 100644 index 0000000..cc3b0d7 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 22 - Formatando N\303\272meros.md" @@ -0,0 +1,44 @@ +# Aula 22 - Formatando Números + +* FormatandoNumero.cs +* {"Formatando Número - Fundamentos", FormatandoNumero.Executar}, + +## Símbolos de Formatação + +>```cs +> double valor = 15.175; +> Console.WriteLine(valor.ToString("F1")); +>``` + +* **`ToString("F1")`** + * Transformamos o valor numérico para uma string + * Dentro dele informamos qual o tipo de critério/formatação ele deve usar + + * **`"F1"`(float)** - Formata o número decimal com apenas **uma casa decimal** + * as casas decimais serão arredondadas para exibir apenas um valor após a vírgula + + * **`"C"` (currency)** - Formata o **`valor`** e exibe como um valor monetário + + * **`"P"` (Percent)** - Multiplica o **`valor`** por 100 e Formata a exibição em percentual + + * **`"#.##"`** - Formatação como máscara para ser exibido + * as casas decimais também sofrerão arredondamento + + * para este exemplo podemos padronizar a *cultura* de exibição + * independente da configuração do SO, pra isso: + > `using System.Globalization;` + +>```cs +> CultureInfo culturaBr = new CultureInfo("pt-BR"); +> Console.WriteLine(valor.ToString("C0", culturaBr)); +>``` + +* 1º parâmetro: **`"C0"`** - Currency sem casas decimais +* 2º parâmetro: **`cultura`** - exibir conforme a cultura parametrizada + +>```cs +> int inteiro = 256; +> Console.WriteLine(inteiro.ToString("D10")); +>``` + +* **`"D10"`** - Formata para *decimal* com 10 posições, completando com **zeros a esquerda** diff --git a/CursoCSharp/CursoCSharp/Fundamentos/FormatandoNumero.cs b/CursoCSharp/CursoCSharp/Fundamentos/FormatandoNumero.cs new file mode 100644 index 0000000..acdcd6a --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/FormatandoNumero.cs @@ -0,0 +1,25 @@ +using System; +using System.Globalization; + +namespace CursoCSharp.Fundamentos +{ + class FormatandoNumero + { + public static void Executar() { + double valor = 15.175; + Console.WriteLine(valor.ToString("F1")); + Console.WriteLine(valor.ToString("C")); + Console.WriteLine(valor.ToString("P")); + Console.WriteLine(valor.ToString("#.##")); + + CultureInfo culturaBr = new CultureInfo("pt-BR"); + Console.WriteLine(valor.ToString("C0", culturaBr)); + + CultureInfo culturaUs = new CultureInfo("en-US"); + Console.WriteLine(valor.ToString("C3", culturaUs)); + + int inteiro = 256; + Console.WriteLine(inteiro.ToString("D10")); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs b/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs index ed87f19..454820c 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/VariaveisEConstantes.cs @@ -46,7 +46,7 @@ public static void Executar() { ulong populacaoMundial = 7_600_000_000; Console.WriteLine("População Mundial " + populacaoMundial); - float precoComputador = 1299.99f; + float precoComputador = 1299.99F; Console.WriteLine("Preço Computador " + precoComputador); double valorDeMercadoDaApple = 1_000_000_000_000.00; // Mais usado dos reais! diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 091ea09..c9b5abe 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -16,6 +16,7 @@ static void Main(string[] args) { {"Interpolação de Strings - Fundamentos", Interpolacao.Executar}, {"Notação Ponto - Fundamentos", NotacaoPonto.Executar}, {"Lendo Dados - Fundamentos", LendoDados.Executar}, + {"Formatando Número - Fundamentos", FormatandoNumero.Executar}, }); central.SelecionarEExecutar(); From a572c0e23757047bcc200589cfaa64aa4d2cdc42 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 8 May 2021 00:39:30 -0300 Subject: [PATCH 17/41] =?UTF-8?q?Create=20"Aula=2023=20-=20Convers=C3=B5es?= =?UTF-8?q?"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 23 - Convers\303\265es.md" | 84 +++++++++++++++++++ .../CursoCSharp/Fundamentos/Conversoes.cs | 37 ++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 122 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/Conversoes.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" new file mode 100644 index 0000000..df4c25c --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" @@ -0,0 +1,84 @@ +# Aula 23 - Conversões + +* Conversoes.cs +* {"Conversões - Fundamentos", Conversoes.Executar}, + +## Regras de conversão + +* Se na conversão houver possibilidade de perda de informação: + * Devemos **explicitar** que queremos converter um número em outro + +### Situações que podem haver perda de informação + +1. Transformar um **número real** com casas decimais para um **inteiro** +2. **double** para **float** - onde o primeiro tem uma quantidade de armazenamento superior em relação ao segundo + +> **O compilador não olha para o valor da variável e sim para o tipo, no momento da conversão. +> Caso não seja uma conversão explícita, não será permitida tal conversão.** + +## Conversão Implícita + +>```cs +> int inteiro = 10; +> double quebrado = inteiro; +>``` + +* Neste exemplo houve uma conversão, porém, devido a capacidade de +armazenamento do tipo **double** ser maior que a do tipo **inteiro** +o compilador não irá reclamar. + +## Convesão Explícita + +### *Cast* + +>```cs +> double nota = 9.7; +> int notaTruncada = (int) nota; +>``` + +> Obs.: Neste tipo de conversão o valor será truncado, ou seja, o decimal será **arrancado** fora. + +***Caso não seja explicitada a conversão,*** + +>```cs +> double nota = 9.7; +> int notaTruncada = nota; +>``` + +***resultará no seguinte Erro:*** +> *Não é possível converter implicitamente tipo "double" em "int". +Existe uma conversão explícita (há uma conversão ausente?)* + +### *Parse()* + +>```cs +> string idadeString = Console.ReadLine(); +> int idadeInteiro = int.Parse(idadeString); +>``` + +### *Convert* + +>```cs +> idadeInteiro = Convert.ToInt32(idadeString); +> Console.WriteLine("Resultado {0}", idadeInteiro); +>``` + +### *TryParse()* + +* Forma segura de realizar a conversão de **string** para **int** + +>```cs +> Console.Write("Digite o primeiro número: "); +> string palavra = Console.ReadLine(); +> int numero1; +> int.TryParse(palavra, out numero1); +> Console.WriteLine("Resultado 1: {0}", numero1); +>``` + +* Exemplo refatorado + +>```cs +> Console.Write("Digite o segundo número: "); +> int.TryParse(Console.ReadLine(), out int numero2); +> Console.WriteLine("Resultado 2: {0}", numero2); +>``` \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/Conversoes.cs b/CursoCSharp/CursoCSharp/Fundamentos/Conversoes.cs new file mode 100644 index 0000000..b9cface --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/Conversoes.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class Conversoes + { + public static void Executar() { + int inteiro = 10; + double quebrado = inteiro; + Console.WriteLine(quebrado); + + double nota = 9.7; + int notaTruncada = (int) nota; + Console.WriteLine("Nota truncada: {0}", notaTruncada); + + Console.Write("Digite sua idade: "); + string idadeString = Console.ReadLine(); + int idadeInteiro = int.Parse(idadeString); + Console.WriteLine("Idade inserida {0}", idadeInteiro); + + idadeInteiro = Convert.ToInt32(idadeString); + Console.WriteLine("Resultado {0}", idadeInteiro); + + Console.Write("Digite o primeiro número: "); + string palavra = Console.ReadLine(); + int numero1; + int.TryParse(palavra, out numero1); + Console.WriteLine("Resultado 1: {0}", numero1); + + Console.Write("Digite o segundo número: "); + int.TryParse(Console.ReadLine(), out int numero2); + Console.WriteLine("Resultado 2: {0}", numero2); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index c9b5abe..597e5ac 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -17,6 +17,7 @@ static void Main(string[] args) { {"Notação Ponto - Fundamentos", NotacaoPonto.Executar}, {"Lendo Dados - Fundamentos", LendoDados.Executar}, {"Formatando Número - Fundamentos", FormatandoNumero.Executar}, + {"Conversões - Fundamentos", Conversoes.Executar}, }); central.SelecionarEExecutar(); From 88849e4a05f54383649bcc8e3e0fa178d52b51dc Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 8 May 2021 21:09:31 -0300 Subject: [PATCH 18/41] =?UTF-8?q?Update=20"Aula=2023=20-=20Convers=C3=B5es?= =?UTF-8?q?"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 23 - Convers\303\265es.md" | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" index df4c25c..ed27f04 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" @@ -5,16 +5,17 @@ ## Regras de conversão -* Se na conversão houver possibilidade de perda de informação: - * Devemos **explicitar** que queremos converter um número em outro +* Sempre que na conversão houver possibilidade de perda de informação: + * Devemos **explicitar** que queremos converter um tipo de número em outro ### Situações que podem haver perda de informação 1. Transformar um **número real** com casas decimais para um **inteiro** + 2. **double** para **float** - onde o primeiro tem uma quantidade de armazenamento superior em relação ao segundo -> **O compilador não olha para o valor da variável e sim para o tipo, no momento da conversão. -> Caso não seja uma conversão explícita, não será permitida tal conversão.** +> **O compilador não olha para o valor contido na variável e sim para o seu tipo, no momento da conversão. +> A menos que façamos a conversão de forma explícita, o compilador irá barrar a conversão.** ## Conversão Implícita @@ -38,16 +39,16 @@ o compilador não irá reclamar. > Obs.: Neste tipo de conversão o valor será truncado, ou seja, o decimal será **arrancado** fora. -***Caso não seja explicitada a conversão,*** +* ***Caso a conversão não seja explicitada,*** ->```cs -> double nota = 9.7; -> int notaTruncada = nota; ->``` + >```cs + > double nota = 9.7; + > int notaTruncada = nota; + >``` -***resultará no seguinte Erro:*** -> *Não é possível converter implicitamente tipo "double" em "int". -Existe uma conversão explícita (há uma conversão ausente?)* +* ***resultará no seguinte Erro:*** + > *Não é possível converter implicitamente tipo "double" em "int". + > Existe uma conversão explícita (há uma conversão ausente?)* ### *Parse()* @@ -56,6 +57,9 @@ Existe uma conversão explícita (há uma conversão ausente?)* > int idadeInteiro = int.Parse(idadeString); >``` +* ***Observação.:*** + > *Essa forma poderá gerar um erro para o programa, caso o que for digitado, não seja um número inteiro.* + ### *Convert* >```cs @@ -65,7 +69,8 @@ Existe uma conversão explícita (há uma conversão ausente?)* ### *TryParse()* -* Forma segura de realizar a conversão de **string** para **int** +* _Forma segura de realizar a conversão de **string** para **int**_ + > *Mesmo que se digite um valor que não é inteiro, será convertido para zero, __como padrão__, não gerando assim, erro no programa.* >```cs > Console.Write("Digite o primeiro número: "); From 9bc92f123f81ff7c0956c99ab5f4d387ddb78eb6 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 9 May 2021 08:44:22 -0300 Subject: [PATCH 19/41] =?UTF-8?q?Create=20"Aula=2024=20-=20Operadores=20Ar?= =?UTF-8?q?itm=C3=A9ticos"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ula 24 - Operadores Aritm\303\251ticos.md" | 37 +++++++++++++++++++ .../Fundamentos/OperadoresAritmeticos.cs | 37 +++++++++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 75 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/OperadoresAritmeticos.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" new file mode 100644 index 0000000..dda14f9 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" @@ -0,0 +1,37 @@ +# Aula 24 - Operadores Aritméticos + +* OperadoresAritmeticos.cs +* {"Operadores Aritméticos - Fundamentos", OperadoresAritmeticos.Executar}, + +## Soma, Subtração e Multiplicação + +```cs +// Preço Desconto +var preco = 1000.0; +var imposto = 355; +var desconto = 0.1; + +double total = preco + imposto; +var totalComDesconto = total - (total * desconto); +Console.WriteLine("O preço final é {0}", totalComDesconto); +``` + +## Divisão e **`Math.Pow()`** + +```cs +// IMC +double peso = 93.2; +double altura = 1.88; +double imc = peso / Math.Pow(altura, 2); +Console.WriteLine($"IMC é {imc}."); +``` + +## Módulo + +```cs +// Número Par/Impar +int par = 24; +int impar = 55; +Console.WriteLine("{0}/2 tem resto {1}", par, par % 2); +Console.WriteLine("{0}/2 tem resto {1}", impar, impar % 2); +``` diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAritmeticos.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAritmeticos.cs new file mode 100644 index 0000000..a90d138 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAritmeticos.cs @@ -0,0 +1,37 @@ +using System; +using System.Globalization; + +namespace CursoCSharp.Fundamentos +{ + class OperadoresAritmeticos + { + public static void Executar() { + // Preço Desconto + var preco = 1000.0; + var imposto = 355; + var desconto = 0.1; + + double total = preco + imposto; + var totalComDesconto = total - (total * desconto); + + CultureInfo culturaBr = new CultureInfo("pt-BR"); + Console.WriteLine($"O total do Preço + Imposto é de {total.ToString("C", culturaBr)}"); + Console.WriteLine($"Com o Desconto de {desconto.ToString("P0")}"); + Console.WriteLine("O preço final é {0}", totalComDesconto.ToString("C", culturaBr)); + + // IMC + double peso = 93.3; + double altura = 1.88; + double imc = peso / Math.Pow(altura, 2); + + Console.WriteLine($"O seu IMC é {imc.ToString("F1")}."); + + // Número Par/Impar + int par = 24; + int impar = 55; + + Console.WriteLine("{0}/2 tem resto {1}", par, par % 2); + Console.WriteLine("{0}/2 tem resto {1}", impar, impar % 2); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 597e5ac..07908ce 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -18,6 +18,7 @@ static void Main(string[] args) { {"Lendo Dados - Fundamentos", LendoDados.Executar}, {"Formatando Número - Fundamentos", FormatandoNumero.Executar}, {"Conversões - Fundamentos", Conversoes.Executar}, + {"Operadores Aritméticos - Fundamentos", OperadoresAritmeticos.Executar}, }); central.SelecionarEExecutar(); From aa2fbcc154b8c67d97f3a4407dec0fc6171748cb Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 9 May 2021 08:45:02 -0300 Subject: [PATCH 20/41] =?UTF-8?q?Update=20"Aula=2023=20-=20Convers=C3=B5es?= =?UTF-8?q?"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 23 - Convers\303\265es.md" | 2 +- .../S03A23-Exemplo-TryParse.md" | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/S03A23-Exemplo-TryParse.md" diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" index ed27f04..1d4c1d1 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 23 - Convers\303\265es.md" @@ -28,7 +28,7 @@ armazenamento do tipo **double** ser maior que a do tipo **inteiro** o compilador não irá reclamar. -## Convesão Explícita +## Convesão Explícita ### *Cast* diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/S03A23-Exemplo-TryParse.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/S03A23-Exemplo-TryParse.md" new file mode 100644 index 0000000..8ceb2fc --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/S03A23-Exemplo-TryParse.md" @@ -0,0 +1,5 @@ +```cs +Console.Write("Digite sua idade: "); +int.TryParse(Console.ReadLine(), out int idade); +Console.WriteLine("Você tem {0} anos.", idade); +``` \ No newline at end of file From 2558d98230b64d354b7352d3bf3b4d938bbbe20e Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 9 May 2021 09:29:01 -0300 Subject: [PATCH 21/41] =?UTF-8?q?Update=20"Aula=2024=20-=20Operadores=20Ar?= =?UTF-8?q?itm=C3=A9ticos"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 24 - Operadores Aritm\303\251ticos.md" | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" index dda14f9..4ae8d4a 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 24 - Operadores Aritm\303\251ticos.md" @@ -16,7 +16,7 @@ var totalComDesconto = total - (total * desconto); Console.WriteLine("O preço final é {0}", totalComDesconto); ``` -## Divisão e **`Math.Pow()`** +## Divisão e Potência ```cs // IMC @@ -26,7 +26,11 @@ double imc = peso / Math.Pow(altura, 2); Console.WriteLine($"IMC é {imc}."); ``` -## Módulo +* **`Math.Pow()`** + * 1o. argumento, refere-se a ***base*** + * 2o. argumento, refere-se ao ***expoente*** + +## Operador Módulo ```cs // Número Par/Impar From 053d8e24173d82cc434febb472290aabf6faf5e7 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 9 May 2021 09:29:30 -0300 Subject: [PATCH 22/41] Create "Aula 25 - Operadores Relacionais" --- .../Aula 25 - Operadores Relacionais.md" | 29 +++++++++++++++++++ .../Fundamentos/OperadoresRelacionais.cs | 24 +++++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 54 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 25 - Operadores Relacionais.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/OperadoresRelacionais.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 25 - Operadores Relacionais.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 25 - Operadores Relacionais.md" new file mode 100644 index 0000000..d1b19b3 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 25 - Operadores Relacionais.md" @@ -0,0 +1,29 @@ +# Aula 25 - Operadores Relacionais + +* O resultado de um operador relacional sempre será **verdadeiro** ou **falso** +* Ou seja, o resultado é ***Boleano (bool)*** + +* OperadoresRelacionais.cs +* {"Operadores Relacionais - Fundamentos", OperadoresRelacionais.Executar}, + +## Notações + +* **`>`** - Maior que +* **`<`** - Menor que +* **`==`** - Igualdade +* **`!=`** - Diferente +* **`>=`** - Maior ou igual a +* **`<=`** - Menor ou igual a + +```cs +double nota = 6.0; +double notaDeCorte = 7.0; + +Console.WriteLine("Nota inválida? {0}", nota > 10.0); +Console.WriteLine("Nota inválida? {0}", nota < 0.0); +Console.WriteLine("Perfeito? {0}", nota == 10.0); +Console.WriteLine("Tem como melhorar? {0}", nota != 10.0); +Console.WriteLine("Passou por média? {0}", nota >= notaDeCorte); +Console.WriteLine("Recuperação? {0}", nota < notaDeCorte); +Console.WriteLine("Reprovado? {0}", nota <= 3.0); +``` \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresRelacionais.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresRelacionais.cs new file mode 100644 index 0000000..f04f4ff --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresRelacionais.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class OperadoresRelacionais + { + public static void Executar() { + // double nota = 6.0; + Console.Write("Digite a nota: "); + double.TryParse(Console.ReadLine(), out double nota); + double notaDeCorte = 7.0; + + Console.WriteLine("Nota inválida? {0}", nota > 10.0); + Console.WriteLine("Nota inválida? {0}", nota < 0.0); + Console.WriteLine("Perfeito? {0}", nota == 10.0); + Console.WriteLine("Tem como melhorar? {0}", nota != 10.0); + Console.WriteLine("Passou por média? {0}", nota >= notaDeCorte); + Console.WriteLine("Recuperação? {0}", nota < notaDeCorte); + Console.WriteLine("Reprovado? {0}", nota <= 3.0); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 07908ce..3174621 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -19,6 +19,7 @@ static void Main(string[] args) { {"Formatando Número - Fundamentos", FormatandoNumero.Executar}, {"Conversões - Fundamentos", Conversoes.Executar}, {"Operadores Aritméticos - Fundamentos", OperadoresAritmeticos.Executar}, + {"Operadores Relacionais - Fundamentos", OperadoresRelacionais.Executar}, }); central.SelecionarEExecutar(); From d01629c8ba3a3f195c2c6b9dae730876f71b6b41 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 10 May 2021 19:41:30 -0300 Subject: [PATCH 23/41] =?UTF-8?q?Create=20"Aula=2026=20-=20Operadores=20L?= =?UTF-8?q?=C3=B3gicos=20#01"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... 26 - Operadores L\303\263gicos_part_1.md" | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 26 - Operadores L\303\263gicos_part_1.md" diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 26 - Operadores L\303\263gicos_part_1.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 26 - Operadores L\303\263gicos_part_1.md" new file mode 100644 index 0000000..3702eab --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 26 - Operadores L\303\263gicos_part_1.md" @@ -0,0 +1,38 @@ +# Aula 26 - Operadores Lógicos #01 + +## Conceito + +### Tabela Verdade + +| Cenário TV50 | +|:------------:| +| (***AND***) | + +Ter || Qui || Sáb +:--:|:--:|:--:|:--:|:--: +| V | **&&** | V | = | V | +| V | **&&** | F | = | F | +| F | **&&** | V | = | F | +| F | **&&** | F | = | F | + +| Cenário Sorvete | +|:---------------:| +| (***OR***) | + +Ter || Qui || Sáb +:--:|:--:|:--:|:--:|:--: +| V | **\|\|** | V | = | V | +| V | **\|\|** | F | = | V | +| F | **\|\|** | V | = | V | +| F | **\|\|** | F | = | F | + +| Cenário TV32 | +|:-------------:| +| (***XOR***) | + +Ter || Qui || Sáb +:--:|:--:|:--:|:--:|:--: +| V | **^** | V | = | F | +| V | **^** | F | = | V | +| F | **^** | V | = | V | +| F | **^** | F | = | F | From f81d46e01dcc1d69b709ff823296c0b487699a36 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 10 May 2021 20:15:21 -0300 Subject: [PATCH 24/41] =?UTF-8?q?Create=20"Aula=2027=20-=20Operadores=20L?= =?UTF-8?q?=C3=B3gicos=20#02"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... 27 - Operadores L\303\263gicos_part_2.md" | 24 ++++++++++++++++++ .../Fundamentos/OperadoresLogicos.cs | 25 +++++++++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 50 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 27 - Operadores L\303\263gicos_part_2.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/OperadoresLogicos.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 27 - Operadores L\303\263gicos_part_2.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 27 - Operadores L\303\263gicos_part_2.md" new file mode 100644 index 0000000..d4b6456 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 27 - Operadores L\303\263gicos_part_2.md" @@ -0,0 +1,24 @@ +# Aula 27 - Operadores Lógicos #02 + +* OperadoresLogicos.cs +* {"Operadores Lógicos - Fundamentos", OperadoresLogicos.Executar}, + +### Operadores Binários + +* Opera encima de dois operandos + +* **&&** - Operador lógico **E** +* **`executouTrabalho1 && executouTrabalho2`** + +* **||** - Operador lógico **OU** +* **`executouTrabalho1 || executouTrabalho2`** + +* **^** - Operador lógico **OU Exclusivo** +* **`executouTrabalho1 ^ executouTrabalho2`** + +### Operadores Unários + +* Trabalha com apenas um operador +* **`!comprouSorvete`** + * O símbolo de exclamação vai representar uma **Negação lógica** + * invertendo o valor de um determinado operando \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresLogicos.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresLogicos.cs new file mode 100644 index 0000000..ea025f7 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresLogicos.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class OperadoresLogicos + { + public static void Executar() { + var executouTrabalho1 = true; + var executouTrabalho2 = false; + + bool comprouTv50 = executouTrabalho1 && executouTrabalho2; + Console.WriteLine("Comprou a Tv 50? {0}", comprouTv50); + + var comprouSorvete = executouTrabalho1 || executouTrabalho2; + Console.WriteLine("Comprou o sorvete? {0}", comprouSorvete); + + var comprouTv32 = executouTrabalho1 ^ executouTrabalho2; + Console.WriteLine("Comprou a Tv 32? {0}", comprouTv32); + + Console.WriteLine("Mais saudável? {0}", !comprouSorvete); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 3174621..1c753cd 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -20,6 +20,7 @@ static void Main(string[] args) { {"Conversões - Fundamentos", Conversoes.Executar}, {"Operadores Aritméticos - Fundamentos", OperadoresAritmeticos.Executar}, {"Operadores Relacionais - Fundamentos", OperadoresRelacionais.Executar}, + {"Operadores Lógicos - Fundamentos", OperadoresLogicos.Executar}, }); central.SelecionarEExecutar(); From f90b23a6cf00796bb3240447eea50562e109bb75 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 10 May 2021 21:07:44 -0300 Subject: [PATCH 25/41] =?UTF-8?q?Create=20"Aula=2028=20-=20Operadores=20de?= =?UTF-8?q?=20Atribui=C3=A7=C3=A3o"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Operadores de Atribui\303\247\303\243o.md" | 83 +++++++++++++++++++ .../Fundamentos/OperadoresAtribuicao.cs | 28 +++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 112 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 28 - Operadores de Atribui\303\247\303\243o.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 28 - Operadores de Atribui\303\247\303\243o.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 28 - Operadores de Atribui\303\247\303\243o.md" new file mode 100644 index 0000000..85d5a05 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 28 - Operadores de Atribui\303\247\303\243o.md" @@ -0,0 +1,83 @@ +# Aula 28 - Operadores de Atribuição + +* OperadoresAtribuicao.cs +* {"Operadores Atribuição - Fundamentos", OperadoresAtribuicao.Executar}, + +## Operador binário de Atribuição + +* **Atribuição substitutiva** - substitui-se o valor existente na variável + + >```cs + > var num1 = 3; + > num1 = 7; + >``` + +* **Atribuição aditiva** - acrescenta-se um valor ao valor existente na variável + + >```cs + > var num1 = 3; + > num1 += 10; // num1 = num1 + 10; + >``` + +* **Atribuição subtrativa** - subtrai-se um valor do valor existente na variável + + >```cs + > var num1 = 3; + > num1 += 10; // num1 = num1 + 10; + > num1 -= 3; // num1 = num1 - 3; + >``` + +* **Atribuição Multiplicativa** - multiplica-se um valor ao valor existente na variável + + >```cs + > var num1 = 3; + > num1 += 10; // num1 = num1 + 10; + > num1 -= 3; // num1 = num1 - 3; + > num1 *= 5; // num1 = num1 * 5; + >``` + +* **Atribuição divisiva** - divide-se um valor ao valor existente na variável + + >```cs + > var num1 = 3; + > num1 += 10; // num1 = num1 + 10; + > num1 -= 3; // num1 = num1 - 3; + > num1 *= 5; // num1 = num1 * 5; + > num1 /= 2; // num1 = num1 / 2; + >``` + +* **Atribuição por valor (cópia)** - atribui-se o valor de uma variável à outra variável + + >```cs + > int a = 1; // atribuição a partir de um literal + > int b = a; // atribuição a partir de uma variável + >``` + +## Operador unário de Atribuição + +### Ocorre uma atribuição implícita + +* **Atribuição com operador unário de incremento** - acrescenta-se uma unidade da variável em si próprio + + >```cs + > a++; // a = a + 1; + >``` + +* **Atribuição com operador unário de decremento** - subtrai-se uma unidade da variável em si próprio + + >```cs + > b--; // b = b - 1; + >``` + +* **Atribuição por referência** - atribui-se um valor a um local de memória referenciado na variável + + >```cs + > dynamic c = new System.Dynamic.ExpandoObject(); + > c.nome = "João"; + > + > dynamic d = c; + > d.nome = "Maria"; + > + > Console.WriteLine(c.nome); + >``` + \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs new file mode 100644 index 0000000..c7c0250 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class OperadoresAtribuicao + { + public static void Executar() { + var num1 = 3; + num1 = 7; + num1 += 10; + num1 -= 3; + num1 *= 5; + num1 /= 2; + + Console.WriteLine(num1); + + int a = 1; + int b = a; + + a++; + b--; + + Console.WriteLine($"{a} {b}"); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 1c753cd..e8e522d 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -21,6 +21,7 @@ static void Main(string[] args) { {"Operadores Aritméticos - Fundamentos", OperadoresAritmeticos.Executar}, {"Operadores Relacionais - Fundamentos", OperadoresRelacionais.Executar}, {"Operadores Lógicos - Fundamentos", OperadoresLogicos.Executar}, + {"Operadores Atribuição - Fundamentos", OperadoresAtribuicao.Executar}, }); central.SelecionarEExecutar(); From b46bd0b00f4bb2cf4e035e2ca1c7756eeaadea07 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 10 May 2021 21:15:19 -0300 Subject: [PATCH 26/41] =?UTF-8?q?Update=20"Aula=2028=20-=20Operadores=20de?= =?UTF-8?q?=20Atribui=C3=A7=C3=A3o"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CursoCSharp/Fundamentos/OperadoresAtribuicao.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs index c7c0250..ed2df89 100644 --- a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresAtribuicao.cs @@ -23,6 +23,15 @@ public static void Executar() { b--; Console.WriteLine($"{a} {b}"); + + // Não se preocupe com essa parte do código + dynamic c = new System.Dynamic.ExpandoObject(); + c.nome = "João"; + + dynamic d = c; + d.nome = "Maria"; + + Console.WriteLine(c.nome); } } } From 24aa2c2595c20599bc9eed23ea12cbb13e91d414 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 10 May 2021 22:17:44 -0300 Subject: [PATCH 27/41] =?UTF-8?q?Create=20"Aula=2029=20-=20Operadores=20Un?= =?UTF-8?q?=C3=A1rios"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 29 - Operadores Un\303\241rios.md" | 54 +++++++++++++++++++ .../Fundamentos/OperadoresUnarios.cs | 28 ++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 83 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 29 - Operadores Un\303\241rios.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/OperadoresUnarios.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 29 - Operadores Un\303\241rios.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 29 - Operadores Un\303\241rios.md" new file mode 100644 index 0000000..aa08aac --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 29 - Operadores Un\303\241rios.md" @@ -0,0 +1,54 @@ +# Aula 29 - Operadores Unários + +* OperadoresUnarios.cs +* {"Operadores Unários - Fundamentos", OperadoresUnarios.Executar}, + +* **`-`:** Símbolo de **menos** + * associado a um operando, ***inverte o sinal*** do valor aritmético contido na variável + + >```cs + > var valorNegativo = -5; + > Console.WriteLine(-valorNegativo); // output: 5 + >``` + +* **`!`:** Símbolo de **exclamação** + * associado a um operando, faz uma ***negação lógica*** do resultado lógico da variável + + >```cs + > var booleano = true; + > Console.WriteLine(!booleano); + >``` + +* **Incremento** + * acrescenta-se uma unidade da variável em si próprio + * utilizando sintaxe com operador **Pós-fixado** + * colocando o símbolo de incremento *depois do operando* + + >```cs + > var numero1 = 2; + > numero1++; + > Console.WriteLine(numero1); + >``` + +* **Decremento** + * subtrai-se uma unidade da variável em si próprio + * utilizando sintaxe com operador **Pré-fixado** + * colocando o símbolo de decremento *antes do operando* + + >```cs + > var numero1 = 2; + > --numero1; // + > Console.WriteLine(numero1); + >``` + +***Observação:*** + +* a sintaxe **Pré-fixado** tem ordem de precedência maior que a sintaxe **Pós-fixado** + * **`Console.WriteLine(numero1++ == --numero2);`** + * `--numero2` - será decrementado antes da comparação + * `numero1++` - será incrementado após a comparação + +* O exemplo acima, fere os princípios de Boas práticas, pois mistura: + * incremento + * decremento + * comparação diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadoresUnarios.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresUnarios.cs new file mode 100644 index 0000000..d2c8e44 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadoresUnarios.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class OperadoresUnarios + { + public static void Executar() { + var valorNegativo = -5; + var numero1 = 2; + var numero2 = 3; + var booleano = true; + + Console.WriteLine(-valorNegativo); + Console.WriteLine(!booleano); + + numero1++; + Console.WriteLine(numero1); + + --numero1; + Console.WriteLine(numero1); + + Console.WriteLine(numero1++ == --numero2); + Console.WriteLine($"{numero1} {numero2}"); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index e8e522d..596a499 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -22,6 +22,7 @@ static void Main(string[] args) { {"Operadores Relacionais - Fundamentos", OperadoresRelacionais.Executar}, {"Operadores Lógicos - Fundamentos", OperadoresLogicos.Executar}, {"Operadores Atribuição - Fundamentos", OperadoresAtribuicao.Executar}, + {"Operadores Unários - Fundamentos", OperadoresUnarios.Executar}, }); central.SelecionarEExecutar(); From 715912ffc9471b6159c99d24c1755c70fb8a637e Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Wed, 12 May 2021 10:03:15 -0300 Subject: [PATCH 28/41] =?UTF-8?q?Create=20"Aula=2030=20-=20Operador=20Tern?= =?UTF-8?q?=C3=A1rio"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 30 - Operador Tern\303\241rio.md" | 30 +++++++++++++++++++ .../Fundamentos/OperadorTernario.cs | 18 +++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 49 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" create mode 100644 CursoCSharp/CursoCSharp/Fundamentos/OperadorTernario.cs diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" new file mode 100644 index 0000000..98e1cef --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" @@ -0,0 +1,30 @@ +# Aula 30 - Operador Ternário + +* OperadorTernario.cs +* {"Operador Ternário - Fundamentos", OperadorTernario.Executar}, + +* **Operador ternário** + * é um operador condicional + * pode compor uma expressão relacional + * ou expressão relacional e lógica + * retornará true ou false + +* > Observação: Só existe um operador ternário. + + * 3 Partes do operador ternário + + >```cs + > string resultado = nota >= 7.0 ? "Aprovado" : "Reprovado"; + >``` + + * Uma Expressão - que retorna verdadeiro ou falso + * `nota >= 7.0` + * Operando 1 - que será atribuído se a expressão for verdadeira + * `? "Aprovado"` + * Operando 2 - que será atribuído se a expressão for falsa + * `: "Reprovado"` + +* **`?`** - Expressão **SE** +* **`:`** - Expressão **SENÃO** + + diff --git a/CursoCSharp/CursoCSharp/Fundamentos/OperadorTernario.cs b/CursoCSharp/CursoCSharp/Fundamentos/OperadorTernario.cs new file mode 100644 index 0000000..7dae311 --- /dev/null +++ b/CursoCSharp/CursoCSharp/Fundamentos/OperadorTernario.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.Fundamentos +{ + class OperadorTernario + { + public static void Executar() { + var nota = 7.0; + bool bomComportamento = false; + string resultado = nota >= 7.0 && bomComportamento + ? "Aprovado" : "Reprovado"; + + Console.WriteLine(resultado); + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 596a499..fa033bb 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -23,6 +23,7 @@ static void Main(string[] args) { {"Operadores Lógicos - Fundamentos", OperadoresLogicos.Executar}, {"Operadores Atribuição - Fundamentos", OperadoresAtribuicao.Executar}, {"Operadores Unários - Fundamentos", OperadoresUnarios.Executar}, + {"Operador Ternário - Fundamentos", OperadorTernario.Executar}, }); central.SelecionarEExecutar(); From 7e67cd03b44c27532a8c133f98862c0bb4e1c22f Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Wed, 12 May 2021 14:04:10 -0300 Subject: [PATCH 29/41] =?UTF-8?q?Update=20Aula=2030=20-=20Operador=20Tern?= =?UTF-8?q?=C3=A1rio.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aula 30 - Operador Tern\303\241rio.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" index 98e1cef..aa796a4 100644 --- "a/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" +++ "b/Aulas/Se\303\247\303\243o 3 - Fundamentos/Aula 30 - Operador Tern\303\241rio.md" @@ -24,7 +24,7 @@ * Operando 2 - que será atribuído se a expressão for falsa * `: "Reprovado"` -* **`?`** - Expressão **SE** -* **`:`** - Expressão **SENÃO** - + * **`?`** - Expressão **SE** + * **`:`** - Expressão **SENÃO** + * A atribução condicional, será feita conforme a sequências dos símbolos, por isso é muito importante posicionar as resposta corretamente. From 21de806680fae7c1cccd656af49620b3a5e9c4f7 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 15 May 2021 18:25:14 -0300 Subject: [PATCH 30/41] Create "Aula 31 - Estrutura IF" --- .../Aula 31 - Estrutura IF.md" | 89 +++++++++++++++++++ .../EstruturasDeControle/EstruturaIf.cs | 31 +++++++ CursoCSharp/CursoCSharp/Program.cs | 7 +- 3 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 "Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" create mode 100644 CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIf.cs diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" new file mode 100644 index 0000000..34e9257 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" @@ -0,0 +1,89 @@ +# Aula 31 - Estrutura IF + +* EstruturaIf.cs +* `{"Estrutura If - Estruturas de Controle", EstruturaIf.Executar},` + +### Importando a nova estrutura no Program.cs + +* `using CursoCSharp.EstruturasDeControle;` + +## Funcionalidade + +* Serve para selecionar num conjunto + * uma ou mais sentença de códigos para ser executado ou não + +* **`if(exp)`** + * dentro dos parênteses terá uma expressão + * Essa *expressão* pode ter: + * vários operandos + * Essa expressão *sempre* irá retornar verdadeiro ou falso + + >```cs + > if (exp) + > Sentenca; + >``` + + * a primeira sentença logo após o **`if`** + * será executada se a *expressão* for verdadeira + * caso contrário não será executada + +* **`{ }`** - o uso das chaves são obrigatórias + * quando tivermos mais de uma sentença associadas à *expressão* + * serve para delimitar um bloco de sentenças + + >```cs + > if (exp) { + > Sentenca; + > Sentenca; + > Sentenca; + > } + >``` + + * Se a *expressão* for verdadeira o bloco associado será executado + * Se a *expressão* for falsa o bloco associado não será executado + +### Refatorando + +> **Obs.:** Quando a variável é do tipo booleana, não é necessário fazer uma *comparação relacional* para saber se ela é verdadeira ou falsa. + +```cs + bool bomComportamento = true; + + if (nota >= 9.0 && bomComportamento) +``` + +* nessa sentença a variável `bomComportamento` já é um operando lógico +* ou seja, **não precisamos** compará-la se verdadeira ou falsa, usando: + * `bomComportamento == true` + * isso seria como fazer a seguinte comparação `true == true` +* precisando testar o inverso + * negamos ela com **`!`** + * Ex.: **`!bomComportamento`** + +* A expressão **`if (exp)`**, pode ser substituída pela seguinte expressão: + + ```cs + bomComportamento = entrada == "S" || entrada == "s"; + ``` + + * Uma vez que queremos atribuir **true** + * à variável `bomComportamento` + * se a expressão é *verdadeira* + +* Podemos ainda utilizar uma outra sentença para substituir a comparação de **"S"** ou **"s"** + + ```cs + bomComportamento = entrada.ToLower() == "s"; + ``` + + * **`ToLower()`** - Função transformar todo caractere em minúsculo + +### Advertência + +* Na estrutura de controle não utilizamos o **`;`**. + * Uma única excessão ocorrerá quando + * + +* Estruturas de controle controlam a execução de uma ou mais sentenças + +* A estrutura **`If`** controla se uma ou um bloco de sentença será executado ou não. diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIf.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIf.cs new file mode 100644 index 0000000..ae1694d --- /dev/null +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIf.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.EstruturasDeControle +{ + class EstruturaIf + { + public static void Executar() { + bool bomComportamento = false; + string entrada; + + Console.Write("Digite a nota do aluno: "); + entrada = Console.ReadLine(); + Double.TryParse(entrada, out double nota); + + Console.Write("Possui bom comportamento (S/N): "); + entrada = Console.ReadLine(); + + //if (entrada == "S" || entrada == "s") + // bomComportamento = true; + + //bomComportamento = entrada == "S" || entrada == "s"; + bomComportamento = entrada.ToLower() == "s"; + + if (nota >= 9.0 && bomComportamento) { + Console.WriteLine("Quadro de honra!"); + } + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index fa033bb..f07d12f 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using CursoCSharp.Fundamentos; +using CursoCSharp.EstruturasDeControle; namespace CursoCSharp { @@ -9,7 +10,8 @@ class Program { static void Main(string[] args) { var central = new CentralDeExercicios(new Dictionary() { - {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, + // Fundamentos + { "Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, {"Comentários - Fundamentos", Comentarios.Executar}, {"Variáveis e Constantes - Fundamentos", VariaveisEConstantes.Executar}, {"Inferências - Fundamentos", Inferencia.Executar}, @@ -24,6 +26,9 @@ static void Main(string[] args) { {"Operadores Atribuição - Fundamentos", OperadoresAtribuicao.Executar}, {"Operadores Unários - Fundamentos", OperadoresUnarios.Executar}, {"Operador Ternário - Fundamentos", OperadorTernario.Executar}, + + // Estruturas de Controle + {"Estrutura If - Estruturas de Controle", EstruturaIf.Executar}, }); central.SelecionarEExecutar(); From 81dcf6611db6e44d64d66b37a655791026187db0 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sat, 15 May 2021 18:30:01 -0300 Subject: [PATCH 31/41] Update "Aula 31 - Estrutura IF" --- .../Aula 31 - Estrutura IF.md" | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" index 34e9257..e9b2277 100644 --- "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 31 - Estrutura IF.md" @@ -3,7 +3,7 @@ * EstruturaIf.cs * `{"Estrutura If - Estruturas de Controle", EstruturaIf.Executar},` -### Importando a nova estrutura no Program.cs +> ***Importando a nova estrutura no Program.cs*** * `using CursoCSharp.EstruturasDeControle;` @@ -14,7 +14,7 @@ * **`if(exp)`** * dentro dos parênteses terá uma expressão - * Essa *expressão* pode ter: + * Essa *expressão* pode ter: * vários operandos * Essa expressão *sempre* irá retornar verdadeiro ou falso @@ -81,7 +81,7 @@ ### Advertência * Na estrutura de controle não utilizamos o **`;`**. - * Uma única excessão ocorrerá quando + * Uma única exceção ocorrerá quando * * Estruturas de controle controlam a execução de uma ou mais sentenças From 4eff01abf189fe2b1479be7a78f87e2510a01892 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 16 May 2021 10:55:00 -0300 Subject: [PATCH 32/41] Create "Aula 32 - Estrutura IF/ELSE" --- .../Aula 32 - Estrutura IF - ELSE.md" | 27 +++++++++++++++++++ .../EstruturasDeControle/EstruturaIfElse.cs | 20 ++++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 48 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 32 - Estrutura IF - ELSE.md" create mode 100644 CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElse.cs diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 32 - Estrutura IF - ELSE.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 32 - Estrutura IF - ELSE.md" new file mode 100644 index 0000000..af0abb9 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 32 - Estrutura IF - ELSE.md" @@ -0,0 +1,27 @@ +# Aula 32 - Estrutura IF/ELSE + +* EstruturaIfElse.cs +* `{"Estrutura If Else - Estruturas de Controle", EstruturaIfElse.Executar},` + +* Sempre um dos dois será executado +* Nunca os dois serão executados + +```cs + double nota = 7.0; + + if (nota >= 7.0) { + Console.WriteLine("Aprovado!"); + Console.WriteLine("Não fez mais que sua obrigação..."); + } else { + Console.WriteLine("Recuperação"); + } +``` + +* **`if ()`** + * A utilização das **`{}`** se dá por haver mais de uma sentença para ser executada. + * Representando um bloco de código associado a ele + +* **`else`** + * a mesma sintaxe da utilização das **`{}`** no `if`, também serve para o `else` + * por convenção estética aplicaremos as ***chaves*** em todos os blocos `else` + * mesmo que haja apenas uma sentença para ser executada diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElse.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElse.cs new file mode 100644 index 0000000..2fdaff4 --- /dev/null +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElse.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.EstruturasDeControle +{ + class EstruturaIfElse + { + public static void Executar() { + double nota = 6.0; + + if (nota >= 7.0) { + Console.WriteLine("Aprovado!"); + Console.WriteLine("Não fez mais que sua obrigação..."); + } else { + Console.WriteLine("Recuperação"); + } + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index f07d12f..8f81a7b 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -29,6 +29,7 @@ static void Main(string[] args) { // Estruturas de Controle {"Estrutura If - Estruturas de Controle", EstruturaIf.Executar}, + {"Estrutura If/Else - Estruturas de Controle", EstruturaIfElse.Executar}, }); central.SelecionarEExecutar(); From cdb2f12360f5cf8a41ee4c0eb3a260a4865f836c Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 16 May 2021 11:06:44 -0300 Subject: [PATCH 33/41] Create "Aula 33 - Estrutura IF/ELSE IF" --- .../Aula 33 - Estrutura IF - ELSE IF.md" | 9 +++++++++ .../EstruturasDeControle/EstruturaIfElseIf.cs | 13 +++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 23 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" create mode 100644 CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" new file mode 100644 index 0000000..6bbe507 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" @@ -0,0 +1,9 @@ +# Aula 33 - Estrutura IF/ELSE IF + +* EstruturaIfElseIf.cs +* `{"Estrutura If/Else If - Estruturas de Controle", EstruturaIfElseIf.Executar},` + +* Com essa estrutura, poderemos trabalhar com múltiplas seleções, utilizando + +* **`if`** - para condição verdadeira +* **`esle if`** - associando uma outra condição para ser testada \ No newline at end of file diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs new file mode 100644 index 0000000..9cdd09b --- /dev/null +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.EstruturasDeControle +{ + class EstruturaIfElseIf + { + public static void Executar() { + + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 8f81a7b..ed3cb63 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -30,6 +30,7 @@ static void Main(string[] args) { // Estruturas de Controle {"Estrutura If - Estruturas de Controle", EstruturaIf.Executar}, {"Estrutura If/Else - Estruturas de Controle", EstruturaIfElse.Executar}, + {"Estrutura If/Else If - Estruturas de Controle", EstruturaIfElseIf.Executar}, }); central.SelecionarEExecutar(); From 5f63e255328928e109439f4f60314c7cdde3cbcf Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 16 May 2021 15:46:42 -0300 Subject: [PATCH 34/41] Update "Aula 33 - Estrutura IF/ELSE IF" --- .../Aula 33 - Estrutura IF - ELSE IF.md" | 42 +++++++++++++++++-- .../EstruturasDeControle/EstruturaIfElseIf.cs | 15 +++++++ CursoCSharp/CursoCSharp/Program.cs | 2 +- 3 files changed, 55 insertions(+), 4 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" index 6bbe507..fcdcf21 100644 --- "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 33 - Estrutura IF - ELSE IF.md" @@ -1,9 +1,45 @@ # Aula 33 - Estrutura IF/ELSE IF * EstruturaIfElseIf.cs -* `{"Estrutura If/Else If - Estruturas de Controle", EstruturaIfElseIf.Executar},` +* `{"Estrutura If/Else/If - Estruturas de Controle", EstruturaIfElseIf.Executar},` * Com essa estrutura, poderemos trabalhar com múltiplas seleções, utilizando -* **`if`** - para condição verdadeira -* **`esle if`** - associando uma outra condição para ser testada \ No newline at end of file +## Conceito + +* **`if()`** - para condição verdadeira +* **`else if()`** - associando uma outra condição para ser testada + +```cs + if (nota >= 9.0) { + Console.WriteLine("Quadro de Honra!"); + } else { + if (nota >= 7.0) { + Console.WriteLine("Aprovado!"); + } else { + if (nota >= 5.0) { + Console.WriteLine("Recuperação"); + } else { + Console.WriteLine("Te vejo na próxima..."); + } + } + } + + Console.WriteLine("Fim!"); +``` + +### Simplificando + +```cs + if (nota >= 9.0) { + Console.WriteLine("Quadro de Honra!"); + } else if (nota >= 7.0) { + Console.WriteLine("Aprovado!"); + } else if (nota >= 5.0) { + Console.WriteLine("Recuperação"); + } else { + Console.WriteLine("Te vejo na próxima..."); + } + + Console.WriteLine("Fim!"); +``` diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs index 9cdd09b..2d6ec1a 100644 --- a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaIfElseIf.cs @@ -7,7 +7,22 @@ namespace CursoCSharp.EstruturasDeControle class EstruturaIfElseIf { public static void Executar() { + Console.Write("Digite a nota do aluno: "); + string entrada = Console.ReadLine(); + Double.TryParse(entrada, out double nota); + + if (nota >= 9.0) { + Console.WriteLine("Quadro de Honra!"); + } else if (nota >= 7.0) { + Console.WriteLine("Aprovado!"); + } else if (nota >= 5.0) { + Console.WriteLine("Recuperação"); + } else { + Console.WriteLine("Te vejo na próxima..."); + } + + Console.WriteLine("Fim!"); } } } diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index ed3cb63..127dc68 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -30,7 +30,7 @@ static void Main(string[] args) { // Estruturas de Controle {"Estrutura If - Estruturas de Controle", EstruturaIf.Executar}, {"Estrutura If/Else - Estruturas de Controle", EstruturaIfElse.Executar}, - {"Estrutura If/Else If - Estruturas de Controle", EstruturaIfElseIf.Executar}, + {"Estrutura If/Else/If - Estruturas de Controle", EstruturaIfElseIf.Executar}, }); central.SelecionarEExecutar(); From 56a3de86b85e0820946d3a8c22282f6903948ba1 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 16 May 2021 15:55:09 -0300 Subject: [PATCH 35/41] Create "Aula 34 - Estrutura Switch" --- .../Aula 34 - Estrutura SWITCH.md" | 7 +++++++ .../EstruturasDeControle/EstruturaSwitch.cs | 13 +++++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 21 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" create mode 100644 CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" new file mode 100644 index 0000000..1745e5c --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" @@ -0,0 +1,7 @@ +# Aula 34 - Estrutura SWITCH + +* EstruturaSwitch.cs +* `{"Estrutura Switch - Estruturas de Controle", EstruturaSwitch.Executar},` + + + diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs new file mode 100644 index 0000000..2d90190 --- /dev/null +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace CursoCSharp.EstruturasDeControle +{ + class EstruturaSwitch + { + public static void Executar() { + + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 127dc68..1de2a2a 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -31,6 +31,7 @@ static void Main(string[] args) { {"Estrutura If - Estruturas de Controle", EstruturaIf.Executar}, {"Estrutura If/Else - Estruturas de Controle", EstruturaIfElse.Executar}, {"Estrutura If/Else/If - Estruturas de Controle", EstruturaIfElseIf.Executar}, + {"Estrutura Switch - Estruturas de Controle", EstruturaSwitch.Executar}, }); central.SelecionarEExecutar(); From 59d91613b6efd8e94044f5bc2c94fd9bdbe13ebc Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 16 May 2021 16:54:56 -0300 Subject: [PATCH 36/41] Update "Aula 34 - Estrutura Switch" --- .../Aula 34 - Estrutura SWITCH.md" | 50 ++++++++++++++++++- .../EstruturasDeControle/EstruturaSwitch.cs | 30 +++++++++-- 2 files changed, 76 insertions(+), 4 deletions(-) diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" index 1745e5c..0237563 100644 --- "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 34 - Estrutura SWITCH.md" @@ -1,7 +1,55 @@ -# Aula 34 - Estrutura SWITCH +# Aula 34 - Estrutura Switch * EstruturaSwitch.cs * `{"Estrutura Switch - Estruturas de Controle", EstruturaSwitch.Executar},` +### Conceito +* Implementação de seleções múltiplas +```cs + int nota = 0; + + switch (nota) { + case 0: + Console.WriteLine("Péssimo"); + break; + } +``` + +* **`switch (int) {}`** - onde `int` é um valor numérico + +* **`case 0:`** - onde `0` é um inteiro, sendo ele a primeira seleção + +* **`break;`** - utilizado para encerrar estrutura atual e vá para a linha posterior, após sua execução + * sendo obrigatório o uso dessa palavra reservada para cada `case` declarado + +> Observação: + +* Dentro de um `case` + * podemos ter mais de uma sentença de código, além do `break;` + + >```cs + > int nota = 5; + > + > switch (nota) { + > case 5: + > Console.WriteLine("Ótimo"); + > Console.WriteLine("Parabéns"); + > break; + > } + >``` + + * assim como também podemos ter um bloco de códigos `{}` + + >```cs + > int nota = 5; + > + > switch (nota) { + > case 5: { + > Console.WriteLine("Ótimo"); + > Console.WriteLine("Parabéns"); + > break; + > } + > } + >``` diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs index 2d90190..ae11ced 100644 --- a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaSwitch.cs @@ -1,13 +1,37 @@ using System; -using System.Collections.Generic; -using System.Text; namespace CursoCSharp.EstruturasDeControle { class EstruturaSwitch { public static void Executar() { + Console.Write("Avalie meu atendimento com uma nota de 0 a 5: "); + int.TryParse(Console.ReadLine(), out int nota); + switch (nota) { + case 0: + Console.WriteLine("Péssimo"); + break; + case 1: + case 2: + Console.WriteLine("Ruim"); + break; + case 3: + Console.WriteLine("Regular"); + break; + case 4: + Console.WriteLine("Bom"); + break; + case 5: + Console.WriteLine("Ótimo"); + Console.WriteLine("Parabéns!"); + break; + default: + Console.WriteLine("Nota inválida"); + break; + } + + Console.WriteLine("Obrigado por participar de nossa pesquisa."); } } -} +} \ No newline at end of file From ca0ac0bed6dd90f99ee71fa11deb17c99e7d1b09 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Sun, 16 May 2021 17:15:28 -0300 Subject: [PATCH 37/41] Create "Aula 35 - Estrutura While" --- .../Aula 35 - Estrutura WHILE.md" | 13 +++++++++++++ .../EstruturasDeControle/EstruturaWhile.cs | 11 +++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 25 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" create mode 100644 CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" new file mode 100644 index 0000000..ca8a992 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" @@ -0,0 +1,13 @@ +# Aula 35 - Estrutura While + +* EstruturaWhile.cs +* `{"Estrutura While - Estruturas de Controle", EstruturaWhile.Executar},` + +## Conceito + +* Associado ao `While` teremos uma sentença ou um bloco de códigos +* e essa sentença ou bloco de código, será executada **enquanto** a expressão `While` for verdadeira + +* Usado para uma quantidade de repetição **indeterminada** + * Quando não sabemos quantas repetições exatamente serão executadas + * via de regra o `While` vai se encaixar muito bem nesse cenário diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs new file mode 100644 index 0000000..4bba204 --- /dev/null +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs @@ -0,0 +1,11 @@ +using System; + +namespace CursoCSharp.EstruturasDeControle +{ + class EstruturaWhile + { + public static void Executar() { + + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 1de2a2a..40c849d 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -32,6 +32,7 @@ static void Main(string[] args) { {"Estrutura If/Else - Estruturas de Controle", EstruturaIfElse.Executar}, {"Estrutura If/Else/If - Estruturas de Controle", EstruturaIfElseIf.Executar}, {"Estrutura Switch - Estruturas de Controle", EstruturaSwitch.Executar}, + {"Estrutura While - Estruturas de Controle", EstruturaWhile.Executar}, }); central.SelecionarEExecutar(); From 22a686b55274ca2b0fd9eb50900c2fd76f7944d6 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 17 May 2021 20:10:56 -0300 Subject: [PATCH 38/41] Update "Aula 35 - Estrutura While" --- .../Aula 35 - Estrutura WHILE.md" | 66 ++++++++++++++++++- .../EstruturasDeControle/EstruturaWhile.cs | 35 ++++++++++ 2 files changed, 100 insertions(+), 1 deletion(-) diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" index ca8a992..7c4f435 100644 --- "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 35 - Estrutura WHILE.md" @@ -10,4 +10,68 @@ * Usado para uma quantidade de repetição **indeterminada** * Quando não sabemos quantas repetições exatamente serão executadas - * via de regra o `While` vai se encaixar muito bem nesse cenário + * via de regra o `While` vai se encaixar muito bem nesse cenário + +### **`Random()`** + +* Classe que gera número aleatório + +### Sessão de declaração + +```cs + // Sessão de declaração + int palpite = 0; + Random random = new Random(); + + int numeroSecreto = random.Next(1, 16); + bool numeroEncontrado = false; + int tentativasRestantes = 3; + int tentativas = 0; +``` + +* iniciando a variável `palpite` em 0, que é diferente do valor que o usuário digitar + +* **`Next(1, 16)`** - será gerado número aleatório entre + * `1` - sendo este número *inclusivo* e + * `16` - sendo este número *exclusivo* + +* iniciando a variável booleana `numeroEncontrado` com `false` + +* a variável `tentativasRestantes`, que irá controlar as repetições do **`While`**, será decrementada. + +* a variável `tentativas`, iniciada com zero, terá funcionalidade + * de incrementar o número de tentativas utilizadas + * e será utilizada pelo `While` que irá comparar se o usuário atingiu o número de tentativas + +### Sessão de Implementação + +```cs +// Sessão de Implementação +while (tentativasRestantes > 0 && !numeroEncontrado) { + ... + if (numeroSecreto == palpite) { + ... + var corAnterior = Console.BackgroundColor; + Console.BackgroundColor = ConsoleColor.Green; + ... + Console.BackgroundColor = corAnterior; + } +} +``` + +* **`var corAnterior = Console.BackgroundColor;`** + * Pega a cor atual do background do console para armazenar em uma variável + +* **`Console.BackgroundColor = ConsoleColor.Green;`** + * Altera a cor do background do console para verde + +* **`Console.BackgroundColor = corAnterior;`** + * Restaura a cor padrão, armazenada anteriormente na variável + +### Exemplo de Laço Infinito *(!CUIDADO)* + +>```cs +> while(true) { +> +> } +>``` diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs index 4bba204..05c8d17 100644 --- a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaWhile.cs @@ -5,7 +5,42 @@ namespace CursoCSharp.EstruturasDeControle class EstruturaWhile { public static void Executar() { + int palpite = 0; + Random random = new Random(); + int numeroSecreto = random.Next(1, 16); + bool numeroEncontrado = false; + int tentativasRestantes = 3; + int tentativas = 0; + + while (tentativasRestantes > 0 && !numeroEncontrado) { + Console.Write("Insira o seu palpite: "); + string entrada = Console.ReadLine(); + int.TryParse(entrada, out palpite); + + tentativas++; + tentativasRestantes--; + + var corAnterior = Console.BackgroundColor; + + if (numeroSecreto == palpite) { + numeroEncontrado = true; + //var corAnterior = Console.BackgroundColor; + Console.BackgroundColor = ConsoleColor.Green; + Console.WriteLine("Número encontrado em {0} tentativa(s)", tentativas); + Console.BackgroundColor = corAnterior; + } else if (palpite > numeroSecreto) { + Console.WriteLine("Menor...Tente novamente!"); + Console.BackgroundColor = ConsoleColor.DarkYellow; + Console.WriteLine("Tentativas restantes: {0}", tentativasRestantes); + Console.BackgroundColor = corAnterior; + } else { + Console.WriteLine("Maior...Tente novamente!"); + Console.BackgroundColor = ConsoleColor.DarkMagenta; + Console.WriteLine("Tentativas restantes: {0}", tentativasRestantes); + Console.BackgroundColor = corAnterior; + } + } } } } From 9594967a09a55c8e2a5bc93f5a7da117bf355846 Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Mon, 17 May 2021 20:30:07 -0300 Subject: [PATCH 39/41] Create "Aula 36 - Estrutura Do While" --- .../Aula 36 - Estrutura DO WHILE.md" | 10 ++++++++++ .../EstruturasDeControle/EstruturaDoWhile.cs | 11 +++++++++++ CursoCSharp/CursoCSharp/Program.cs | 1 + 3 files changed, 22 insertions(+) create mode 100644 "Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" create mode 100644 CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" new file mode 100644 index 0000000..ac29b54 --- /dev/null +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" @@ -0,0 +1,10 @@ +# Aula 36 - Estrutura Do While + +* EstruturaDoWhile.cs +* `{"Estrutura Do While - Estruturas de Controle", EstruturaDoWhile.Executar},` + +## Conceito + +* Essa é a única estrutura que termina com **`;`**. +* Nessa estrutura o bloco vem antes da expressão +* Ela é uma estrutura menos usada diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs new file mode 100644 index 0000000..685978e --- /dev/null +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs @@ -0,0 +1,11 @@ +using System; + +namespace CursoCSharp.EstruturasDeControle +{ + class EstruturaDoWhile + { + public static void Executar() { + + } + } +} diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 40c849d..24a8e32 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -33,6 +33,7 @@ static void Main(string[] args) { {"Estrutura If/Else/If - Estruturas de Controle", EstruturaIfElseIf.Executar}, {"Estrutura Switch - Estruturas de Controle", EstruturaSwitch.Executar}, {"Estrutura While - Estruturas de Controle", EstruturaWhile.Executar}, + {"Estrutura Do While - Estruturas de Controle", EstruturaDoWhile.Executar}, }); central.SelecionarEExecutar(); From 01610a9ad32892ef54e0f43ca4a9864f5acdcdae Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Tue, 13 Jul 2021 21:05:55 -0300 Subject: [PATCH 40/41] Update Program.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correção de espaçamento na sentença. --- CursoCSharp/CursoCSharp/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CursoCSharp/CursoCSharp/Program.cs b/CursoCSharp/CursoCSharp/Program.cs index 24a8e32..c716bf1 100644 --- a/CursoCSharp/CursoCSharp/Program.cs +++ b/CursoCSharp/CursoCSharp/Program.cs @@ -11,7 +11,7 @@ class Program static void Main(string[] args) { var central = new CentralDeExercicios(new Dictionary() { // Fundamentos - { "Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, + {"Primeiro Programa - Fundamentos", PrimeiroPrograma.Executar}, {"Comentários - Fundamentos", Comentarios.Executar}, {"Variáveis e Constantes - Fundamentos", VariaveisEConstantes.Executar}, {"Inferências - Fundamentos", Inferencia.Executar}, From 15a37929065fb974c3b60ea9d266dd965079be5a Mon Sep 17 00:00:00 2001 From: Hamilton Ribeiro Date: Thu, 12 Aug 2021 23:41:15 -0300 Subject: [PATCH 41/41] Update "Aula 36 - Estrutura Do While" --- .../Aula 36 - Estrutura DO WHILE.md" | 4 ++++ .../EstruturasDeControle/EstruturaDoWhile.cs | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" index ac29b54..206aa47 100644 --- "a/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" +++ "b/Aulas/Se\303\247\303\243o 4 - Estruturas de Controle/Aula 36 - Estrutura DO WHILE.md" @@ -7,4 +7,8 @@ * Essa é a única estrutura que termina com **`;`**. * Nessa estrutura o bloco vem antes da expressão +* O bloco é executado pelo menos uma vez +* Somente ao final da primeira execução que testa a condição * Ela é uma estrutura menos usada +* Quantidade indeterminada de repetições + diff --git a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs index 685978e..7e58ca3 100644 --- a/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs +++ b/CursoCSharp/CursoCSharp/EstruturasDeControle/EstruturaDoWhile.cs @@ -5,7 +5,17 @@ namespace CursoCSharp.EstruturasDeControle class EstruturaDoWhile { public static void Executar() { + string entrada; + do + { + Console.WriteLine("Qual o seu nome?"); + entrada = Console.ReadLine(); + + Console.WriteLine("Seja bem-vindo {0}", entrada); + Console.WriteLine("Deseja continuar? (S/N)"); + entrada = Console.ReadLine(); + } while (entrada.ToLower() == "s"); } } }