Tutoriais

Vamos Programar? – Introdução à Programação #3

32 Comentários

Paradigmas de Programação

O mundo está constantemente a evoluir: desde o mais pequeno inseto à espécie Humana. Evolução, mudança, futuro – são das palavras que mais são ouvidas atualmente.

A tecnologia tem revolucionado o mundo das mais diversas formas. Se quer entrar no mundo da tecnologia e deixar a sua marca, pode começar aqui.

Introdução à Programação 3

Antes de começar a aprender C, iremos abordar alguns temas importantes. Hoje vai aprender o que realmente é uma linguagem de programação e conhecer os paradigmas de programação mais utilizados.

[field name=iframe]

Visualize este vídeo no Youtube

Linguagem de programação

O conceito linguagem de programação ainda não foi abordado. Antes de continuar, é fundamental que compreenda o que realmente é uma linguagem de programação. progLangs Uma linguagem de programação é uma forma padronizada para comunicar instruções a um computador ou seja, através de diversas regras semânticas e sintáticas, podemos instruir o computador a fazer algo.

Paradigmas de Programação

Todas as linguagens de programação têm várias características dentro delas os paradigmas de programação. Paradigmas são modelos ou padrões logo, paradigmas de programação são formas de estruturar o código.

Cada linguagem de programação pode adoptar um ou mais paradigmas de programação. As que adoptam mais do que um paradigma chamam-se multi-paradigma.

Paradigma imperativo

O paradigma imperativo concentra-se num estado (que são as variáveis) e ações (comandos) que modelam o estado.

Pode ser comparado ao modo modo imperativo da linguagem humana visto que é criado para ordenar a realização de ações.

Exemplos (de linguagens de programação imperativas) : C, Java, C#, Pascal.

Paradigma procedimental

O paradigma procedimental permite a reutilização de código sem o copiar através da utilização de funções e procedimentos (que falaremos mais à frente na saga). De certa forma, com este paradigma, podemos “reciclar” código. A maioria das linguagens de programação são procedimentais.

recicla

Paradigma estruturado

Uma linguagem de programação estruturada é aquela em que todos os programas podem ser reduzidos a três estruturas: sequência, decisão e repetição (iteração).

Sequência

Nesta estrutura as tarefas são executadas de forma linear, ou seja, uma após a outra. Exemplo:

Acordar;
Vestir;
Tomar o pequeno-almoço;
Ir trabalhar;

Fluxograma correspondente: sequencia Este é um exemplo de uma sequência. Em muitas linguagens de programação, os comandos/ações terminam com ponto e vírgula pois estas permitem que os comandos sejam colocados em linha da seguinte forma:

Acordar; Vestir; Tomar o pequeno-almoço; Ir trabalhar;

A utilização do ponto e vírgula é, normalmente, obrigatória quando existem várias instruções numa única linha. Linguagens de programação como Java, C# e C obrigam ao uso do ponto e vírgula em todas as instruções independentemente se estão em linha ou não.

Decisão

Neste tipo de estrutura, um determinado trecho de código é executado ou não dependendo do resultado de um teste lógico. Abaixo encontra vários exemplos práticos.

Exemplo 1:

O exemplo abaixo descreve a condição/decisão “se Acordar, vou Trabalhar, caso contrário, não vou Trabalhar” através de pseudocódigo.

if "Acordar" then
  "Trabalhar"
else
  "Não trabalhar"
endif

Fluxograma correspondente:

decisao01
O pseudocódigo acima já não está em português e já se assemelha ao que irá visualizar nas linguagens de programação. Sempre que aparecerem termos em inglês no código relacionado com a sintaxe, encontrará a sua tradução mais abaixo. Neste caso:

  • if → se
  • then → então
  • else → caso contrário
  • endif (end if) → fim do if

Agora, e novamente relacionado com a decisão, repare que o trecho de código “Trabalhar” só será executado se o indivíduo “Acordar”. Caso contrário, o trecho “Não trabalhar” será executado. Abaixo pode visualizar mais exemplos.

Exemplo 2:

Dói-me a cabeça. Se doer muito pouco, vou trabalhar. Se doer pouco, tomo um comprimido e vou trabalhar. Se doer muito, vou ao médico e falto ao trabalho.

case "Dor de cabeça"
  when "muito pouco" then "trabalhar"
  when "pouco" then "tomar comprimido"; "trabalhar"
  when "muito" then "ir ao médico"; "não trabalhar"

Este é mais um exemplo mas utilizando diferentes comandos. Este trecho poderia ser também escrito através de comandos if/else da seguinte forma:

if "Dor de cabeça"
  if "muito pouco" then
    "trabalhar";
  elseif "pouco" then
    "tomar comprimido";
    "trabalhar";
   else if "muito" then
    "ir ao médico";
    "não trabalhar";
   endif
