Transcrições
1. Introdução: Olá e bem-vindo a este curto curso sobre a criação de sua aplicação muito rápida em C sharp. Agora, o que vamos fazer? Vamos fazer o que é chamado de calculadora de console. O console é simplesmente um nome elegante para a linha de comando, o terminal, o local onde você digita comandos no Windows. A razão pela qual estamos usando o console é para que você possa aprender os conceitos básicos sem ficar todo amarrado e confuso pelas interfaces gráficas do usuário. Nós vamos fazer o seguinte programa que pede que você insira um número c. Você pode colocar qualquer número em,
pede-lhe um segundo número, e, em seguida, pede-lhe para o processo, adicionar, subtrair, multiplicar ou dividir. Bem, se eu selecionar m e pressionar enter, obtemos o resultado como em 1906. E, em seguida, dá-lhe a opção de fechar a aplicação ou de continuar com a aplicação. Então, vamos apenas pressionar N e Enter, que irá fechar a janela do aplicativo. E agora podemos ver o código por trás. Ok, então esse aplicativo pode parecer muito, muito simples em sua superfície, mas há um monte de complexidade que vai lá dentro. E o mais importante, há muitos princípios
muito importantes que você precisa aprender como desenvolvedor de software de estagiário, não importa que estejamos aprendendo isso em C-Sharp e dotnet também porque esses princípios são universais todas as plataformas, SDKs, linguagens, frameworks, seja lá o que for, você os usará em todos os lugares. Então, o que exatamente você vai aprender? A primeira coisa, vamos rever nossos aplicativos de console. O que são eles? Por que devemos usá-los? Podemos realmente usar aplicativos de console em software de produção? Pode não parecer. Eles parecem muito básicos, mas há um lugar para eles. Então, mesmo que você não aprenda nada com este curso exceto isso, você saberá que pode usar aplicativos de console em produções comerciais. Vamos aprender tudo sobre variáveis que são armazenamentos de
memória de objetos vai aprender sobre métodos ou funções e onde eles são apropriados para usar e como usá-los. Mais importante, vamos olhar para classes versus objetos. Primeiro de tudo, apenas quais são as classes porque é um conceito comum que você tem na maioria das linguagens e frameworks. Mas as pessoas ficam muito confusas quando você contrasta classes com objetos. Vou explicar isso de forma muito simples. Então vamos olhar para tipos,
especificamente tipos de números porque temos uma calculadora. Esses tipos de números também nos conduzirão à área de tópico de entrada do usuário. Porque um usuário precisa colocar algo em nosso aplicativo para calculá-lo. A partir daí, vamos executar algum tipo de lógica usando se else, caso em
que multiplicar, dividir matemática, etc. Então eu vou falar tudo sobre lógica. Então o assunto mais importante em qualquer curso, que é tudo sobre livros. Como é que o meu software vai falhar? Por que vai falhar? E quais são as coisas que eu posso fazer agora para impedir que esse pedaço de software falhe nas mãos das pessoas enquanto eles o usam, que resultará em uma revisão ruim ou seu cliente de código não voltará para você para qualquer atualização. Então vamos falar sobre insetos. E, em seguida, relacionado a bugs é o assunto de refatoração, que é como e quando nós embaralhamos nosso código ao redor? Então faz mais sentido para nós, especificamente quando voltamos em um ano e olhamos para este código que fizemos há um ano e que nos esquecemos completamente. Podemos refatorar esse código para torná-lo mais compreensível para que, quando
voltarmos, possamos corrigir as coisas imediatamente e entender o que está acontecendo. E também quando atualizamos as coisas em nosso software, há uma chance muito menor de ter bugs porque se o refator for bom, então a contagem de bugs diminui drasticamente. Então essas são as coisas básicas que vamos aprender neste curso. Mas, mais importante do que isso, quero reiterar, este curso não é necessariamente sobre esses itens individuais, mas é como eles se unem como um pacote para transformar você em um engenheiro de software profissional. E sim, vale a pena pensar em si mesmo como profissional agora antes de começar realmente nesta jornada. Porque se você pensar assim agora, e você colocar no trabalho que está associado com a palavra profissional, então você vai sair do outro lado. Melhor do que a maioria dos profissionais que eu realmente conheço provavelmente melhor do que eu como engenheiro de software. Então, com isso dito, vamos indo.
2. O que é um aplicativo Console: Então, o que é um aplicativo de console? Bem, é bem simples na verdade, em cada sistema operacional, você tem uma maneira de interagir com nosso sistema
operacional apenas digitando comandos que ele reconhece. Isso é conhecido como a linha de comando ou às vezes é chamado de console. Você provavelmente já o usou antes. Se você já usou Linux ou Mac, provavelmente não usou. Se você já usou o Windows, mas se estiver assistindo a isso, você está interessado em textos ou talvez tenha realmente usado. Então, o que é um aplicativo de console? Bem, vamos voltar à nossa aplicação em particular. Digamos que temos uma aplicação C-Sharp. Cada aplicativo tem uma camada de interação, para que ele possa receber os comandos que você deseja dar a ele. Essa camada de interação pega esses comandos, faz algo com eles e, em seguida, envia para uma tela. Por exemplo. Alguns exemplos clássicos são um celular rolando para cima e para baixo, digitando coisas, enviando um PC enquanto você está fazendo a mesma coisa usando um teclado e mouse. E um console é simplesmente uma maneira muito mais simples de interagir com seu aplicativo. Então você não precisa fazer uma interface gráfica do usuário. Então, podemos seqüestrar essa funcionalidade do console para colocar comandos em nosso aplicativo particular e para receber saída do aplicativo. Agora, antes de eu ir, a última coisa que você precisa saber é por que usamos aplicativos de console? Enquanto você verá professores como eu usar um aplicativo de console porque você não precisa aprender todas as complexidades de exibir dados em uma tela. Você está simplesmente emitindo texto ou aceitando textos de um usuário final. E isso permite que você aprenda os conceitos mais básicos em programação sem ter que aprender conceitos complicados ao mesmo tempo. E isso realmente ajuda.
3. Crie um aplicativo de console e execute o: Tudo bem, é hora de colocar nosso primeiro aplicativo em funcionamento. Então vá em frente e abra o Visual Studio 2019, mas não o código do Visual Studio ou 2017. E você deve ser apresentado com uma tela semelhante a esta. E sempre há atualizações no canto inferior. Eu tendem a ignorá-los pelo menos por um tempo de qualquer maneira, às vezes eles podem quebrar seus projetos. De qualquer forma, vamos criar um novo projeto. Então aqui em baixo nós vamos bater Criar um novo projeto. E se você não pode ver esse menu aqui no canto superior esquerdo, você pode ir Arquivo Novo Projeto. Agora, nos modelos de projeto, ele lhe dará uma lista de coisas que você pode usar. Então temos que console aplicativos, que é o que vamos fazer. Um deles tem um VB ao lado do ícone no canto superior, e o outro tem um C-sharp. Queremos C-sharp porque não estamos deixando Visual Basic quando aprendemos C afiado. Então selecione-o e clique em Avançar. Vale a pena notar na tela que você pode filtrar todas
essas coisas de acordo com os tipos de projetos que você está fazendo. Vamos chamar isso de algo como calcular Torr. Eu vou chamá-lo, eu vou sair como Calculadora. Na verdade. Você pode armazená-lo em algum lugar. Então eu vou guardá-lo em repouso. Só uma palavra de aviso. Se você armazenar projetos em seu Dropbox ou OneDrive ou qualquer sistema que você usa para fazer backup de seus arquivos. Os pequenos arquivos que ele produz causam estragos com ele e arruína a vida útil da bateria e laptops mais antigos. Então, às vezes é melhor ter um sistema diferente, como o GitHub para armazenar seu código se você estiver satisfeito com ele ser público, se você não estiver, você precisa pagar pelo GitHub. Mas isso evita todos os problemas do Dropbox que tive com mais de um milhão e meio de arquivos por causa dos pequenos. De qualquer forma, vamos deixar esta solução de jogo desmarcada e projetos no mesmo diretório. Explicarei as diferenças entre elas mais tarde. E, em seguida, clique em Criar. E quando ele é criado, somos apresentados com uma tela de código. Certo? Agora. Eu não vou entrar no que cada uma dessas palavras significa. Por exemplo, Namespace, Classe estática, porque eu tenho pouco vídeos explicados, três deles chegando após esta palestra onde eu expliquei o que é uma variável. Expliquei o que é um método. Esse é um método e eu expliquei a diferença entre namespace e classe. Ok? O que é mais importante para nós entender que este ponto é que todo programa.net, eu sei que eu disse programa C-sharp, mas na verdade é o.net neste caso, precisa de um ponto de entrada. Na verdade, cada pedaço de software precisa saber por onde começar neste caso particular, e em praticamente todos os casos de dotnet, começamos aqui no vazio estático principal. Mais tarde, eu explico o que significa estática em termos de classe, mas você só precisa saber que é aqui que estamos começando. E a primeira linha de código que vamos executar é a linha de gravação de pontos do console. Então, agora, se jogarmos isso no topo aqui, temos este botão de jogo da calculadora. E se clicarmos nisso, devemos ter uma tela de console para nós que diz no topo Olá,
bem, então deixe-me ampliar isso para você. Está bem, então diz “Olá mundo”. E então o programa diz, há mais alguma coisa para fazer agora? Então, basicamente, pára. E então você pressiona qualquer tecla para fechar esta janela. Então pressione qualquer tecla e você será de volta em seu código e todo o programa pára de funcionar. Então agora podemos tentar copiar essa linha, colá-la abaixo. Então eu quero que você acompanhe. Meu nome é Dot, Dot, Dot. E agora, se fizermos isso, teremos duas linhas. em cima. Olá mundo, meu nome está bem. Então, há as duas linhas. Agora, o que eu quero mostrar a vocês antes de terminarmos esta seção é que se eu começar a digitar algo no Visual Studio, ele tem o que eles chamam IntelliSense, IE, ele prevê o que você vai digitar. Console é digitado
muito, muitas vezes por mim. Então sabe que é isso que eu quero. E se você pressionar Enter, ele faz isso automaticamente. E então você coloca pontos, linha direita. Então, vamos escrever algo. E se você passar o mouse sobre ele, você também pode pressionar Tab em vez de enter, dependendo de como você digita as coisas. E então você abre e fecha. E uma vez que você abre um colchete, ele diz o que isso faz. Então isso é um pouco pequeno. Não sei se posso mudar isso. E Visual Studio, receio, mas diz que escreve o terminador de linha atual para o fluxo de saída padrão. O que é realmente informativo, certo? Se você está apenas começando a codificar, tudo o que significa é que ele coloca uma linha atual terminada. Ele coloca um retorno de carro no final da linha, então ele vai para a próxima linha. Se pressionarmos para cima e para baixo enquanto isso está sendo exibido. Bem, costumava ser para cima e para baixo. Eu uso 70 identificações. Esqueci quais são os atalhos para cada um. Mas se você pressionar essas setas ao lado, ele lhe diz as várias coisas que você pode colocar dentro que console.WriteLine que vai deixá-lo direto para o console. Ok, então é isso que você escreveu seu primeiro pedaço de código. E você entendeu que o Visual Studio oferece intellisense para completar automaticamente o que você vai escrever.
4. O que é variável no C: O que é uma variável em C Sharp? Bem, em primeiro lugar, vamos começar com o nosso programa ou software C Sharp. Isto, claro, poderia ser qualquer linguagem porque as variáveis são universais em todas as linguagens de programação. Meu particular é armazenado em um disquete. E se você tem menos de 30 anos, provavelmente não tem idéia do que é um disquete. De qualquer forma, de volta ao programa. Então esse programa vai ter pedaços de dados dentro dele. Podemos ter um número inteiro que é um número inteiro. Podemos ter uma string que pode ser o nome de alguém, e eles podem ter uma variável do tipo cão em nosso programa. O que isso significa? Isso realmente não importa neste momento. Vamos chegar a isso. Em segundo lugar, seu programa vai fazer algum tipo de operação com esses dados. Eu vou C-sharp programa faz coisas. E, finalmente, ele produz o que fez. Então ele diz o que ele fez armazena em um banco de dados, coloca em um servidor, todas essas coisas boas. Uma variável é simplesmente um armazenamento de dados. Assim que a primeira linha, quando temos inteiros, strings, e variáveis do tipo cão, essas são variáveis que são armazenadas na memória. Agora, por que temos diferentes tipos de variáveis, inteiros, strings e outros? Bem, a resposta é bastante simples, mas na verdade há duas razões para isso. Principalmente. A primeira razão é por causa de porque os computadores vieram. Então aqui eu tenho um computador, um computador tem dentro dele memória de acesso aleatório ou RAM. E RAM tem blocos finitos de memória dentro dela. Ram é onde todas as suas variáveis são armazenadas enquanto seu programa está sendo executado e solicitando para usar essas variáveis em particular, certo? Então é por isso que você tem que ter muito cuidado quando você está fazendo software
para não ter o que chamamos de um vazamento de memória porque você enche essa RAM muito, muito rapidamente e isso pode fazer o computador falhar bem como o seu programa naturalmente. Então, quando olhamos para a RAM e nós realmente detalhar tudo uma variável
é, é um armazenamento de dados em um determinado endereço ou área na memória. E se tivermos algo como um inteiro que é apenas um número inteiro que ocupa menos memória do que uma string. Então é por isso que temos tipos de variáveis ou tipos, que é o termo técnico para eles para que possamos otimizar como armazená-los na memória. Agora, a segunda razão pela qual temos tipos em variáveis é para o seguinte. Digamos que temos uma soma, 2 mais 6 é igual a 8, ou 8 mais B é igual a C, Como você pode codificá-lo dentro do seu programa, esses são todos inteiros. E como estamos usando números inteiros e o sinal de mais, nosso software subjacente ou a estrutura em que você está sentado sabe o que fazer com eles. Ele sabe o que significa adição entre números. Agora você pode dizer, bem, isso é bastante óbvio para você, mas não é para um computador. Porque se você desse um computador H mais I, ele iria juntá-los para fazer alto, ele iria concatená-los. Esse é o grande termo tecnológico para isso. Então tipos de lá para se certificar de que podemos executar operações compatíveis entre tipos diferentes para que
não nos deparemos com problemas mais tarde quando o programa está em execução. Então, se você receber um erro de tipo, é geralmente enquanto você está fazendo o software, que é uma coisa boa porque você não quer que o ar é aparecer quando o software está nas mãos de seu usuário final porque então ele vai falhar. Agora há muitas, muitas outras razões pelas quais temos tipos, mas essas são apenas as duas visões gerais de alto nível por que elas existem e por que ser honesto que elas deveriam existir. Então espero que isso seja explicado o que uma variável não é C afiada. E se você quiser saber mais alguma coisa, então apenas deixe cair nos comentários.
5. O que é um método em C Sharp: Um método em C Sharp. Também é chamado de método em outras línguas, ou às vezes é chamado de função. A mesma coisa, mais ou menos. Sete C-afiado. Digamos que você tenha algum código. Você tem o número a vezes número b é igual ao número c. Você tem uma resposta de impressão para a tela para que possamos ver o resultado. E então dividimos pelo número c e armazenamos isso no servidor. Então nós meio que temos uma sequência de coisas que estamos tentando fazer com nosso código, inserir as variáveis. E se você apenas revestiu isso direito como eu acabei de dizer,
isso seria processual. Estamos seguindo uma rota de uma só maneira. E se você tiver o mesmo código, mas quiser trocar os dois passos do meio, ou o que você faz então? As novas pessoas para codificar costumam dizer, bem, eu vou apenas digitá-lo de novo e trocar os dois do meio. Mas essa é uma maneira terrível de codificar porque codificar um dos princípios principais é chamado seco, que significa que não se repita. Ele também tem alguma outra raiz de significados que você descobrirá se você conseguir um emprego como engenheiro de software. Certo, então o que podemos fazer nesse caso? Bem, o que podemos fazer é confiar em um método, porque o método é simplesmente uma coleção de código que executa uma função específica. Então teríamos um método chamado Multiply. Teríamos um método chamado dividir. Teríamos um método chamado print e um método chamado store. E então, quando estamos executando nosso programa, se quisermos mudar a ordem, podemos simplesmente trocá-los sem ter que digitar todo o código novamente. Então eu posso ter literalmente qualquer combinação desses métodos que eu jogo. E software é assim. Você terá muitas combinações diferentes
de todos os métodos e classes que você criar. Então, o que é um método realmente parecia? Bem, em C-sharp, é um pouco assim. E na verdade, a maioria das línguas como esta, temos um nome de método que é multiplicar. Temos alguns argumentos. Estes são apenas pedaços de dados que passamos para o método ou o método pede. Então ele pode fazer o que precisa fazer. Então, neste caso, estamos passando dois números, número a e b.
E , dentro do método,
realizamos o número a vezes o número B. Obtemos a resposta para essa multiplicação. E então retornamos isso para o que quer que seja chamado de método. Então é assim que um método se parece dentro. Agora, você meio que entende, espero, por que usamos métodos e o que eles são apenas uma coleção de código que nos permite chamá-lo em qualquer ordem. Mas você pode olhar para isso e dizer, por que há apenas uma linha de código, a linha de retorno. E eu tive que adicionar uma coisa extra no topo da multiplicação com todas as chaves e todo o resto. Parece um pouco exagerado. Mas na engenharia de software, isso não é exagero. É assim que se faz. Porque em algum momento, alguém nos deuses afiados C do céu vai dizer, eu vou mudar de volta, para retornar int ou algo ridículo como isso. Então agora, se você não seguiu a maneira método de fazer as coisas, você teria milhares de lugares diferentes para mudar esse retorno, para retornar int em seu código. Então você pode imaginar atualizá-lo é muito, muito doloroso. Agora, na realidade, o retorno int nunca vai acontecer. Mas há muitas vezes em que outras versões do que acontecem e você tem um monte de código para mudar. Então, quando você tem um método, você só precisa mudar o código em um lugar ,
porque obviamente você não precisa mudar o nome do seu método. Todo o resto do código que está usando esse método recebe automaticamente a alteração porque é tudo armazenado ou encapsulado dentro do método multiplicar. Então é isso que é um método. Apenas uma coleção de código que autônomo, que pode ser chamado por qualquer outra parte do seu programa que você especificar.
6. Namespace vs cursos no C Sharp: Muitas vezes os iniciantes ficam muito confusos entre o que um namespaces versus uma classe em C-Sharp e em outros idiomas, é
claro, antes de tudo, precisamos saber o que é uma classe. Uma classe é simplesmente um blueprint de código que faz objetos. Então, em C-Sharp, quando você vê a nova palavra-chave, isso significa que estamos criando um objeto a partir de um blueprint ou de uma classe. Digamos que temos uma classe de cão. Aquele cão tem um nome, tem um método de bug e tem um método de cheirar, que são coisas que ele faz. O nome é uma propriedade. Digamos também que temos uma classe chamada gato, que tem a mesma propriedade de nome, mas tem métodos diferentes chamados Mao e dormir porque gato dorme o tempo todo. O que gostaríamos de fazer é agrupá-los logicamente. Então, se eu estivesse fazendo um aplicativo que acessasse cães e gatos, eu não iria querer importar um gato e importar um cachorro. O que eu provavelmente gostaria de fazer, e você pode construir isso de forma diferente, mas isso lhe dá a idéia do que é um namespace, é colocar ambos um namespace da seguinte maneira. Animais de namespace, classe de cão e classe de gato. Para que quando estou criando meu aplicativo em outro lugar, eu possa importar o namespace dos animais e então eu possa acessar cão e gato. A maneira como você iria acessá-lo sem importar é dizer animais doc cão e animais dot cat. Portanto, um namespace é simplesmente uma maneira de organizar seu aplicativo em seu próprio pacote lógico. Isso é tudo o que é. Considerando que uma classe é basicamente algo que faz coisas que têm propriedades, etc. Um namespace não faz nada disso e não deve fazer nada disso. É simplesmente uma ferramenta organizacional. Agora, namespaces, o que eles fazem meio que varia entre linguagens, frameworks, etc. Mas essa é a ideia básica. Então, se você tem um namespace para,
digamos, seu servidor, vamos chamá-lo de biblioteca de servidores. Dentro desse namespace, teríamos apenas os dados e métodos que pertencem a esse servidor específico. Então você tem que pensar muito, muito logicamente sobre o que você está colocando em seu namespace. E ele se alinha com o que o namespace é chamado e o que o namespace está cheio.
7. Escreva nosso próprio código — matemática em C#: De onde paramos da última vez, nosso programa estava lançando uma única linha para o console do Helloworld. Vamos mudar isso. Então vamos remover totalmente a linha e seguir comigo. Nós vamos digitar a palavra int ou a palavra-chave int, que é abreviação para inteiro. E como eu expliquei alguns vídeos atrás sobre o que são variáveis. Um inteiro é simplesmente um armazenamento de memória de um número inteiro. E nós vamos chamar este inteiro a. Então cada variável em C Sharp precisa de um nome, um nome que nós reconhecemos. Caso contrário, você tem um nome que algo como eu não sei, algo assim. É uma string hexadecimal ou algo parecido com isso, que na verdade é um local na memória. E, obviamente, não nos lembramos disso como humanos. Então só usamos palavras e nomes simples. Agora, quando você está nomeando uma variável, certifique-se de não chamá-la de algo como int, porque essa é uma palavra reservada em C Sharp. E há muitas palavras reservadas em todas as linguagens de programação que você não pode usar como nomes de coisas. Assim, você pode ver que a pequena linha vermelha rabiscada lhe diz que ele espera um identificador. Isso é porque está ficando confuso, porque você disse isso duas vezes. Então este identificador ou o nome da variável é um, e ele vai ser um número simples, 22, e nós terminamos com os dois pontos. Então vamos criar outro número. Int b é igual a, digamos 10. E agora podemos criar uma variável adicional. Mas antes de o fazermos, reparem que há uma linha verde. Ele diz que B é atribuído, mas seu valor nunca é usado. Por que isso é importante? Bem, se você está colocando as coisas na memória, que nós estamos aqui, e você nunca as usa. Ficam na memória até que algo chamado coletor de lixo apareça e os remova. Então liberamos algum espaço. Mas às vezes você coloca as coisas na memória. O coletor de lixo virá e dirá, parece que você ainda está usando isso. Então eu não vou tocá-lo neste caso, isso provavelmente seria verdade. Então não queremos ter coisas na memória que não estamos usando. Visual Studio nos adverte sobre isso. Agora vamos criar int c, que é igual a um plus b. Simples o suficiente, certo? Estamos adicionando um e B. Então agora podemos imprimir isso para console ponto, escrever linha C e terminar com dois pontos. E, em seguida, podemos adicionar mais uma linha antes de executar esta linha de leitura ponto console. Então isso lê a próxima linha de caracteres do fluxo de entrada padrão. Não se preocupe com o que isso significa por enquanto. Vamos deixá-lo em paz e executá-lo como está. Então vamos tocar no play. E devemos criar duas variáveis. E então nós só temos uma coisa impressa, que é um grande número, 32. Agora porque nós colocamos Redline em, o que isso faz é parar o fim do script de execução onde ele disse antes, pressione qualquer tecla para encerrar. Então agora ele espera por nós digitar algo, que se eu fizer isso, em
seguida, termina e então nos permite pressionar
qualquer tecla para fechar esta janela para que a linha de leitura do console, apenas para aplicativos de console nos permite manter o aplicativo vivo até que realmente pressionemos uma tecla. Então é só um pequeno amortecedor até o final. Ok, então é assim que você faz basicamente matemática. Em C-Sharp. Você só usa suas habilidades matemáticas clássicas mais, menos vezes e dividir. Então eu vou agora fazer alguns trabalhos de casa para você. Estou escrevendo um comentário aqui. Por favor, divida, multiplique e subtraia a e b e mostre no console. Ok, vá em frente, pausar o vídeo agora porque eu vou apresentar a solução após a pose. Então, como foi isso? Acho que é muito fácil. E você chegou a um ponto em particular. Se quisermos subtrair, colocamos um M menos. Se quisermos dividir, colocamos uma barra. E se quisermos multiplicar, colocamos um asterisco, certo, então barra e asterisco. Eu acho que a maioria das pessoas sabe sobre asterisco barra pode não ser. Então agora podemos multiplicar. Mas o que é interessante é que se eu dividir a por b e eu correr isso, qual resposta você acha que 22 dividido por dez deve me dar, deve me dar 2.2, certo? Mas vai me dar apenas dois. Essa é claramente a resposta errada. Então, vamos entrar nessa área um pouco mais tarde. Mas fique ciente de que quando você está declarando variáveis, esse tipo de variável você está declarando quem terá um efeito sobre o que você está planejando fazer com seu código.
8. Tipos de números em C# — e por que: Certo, então este é o lugar onde este curso meio que parte de um curso de ensino tradicional. Porque, hey, eu odeio tradição se não está cumprindo o que você precisa como estudante e deve causar despejada. Então eu vou te dar algumas habilidades que você definitivamente precisa quando você está se tornando um engenheiro de software. A habilidade número um é a habilidade de procurar coisas em um mecanismo de busca como Dr. Go. Aliás, eu não uso mais o Google. Eu uso dot-dot go porque o Dr. Gao me dá resultados mais precisos do que o Google, porque o Google tem muitos filtros. O Dr. Banko só me dá o que eu quero. E também está em privacidade. Um defensor, o que é bom no meu mundo como engenheiro de software de qualquer maneira. Então o que eu estou dizendo que você precisa desenvolver uma habilidade para é a capacidade de descobrir por que as coisas estão fazendo isso, o que eles estão fazendo em seu programa usando um mecanismo de busca. Então, você sabe, esta linha em que dissemos a dividido por b nos deu um resultado de dois, o que é claramente incorreto. Bem, o que precisamos fazer é voltar a subir a corrente e começar a interrogar o porquê. Isso nos deu uma resposta de dois. E a razão é porque um inteiro é um número inteiro. E se você armazenar coisas em um contêiner inteiro, ele só vai te dar números inteiros e não casas decimais, ok? Então, uma das habilidades que você precisa aprender é quando você se deparar com um problema como este e sim, este é um problema trivial. E você provavelmente sabe a resposta. Mas você tem que tentar e pensar sobre como você procura por essas coisas. Então a primeira coisa que eu faria é colocar o nome da língua. Então C Sharp, e claramente, as pessoas pagam música muito mais do que programam códigos
CAS C Sharp as rodas têm problemas para cada um claramente. Certo, C-sharp. E então vamos colocar int. E olha o que vem à tona. A primeira opção é um intervalo int. Isso é interessante. Se clicarmos nisso, o que ganhamos? Nós temos o Microsoft Docs, que aqui é deixe-me diminuir o zoom para você. Normalmente os médicos estão bem, mas não são incríveis. Está bem. Quero dizer, como iniciante de olhar para isso, eu ficaria muito confuso e desligaria instantaneamente. E a Microsoft parece nunca ter apanhado isso. Eu acho que Android de pegou isso. É melhor ser honesto. Temos o segundo resultado aqui. Nota operadores de índice. Então você vê o que eu quero dizer. Você pode estar procurando coisas por horas e não encontrar a coisa que você está procurando. Então vou te dar um atalho. Neste caso, vamos entrar em C-sharp em tipos e temos tipos numéricos integrais. Talvez se mudarmos isso para um tipo de número, temos tipos de dados C, temos tipos numéricos de ponto flutuante. Há muitas coisas para ler aqui. Então voltando ao nosso problema em particular, uma vez que você passou por esse processo e eu não vou fazer isso aqui x leva um tempo. Mas uma vez que você passou por esse processo, você está realmente construindo sua compreensão da linguagem de programação cada vez mais, não apenas corrigindo seu problema. E foi assim que aprendi. Foi assim que comecei a aprender, isto não está a funcionar. Então eu pulei para um motor de busca e procurei por ele, procurando por algo semelhante. E então eu li em torno da área de assunto. E à medida que você fica cada vez mais experiente, você se torna cada vez mais preciso com o que está procurando. E a necessidade de procurar torna-se cada vez menos. Então, eventualmente, você não precisa de um mecanismo de busca para completar seus projetos. Mas agora, como iniciante, aconselho
que faça isso. Ok, então o que está acontecendo de errado aqui? Voltando ao nosso problema é que estes são números inteiros. Posso mudar isso para um tipo diferente chamado flutuador. Ou, na verdade, posso deixar isso como um inteiro. E eu posso mudar C para um carro alegórico. Agora, um flutuador permite decimais. Flutuadores e duplos ambos permitem decimais. O problema é que ainda temos o número 2. Então isso é interessante, não é? Por que está fazendo isso? Isso pode ter algo a ver com o fato de que estes são inteiros. Vamos mudar tudo para um carro alegórico. E vamos tocar no Play. E agora temos exatamente a resposta que estamos procurando, que é 2,2 K. Então float funciona. O outro tipo que você precisa saber é um duplo. Está bem? Agora, línguas como C Sharp não gostam de misturar carros alegóricos e duplos desta forma. Eles realmente não gostaram. Teria que converter um para o outro. Mas isso é perto da moto porque não vamos fazer nada disso agora. Então, no próximo vídeo, vou explicar a diferença entre inteiros, flutuadores e duplos.
9. A diferença entre int Float dobro em C Sharp: Aqui está a diferença entre um inteiro, um flutuador ou duplo. Agora existem outros tipos em C Sharp e outros idiomas que irão armazenar números para você, mas estes são os três mais comuns. Eu vou discutir C-Sharp em particular, mas muito disso se aplica a outros idiomas também, mas sempre verifique novamente se o seu aplicativo é essencial para a missão. Então, primeiro de tudo, temos um número inteiro e inteiro armazena um número inteiro. E pode ir de um intervalo de cerca de menos 2 bilhões para mais de 2 bilhões. O número não é exatamente 2 bilhões, mas isso é quase certo. Um flutuador expande esse alcance por um longo caminho. Então ele vai de menos 3.4 vezes 10 para o oito. Então 38 zeros após 3.4 para a versão positiva disso mais 3.4 com 38 zeros, um duplo vai de menos 1,79 para 308 zeros depois disso. Então esse é um número muito, muito grande e preciso. Agora esteja sempre ciente de que você de
mais poder de processamento para processar números grandes, números
mais precisos, etc. Então, quando você está criando seu aplicativo, não faça um contador usando duplas além disso, você não faria isso porque é impreciso de uma forma muito estranha de precisão. Você usaria inteiros. Se você estiver fazendo um aplicativo financeiro, você usaria duplas porque você quer que seus decimais estejam no ponto. Então não há um erro de arredondamento quando você sai do fim de todos os cálculos do bosque. Então, um inteiro para contagem, um flutuador para variáveis de tipo decimal. Então, por exemplo, temperatura e dinheiro e um duplo para a mais alta precisão, como eu disse, isto é para aplicações financeiras.
10. Como criar entrada do usuário: Então estamos fazendo uma calculadora. Claramente, não queremos valores estáticos e é isso que são. E quando digo valores estáticos, não
me refiro ao que essa palavra significa. Estou apenas me referindo ao fato de que esses valores nunca podem mudar porque não temos como inserir novos valores. Então vamos remover todo esse código na área principal. E eu vou colar um código de calculadora. Agora vale a pena notar que esse código vem da própria documentação da Microsoft. Então você sempre pode ir lá e verificar se quiser. Eu pensei que era melhor criar um curso em torno do que eles recomendam que você tenha dois pontos de referência para aprender, certo? Então, se você quiser ir em frente e pausar o vídeo, então você pode fazer isso agora para copiar isso. E depois que você retomar o vídeo, eu vou rolar para baixo para que você possa copiar as últimas linhas que não cabem em um K. Agora que estamos de volta ao código, vamos ver o que acontece aqui. Você vai notar que eu criei dois inteiros, número um e número dois, e eu defini ambos como 0. Agora eu posso colocá-los na mesma linha porque em C-Sharp nós temos o separador, que nos permite fazer isso. A maioria dos estilos de programação diz que devemos tê-los em linhas separadas. Costumo concordar com isso. De qualquer forma. Nós escrevemos uma linha simples, console, calculadora e C-sharp. E então colocamos alguns traços nos cílios para fazer as coisas ficarem bonitas. Ok? Em seguida, escrevemos outra linha que é digite um número e pressione Enter. Então, estamos dando instruções ao nosso usuário. Isso é chamado de experiência do usuário. E sim, até mesmo os aplicativos de console precisam de uma experiência de usuário. Se você apenas apresentar um console piscando, eles não sabem o que fazer. Então você tem que dizer a eles o que fazer. Então pegamos esse número. E o que quer que eles entrem vai ser lido como uma string usando a linha de leitura de pontos do console. Ok? Então linha de leitura console é o que você entra é colocado na memória. E então vamos pegar esse valor. Vamos convertê-lo em um inteiro de 32 bits. Expliquei as diferenças entre números inteiros, etc. Anteriormente. O que estamos fazendo aqui é que estamos realmente convertendo essa string para um inteiro. Agora, na próxima palestra, eu vou explicar para que conversões são usadas, por que elas são ruins, principalmente falando, e por que você deve tentar não usá-las, mas porque estamos aprendendo no início, vamos Tem isso aqui. E então pedimos que digitassem outro número. Fazemos o mesmo processo, obteria sua entrada e colocamos na variável número 2. E então pedimos a eles para escolher uma opção da lista a seguir, que é um para adicionar, subtrair e multiplicar e dividir D4. Ok? Você verá o que barra invertida t significa quando executarmos o programa. E depois dizemos, qual é a sua opção? Em seguida, o usuário vai inserir qualquer que seja a sua opção para isso. E ainda não escrevemos isso. Mas vamos preencher esta seção onde usamos o que é chamado de instrução switch para fazer a matemática real que o usuário nos pediu para fazer. E, finalmente, temos as mesmas coisas que tínhamos antes, que é pressionar uma tecla para fechar a calculadora e, em seguida, realmente tecla. Então, se executarmos
isso, é mais fácil entender se você pode vê-lo. Então, isso parece muito bom. Não é? Digite um número e pressione Enter sete, digite o intervalo número 6. E então você pode escolher uma das opções. E essa barra invertida te dá um espaço de tabulação. Então, um número fixo de espaços antes de mostrar as coisas. É só um belo truque de formatação. Então podemos colocar um SMD, mas ainda não configuramos nada disso. E vamos apenas pressionar uma tecla para fechar a calculadora. Lá vamos nós. Então tudo se foi, certo? Então, nas próximas palestras, vou explicar usando alguns desenhos o que é a conversão entre tipos. E também, na verdade, eu também vou explicar o que um tipo é ir junto com isso. E eu também vou explicar esta seção. Use uma instrução switch para fazer a matemática. Então eu vou explicar o que é uma declaração switch. E, em seguida, a palestra seguinte, nós estamos realmente indo para preencher a instrução switch para fazer toda a leitura do add, subtrair, multiplicar, dividir, e para enviar a resposta para o console.
11. O que é uma conversão de tipo no C: Vamos olhar para conversão de tipo em concha. Digamos que você tenha uma variável. Neste caso, temos um inteiro que é igual a 8. Se eu quiser mostrar isso em uma tela, geralmente, eu tenho que passar por cima de uma string a fim de exibir texto em uma tela. Então eu precisaria converter esse inteiro em uma string. E em C-Sharp, é literalmente chamado que duas cordas é o nome do método. Podemos converter o inteiro em uma string, que agora é oito, que agora é oito,
mas entre aspas para mostrar que é uma string, e o computador terá prazer em exibir isso. Agora isso é bom se você está indo de um tipo simples como um inteiro para um tipo mais complexo como uma string. Ele não funciona tão bem se você passar de complexo para simples, ok, então ir de string para inteiro pode funcionar, mas também pode explodir. Vamos ver como se temos uma string entre aspas, oito para inteiro, e novamente em C Sharp, são apenas duas polegadas. O nome do método que converte em oito, não há problema. É como esperamos. Mas se eu tiver uma string com algum texto como alto e converter isso para um inteiro, a coisa toda explode. Nosso programa falha naquele ponto e temos um erro de tempo de execução, que é o pior tipo Vera todas as áreas que queremos um tempo de compilação para que possamos abordá-los antes de entregar isso para o cliente final. Então ir de uma cadeia complexa para uma simples pode explodir seu programa. Há mais uma era. Antes de ir lá, vou deixá-los com, que é ir de algo como um flutuador 10.2 para um inteiro. Agora, um inteiro não pode armazenar um decimal. Então o que ele faz é simplesmente cortar fora o final desse número no ponto 2 e nós somos apenas deixados com dez. Então é feito a conversão para nós, são 10. O mesmo se tivéssemos um duplo a um inteiro. E há uma série de conversões em todas as linguagens de programação que você precisa ter muito cuidado. Porque coisas assim acontecem. Coisas também podem acontecer como, digamos que temos um inteiro 10 ou um flutuador 10 para, por exemplo, um duplo. Podemos conseguir alguns artefatos estranhos de 10,
2, 000, 000, 000, 000, 000, 000, 001. Na maior parte, esses tipos de erros foram provocados por muitos sistemas de desenvolvimento de software. Mas ainda os vejo ocasionalmente. Acho que não vejo em C-Sharp há muito tempo, se já
vi, não me lembro porque não faço conversões. E acabei de mostrar por que você deve evitar conversões como a praga, a menos que você realmente precise. Mas é uma idéia muito melhor mudar sua estrutura de dados em primeiro lugar para pensar sobre seus problemas cuidadosamente do que confiar em conversões mais tarde.
12. O que é caso interruptor no C Sharp: Troque o caso em C-Sharp. É muito, muito simples. Digamos que temos uma variável. Este caso é uma corda e chama-se nome, e é o meu nome. Você pode dizer que é uma string porque está entre aspas duplas. E se quisermos executar um teste nessa string para ver se nome da variável é maior do que cinco letras. Realizar testes em C-Sharp ou qualquer linguagem para que o assunto, é uma tarefa bastante comum porque você quer ver o que é uma variável e, em seguida, executar alguma ação de código de acordo com os resultados do teste. Tradicionalmente, usaríamos se mais para isso, mas caso switch é muito mais conveniente quando temos um monte de opções para passar. Também é muito mais legível na maioria dos idiomas do que se outra coisa. Então, primeiro de tudo, a sintaxe é assim e isso não é sintaxe C-sharp. Simplesmente simplifiquei para que seja fácil para você entender. Temos interruptor e depois temos a coisa que estamos olhando. E neste caso, é o comprimento do nome,
variável, comprimento do ponto do nome. Em seguida, abaixo disso, nós damos nossas declarações de caso switch, um monte de casos para ver se ele corresponde. Então, se o caso em que esse comprimento é igual a cinco, executamos algum código. Se for maior que cinco, executamos um pedaço de código diferente, e se for menor que cinco, executamos outro pedaço de código. Agora, é importante notar que seus casos são todos diferentes e todos devem ser únicos. Então você só dirige um desses casos de cada vez. Você também pode ter um caso padrão no final do caso switch, para que ele execute isso se ele não corresponder a nenhum dos casos anteriores. Então isso é tudo um Casos Comutados. Teste uma variável, use o resultado para executar um determinado pedaço de código.
13. Lógico do programa — Switch: Certo, então temos nosso aplicativo básico rodando aqui. Temos este método onde entramos no aplicativo e temos um monte de código para tirar dois números de um usuário final e tirar o operador de matemática deles. Agora precisamos de uma maneira de realmente executar o cálculo e mostrar-lhes o resultado. Agora, apenas digno de nota, pequenos atalhos que você tem no Visual Studio. Este pouco menos no lado aqui, eu posso clicar nele e eu posso colapsar ou meus métodos, eu posso colapsar classes. Posso recolher namespaces. Então, se você está ficando sem espaço em uma página específica e você não deveria estar se você é seus aplicativos bem arquitetados. Mas acontece porque nenhum de nós é perfeito. Então você pode bater nelas para escondê-las. Ele também garante que você não edite as seções erradas, que acontece com mais frequência do que você imagina, certo? Então vamos rolar para baixo até a área onde ele diz que vamos usar uma instrução switch para fazer a matemática. Vou selecionar tudo isso. Então eu apaguei e então eu vou colar
no código que eu quero que você pause e copie agora. Ok, então você tem isso para baixo. O que vamos fazer é ler a linha do usuário final. Então aqui em cima nós dissemos que sua opção é, eles colocam em sua opção. Lemos esse valor e agora estamos abrindo isso em uma instrução switch. Então vamos comparar o valor disso todos os casos que listamos abaixo. E esses casos correspondem às cartas que estamos pedindo aqui como MD, certo? Então temos um caso a e para o caso a, vamos escrever linha o resultado com o número um mais o número dois. Agora, aqui significa que nós vamos, qual é a palavra que eu estou procurando? Olhando para avaliar algumas variáveis nesta string. Então, em vez de fazer
assim, deixe-me mostrar o que quero dizer. A maneira clássica de fazer isso é a seguinte. É uma linha de escrita e você coloca entre parênteses resultado. E então você vai para fora dos colchetes e você iria adicionar,
digamos, no 1. E acrescentaríamos num dois, et cetera. Ou podemos dizer que mais é a resposta. Ok? Então o que você está fazendo lá é que você está fazendo algo chamado concatenação, onde quando você adiciona uma string é simplesmente colocá-los ao lado do outro para fazer uma grande string. Esta versão é simplesmente uma maneira mais legível de fazê-lo e menos facetada porque há
muitas aspas e você pode estragar isso muito facilmente. Confie em mim, eu fiz isso. Então esse dólar simplesmente significa que vamos avaliar algo em uma string onde temos num1 mais num2, que são colocados em chaves, é igual a. E então realizamos a adição real lá, num1 mais num2. E colocamos isso entre parênteses porque
queremos que avalie antes que nos mostre algo. Agora, para o caso S, vamos fazer subtração para m para multiplicar com u vezes. Então é só um asterisco. Então você pode ver todas essas linhas de código muito semelhantes, que é uma coisa ruim se você começar a ver isso em seu código, ou nós queremos fazer é recolher isso para baixo. Mas só estamos aprendendo neste momento. Então não estávamos. As outras palavras que você vai ver aqui é quebrar. O intervalo significa que vamos acabar com a execução ali mesmo. Então o programa, ou melhor, a declaração do caso switch vai parar de avaliar, certo? Portanto, não vai continuar para baixo a lista de itens. Então, voltando para o caso switch real, switch basicamente toma uma medida válida que contra o caso. Se for verdade, então ele faz o código dentro da seção do caso. Então, se apertarmos o jogo em nossa calculadora, vamos receber alguns pedidos, digite um número para outro número três. Vamos multiplicar, que é m. Pressione Enter. É quando o caso do interruptor funciona, e ele descobre que pressionamos M. Então ele executa o caso para m, que é 4 vezes 3. Pressione qualquer tecla para fechar e vamos. Agora seu dever de casa antes de passarmos para a próxima seção é ver como fazemos isso usando algo chamado “if else”. Então vá para o Dr. Vá e procure por “se “em C-Sharp. Porque se else fornece exatamente a mesma funcionalidade que o caso de switch. Mas Switched Cases mais agradável de ler quando você tem um monte de opções, é por isso
que eu apresentei a você primeiro. Se mais permitir que você faça a mesma coisa. Então, se você estiver se sentindo bem, vá em frente e repita este exercício, mas substitua todas as linhas de caso por if elses. Agora, eu não vou te dar a resposta para isso porque isso é parte do aprendizado. Precisam aprender a fazer isso sozinhos. Tudo o que eu vou dizer é que tudo o que você precisa para substituir é a primeira linha. E essas linhas onde diz caso, você pode deixar a execução real como ela está atualmente.
14. Se o Else no C: Se mais é um conceito muito importante em C-Sharp. E, de fato, todas as linguagens de programação estão presentes desde o início. Por quê? Porque ele permite que você dite o fluxo do seu programa. Então vamos ver um exemplo disso. Digamos que temos um nome de variável, que é uma string igual ao meu nome. Grant, e se quisermos fazer um teste nessa variável para ver se tem mais de cinco letras? Bem, é aí que se mais entra na foto, se o nome do ponto de comprimento. Então isso não é exatamente a sintaxe de C Sharp. Acabo de curto-circuito de tudo por simplicidade aqui. Se o comprimento do nome é igual a 5, o duplo igual significa igual, então vamos fazer outra coisa. Se o comprimento do nome for maior que cinco, faremos outra coisa. Senão, vamos fazer uma última opção. Então, o que mais se faz é permitir que você compare a coisa que você está olhando. Então o comprimento do nome com alguns valores que você pré-programou aqui. Então, cinco, maior que cinco. E então ele permite que você execute algo. Agora, uma vez que você está passando por uma instrução if else, a primeira coisa que corresponde será a coisa que executa o código e nada mais irá executá-lo. Algumas linguagens permitem que você tenha uma instrução de execução final, mas não C nítido, tanto quanto me lembro. Ou pelo menos nunca a usei. Então, mas é importante saber que você só vai executar uma dessas declarações. Se você passar e nada for executado, então ele irá executar o que está na seção inferior, a seção else. A outra coisa que vale a pena notar é que você pode apenas ter uma declaração if por si só. Então você pode ter o rápido se o comprimento do ponto nome é igual a 52 algo que você não precisa de outro. E você pode ter qualquer número de outros “se “que você gosta, mas você só pode ter mais um.
15. O que é um bug no C Sharp: Então, o que é um inseto em C-Sharp? Bem, digamos que você tenha um pedaço de software que está criando. E esse pedaço de software tem um monte de código. Todos esses bits de código em seu software estão interagindo um com o outro o tempo todo. Eles estão fazendo coisas, eles estão enviando dados para frente e para trás. Idealmente, em um desenvolvedor de software também, fazemos essas coisas com um padrão de design e uma especificação rigorosa para evitar quaisquer problemas. Mas, na realidade, isso nunca acontece. Um desenvolvedor de 100% e 90%, eu diria, é um bom desenvolvedor, alguém que recebe 90% do caminho até lá. Então o que tende a acontecer com isso é que obtemos resultados inesperados. Então, digamos que você está obtendo dados do servidor. Você espera alguns dados de volta. Seu software não fornece dados. Então você verifica a conexão. A conexão está boa, e isso significa que deve haver um bug ou um erro em algum lugar do seu software. Então isso é basicamente o que um inseto é, é um erro. Agora, o que é muito mais importante do que o que um bug
é, é como evitá-los. Como ou o que pensar como um desenvolvedor de software para que você não corra para essa bagunça. Quando você inicia o desenvolvimento de software, 70 a 90 por cento do seu tempo é gasto corrigindo bugs. Como você segue em frente. Isso é encolhe para talvez 50 por cento, 30 por cento, mas eu diria que provavelmente fica por aí. 30% do seu tempo é gasto corrigindo bugs. Na primeira versão, haverá bugs durante toda a vida útil do seu aplicativo. É algo que você precisa aceitar. Então, como você evitá-los em primeiro lugar? Bem, a razão número um para as pessoas pegarem bugs é que não entendem código. Então eles vão, por exemplo, StackOverflow, eles encontram a linha de código e simplesmente colam em seu aplicativo. Mas também ciente do contexto em torno desse pedaço de código e o que ele está fazendo dependendo de onde você colocou, porque isso pode ter um efeito. Então o atalho para isso é RTL fm, que significa ler o manual de algo, certo? Isso significa ler a documentação, entender o que você está colocando em seu aplicativo. A segunda coisa é má arquitetura. Então todos esses pedaços de código conversando uns com os outros não são uma coisa boa. Se sua arquitetura é ruim, certo? Se você tem uma arquitetura de MVVM, que significa Model-View-ViewModel ou MVC, Model-View-Controller. Há toneladas de outras arquiteturas, não apenas para visualizações, mas para tudo realmente. Você precisa manter isso e entendê-lo ainda mais. Então, isso volta para a primeira arquitetura entender e, em seguida aplicá-lo estritamente ao seu aplicativo e você realmente vai reduzir o número de bugs. A última coisa, a última razão pela qual as pessoas têm muitos bugs é que eles estão fazendo muito em seu software. Ou, mais precisamente, eles estão fazendo muito em um único pedaço de código. Então, um exemplo clássico é que você tem uma exibição onde você está mostrando uma lista de itens no iOS, por exemplo, usando Xamarin para C nítido. Então você também vai colocar o código de busca do servidor. Naquela vista. O problema é que quando você se afasta dessa exibição, o código de exibição é encerrado, é apagado, removido. Então seu código de servidor onde você está buscando coisas também é removido. Então, da próxima vez que
você carregar a exibição, você pode esperar que você vai ver lista, sua lista de dados do servidor rolou ao longo uma determinada maneira e ele está indo para buscar outra página de dados. Mas, na realidade, está começando todo o processo novamente. Então isso seria um bug clássico de fazer muito no mesmo pedaço de código. Então não faça isso. Sempre que você tiver um pedaço de código, coloque alguns comentários no topo do código e diga, o que eu estou fazendo com este código é x, y, z. Estou apenas mostrando a exibição. Não estou recebendo dados de um servidor ou banco de dados ou seja lá o que for. Então não faça muito e isso me lembra que eu faço patinação no gelo. Um dos meus mentores de muitos anos atrás tinha uma frase que ficou na minha cabeça e ele sempre disse que menos é mais. E isso também é verdade no desenvolvimento de software.
16. Bugs e tipos de números: É hora de corrigir o bug que vimos anteriormente. Então, se executarmos nosso aplicativo e digitarmos algum tipo de número como seis, dividimos por sete. A resposta quando selecionamos Dividir será 0. Isso claramente não é verdade. É mais como 0.9 ou qualquer que seja a resposta, 0.9 alguma coisa, 0.8, alguma coisa. Esse bug é derivado do fato de que estamos usando inteiros para nossas variáveis. E inteiros apenas armazenam números inteiros. Então eu quero que você pause o vídeo agora, e eu quero que você corrija esse problema no código. Mostrei um vídeo sobre a diferença entre float inteiro e duplo. Eu também lhe mostrei que você não pode misturar os dois quando você está fazendo cálculos. Então eu quero que você saia, descubra como resolver esse problema, pause o vídeo agora e então eu volto com uma solução. Então, como você se saiu? Bem, se você simplesmente substituir um flutuador aqui e eu flutuar aqui, então isso é praticamente tudo o que precisamos fazer porque aqui em baixo, quando trabalhamos fora do início, nós não estamos realmente calculando o resultado e, em seguida, armazená-lo em um variável que está calculando. Então, por padrão, isso vai se
atribuir automaticamente a um flutuador na memória temporária. Se estivéssemos calculando, diríamos algo como flutuador. Nossa resposta é igual a qualquer número 1 mais num 2. E isso automaticamente, é
claro, nos daria um carro alegórico, certo? Mas não vamos fazer assim. Estamos repetindo o código que não deveríamos, mas vamos corrigir isso mais tarde, em um estágio posterior. Então isso é basicamente tudo que você tem que fazer. Agora, se você escreveu o seguinte duplo e duplo, você deve estar bem, porque novamente, um duplo é apenas um número mais preciso, muito mais preciso do que um flutuador. Por exemplo. A precisão dos números não é um problema em um computador desktop porque temos tanta energia disponível para nós. Agora, se você estiver executando, por exemplo, o Apple Watch, um smartwatch de algum tipo, então você precisa começar a estar ciente de quanto poder de processamento certas coisas exigem para que você não ultrapasse a simulação, destruir seus usuários Patreon vida usando demais a CPU, que também irá retardar o seu aplicativo. Então, no software desktop, diferentes tipos de multa, nós realmente não precisamos pensar sobre as consequências. Mas em dispositivos ou programas limitados que precisam operar muito, muito rápido, você precisa estar ciente das vantagens e desvantagens de certos tipos.
17. Bugs que causam os os os Bugs e a entrada do usuário: Certo, é hora de um inseto que não
vimos antes e um aviso para mostrar esse inseto. Eu mudei os dois tipos de num1 e num2 de volta para inteiros. Obviamente, você pode deixá-lo como duplos e flutuadores se você quiser que seu cálculo funcione corretamente. A razão pela qual eu mudei de volta é porque você não
pode ver o bug se você usar um duplo ou flutuador. E esse bug, se rodarmos o aplicativo, tem a ver com dividir por 0. Então, se dissermos seis divididos por 0, teremos um acidente. Então todo o programa se mata. E o Visual Studio nos diz onde o acidente
aconteceu, que linha de código e nos leva até ele. E nos diz que tivemos uma exceção que foi tentada dividir por 0, uma divisão de pontos do sistema por exceção 0. Agora você não entende isso com flutuador e duplo. Eu acho que você está acostumado a muitos anos atrás, mas obviamente isso mudou eles. Então temos que descobrir uma maneira de impedir que isso aconteça. Porque o que temos que fazer, vamos parar com isso usando o Shift F3. Bem, temos que fazer é limpar a entrada do usuário. Então isso é realmente parte do design de sua experiência de usuário. Se você pesquisar o Google para UX, você pode aprender tudo sobre UX é um assunto profundo e fascinante. E toda vez que você entrar no Facebook e rolar, esse é o UX Maestro está no trabalho chamando sua atenção e denotar pernas. Eu sei que funciona porque você não pode parar de rolar, certo? Na verdade, instalei uma extensão no Chrome que bloqueou o feed do Facebook. E então eu notei que eu continuava entrando nisso e eu não sabia o porquê. É porque eles a experiência do usuário era tão poderosa que eu estava basicamente viciado como todo mundo é hoje em dia. E isso ajuda a quebrar a parte de trás. Então agora eu realmente não vou às redes sociais de qualquer maneira, voltando ao assunto. Então o que queremos fazer aqui é só dividir onde isso vai acontecer. Se temos adicionar, subtrair e multiplicar 0 realmente não importa. É só dividir onde é um problema. Então o que vamos fazer aqui é ter o que é chamado de loop while. Agora este loop vai girar e girar e executar o que quer que esteja aqui, desde que uma certa condição seja verdadeira. Agora costumo dizer que não
gostamos de usar “while loops”. São perigosos a não ser que saibas o que estás a fazer. Mas, neste caso, é realmente uma solução útil e não é tão perigoso porque enquanto os loops podem fazer você ficar preso em um loop indo redondo e redondo. Se você esquecer de colocar em uma linha de código que escapa você do lábio. Tudo bem, então o que estamos fazendo nesse loop de tempo? Enquanto o número dois é igual a 0? Vamos dizer ao usuário, por favor insira um divisor diferente de zero. E então vamos definir um para,
para o novo item que eles entram. Então vamos tentar isso. Calculadora 60, divida, digite um divisor diferente de zero 0, e ele só vai continuar girando esse loop enquanto eu continuar pressionando 0, se eu pressionar outra coisa, eu recebo a resposta que eu quero. Ok, então foi assim que basicamente resolvemos o erro de entrada do usuário. Ok, eu acho que isso é tudo o que realmente há para dizer sobre isso, exceto pelo fato de que eu vou apenas fazer mais
uma demonstração para você se nós mudamos isso de volta para carros alegóricos, que obviamente nós vamos manter porque nós queremos que a calculadora trabalho, então nós realmente não precisamos de todas essas linhas. Ok? Então, se eu removê-los e executá-lo, veja o que acontece. Se eu dividir por 0, 6, 0, dividir, teremos o símbolo para o infinito. Então isso funciona se usarmos um carro alegórico. Ok? Eu vou deixar isso aqui porque nós nunca queremos usá-lo para dividir por 0. A maioria das calculadoras não permitem.
18. O que é refactoring no C Sharp: Refatoração. Muitas pessoas sabem que a refatoração tem algo a ver com a movimentação de código, mas não sabem por que fazemos isso ou por que acaba sendo realmente necessário. Então vamos discutir isso aqui. Primeiro de tudo, digamos que temos algum código. E no mundo do desenvolvimento de aplicativos, por exemplo, no iOS, que é um dos lugares que comecei, você tem algum código para mostrar coisas, e no iOS é chamado de ViewController. As coisas mudaram um pouco disso, mas as pessoas ainda usam o conceito ViewController. Temos um monte de código lá e a tentação é colocar código lá que não tem nada a ver com o ViewController. Algo a ver com buscar os dados para mostrar no ViewController. Agora você não deveria fazer isso. Você deveria separar as coisas. Mas, na realidade, como desenvolvedores um preguiçoso às vezes nós apenas jogar um método em e dizer, vai ficar tudo bem. Não preciso de uma turma totalmente nova para isso. Vou jogá-lo no código. Então o que acaba acontecendo é que temos um monte de funcionalidades
não relacionadas com a classe original. Então, no futuro, quando houver um bug onde pulando em todas as classes
tentando decifrar onde fizemos certas coisas erradas. Mas isso torna esse trabalho muito, muito mais difícil se o código não for limpo e ordenado. Então, o que chamamos a isto? Bem, uma GB FM, que é uma grande confusão em branco, e eu tenho certeza que você pode preencher o espaço em branco sobre isso. Então é quando a refatoração entra na equação. Refatoração é simplesmente pegar esse código e dividi-lo em seus elementos constituintes. Então, se eu tiver um grande bloco de código com algo a ver com a vista e assuntos fazer com buscar algo de um servidor. O que eu faria de acordo com o diagrama inferior é dividi-lo em apenas vista. E outra classe para apenas buscar coisas do servidor. Então está tudo bem e separado. A interface entre as classes é clara. Então, quando eu voltar para rever o meu código em seis meses e eu
esqueci tudo sobre o meu código porque não importa o quão bom você é, você esquece o seu código. Se tudo é bem auditoria, então você pode voltar e imediatamente ou quase imediatamente entender o que estava acontecendo seis meses, quando você escreveu este código e corrigir o que precisa ser corrigido ou alterar o que precisa ser alterado. Então isso é refatorar, ordenar coisas em áreas lógicas.
19. Refatoração - Aulas para dispositivos Junios: Certo, você deveria ter assistido um vídeo rápido sobre o que é refatoração e sobre o que se trata. Mas apenas no caso de você não ter feito por algum motivo, refatoração basicamente acontece quando colocamos um monte de código em nossos vários arquivos de código e decidimos em um momento posterior que ele está muito entupido, muitas coisas estão acontecendo em cada arquivo. E o que queremos fazer é separar essas funcionalidades em suas próprias classes distintas. Então o que vamos fazer é basicamente remover essa área de cálculo e vamos colocá-la em sua própria nova classe. Então, abaixo do namespace da calculadora, eu vou colar no seguinte. Eu só vou fazer isso para que possamos ver tudo em uma tela. Então o que eu colar foi uma classe chamada Calculadora. E esta classe tem uma operação estática. Ainda não cobri estática com você, mas para fins de aprendizagem, vamos deixar as coisas estática. Esta classe ou este método em vez disso este método estático público retorna. Então, sempre que você vê um tipo declarado antes do nome do método, então, neste caso, duplo é declarado antes de fazer operação. Isso significa que você vai retornar um duplo deste método. Então você vai fazer algo e depois devolver um número. Operação Do é o nome do método. E vamos passar o número um, o
número dois, e a cadeia que representa a operação. Então multiplique, adicione, subtraia e divida. Então vá em frente e copie isso. Você pode pausar o vídeo a qualquer momento para fazer isso. Vou continuar falando porque você pode pausar a qualquer hora. Temos uma variável vai armazenar o resultado da nossa resposta, que atualmente é definido como um duplo. Então nós vamos ter todos os nossos números como tuplas a partir de agora porque é o tipo mais preciso que existe e esta é uma calculadora, então precisão é importante. ponto duplo, nan não significa um número em praticamente todas as linguagens de programação. O que estamos fazendo aqui é que estamos dizendo que isso ainda não foi dado um número. E fazendo isso, se tentarmos retornar esse resultado agora, acho que devemos receber um erro. Então, se eu for aqui e disser para devolver o resultado, por favor. Recebemos um erro? Acontece que não temos porque ainda é do tipo duplo. Só não é um número. Ok. Bem, eu era uma pequena experiência divertida. Eu nem sabia que ia fazer isso. Tudo bem,
então nós temos o caso de troca que leva o operador que passamos aqui em cima. E nós corremos através do loop familiar onde temos um caso SMD. Definimos o resultado como qualquer que seja a soma ou a multiplicação de subtração aqui. Se tivermos num dois não é igual a 0, então o resultado vai ser num1 dividido por num2. Ok? Caso contrário, vai quebrar. Então, não vai fazer nada. Agora você pode se perguntar por que não pedimos entrada do usuário aqui. Isso porque quando estamos refatoração, o que queremos fazer é separar esses itens individuais para diferentes partes do código. Então classe de calculadora faz literalmente uma coisa ou um grupo de coisas, que é calcular respostas, certo? Não há entrada, não há saída. É só pegar os números e cuspir alguns números para fora. E finalmente, eu não fiz isso com você, mas em caso de troca você pode ter um padrão. Então,
se nada combina, vai quebrar e devolver nada disso. E então o, nesse caso, ele retornaria o ponto duplo ANN sabe o número. Ok, então esse é o primeiro refator que vamos fazer aqui. Então, se eu diminuir um pouco, você pode ver a coisa toda em sua totalidade. Então é um pouco mais claro. Então, no namespace da calculadora, e eu acredito que eu mostrei isso para vocês em um vídeo. Nós vamos ter a classe de calculadora, que apenas faz cálculos e simplesmente retorna um duplo, que significa que agora estamos prontos aqui para remover todo
esse código de caso switch e ir sobre o processo de refatoração com este onde nos concentramos mais em obter informações de entrada e saída do usuário e seguida, descarregar esse problema de calculadora para a classe de calculadora que acabamos de criar.
20. Refactoring o programa principal: Certo, é hora de refatorar nosso programa principal agora que
adicionamos uma aula para fazer as operações da calculadora, então claramente não precisamos de tudo o que está aqui embaixo. Então o que eu vou fazer é eu realmente vou apenas remover tudo aqui e eu vou começar de novo mais ou menos. Então você pode ver o que está acontecendo muito mais claramente, eu vou colar em algum código para começar. Então este código, em primeiro lugar, temos a linha direita console que diz ao usuário o que é que é de antes. Então tivemos isso. Eu só vou remover este comentário aqui em cima. Mas acima disso é a área importante, eles variável importante que garante que o nosso aplicativo continua em execução. Então temos um booleano que é um verdadeiro ou falso e a variável app. E então aqui em baixo no tempo que não acabam, vamos continuar executando nossos programas. Por isso, enquanto o fim é falso. Vamos continuar indo para isso enquanto loop. Então, se o usuário quiser fazer um segundo cálculo, eles são bem-vindos ao. No momento, estamos recebendo uma área vermelha aqui porque está esperando outro fechamento de uma cinta encaracolada. O que eu perdi aqui? Bem-vindo à depuração 101. Então, esse é aquele. Temos um fecho para conseguirmos o que queremos lá em baixo. Ok, então está tudo bem agora. Então toda a nossa ação realmente vai acontecer neste loop selvagem, certo? Então, dentro do loop while, vamos ter o seguinte código. Se você precisar copiá-lo e vá em frente, pausar agora e baixar o código. Vou destacá-lo para que você possa vê-lo um pouco mais fácil. Tudo bem, então se você entendeu isso, vamos começar a passar por isso. Vou dar um zoom para tornar isto mais fácil de ver. Primeiro de tudo, estamos mudando o esquema de entrada, certo? Então lembre-se quando estamos inserindo texto no console, ele automaticamente volta para nós como um tipo de string, não como um tipo de número. Então o que vamos fazer é pegar essa entrada e vamos
chamá-la apropriadamente número de entrada um e número dois. No momento, não há nada lá, por isso deixamo-los em branco. E então nosso resultado de cálculo será 0 porque é isso que o resultado atual é. Em seguida, damos ao usuário algumas instruções para digitar um número e pressionar enter. Nós lemos isso na entrada número um. E então o que vamos fazer é criar outra variável chamada Reivindicação Número 1, que é um duplo definido atualmente como 0. E o que vamos tentar fazer nas próximas linhas é pegar a entrada e colocá-la no número um limpo. Então o que estamos fazendo aqui é entrar
na aula dupla e vamos tentar pausá-la. Agora, pausar apenas significa que vamos
lê-lo e então tentar colocá-lo no duplo basicamente. Então, tripés, se eu digitar isso, devemos receber essas pequenas mensagens. Desculpe por isso. Isso diz que os tripés na verdade não nos dão nenhuma pista sobre o que está fazendo. Lá vamos nós. Converte a representação de string de um número em seu equivalente de número de ponto flutuante de precisão dupla, um valor de retorno indica se a conversão foi bem-sucedida ou falhou. Então ele vai tomar uma entrada e, em seguida, ele vai tentar e saída para limpar núum. Não se preocupe com esta palavra-chave por enquanto. Esse é um tópico mais tarde que abordaremos. Mas esta é basicamente a sintaxe da declaração. Então, enquanto isso é falso, então nós vamos mostrar ao usuário esta entrada não é válida, por favor insira um valor inteiro. E então vamos tentar ler isso de novo. Uma vez que o lemos, ele volta para aqui e repetimos o processo até que eles acertem. Agora eu não acho que eu iria escrever valor inteiro. Vou colocar um número válido. Ok? Assim que passarmos por isso, aquele pequeno bloqueio de estrada, o que vamos fazer é escrever pontos de console. Vamos digitar outro número e pressionar Enter. Então, novamente, mesmo processo, mas estamos fazendo isso para entrada de números exatamente a mesma coisa com try pass, exatamente a mesma coisa com o console, certo? Exceto que eu também vou mudar isso para o seguinte. Ok, então nós temos nossas entradas e nós os limpamos ao longo do caminho. Agora vale a pena notar. O que estamos fazendo aqui é refatorar. Estamos condensando nosso código, colocando-o em blocos lógicos, áreas lógicas. Aposto que você já pode ver que estamos repetindo o código aqui e aqui. Então essas coisas, esses são candidatos que poderiam realmente se mudar para diferentes áreas, certo? Eles poderiam ir para a sua própria classe. Pode ser chamada de aula de limpeza de entrada, o que quer que lhe queiras chamar. Ok, então para a próxima parte deste código. Então eu vou colar isso e realçado. Você pode pausar e copiar novamente. Certo? Então isso é muito parecido com o que tínhamos antes. Estamos apenas pedindo que o usuário escolha um operador da lista a seguir e eles escolhem ASM D. E então, é claro, nós lemos essa linha. Então, isso será armazenado em uma string chamada string operador. Agora, se voltarmos para o topo aqui onde criamos nossa operação du, vocês notarão que passamos na corda aqui em cima. Então é aí que isso vai ser avaliado eventualmente, certo? Então, de volta para baixo. A próxima coisa que vamos fazer é anotar
o fato de que este cálculo pode falhar de alguma forma estranha. O que vamos ter aqui é chamado de declaração de tentativa de captura. Ok? E o que try-catch faz é o seguinte. Qualquer código que eu tentei executar na instrução try, se ele falhar, se ele causar uma falha, se ele voltar como o valor nulo, se algo estranho acontecer que o programa não está esperando. Eu sou vigarista. Ele pega isso em vez de destruir todo
o programa e traz você para este bloco de código em vez disso. E esta exceção e diz a você exatamente a coisa que deu errado. Então. É nobre pensar que o seu software nunca irá falhar. Se você é realmente, muito inteligente, que você pode codificar coisas. Então nada de ruim acontece na realidade. Isso não é verdade. E há momentos em que você não pode evitar
isso, ok, é apenas como as coisas são codificadas na biblioteca que você deseja usar, no serviço online que você deseja usar. E então você tem que fazer uma try-catch. Tenta apanhar. Uma das coisas mais úteis em C Sharp, mas também as coisas mais usadas. Para ser honesto, as pessoas os usam em todos os lugares, mas você deve usá-los com moderação. E para aqueles casos em particular onde, você sabe, vai haver um acidente. Então lá dentro, estamos prontos para começar a fazer nossos cálculos. Agora, na seção de tentativas, vamos ter o seguinte. Vamos definir essa variável de resultado como a calculadora fazer operação e passamos os dois números e o operador em. Então isso vai nos dar nosso resultado simples o suficiente. Agora, se você é novo em C sharp ou novo para programação orientada a objeto, o que você esperaria ver se você apenas navegar e código
das pessoas é dizer nova calculadora, ponto, fazer, operação, etc A razão pela qual não temos que neste caso, que nós apenas ir direto para a classe é porque tudo é estático. Estático significa que o método pertence à classe e não ao objeto. Agora, se você ainda está confuso sobre classes e objetos, não se preocupe. Então, como eu para sim, na verdade, quanto mais você faz isso, mais você vai se acostumar com a idéia de que classes fazem objetos. Mas as classes também podem ser o seu próprio recipiente de armazenamento separado. Ok, chega disso. Então, o que acontece se o duplo não for um número? Lembre-se que definimos o DoubleTree não um número na classe calculadora. Bem, então podemos apenas dizer ao usuário que sua operação resultará em um erro matemático. Ok? Caso contrário, dizemos ao usuário que seu resultado é, e veremos o que isso acontece no final. Escrever. A única coisa que temos de acrescentar aqui é uma mensagem para o nosso utilizador final. E a exceção ocorreu. E vamos dizer-lhes o que era. E.Me. Então esse e é a exceção que é passada aqui e que contém uma mensagem que diz em inglês o que aconteceu. Bem, eu digo inglês simples, mas programadores não gostam de inglês simples. Gostaria que as vezes o fizessem. De qualquer forma, isso dirá ao usuário final o que está acontecendo. Então, se passamos por isso, tudo o que resta a fazer é perguntar ao usuário final, o que você quer fazer agora? Então, colamos no seguinte código. Acabamos de colocar um bom terminador que diz ao usuário que estamos no final da operação. Isso vai esperar que o usuário responda. Então, pressione N e Enter para fechar o aplicativo, ou pressione qualquer outra tecla e enter para continuar. E então, se lermos a linha e ela diz fim, vamos definir aplicativo final igual a verdadeiro. Agora, se você nunca viu isso, se mais na mesma linha, você pode fazer isso. O que significa que não tens de adicionar as chaves assim. Se você tem uma única pia, única declaração simples para apenas um se ou realmente um outro, então você pode ter sua próxima declaração na mesma linha. Então isso é só uma dica útil que economiza tempo. E se n o aplicativo é verdade, o que vai acontecer é no topo, nós vamos ser chutados para fora deste loop while. Ok? Se não for verdade, vai voltar ao topo e continuar. Isso simplesmente coloca um espaço,
um retorno de carruagem, se você quiser. Então eu vou passar por tudo isso agora. Onde estamos nesta seção? Então, depois do tempo, vamos encerrar o aplicativo. Mas se formos expulsos do ciclo de tempo, o que queremos fazer é voltar e dizer que é isso. Já tive o suficiente. Vamos para trás. Então, agora, se eu tocar no ícone da calculadora no topo, digite um número seis. Vou tentar digitar uma letra H, não uma entrada válida. Vamos tentar cinco. Vamos adicioná-los. E o resultado é 11. Pressione N e entidade feche o aplicativo ou pressione qualquer tecla e termina para continuar. Certo, então podemos digitar um número. Então vamos tentar o 670. Dividir. Sua operação resultará em um erro matemático. Então agora, neste caso particular, nos livramos desse símbolo do infinito. E dissemos ao usuário final que você não pode dividir por 0. Então, basicamente, nós substituímos o comportamento padrão executando o seguinte. Então, se o número não for igual a 0 dará um resultado. Se for igual a 0, então retornamos o resultado que
definimos como um ponto duplo nada um número. Ok, então esse é todo o programa principal, refatorizá-lo completamente. E agora, eu suponho que se você quiser fazer algum dever de casa, eu não vou fazer isso no curso. Descobrir uma maneira de colocar isso em uma classe diferente. C, você não está repetindo essa entrada, todas essas linhas de entrada e o que você tem, porque eles são muito, muito parecidos. Então eu acho que você poderia realmente encontrar uma maneira de condensar isso de alguma forma. Mais uma vez, não vou mostrar o quão voluntário é o dever de casa para você. Se você quiser fazer isso.
21. Projeto do curso: Certo, é hora de seus projetos de classe agora, qual é o seu projeto? Bem, é para criar um aplicativo básico de console muito semelhante ao que criamos juntos nesta classe. Mas o que eu quero que você faça é colocar uma ligeira rotação sobre ele. O que eu quero que você faça é criar um aplicativo que permite que você adicione vendas. Por exemplo, $4,5 dólares mais $2, etc. Depois de adicionar essas vendas ou cada vez que adicionar outra venda, quero que o programa
exiba automaticamente um total em execução para que você não precise perguntar ao usuário. Ele automaticamente diz a eles o que eles estão executando total é. E isso pode parecer simples, mas isso é o básico de algo como um aplicativo de contabilidade mantendo o controle de um total em execução. Então esse é o projeto básico e eu gostaria que você parasse com isso do zero. Você pode ir e consultar os vídeos que fizemos juntos. Você pode consultar o software que acabamos de criar juntos, mas é sempre melhor se você executar as coisas do zero. Então você é forçado a usar sua memória ativa para lembrar como realmente fazer essas coisas, certo? Se isso é muito simples e você fizer isso em alguns minutos, então eu tenho um projeto mais avançado para você. E isso é adicionar uma segunda camada ao aplicativo, que é permitir correções, por exemplo, menos $6 ou menos $10. E você pode ver se este é um aplicativo de contabilidade, esses são os dois lados da moeda contábil. Você tem sua renda e você tem suas vendas. Não, você não tem renda de vendas. O que eu quis dizer era renda e despesas. A renda vem das vendas, é claro. Então as correções desses números negativos seriam seus custos ou suas despesas. Eu quero que você adicione isso ao projeto e
também exibir o total em execução uma vez que você subtrair esses. Então esse é o seu projeto. Uma vez concluído, eu gostaria que você fizesse uma captura de tela
da parte relevante que é diferente do software que acabamos de criar. E, em seguida, poste isso
na área de classe do projeto Skillshare, onde você pode realmente postar todas essas obras de arte, se quiser. Certo? Então esse é o meu briefing. Boa sorte com isso, e estou ansioso para ver o que você pode inventar.