Augs MachadoBe the change you want to see in the world!

What number is missing?

Answer if you can

Augs Machado 2019-07-19

What number is missing?

The What number is missing? is a simple zero-sum game. From Wikipedia:

A simultaneous, zero-sum game, it has only two possible outcomes: a draw, or a win for one player and a loss for the other.

The objective game is to hit the 10 numbers that are missing in sequence.

Project available in What number is missing? project

Business rules

Business rules are policies, conditions, or system constraints that must be considered in the execution of your processes. Business rules often influence the behavior of certain use cases.

  • The game board has 100 possibilities, but the system shows somenthing 99 numbers.
  • A number will be removed, but the number must be a true random number based on clock computer.
  • The system generate a random number between 1 and 100 hundred.
  • To win, the user needs to hit 10 numbers in sequence.

Numbered description

The narrative of what the system and the user performed is described through a series of numbered steps.

  1. The user start the system.
  2. Based on clock computer, the system generate a random number between one and one hundred.
  3. The random number is removed of visualization of the user.
  4. The system shows a table with 99 numbers and the question: “What number is missing?”.
  5. The user enters your numeric answer between 1 and 100.
  6. If the answer is correct, the user starts a new level. However, if the answer is incorrect, the system shows a message: “You lose! Want to play again? Yes [y] or no [n]?”. If yes, starts a new game.
  7. To win, the user needs to hit occult number of your screen.

References

[1] Image used in post available in Pixbay

Rock, paper or scissors?

A simultaneous zero-sum game

Augs Machado 2019-07-18

Rock-paper-scissors

From Wikipedia:

A simultaneous, zero-sum game, it has only two possible outcomes: a draw, or a win for one player and a loss for the other.

Project available in Rock, paper or Scissors project

Business rules

Business rules are policies, conditions, or system constraints that must be considered in the execution of your processes. Business rules often influence the behavior of certain use cases.
From Wikipedia:

  • The players usually count aloud to three, or speak the name of the game, each time either raising one hand in a fist and swinging it down on the count or holding it behind. They then “throw” by extending it towards their opponent.
  • A player who decides to play rock will beat another player who has chosen scissors (“rock crushes scissors” or sometimes “blunts scissors”), but will lose to one who has played paper (“paper covers rock”). A play of paper will lose to a play of scissors (“scissors cuts paper”). If both players choose the same shape, the game is tied and is usually immediately replayed to break the tie.


Other business rules are:

  • The system needs to be random.
  • After three rounds, the system gives to show the winner.
  • Based on clock computer, the system generate a random number between one and one hundred. If the generated number is between one and thirty-three, the system will play rock. Than if the generated number is between thirty-four and sixty-six, the system will play with paper. But if generated number is between sixty-seven and one hundred, the system will play with scissors.

Numbered description

The narrative of what the system and the user performed is described through a series of numbered steps.

  1. The user start the system.
  2. The system shows: “Choose an option: 1- Rock, 2- Paper, 3- Scissors”.
  3. The user chooses the desired option.
  4. Based on clock computer, the system generate a random number between one and one hundred.
  5. If the user wins the round, increase a point for on your scoreboard. Otherwise, increment a point for on the system board.
  6. Repeat for 2 more times.
  7. Shows the winner and the pontuation of the match.
  8. The system shows: “Want to play again? Yes [y] or no [n]?”. If yes, repeat more once time, else show the final scores of matches.

References

[1] Image used in post available in Pixbay

Calculus

A calculator for High School

Augs Machado 2019-06-13

Calculus is a simple calculator for high school students and created in C++. Project available in Calculus project

References

[1] Image used in post available in Pixbay

The art of programming

Organize and domine the complexity

Augs Machado 2018-12-29

“A arte de programar consiste na arte de organizar e dominar a complexidade.” - Edsger Dijkstra

O que é programação pode ser resumido em uma série de comandos executados, de forma a obter um resultado satisfatório para um problema. Por exemplo, digamos que queira fazer um bolo, o passo à passo da receita será os comandos, se bem executados por você dará um belo bolo no final.

Tudo em nossa vida tem certa medida de programação, vai desde o relógio que te acorda de manhã até a forma como lê um livro. Uma agenda de compromissos formata uma programação de eventos que deve executar ao longo de um dia. Quando vamos ao supermercado com uma lista de compras estamos programando nossos gastos. Logo tudo em nossa vida é permitido programar, incluindo nossa preguiça.

