DEV Community

Cover image for Introdução aos fundamentos de programação
James G Silva
James G Silva

Posted on

Introdução aos fundamentos de programação

A tecnologia está por todo lugar, tudo é informação, cada vez mais precisamos ler ou escrever códigos.

O objetivo desse artigo é te ajudar a compreender sobre os fundamentos da lógica de programação e desenvolvimento de algoritmos.

Voce pode ter uma ideia agora, escrever um programa e colocar nas mãos de milhões de pessoas (facebook). É a coisa mais próxima que existe de ter super poderes. - Drew (Criador do Dropbox)

Ferramentas

Os exemplos de códigos estão escritos em Portugol, uma "linguagem de programação" simples e em português.

Para executar os programas, recomendo o uso do Portugol WebStudio, um editor de texto gratuito direto no navegador, ou baixar para o seu computador o Portugol Studio.

Entrada e saída

Um programa é uma sequência de instruções, escritas em uma linguagem de programação.

As instruções são executadas passo a passo, em geral divididas em blocos de entrada, processamento e saída, tendo como ponto de partida a função início.

programa {
  funcao inicio() {
    escreva("Olá mundo!")
    // próximos passos...
  }
}
Enter fullscreen mode Exit fullscreen mode

No exemplo acima, a instrução escreva mostra informação no dispositivo de saída do usuário, no caso do programa Portugol Studio na janela console.
Após a execução do último passo, o programa é finalizado.

Memória

Durante a execução de um programa, o computador armazena diversas informações em um espaço que chamamos de memória.

Para acessar essas informações, seria necessário conhecer os detalhes sobre onde a informação está armazenada (endereço de memória). Isso é trabalhoso. Para facilitar a identificação, criou-se o conceito de etiqueta da informação, ou variável.

Para ilustrar esse conceito, imagine um armário com várias gavetas (memória), onde cada gaveta possui uma etiqueta (variável) e um valor armazenado (informação).

Gaveta Etiqueta Valor
1 nome James
33 ano 2020
99 altura 1.86

Toda informação deve ser previamente identificada, ou seja, primeiro é necessário saber qual seu tipo para depois fazer seu armazenamento adequado.

Tipos de dados

Escolher o tipo de dado correto impacta na integridade da informação.

Tipo Grupo Descrição
cadeia Literais Conjunto de caracteres que podem conter letras, números e símbolos especiais entre aspas duplas.
caracter Literais Apenas um carácter que podem conter letras, números e símbolos especiais entre aspas simples.
inteiro Numéricos Positivos ou negativos não decimais.
real Numéricos Positivos e negativos decimais, separado por ponto.
logico Lógicos Representado por apenas dois valores verdadeiro ou falso.

Variáveis

Variável é um espaço destinado a guardar o valor de uma informação, a etiqueta da gaveta.

Ao declarar o tipo e o identificador de uma variável, um espaço na memória (gaveta) é reservado para guardar um valor do mesmo tipo declarado.

No exemplo abaixo atribuímos o valor Recife para a variável cidade do tipo cadeia através da instrução de atribuição =.

funcao inicio() {
  cadeia cidade = "Recife"
}
Enter fullscreen mode Exit fullscreen mode

A instrução leia guarda o valor da entrada do usuário em uma variável.

funcao inicio() {
  escreva("Qual a sua altura? ")
  real altura
  leia(altura)
}
Enter fullscreen mode Exit fullscreen mode

Expressões numéricas

Podemos realizar operações matemáticas sob os tipos numéricos usando símbolos.

Operador Operação
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto

No algoritmo abaixo descobrimos a idade do usuário através da operação de subtração sobre os valores das variáveis anoAtual e anoNascimento usando o operador -.

funcao inicio() {
  inteiro anoAtual = 2020
  inteiro anoNascimento
  leia(anoNascimento)
  inteiro idade = anoAtual - anoNascimento
  escreva("Sua idade é: ", idade)
}
Enter fullscreen mode Exit fullscreen mode

Estruturas de controle

São usadas quando existe a necessidade de verificar se uma condição é atendida para executar ou repetir determinada parte de um programa.

Expressões lógicas

Podemos expressar uma condição através da comparação de valores, o resultado é um tipo lógico, verdadeiro ou falso.

Operador Operação
> Maior que
< Menor que
== Igual a
>= Maior ou igual a
<= Menor ou igual a
<> Diferente de

No algorítimo abaixo verificamos se o DDD é de Pernambuco comparando se valor é igual a 81.

funcao inicio () {  
  escreva("Informe seu DDD: ")
  inteiro ddd
  leia(ddd)
  escreva("O DDD é de Pernambuco? ", ddd == 81)
}
Enter fullscreen mode Exit fullscreen mode

Estrutura de decisão

A instrução se decide quando uma parte do programa deve ou não ser executada. Esta determinação é estabelecida se uma condição for verdadeira. Caso seja falso o bloco senao será executado.

funcao inicio () {  
  escreva("Informe sua idade: ")
  inteiro idade
  leia(idade)
  se (idade >= 18) {
    escreva("Você é de maior")
  } senao {
    escreva("Você é de menor")
  }
}
Enter fullscreen mode Exit fullscreen mode

Operadores Lógicos

Podemos conectar duas ou mais expressões lógicas através de operadores lógicos.

Operador Operação Descrição
ou Disjunção resulta em verdadeiro sempre que uma das expressões for verdadeira.
e Conjunção resulta em verdadeiro somente quando ambos expressões forem verdadeiras.
nao Negação resulta no inverso do resultado da expressão, ou seja, o valor falso torna-se verdadeiro e o verdadeiro torna-se falso.