endif

Em fluxograma:

decisao02
Novos termos:

  • case → caso
  • when → quando
  • else if → caso contrário se

Iteração

Neste tipo de estrutura, também conhecido como repetição, um trecho de código será repetido um número finito de vezes dependendo do resultado de um teste lógico.

Exemplo 1:

Abaixo encontra a repetição “não saio de casa enquanto não estiver vestido” em formato de pseudocódigo para melhor análise:

do {
  "não sair de casa";
} while ( "não estou vestido" )

Ou seja, pode ler da seguinte forma: fazer x enquanto y.

Novo termo:

  • do → fazer

Exemplo 2

Enquanto estiver a Dormir, não me vou Vestir.

while ( "Durmo" )
  "Não me visto";

Ou seja, enquanto acontece algo, faço outra coisa.

Exemplo 3

Lavo os dentes 20 vezes.

for ( i = 0; i < 20; i++ )
  "Lavar os dentes"

Ou seja, enquanto não acontece qualquer coisa, faço qualquer coisa. Em fluxograma:

iteracao
Novo termo:

  • for → para/enquanto

Exemplo 4

Para cada dente, lavo-o muito bem.

for each "dente" in "boca"
  "Lavar muito bem"

Ou seja, para cada item do conjunto, fazer qualquer coisa. Novos termos:

  • each → cada
  • in → em

Paradigma Declarativo

O Paradigma Declarativo contrasta com o Imperativo pois é capaz de expressar a lógica sem descrever como o fluxo de comandos funciona, ou seja, apenas diz ao computador o que fazer e não como fazer.

Um excelente exemplo de uma linguagem que utiliza este paradigma é Prolog, muito utilizado na área de inteligência artificial.

Paradigma Funcional

O Paradigma Funcional engloba todas as linguagens de programação que utilizam funções matemáticas. Estas linguagens de programação são muito utilizadas no campo da matemática.

Exemplos: Matlab, Wolfram Language/Mathmatica/M, B.

Paradigma Orientado a Objetos

A Programação Orientada a Objetos permite a criação de objetos com base em classes. Estes objetos são instâncias dessas classes e possuem todos os atributos e funções presentes nas classes em questão.

Este paradigma é muito extenso e tem muita informação que mais à frente irá ser abordada. Atualmente, existem muitas linguagens que utilizam este paradigma.

Exemplos: Java, C++, C#, PHP.

Os paradigmas de programação não se limitam aos 6 (seis) apresentados pois existem inúmeros outros. Estes são os mais utilizados. Existem ainda paradigmas que são baseados noutros, contrastando com outros, etc.


Agradeço à Ana Narciso pela disponibilização de alguns exemplos utilizados na secção “Paradigmas de Programação”.

Mais uma vez, gostávamos de saber a sua opinião. Caso tenha alguma dúvida, pode sempre utilizar os comentários para colocar a questão. Caso o faça,  pedimos que utilize a keyword [DUVIDA] no início do seu comentário.


Resoluções de exercícios.

Esta saga

Henrique Dias

Mais episódios: 
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13][12] [14] [15] [16]
[17] [18] [19] [20] [21] [22] [23][24]

homefacebookgoogle-plus

Também pode gostar

Comentários