Entretanto, o tipo de programação ao qual queremos descrever é a programação computacional, ou seja “o processo de criação de um conjunto de comandos que dizem ao computador como realizar uma tarefa. Programação pode ser feita usando uma variedade de “idiomas” do computador, tais como SQL, Java, Python e C++.” [2]

Por que aprender a programar?

Aprender a programar é aprender um novo idioma e traz diversos benefícios, olhe alguns deles [3]:

  • Você desenvolve melhor as suas habilidades multitarefas
  • Os riscos de ter Alzheimer e demência diminuem
  • Sua memória também é fortalecida
  • Melhora sua capacidade de tomar decisões
  • Sua percepção fica mais aguçada

Além das inúmeras novas oportunidades que podem se abrir para você, como uma nova recolocação no mercado, poder trabalhar da areia da praia ou ter uma renda extra com esses novos conhecimentos quando estiverem aprimorados.

Não importa muito em qual linguagem irá iniciar seu aprendizado, importa mesmo é que treine bem os conceitos de lógica e de programação, afinal eles mudam muito pouco de uma linguagem para outra, isto é o idioma que irá se comunicar com o computador.

Como programar?

Tem um computador ou celular? Se a resposta for sim, pode começar a aprender a programar hoje mesmo. Afinal, o que ainda está esperando para começar?

Quando aprender?

Provavelmente alguém pode dizer para você, assim como disseram para mim, que você tem que ter uma idade para aprender a programar um computador. Ou ainda que é algo muito complicado de se aprender. Vou te contar um segredo: estão te enganando.

Programar realmente pode parecer algo muito difícil no começo, mas já tentou dizer “elefante rosa” em russo sem nunca ter estudado nem um pouco de russo? Seria um desastre na certa, não concorda?

Quem pode me ensinar a programar?

Recomendo que sejam pessoas que tenham uma certa credibilidade, afinal você está investindo seu tempo em algo. Temos ótimos cursos na Internet, em livros, nas universidades e escolas técnicas, então não existe motivos para não aprender essa arte que é programar.

É muito interessante que inicie seu aprendizado por linguagens que te dê um leque de ferramentas bem consolidado, como Python, JavaScript ou C#. Onde posso aprender a programar? E onde treinar?

Atualmente, podemos dividir aos programadores em 3 grandes áreas [4], mas dependendo da fonte acrescentam o DevOps [5]:

  • Frontend

O frontend é todo o código da aplicação responsável pela apresentação do software (client-side). Em se tratando de aplicações web, é exatamente o código do sistema que roda no navegador. Um desenvolvedor frontend, geralmente, trabalha com linguagens como HTML, CSS e JavaScript, além de frameworks e bibliotecas, como por exemplo Angular, React, Vue.js, etc.

Desenvolvedores frontend não lidam diretamente com banco de dados, servidores de aplicação complexos e várias outras coisas que só quem trabalha com backend conhece. Os desafios são outros: criar páginas ou telas com boa usabilidade e carregamento rápido, garantir o funcionamento nos diferentes navegadores, integrar com os serviços do backend, etc.

  • Backend

O backend é a parte do software que roda no servidor, por isso também é conhecida como server-side. É o backend que fornece e garante todas as regras de negócio, acesso a banco de dados, segurança e escalabilidade.

Esses desenvolvedores trabalham com linguagens de programação como, por exemplo, Java, C#, PHP, Python, Ruby ou até mesmo JavaScript (sim, tem jeito de rodar JavaScript no servidor também). Cada linguagem de programação é um mundo a parte, com comunidades, eventos, frameworks, livros, cursos, etc.

  • Fullstack

Quem trabalha tanto com front-end quanto back-end é conhecido como “Desenvolvedor Fullstack” ou “Programador Fullstack”. Esse é um tipo de profissional mais completo, que pode entregar um projeto do início ao fim, sem necessariamente precisar de ajuda de outra pessoa para criar uma parte do sistema.

Para se tornar um Desenvolvedor Fullstack reconhecido e valorizado no mercado, o primeiro passo é conhecer os fundamentos da arquitetura e tecnologias que você vai utilizar. É um grande erro começar a aprender desenvolvimento de software pelas tecnologias, sem entender antes a base da arquitetura. Exatamente por esse motivo que milhares de pessoas ficam “patinando” por vários e vários meses e até anos, e nunca aprendem corretamente como criar software profissional.

