Lógica de programação
Algoritmo
O que são?
Algoritmos são uma sequência de passos e processos, que quando executados em ordem correta resolvem um problema.
Algoritmos computacionais
Para desenvolvermos um algoritmo, primeiro precisamos pensar em uma lógica de programação, depois escrever um código fonte em uma linguagem de programação, que quando executado, resolverá um problema.
Portugol
O portugol é uma linguagem de teste, que serve para você testar sua LÓGICA DE PROGRAMAÇÃO antes de passar para uma linguagem de programação.
IDE
Visualg
O Visualg é um editor de código portugol, usaremos ele para fazer nossos exercícios.
No visualg os algoritmos são organizados assim:

Variáveis
Para criar uma variável, precisamos declara-la e tipa-la. Por exemplo:
A bola é uma variável, do tipo brinquedo.
Logo, devemos inserir na área var do nosso algoritmo portugol, identificador: tipo, que no caso será BOLA: Brinquedo, como descrito anteriormente.
Regras dos identificadores
Devemos seguir um protocolo para criar identificadores, atendendo às seguintes regras:
Exemplo de uso de uma variável
Exibindo um olá mundo numa variável de texto:

Tipos primitivos
Tipos são categorias que você deve usar para descrever suas variáveis.
São eles:
Comandos importantes
1. escreva(" [Mensagem] ")
Esse comando escreverá a mensagem escolhida na tela de saída do dispositivo. Se você usar o comando parecido com ele, o escreval(" [Mensagem] "), que faz exatamente a mesma coisa, mas pula uma linha no final.
Comandos de entrada
Comandos de entrada servem para receber informações do usuário.
1. leia( [Variável] )
Com esse comando, aparecerá um cursor de texto no terminal, permitindo o usuário inserir dados. Quando o usuário apertar enter, esses dados serão armazenados na variável escolhida.
Operações matemáticas báscias
Os operadores funcionam da seguinte maneira:


Os cálculos funcionam como expressões numéricas comuns da matemática, resolvendo primeiro o que está entre paranteses, depois exponenciação, depois multiplicação e divisão, por último soma e subtração.

Operadores relacionais
Os operadores relacionais funcionam exatamente da mesma maneira que na matemática, são eles:

Ao criar uma expressão com esses operadores, sempre teremos resultados lógicos.
Ex:

O resultado ao executar esse código seria Falso, pois A não é maior que B.
Operadores lógicos
Os operadores lógicos são muito simples, são eles: E, Ou e Não.

Estruturas de repetição
Estruturas de repetição servem para fazer uma tarefa repetitiva várias vezes com apenas um comando.
Laço while
O laço while funciona no seguinte esquema: ENQUANTO UM EVENTO NÃO OCORRER, REPITA UM BLOCO DE CÓDIGO. Recebendo à seguinte estrutura:

Geralmente colocamos contadores dentro do bloco de código do laço, que quando chegam em determinado valor quebram o laço.
Esse laço tem o teste lógico no início, ou seja, primeiro ele lê a condição, depois executa o bloco de código interno.
Laço do/repeat
Funciona do mesmo jeito que o while, mas com lógica reversa: REPITA UM BLOCO DE CÓDIGO ATÉ UM EVENTO OCORRER. Recebendo a seguinte estrutura:

Esse laço tem o teste lógico no final, ou seja, primeiro ele executa o bloco de código, depois ele lê a condição.
Laço for
Esse laço funciona no seguinte esquema: Para uma variável executaremos o código por tempo determinado, num passo determinado. Recebendo a seguinte estrutura:

Nesse exemplo, o algoritmo escreveria o valor de C 10 vezes, o valor do passo indica de quantos em quantos a contagem do laço vai avançar, por exemplo, se o passo fosse 2, o algoritmo só escreveria o valor de C 5 vezes, pois iria de 1 a 10 pulando de 2 em 2.
Algumas linguagens, como python, permitem que voce execute o laço for usando como contagem o número de itens em uma lista. Neses casos o código ficaria for x in lista, e o laço executaria seu bloco de código para cada item da lista.
Procedimentos
O que são?
Procedimentos são rotinas de códigos. Eles são usados quando temos um bloco de código que se repete várias vezes durante o algoritmo, nos fazendo perder tempo e espaço redigitando a mesma coisa várias vezes. Então, nós declaramos um procedimento com todos os passos repetitivos, e assim que precisarmos usa-los novamente, basta chamar o procedimento.
Ex:


Devemos declarar os procedimentos assim como declaramos as variáveis, no começo do código. Uma característica importante dos procedimentos, é que eles não retornam variáveis nem geram valores pro código principal.

Parâmetros
Ao declarar um procedimento, podemos passar parâmetros que serão usados por ele.
Nesse exemplo, recebemos dois parâmetros, que são números inteiros, e eles serão somados, porém não retornará nenhum valor, pois isso é feito através de funções, não de procedimentos. No lugar disso, ele apenas vai dar um print.

Escopo
No exemplo anterior, percebemos que os valores passados como parâmetros se armazenam em variáveis temporárias, que só funcionam enquanto aquele procedimento está rodando. Isso se chama variável de escopo local, pois só funcionam em certa parte do código, e depois desaparecem. Isso acontece com os parâmetros, e com variáveis declaradas dentro do procedimento.
Podemos fazer com que procedimentos alterem o valor de uma variável global, isso chama-se de passar parâmetro por referência. Fazendo assim, podemos ter uma variável global X, e um procedimento que faça cálculos usando X, ao terminar o procedimento, se os parâmetros foram passados por referência, o valor de X será alterado. Se foi passada por valor, continuará o mesmo.
Funções
O que são?
Funções são rotinas assim como os procedimentos, mas possuem um diferencial: elas retornam valores a partir dos parâmetros.
Ex:

Essa função retornaria um valor S, que no caso seria a soma dos dois parâmetros. Essa é a principal diferença entre uma função e um procedimento: o retorno de valores. As funções também recebem configurações de escopo.
Vetores
O que são?
Vetores são variáveis compostas, uma variável é composta de apenas um valor, já o vetor é composto por vários valores, eles são ordenados como uma prateleira de livros, por exemplo, a prateleira 1 tem os livros 1, 2 e 3. livros 1, 2 e 3 são os valores que o vetor prateleira recebe.
Cada valor dentro de um vetor possúi um índice, que indica em que posição do vetor ele está. Isso serve para ordenar os valores. Imagine o índice como as etiquetas da prateleria. Se os valores (livros) fossem ordenados de A a Z, os índices seriam letras.
No python, por exemplo, temos diferentes vetores, como: tuplas (imutáveis), listas (mais úteis) e dicionários (com descrições). Isso difere de linguagem para linguagem.
Um uso muito comum para vetores, é usa-los com o laço para (for), fazendo o uso dos índices numéricos para varrer todo o vetor executando ações dentro do laço.
Matrizes
O que são?
Matrizes são vetores com várias dimensões, por exemplo:
Aqui temos o vetor PRATELEIRA, que recebrá valores como livros nomeados com LETRAS.

Isso é um vetor, pois possui apenas uma dimensão, seu índice cresce de 1 até 4.
Matriz
Uma matriz é um vetor com mais de uma dimensão, ela se parece com isso:

Nesse caso, o índice funciona com dois valores, por exemplo, o item c tem o índice 1,3, pois, pensando como linhas e colunas, ele está na linha 1 na terceira coluna.
Uma matriz pode ter várias dimensões, o que fica difícil de exibir como nos exemplos anteriores, mas funciona perfeitamente.