Esta é a 2ª semana da turma online Todas em Tech on18 - Back-end, nesta aula do dia 20/08/2022 teremos os seguintes conteúdos:
- 1. Lógica de Programação
- 2. JavaScript
- 3 Tipos de dados
- 4. Variáveis
- 5. Operadores
- 6. Estruturas Condicionais
Lilit Bandeira, é uma travesti paraibana residente no São Paulo, trabalho como Software Engineer no Nubank, ex-aluna e professora {reprograma} e professora também no minas programam, estudante de Analise e Desenvolvimento de Sistemas na Mackenzie;
- Enviar dúvidas no chat com as monitoras;
- Levantar a mão sempre que desejar falar, o que pode ser feito a qualquer momento;
- Manter microfones desligados sempre que alguém estiver falando;
- Manter as câmeras ligadas o máximo de tempo possível;
- Antes de começar, vamos organizar nosso setup.
- Fork esse repositório
- Clone o fork na sua máquina (Para isso basta abrir o seu terminal e digitar
git clone url-do-seu-repositorio-forkado
) - Entre na pasta do seu repositório (Para isso basta abrir o seu terminal e digitar
cd nome-do-seu-repositorio-forkado
) - Altere o nome da pasta "nome-aluna" para o seu nome-sobrenome, este é o único local onde você deve realizar alterações
Entrada, processamento e saída de dados;
Exemplo do caixa eletrônico de um banco.¹
- Entrada de dados;
- Escolha da operação desejada;
- Exibição dos dados ou do status da solicitação;
- Programação sequencial (uma tarefa após a outra);
- Programação condicional (uma verificação a partir do conceito de verdadeiro e falso que determina o que ocorre a seguir);
- Programação de Repetição (instruções que definem um padrão de repetição finito);
A lógica é sobre organizar pensamentos, colocando-os em ordem e decidindo a partir de deduções as melhores soluções para os problemas encontrados, com a lógica somos capazes de compreender o que é pedido, realizar deduções lógicas, enumerar etapas, analisar outras possibilidades, ensinar ao computador a sua solução, analisar detalhes.
Sequência de passos/comandos finitos a serem executados para a realização de uma tarefa/funcionalidade e/ou a solução de um problema.
"Um algoritmo é um conjunto de regras para se obter uma saída específica a partir de uma entrada específica. Cada passo de um algoritmo precisa ser definido de forma precisa e simples o bastante para que ele seja traduzido para uma linguagem de programação e executado por um computador" (Donald Knuth)
Um algoritmo deve ser uma sequência lógica de passos com começo, meio e fim, onde lógica é a parte da filosofia que trata das formas do pensamento (dedução, indução, hipótese, inferência, dentre outros) e das operações intelectuais que visam à determinação do que é verdadeiro ou falso.
É uma forma de estruturar e visualizar, através de um mapa, uma cadeira de processos usando simbologias próprias para ilustrar as etapas de um sistema, com as coordenadas para o desenvolvimento, de forma organizada e de fácil leitura;
Exemplo de Algoritmo em Fluxograma usando Raptor
É uma forma genérica de escrever algoritmo utilizando a sua linguagem nativa sem a necessidade de conhecer ou utilizar a sintaxe de uma linguagem de programação real;
Exemplo de Algoritmo em Pseudocódigo usando Visualg
A linguagem de programação é um método padronizado, formado por um conjunto de regras sintáticas e semânticas, de implementação de um código fonte - que pode ser compilado e transformado em um programa de computador, ou usado como script interpretado - que informará instruções de processamento ao computador. - Sintaxe é uma coleção de normas que especificam a construção da estrutura do código (forma), determinando combinações de símbolos e palavras-chaves podem ser utilizadas em uma determinada linguagem; - Semântica é o significado associado dos símbolos, caracteres ou qualquer parte de um programa (interpretação do código);
| A lógica aplicada a uma linguagem de programação vai produzir um sistema.
Exemplo de Algoritmo com a linguagem de programação Python
É uma linguagem conhecida como uma linguagem de front-end, por ser utilizada por praticamente todos os sites e aplicações web e por ser a linguagem nativa nos navegadores web atuais, não sendo necessária nenhuma instalação de plug-in ou compilação para sua execução; O JS forma com o HTML e o CSS a tríade base para a construção de uma página ou aplicação web, sendo responsável por definir comportamentos dos elementos da página/app.
“Os cógidos escritos em JavaScript, também chamados de scripts, são interpretados diretamente pelos navegadores web”.¹
Apesar de sua fama no front-end, o JavaScript também é uma linguagem capaz de rodar no lado do servidor (backend), ou seja, também pode ser executada em um programa instalado no servidor, retornando para a máquina do cliente apenas o código resultante desta execução, tal qual Java, PHP, C#, Python entre outras.
-
Runtime: Máquina virtual que gerencia um programa escrito em uma linguagem de computador enquanto está sendo executado.
-
Motor V8: é um mecanismo de alto desempenho escrito em C++ que implementa o ECMAScript e é executado no Windows 7 ou posterior, macOs 10.12+ e Linux, podendo ser executado de forma independente;
| “O NodeJS é um software de código aberto, multiplataforma, baseado no interpretador V* do Goggle Chrome que permite a execução de códigos JavaScript fora de um navegador web".²
Em termos mais acessível é um interpretador JAvaScript baseado no motor V8 do google, o mesmo usado no chrome, que permite rodar códigos JavaScript em qualquer servidor, sem a dependência de um navegador.
Os tipos de dados estão extremamente relacionados ao contexto de negócio em que está inserido o sistema que iremos construir ou melhorar, entendê-los possibilita resolver problemas diversos relacionados à algoritmos e estruturas de dados em sistemas complexos;
O JavaScript é uma linguagem dinamicamente tipada ou de tipagem fraca, isso significa que os tipos dos dados num código JS são definidos e redefinidos de acordo com a execução deste código, não sendo necessário que a pessoa programadora defina explicitamente o tipo de dado que será armazenado/processado durante a construção do código;
É uma sequência de caracteres que formam palavras, frases ou qualquer formação que será tratado como um texto, este tipo é comumente representado nas linguagens de programação com a utilização de aspas simples ou duplas, tendo o JavaScript ainda uma terceira forma com a utilização de crase:
"Turma on15 backend"
'Todas em tech'
`Lógica de Programação` // Chamamos esta forma de template string ou string literal
É a operação de unir o conteúdo de duas ou mais strings;
console.log('A turma on18 tem' + 40 + 'alunas')
console.log("A turma on18 tem " + 50 + " alunas")
console.log(`A turma on18 tem ${60} alunas`)
É o tipo numérico primitivo do JavaScript , sendo divididos basicamente em números inteiros int
ou ponto flutuante float
, que são os números decimais;
3
9.123
"4" // neste caso é uma string e não um number
Outro tipo primitivo também conhecido como tipo lógico, que tem apenas dois valores, que representam verdadeiro (true
) ou falso (false
), que podemos considerar como os binários 1
e 0
.
Valor dado para uma variável indefinida;
Representa um objeto vazio, um valor nulo, ou seja, um objeto inexistente;
Um objeto é uma coleção de dados e instruções/funcionalidades para se trabalhar com esses dados, os objetos são mapeamentos de chaves e valores, onde as chaves são strings e os valores podem ser qualquer tipo de dado. No JavaScript podemos dizer que tudo é um objeto, pois é criado a partir de um objeto pre existente na estrutura da linguagem;
{
nome: "Lilit",
endereco: "Rua mais barulhenta da cidade",
numero: 600
}
Uma variável é um símbolo que referencia um espaço na memória da aplicação utilizado para armazenar dados que serão utilizados pelo programa em questão.
Para criar variáveis no JavaScript seguimos algumas regras importantes, a primeira e mais importante é que usamos uma das palavras reservadas var
, let
ou const
para reservar o espaço na memória onde o dado será armazenado.
var nome = "Lilit"
const sobrenome = "Bandeira"
let telefone = 11949801350
A segunda, baseada no exemplo das variáveis acima, é que para atribuir um valor a uma variável temos a seguinda estrutura:
// palavra reservada -> var, const ou let
// identificador -> nomeDaVariável
// operador de atribuição -> =
// dado atribuido à variável -> String, number, boolean...
var curso = "Todas em Tech"
let numeroDaTurma = 18
const turmaEmAndamento = true
A terceira, também seguindo o exemplo das variáveis acima, o JavaScript é case sensitive, ou seja é sensível as diferenças entre letras maísculas e minúsculas, além de seguir o padrão camelCase, para criar variáveis com nomes compostos, juntamos as palavras sempre iniciando a próxima com letra maiúscula, o que cria uma silhueta que remete a um Camelo, dizem shuahsuah
//nomedaaluna não é a mesma coisa de nomeDaAluna
Outras regras importantes:
- As variáveis devem ter seus identificadores iniciando com letra (convencionalmente minúscula), underscore e cifrão e não podem iniciar com números;
- No corpo do identificador ainda podem haver números e símbolos, mas não pode conter espaço;
- Não é possível usar uma palavra reservada para nomear uma variável;
Dica de boa prática:
- Utilize nomes descritivos para as variáveis, que ao ler, qualquer outra pessoa desenvolvedora que esteja lendo o código possa identificar o tipo de dado e seu objetivo no código, é mais indicado usar um identificador grande e descritivo do que pequeno e genérico
let cidadeOndeNasceu = "Rio de Janeiro"
let cidNasc = "Rio de Janeiro"
Quando usar var
, let
e const
?
var
: variáveis de escopo global, podem ser definidas, acessadas e atualizadas em qualquer parte do código;let
: variáveis de escopo definido e bloqueado, não podem ser acessadas fora do escopo onde foram definidas, porém podem ser atualizadas;const
: são constantes, ou seja variáveis imutáveis, não podem ser atualizadas, além disso, como o caso dalet
possui escopo definido e bloqueado, não podendo ser acessadas fora do escopo onde foram definidas;
É altamente recomendável não utilizar var
, exceto em casos muito específicos onde seja necessário, a boa prática é utilizar let
e const
para manter suas variáveis no escopo desejado e evitar que sofram mudanças indesejadas;
Os operadores são fundamentais para realizar qualquer operação numa linguagem de programação, sejam operações matemáticas, de comparação ou lógicas.
- Binários:
1 + 2
// valor1 operador valor2
- Unários:
let i = 5
i++ // valor operador
console.log(i)
console.log(++i) // operador valor
- Ternário (Condicional):
let sistema = "android"
sistema == "ioS" ? console.log("é iphone") : console.log("não é iphone")
// condição ? caso verdadeiro : caso falso
+
→ adição-
→ subtração*
→ multiplicação/
→ divisão%
→ módulo/resto++
→ incremento—
→ decremento**
→ exponencial
=
→ atribuição+=
→ atribuição de soma-=
→ atribuição de subtração*=
→ atribuição de multiplicação/=
→ atribuição de divisão%=
→ atribuição de resto**=
→ atribuição de exponencial
==
→ igual===
→ estritamente igual≠
→ não igual>
→ maior≥
→ maior ou igual≤
→ menor ou igual<
→ menor
&&
→ e||
→ ou!
→ não
São instruções da linguagem baseadas no binário lógico true
ou false
(1 ou 0) que nos permite desviar o fluxo do algoritmo de acordo com um teste baseado em condições.
A condicional if
é uma estrutura condicional que executa a afirmação, dentro do bloco, se determinada condição for verdadeira. Se for falsa, executa as afirmações dentro de else
. (MDN) Podemos encadear vários ifs com else if
const horario = 7; // valor esperado entre 0 e 23
if (horario < 18) {
console.log("dia");
} else {
console.log("noite");
}
Podemos reduzir ao operador ternário:
horario < 18 ? console.log("dia") : console.log("noite");
Podemos encadear else if
:
if (horario >= 0 && horario < 6) {
console.log("madrugada");
} else if (horario >= 6 && horario < 12) {
console.log("manhã");
} else if (horario >= 12 && horario < 18) {
console.log("tarde");
} else if (horario >= 18 && horario < 24) {
console.log("noite");
} else {
console.log("horário inválido");
}
A condicional switch avalia uma expressão, combinando o valor da expressão para um cláusula case
, e executa as instruções associadas ao case. (MDN) Passamos o break
para sair da condicional quando um case é correspondido e sua instrução executada. Caso nenhum case seja correspondido podemos usar a cláusula default
(opcional)
let regiao = 'centro-oeste'
switch (regiao) {
case 'nordeste':
console.log('possui 9 estados');
break;
case 'norte':
console.log('possui 7 estados');
break;
case 'centro-oeste':
console.log('possui 3 estados e DF');
break;
case 'sudeste':
console.log('possui 4 estados');
break;
case 'sul':
console.log('possui 3 estados');
break;
}
- O exercício extra não é 'entregável', utilizem este joguinho para praticar lógica durante as aulas de JavaScript, repitam o joguinho até a exaustão desejada.
¹. Livro: Lógica de Programação e Algoritmos com JavaScript
Autor: Edécio Fernando Lepsen
Editora: novatec
². Página: https://nodejs.org/en/