Antes de iniciar a fazer qualquer curso, se souber um pouco de inglês, olhe esse mapa das principais linguagens de programação exigidas no mercado de desenvolvimento, em 2018, de acordo com o tipo de programador aqui e como pode se especializar em cada um dos tipos. Se você entendeu a diferença entre os diversos tipos de programadores, recomendo alguns lugares onde pode fazer cursos via Internet, principalmente pela praticidade de encontrá-los.

  • Khan Academy: traz diversos percursos para serem seguidos e cada um dá o direito de um certificado gratuito. Para quem está iniciando recomendo que inicie pelo percurso de Programação, onde aprenderá JavaScript e algumas outras linguagens para desenvolvimento de programas na Web.
  • Udemy: você encontrará os mais diversos níveis de curso, indo do iniciante ao avançado, têm cursos pagos (dão direito a certificado) e gratuitos. Minha recomendação para quem está iniciando é iniciar pelos gratuitos, pois muitos deles tem um ótimo nível de qualidade de áudio e vídeo. Para ter uma boa experiência com a plataforma e com os cursos procure cursos com mais de 4 estrelas pelo menos.

Tudo o que você for aprendendo, além de ir treinando ao longo do curso, você pode e deve treinar com problemas que provavelmente vai se deparar no cotidiano. A plataforma URI Judge é um local onde encontrará, de maneira gratuita, uma infinidade de problemas de diversos níveis e separados em categorias de acordo com o tipo de problema, em sua grande parte voltados para competição de programação, as chamadas Maratonas de Programação. Não se assuste, embora pareça algo muito complicado, a medida que for treinando se tornará algo fácil com o tempo e o treino.

Quanto custa para programar?

É um grande depende, as plataformas que indiquei tem cursos muito bons e gratuitos, vale a pena dar uma olhada. Porém, existe uma infinidade de locais na Internet que oferecem serviços semelhantes e só cobram a emissão do certificado, outros cobram uma taxa mensal e ainda há aqueles que fazem de forma totalmente gratuitas. Cabe a pesquisa. Desejo que tenha muito sucesso e espero ter te ajudado de alguma forma.

Referências Bibliográficas

[1] BRANDÃO, Daniel. Profissão: Desenvolvedor. Disponível em https://www.slideshare.net/profDanielBrandao/palestra-profisso-desenvolvedor. Acesso em 26-12-2018

[2] FOX, Pamela. O que é Programação?. Disponível em https://pt.khanacademy.org/computing/computer-programming/programming/intro-to-programming/v/programming-intro. Acesso em 26-12-2018

[3] ABDO, Humberto. 5 razões científicas para aprender outro idioma. Disponível em https://revistagalileu.globo.com/Sociedade/noticia/2016/12/5-razoes-cientificas-para-aprender-outro-idioma.html. Acesso em 26-12-2018

[4] ANDRADE, Thiago Faria de. Backend vs. Frontend vs. Fullstack: Escolha o seu futuro como programador!. Disponível em https://blog.algaworks.com/back-end-front-end-full-stack/. Acesso em 29-12-2018

[5] FARIA, Tulio. O que é DevOps? - Canal DevPleno. Disponível em https://www.youtube.com/watch?v=EJEeVf53tiI?rel=0. Acesso em 29-12-2018.

ATM

A simple bank self-service platform

Augs Machado 2018-09-02

The goal was to develop an ATM system or a bank self-service platform, from project design, interface design and project architecture to system implementation. In addition to developing the notion of programming in general, know the fundamentals of embedded software programming, in addition to developing advanced knowledge in C / C ++. Project available in ATM project

References

[1] Image used in post available in Pixbay

SimpleMOOC

The future platform of on-demand courses

Augs Machado 2018-08-16

Microprocessor text

My little Word

Augs Machado 2018-06-13

This repository is designed to use C in order to solidify the concepts of language and to develop the practice of programming logic. The program performs the following functions:

  1. Count characters, lines and words of the file;
  2. Find and show words that are palindromes (words only);
  3. Add integers and positive numbers and show result on the screen

Project available in Microprocessor Text project

References

[1] Image used in post available in Pixbay