No algorítimo verificamos se uma letra é uma vogal maiúscula ou minúscula, conectando expressões logicas com o operador ou.

funcao inicio () {  
  escreva("Digite uma letra: ")
  caracter letra
  leia(letra)
  logico eVogalMaiuscula = letra == 'A' ou letra == 'E' ou letra == 'I' ou letra == 'O' ou letra == 'U'
  logico eVogalMinuscula = letra == 'a' ou letra == 'e' ou letra == 'i' ou letra == 'o' ou letra == 'u'
  se (eVogalMaiuscula ou eVogalMinuscula) {
    escreva("A letra ", letra, " é uma vogal")
  } senao {
    escreva("A letra ", letra, " é uma consoante")
  }
}
Enter fullscreen mode Exit fullscreen mode

Para exemplificar o uso de operadores lógicos, a tabela abaixo apresenta duas variáveis lógicas A e B.

A B .NAO. A .NAO. B A .OU. B A .E. B
falso falso verdadeiro verdadeiro falso falso
falso verdadeiro verdadeiro falso verdadeiro falso
verdadeiro falso falso verdadeiro verdadeiro falso
verdadeiro verdadeiro falso falso verdadeiro verdadeiro

Estrutura de repetição

A instrução enquanto é utilizada quando se deseja repetir um certo trecho de instruções por um determinado número de vezes.

A execução se dá enquanto uma condição for verdadeiro, e no momento que for falso o processamento é desviado para fora do bloco de repetição.

funcao inicio () {  
    cadeia pediuAConta = "N"
    enquanto (pediuAConta == "N") {
        // instruções...
        escreva("Pedir a conta (S)im ou (N)ão? ")
        leia(pediuAConta)
    }
    escreva("TOTAL: R$ xxx")
}
Enter fullscreen mode Exit fullscreen mode

Vetores

Um agrupamento de varias informações de um mesmo tipo, que compartilham uma mesma variável, onde cada informação é identificada por um índi­ce que inicia a partir de zero e vai até o total de elementos - 1.

elemento
indice 0 1 2
variavel notas[0] notas[1] notas[2]
valor 7 3 5

Um vetor é declarado pelo tipo de cada elemento, o nome da variável, e a quantidade máxima de valores entre colchetes.

Para manipular o valor de um determinado elemento, é necessário indicar o endereço onde o elemento está armazenado.

funcao inicio () {  
    inteiro notas[3]
    notas[0] = 7
    notas[1] = 3
    notas[2] = 5

    inteiro deslocamento = 0
    inteiro totalElementos = 3
    enquanto (deslocamento < totalElementos) {
        escreva(deslocamento, ") nota ", notas[deslocamento], "\n")
        deslocamento = deslocamento + 1
    }
}
Enter fullscreen mode Exit fullscreen mode

Acessar um elemento com um índice fora dos limites do vetor causará em erro no programa.

Funções

São blocos reutilizáveis de códigos, usados para simplificar a criação de grandes programas, dividindo-os em partes menores ou sub-programas.

Para declarar uma função (protótipo), use a palavra reservada funcao, em seguida o tipo de retorno, o identificador da função, e entre parenteses uma lista de parâmetros. A função deve ter um bloco entre chaves definindo o corpo.

funcao real calculeDelta(real a, real b, real c) {
    retorne (b * b) - (4 * a * c)
}
Enter fullscreen mode Exit fullscreen mode

A chamada da função se faz com a referência ao identificador da função seguido dos argumentos entre parenteses.

calculeDelta(3.9, 5.7, 8.2)
Enter fullscreen mode Exit fullscreen mode

Parâmetros

São um conjunto de variáveis utilizadas pela função para receber informações passadas quando ativada. É necessário especificar o tipo de cada parâmetro.

Por exemplo escreva é uma função que imprime a informação passada como parâmetro.

escreva("Olá mundo!")
Enter fullscreen mode Exit fullscreen mode

Por padrão parâmetros são cópias dos valores passados como argumentos, portanto a mudança no valor de um parâmetro dentro de uma função não deve afetar o valor do argumento passado.

Quando uma função precisa alterar o valor de um argumento que existe fora da própria função, passamos como argumento a referência de onde a informação está armazenada e não o seu valor. Desta forma, as alterações também são feitas no valor da variável original.

Os parâmetros e as variáveis criadas dentro uma função tem escopo local, ou seja, são visíveis/acessíveis apenas na função da qual eles pertencem, e deixam de existir quando a função chamada termina.

Retorno

Muitas vezes é útil que a função comunique algo de volta para o código que a chamou, para isso especificamos o tipo de retorno no protótipo da função e usamos a palavra reservada retorne no final do corpo da função.

funcao logico possuiNegativo(real n1, real n2) {
    se (n1 < 0.0 ou n2 < 0.0)
        retorne verdadeiro;
    retorne falso;
}
Enter fullscreen mode Exit fullscreen mode

Para funções sem nenhum valor de retorno, usamos um tipo de retorno vazio (void), para comunicar a ausência de valores no retorno da função.

funcao vazio imprimirSeparador() {
    escreva("\n");
    escreva("=============================================\n");
    escreva("\n");
}
Enter fullscreen mode Exit fullscreen mode

Agradecimentos

Agradecer ao mestre André Henriques por me ajudar nos primeiros passos na jornada como programador, e a Eduarda Moura, Siomara Murta, Mariane Ferreira, Thiago Reis, Anna Paiva, Débora Rocha, Pedro Jaued, Camila Silveira, Simone Lima, Fernanda Lima, Michele Costa, Jessica Soli, Izabela Brant, Rodrigo Correia, Mariana, Carlinhos, Jansuely Cunha, Caio Diaz por me ensinarem como as pessoas aprendem.

Top comments (0)