32

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Tenrinho
    Tenrinho

    Eu se tivesse começado a programar por aqui já tinha desistido… Se calhar devias aguçar primeiro a boca fazendo um hello world e depois um programa que recebe um input e faz algo com ele.

    Porque estas coisas todas só fazem sentido depois de saberes o que é programar e de a pessoa experimentar.

    Só a minha opinião.

    De qualquer maneira o que estás a explicar está bem explicado para o publico alvo e simples.
    Espero que continues.

    1. Avatar de paulo
      paulo

      … ao ler este comentário fez-me lembrar que o meu filho domina de longe melhor os “meandros” da net e jogos e afins do que eu… mas não percebe nada de pastas, ficheiros, hardware software discos rigidos, s.o. … há “mundos” que para serem entendidos não se devem avançar caminhos! de qualquer forma é só a minha opinião…

    2. Avatar de Henrique Dias

      Em breve… em breve… tudo a seu tempo. Iremos fazer isso mas daqui a umas duas semanas.

      Para a semana iremos falar da história do C e ficava melhor falar primeiro dos paradigmas que existem 🙂

      Obrigado =D

  2. Avatar de Jfranca
    Jfranca

    Muito bom, nice work 🙂

  3. Avatar de ze.ccjs
  4. Avatar de jpedro20
    jpedro20

    Java paradigma imperativo? Sim é possível mas é uma linguagem OOP. E depois dizer que o paradigma funcional engloba todas as linguagens que utilizam funções matemáticas? Paradigma funcional não tem nada a ver com isso. Basta ver o Haskell que é funcional puro (quase) e não utiliza funções matemáticas (não com o propósito escrito no post).

    Acho que existem bastantes erros neste artigo, devia haver um maior cuidado. No entanto continuem o bom trabalho porque são iniciativas destas que são necessárias 🙂

    1. Avatar de Henrique Dias

      Sim, Java é multi-paradigma e inclui o imperativo.

      “In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids changing state and mutable data.”

      in Wikipedia

      Sim, em relação à utilização e às linguagens, existem várias. Só mencionámos uma utilização. E… por fim… Obrigado 🙂 Todos os comentários são bem-vindos.

    2. Avatar de Gonçalo
      Gonçalo

      E????
      Uma linguagem orientada é um nivel acima em termos de paradigma.
      O C++ que é uma linguagem compativel com C (note-se que C e C++ são linguagens distintas), são ambos imperativos e o C++ é orientado a objectos.
      Um paradigma não é mais que referente ao raciocinio que se tem a programar, e.g., imperativo agora faz isto a seguir faz isto, etc.
      Orientado a objectos apesar de ser considerado paradigma refere-se a como estruturamos a legebilidade de um código em grafos de objectos.

  5. Avatar de Pedro
    Pedro

    Muito bem escrito portanto continua assim Henrique, mas permite só que deixe dois pontos rápidos 🙂

    =====

    Primeiro: o ciclo FOR tem os parâmetros trocados pois deveria ser – for([variáveis a inicializar]; [condição]; [incrementação/decrementação]) – podendo até nem haver variáveis a inicializar, ou seja – for(; [condição]; [incrementação/decrementação]) – mas caso te baseies numa linguagem que permite a forma como escreveste a função, podes saltar para o próximo passo 😀

    =====

    Segundo: é possóvel criar variáveis dentro dos ciclos de repetição com o mesmo nome que variáveis globais, portanto podemos ter uma variável chamada xpto no nível global e outra chamada xpto dentro de um ciclo WHILE ou FOR que as duas não se misturam 🙂

    =====

    Continua a trazer mais disto, nunca é mau relembrar C 😉

    1. Avatar de Henrique Dias

      Oops! Obrigado pelo aviso do primeiro ponto. =D E obrigado pelo resto.

  6. Avatar de Eduardo
    Eduardo

    Excelente trabalho!!
    Venham os próximos…

  7. Avatar de Angelo
    Angelo

    Vamos lá ver se percebi:

    do {
    “refresh”;
    } while ( “não saiu novo artigo vamos programar?” )

    1. Avatar de Henrique Dias

      Olá Angelo!

      Sim, está correto. Nesse caso, seria sempre feito um “refresh” pois a condição só é verificada no final.

      Se fizesse:

      while (“não saiu novo artigo vamos programar?”) {
      “refresh”;
      }

      O código “refresh” só iria executar caso a condição fosse verdadeira.

      Cumps,

  8. Avatar de Joaquim
    Joaquim

    Muito bom. Conciso e muito claro.
    Espero pela próxima lição.

  9. Avatar de char nome[] = "Renato";
    char nome[] = “Renato”;

    void BomArtigo(); // 😛

  10. Avatar de dfgdfg

    Iniciativa é boa, mas penso que o ritmo e duração dos vídeos e um pouco curto, pelo menos para vídeos semanais ou perto disso.

  11. Avatar de João
    João

    Quero dar os parabéns para esta rubrica e aguardo pelos “novos episódios”

  12. Avatar de Pereira
    Pereira

    Bom trabalho!
    Deu para relembrar o que já aprendi em tempos na faculdade.

  13. Avatar de Ana Narciso

    Muito bom como sempre!
    Henrique, o petiz que ensina gente grande 😉

  14. Avatar de Ricardo Borges
    Ricardo Borges

    Boa tarde.
    Estou a tentar aprender a programar, mais concretamente em VB.
    Tenho-me guiado por alguns manuais, sites e videos do youtube mas a verdade é que a meio dos exemplos perco-me e nao faço ideia de onde surgir determinado modulo ou variável.
    Sabem de sites de cursos online que sejam decentes e tenham um bom curso de Visual basic ?
    Abraço e os meus parabéns ao Henrique Dias por esta excelente iniciativa !

    1. Avatar de Henrique Dias

      Antes de mais nada, obrigado 🙂 Sinto muito, mas como não conheço a linguagem, não posso recomendar nenhum site/livro.

      Aqui, no Pplware, existem vários tutoriais sobre Visual Basic. Pode ver estes artigos aqui.

      Cumprimentos 🙂

    2. Avatar de Bu
      Bu

      Tbm estou a aprender VB em Aplicações Informaticas B ahah :p