Lógica de Programação

Operadores lógicos

Quando estamos estudando lógica de programação é comum termos dúvidas nos operadores. Entre os operadores, os que mais geram dúvidas são os operadores lógicos, lembro na faculdade o professor explicando diversas vezes os operadores lógicos e mesmo assim a turma como um todo tinha dificuldade.

Por trás dos operadores lógicos existe uma série de conhecimentos teóricos, porém esse não será o foco do nosso artigo. O objetivo aqui é bem mais prático, falando diretamente para utilização de operadores lógicos em programação.

Lógica de Programação Completo
Curso de Lógica de Programação Completo
CONHEÇA O CURSO

Valores Booleanos (Verdadeiro e Falso)

Em programação existe um tipo de dado chamado Booleano. Esse tipo guarda uma informação que indica se algo é verdadeiro ou falso. Pensando de maneira abstrata isso parece não fazer muito sentido, porém se pensarmos de maneira um pouco mais concreta facilita as coisas.

Vamos supor que você receba a idade do usuário do seu programa e deseja saber se ela é maior que 18 anos. O resultado da análise da idade só pode retornar dois valores: verdadeiro, se ele tiver mais de 18 anos, ou falso, se ele tiver menos de 18.

No caso acima podemos ter uma visão prática do uso do dado booleano, apesar de não envolver diretamente operadores lógicos.

Onde entra os operadores lógicos?

Os operadores lógicos entram quando precisamos realizar operações sobre um ou dois valores booleano (verdadeiro ou falso). Vamos pensar de maneira prática novamente. Imagine que agora nós precisamos verificar se a idade do usuário é maior que 18 anos e menor que 22. Pensando em como resolver o problema acima, precisamos realizar 2 comparações, uma para saber se a idade é maior que 18 e outra para saber se a idade é menor que 22.

idade maior que 10
idade menor que 22

Sabemos que cada operação dessa retornará um valor verdadeiro ou falso, dependendo da idade do usuário, mas ainda não temos a resposta se a idade está entre 18 e 22. Para realizar essa análise precisamos realizar uma operação sobre os valores booleanos que foram retornados pelas comparações e para isso usamos um operador lógico.

Operador E (AND)

O primeiro operador lógico que veremos será o operador E. Este operador retorna verdadeiro quando os dois valores de entrada passados para ele são verdadeiros, caso contrário ele retorna falso. Veja a tabela verdade dele abaixo:

tabela verdade operador e (and)

O operador E pode ser usado para solucionar o problema da idade entre 18 e 22 anos. Podemos fazer do seguinte modo:

idade maior que 18 E idade menor que 22

Vamos fazer o teste de mesa para a expressão acima.

Vamos considerar primeiro a idade com valor 15. A primeira condição idade maior que 18 retornará falso, porém idade menor que 22 retornará verdadeira. Aplicando o operador E nos valores falso E verdadeiro temos como resposta o valor falso. Logo sabemos que a idade não está entre 18 e 22 anos.

Vamos considerar agora a idade com valor 20. A primeira condição idade maior que 18 retornará verdadeiro e idade menor que 22 também retornará verdadeira. Aplicando o operador E nos valores verdadeiro E verdadeiro temos como resposta o valor verdadeiro. Logo sabemos que a idade está entre 18 e 22 anos.

Por fim, vamos considerar a idade com valor 30. A primeira condição idade maior que 18 retornará verdadeiro, porém idade menor que 22 retornará falso. Aplicando o operador E nos valores verdadeiro E falso temos como resposta o valor falso. Logo sabemos que a idade não está entre 18 e 22 anos.

Lógica Orientada a Objetos Completo
Curso de Lógica Orientada a Objetos Completo
CONHEÇA O CURSO

Operador OU (OR)

Este operador retorna verdadeiro quando um ou outro valor de entrada é verdadeiro e também quando os dois valores são verdadeiros. Ele só retorna falso quando os dois valores de entrada são falsos. Veja a tabela verdade dele abaixo:

tabela verdade operador lógico ou (or)

Vamos imaginar que em um sistema precisamos verificar se uma pessoa é esportista ou não. Para isso perguntamos se ela joga futebol OU faz corridas. Nesse caso podemos montar uma expressão assim:

futebol igual a sim OU corrida igual a sim

Vamos fazer o teste de mesa:

Se a atividade que a pessoa realiza for somente futebol. A primeira comparação futebol igual a sim retornará verdadeiro, porém a segunda corrida igual a sim retorna falso. Aplicando o operador OU nos valores verdadeiro OU falso teremos o valor verdadeiro. Isso nos indica que temos um esportista.

Se a atividade que a pessoa realiza for somente corrida. A primeira comparação futebol igual a sim retornará falso, porém a segunda corrida igual a sim retornará verdadeiro. Aplicando o operador OU nos valores falso OU verdadeiro teremos o valor verdadeiro. Isso nos indica que temos um esportista.

Se a pessoa realiza as duas atividades futebol e corrida. A primeira comparação futebol igual a sim retornará verdadeiro e a segunda corrida igual a sim retornará verdadeiro. Aplicando o operador OU nos valores verdadeiro OU verdadeiro teremos o valor verdadeiro. Isso nos indica que temos um esportista.

Agora se a pessoa não realiza nenhum das duas atividades. A primeira comparação futebol igual a sim retornará falso e a segunda corrida igual a sim também retornará falso. Aplicando o operador OU nos valores falso OU falso teremos o valor falso. Isso nos indica que não temos um esportista.

Operador OU Exclusivo (XOR)

O operador OU Exclusivo retornar verdadeiro quando um dos dois valores é verdadeiro, porém retorna falso se os 2 valores forem verdadeiro. Ele também retorna falso se os dois valores de entrada forem falsos.

Veja a tabela verdade abaixo:

tabela verdade operador ou exclusivo (xor)

Note que ele possui o comportamento muito parecido com o OU, porém quando os dois são verdadeiro ele retorna falso.

Vamos supor que precise verificar o regime de trabalho de um professor. Ele pode ser regime exclusivo ou regime parcial, mas não podem ser os dois juntos.

Operador NÃO (NOT)

Esse operador, diferente dos demais que vimos até agora, realiza uma operação sobre um único valor. Se o valor for verdadeiro ele retorna falso e se o valor for falso ele retorna verdadeiro. Ele também é chamado de operador de negação.

Veja a tabela verdade abaixo:

tabela verdade operador não (not)

Vamos supor que queremos verificar se a idade de uma pessoa NÃO é maior que 18 anos. Para isso podemos fazer algo assim:

NÃO(idade maior que 18)

Vamos ao teste de mesa:

Considerando que a idade da pessoa é 10 anos. A expressão idade maior que 18 retornará falso, aplicando o operador NÃO no valor falso retorna verdadeiro. Isso indica que a idade é menor que 18 anos.

Agora considerando uma idade de 20 anos. A expressão idade maior que 18 retornará verdadeiro, aplicando o operador NÃO o valor verdadeiro será convertido para falso. Isso indica que a idade é maior que 18 anos.

Lógica de Programação Completo
Curso de Lógica de Programação Completo
CONHEÇA O CURSO

Considerações finais

Temos ainda outros operadores lógicos como NÃO-E, NÃO-OU, NÃO-OU-EXCLUSIVO, mas basicamente eles são a aplicação do operador de negação NÃO aos operadores que já conhecemos.

O que é de fato a lógica de programação?

Quem está começando a estudar desenvolvimento de software, certamente já ouviu o termo “lógica de programação”, quer seja em artigos pela internet, matérias na faculdade ou cursos como o nosso próprio curso aqui da TreinaWeb.

Lógica de Programação Completo
Curso de Lógica de Programação Completo
CONHEÇA O CURSO

Por muitas vezes, o termo pode parecer confuso ou muito genérico, principalmente para quem está dando os primeiros passos nessa área… Mas o que é, afinal, a tal lógica de programação?

Programação exige capacidade analítica apurada

Programação exige capacidade analítica

Escrever um trecho de código em qualquer linguagem que seja exige uma capacidade analítica um pouco mais apurada. Isso se deve ao fato de que um computador não é um ser inteligente, como ouvimos falar por várias vezes. Um computador simplesmente executa, de maneira sequencial, um conjunto de instruções pré-disponibilizadas através de um programa, programa este escrito com uma linguagem de programação qualquer.

O grande ponto é que, como um computador simplesmente executa estas linhas de programação de maneira sequencial, nós precisamos escrever uma sequência lógica que faça com que o programa se torne capaz de resolver um determinado problema. E para escrevermos essa sequência lógica de maneira correta, nós precisamos desenvolver a capacidade de analisar os diferentes problemas de maneira mais profunda.

Para que esta questão da capacidade analítica fique mais clara, vamos imaginar uma situação simples: a travessia de uma rua. Se pararmos para refletir, nós precisamos dos seguintes passos:

> Olhar para os lados da rua;
> Se não estiver vindo carro, atravessar a rua;
> Caso contrário, não atravessar.

Este é o pensamento básico para atravessarmos uma rua em segurança. Se fôssemos repassar este pensamento para um computador, não poderíamos ser tão “simplistas”, pois o computador simplesmente segue um conjunto de instruções de maneira sequencial. Cabe a nós repassar estas instruções para o computador da maneira mais clara e direta possível. E para repassarmos estas instruções da maneira correta, nós precisamos analisar os problemas com uma capacidade analítica mais apurada.

Se nós fôssemos reescrever o mesmo pensamento para atravessarmos a rua em segurança realizando uma análise mais apurada, poderíamos chegar na seguinte conclusão:

> Virar o pescoço para o lado direito;
> Verificar se existe algum veículo vindo do lado direito em nossa direção;
> Caso algum veículo esteja vindo do lado direito:
>>>>> Abortar a operação, pois já não é seguro atravessar;
> Virar o pescoço para o lado esquerdo.
> Verificar se existe algum veículo vindo do lado esquerdo em nossa direção;
> Caso algum veículo esteja vindo do lado esquerdo:
>>>>> Abortar a operação, pois já não é seguro atravessar;
> É seguro atravessar: iniciar a travessia da rua.

Veja que nosso pensamento foi esmiuçado em uma sequência lógica que é capaz de resolver o problema da travessia da rua em segurança. Esse esmiuçamento só pôde ser feito porque nós analisamos o problema da travessia da rua de uma maneira mais analítica e profunda. Sem essa análise mais apurada, é impossível criarmos um programa de computador; já que, como dito anteriormente, um computador simplesmente segue as sequências lógicas que nós repassamos a ele através da escrita de um programa.

Essa capacidade analítica parece algo banal em um primeiro momento, mas essa é uma falsa impressão. Nós não estamos acostumados a fazer análises tão esmiuçadas no nosso dia a dia: essas análises são feitas meio que de maneira automática pelo nosso cérebro. Nós, muitas vezes, nem reparamos na quantidade de análises e decisões que nosso cérebro toma no simples ato de atravessar a rua.

Mas, repassar isso para o computador é um desafio, pois um computador não toma decisões de maneira autônoma igual o nosso cérebro faz: cabe a nós repassarmos estas instruções já esmiuçadas para o computador. Por isso, nós precisamos na verdade reeducar nosso cérebro e nosso fluxo de pensamentos para que consigamos trazer à tona estes pensamentos automáticos, de maneira que possamos os repassar também para o computador enquanto estamos escrevendo um programa.

E o que é o tal do algoritmo?

O que é um algoritmo?

Todo fluxo computacional criado para resolver um problema pode ser chamado de algoritmo. Um algoritmo é, literalmente, uma sequência lógica de passos com um início, meio e fim, que foi concebida para resolver algum problema específico.

Nós poderíamos classificar aquele pensamento esmiuçado que desenvolvemos para atravessar a rua de um algoritmo: se trata de uma sequência lógica de passos, com início, meio e fim, e que foi desenvolvida com uma finalidade específica: em nosso caso, atravessar a rua em segurança.

Quando estamos criando programas e aplicações, nós estamos o tempo inteiro desenvolvendo algoritmos para resolver os mais variados problemas. Se precisamos nos conectar a um banco de dados para ler alguma tabela, nós precisaremos de alguns algoritmos para resolver este problema: precisaremos de um algoritmo para nos conectarmos a um banco de dados, de um algoritmo que consiga ler uma tabela e converter em uma representação a ser exibida para o usuário e outro algoritmo para exibir essas representações. E desenvolver todos estes algoritmos é algo desafiador, pois envolve a capacidade analítica aprofundada que discutimos anteriormente.

E onde entra a lógica de programação?

Onde entra a lógica de programação?

A lógica de programação está justamente no desenvolvimento dessa capacidade analítica aprofundada para resolução de problemas, os quebrando em algoritmos. Como vimos anteriormente, isso não é algo tão trivial, já que não é algo natural para nós como seres humanos por causa de nossas capacidades cognitivas. Quando aprendemos a programar, nós literalmente precisamos reaprender a pensar e a organizar estes nossos pensamentos dentro dessas sequências lógicas, formando os algoritmos para resolver os diferentes problemas que iremos enfrentar… Ou seja: nós precisamos aprender uma nova forma lógica de pensar.

Pelo fato de essa reaprendizagem de pensamento ser tão essencial para nos tornarmos bons desenvolvedores de software, a matéria ou curso de lógica de programação é o primeiro contato que futuros desenvolvedores e profissionais da área de TI irão ter com a área de desenvolvimento de software. Sem esse processo de reaprendizagem de formulação de pensamentos, é impossível criarmos algoritmos, programas e aplicações para resolver qualquer tipo de problema.

O que não é lógica de programação?

O que não é lógica de programação?

Pelo fato de lógica de programação acabar sendo considerada uma matéria em cursos técnicos e de graduação, há uma tendência de que os alunos decorem o conteúdo. Em cursos de lógica de programação, geralmente o aluno é submetido a situações onde ele precisará desenvolver algum algoritmo para resolver algum tipo de problema.

Os tipos de problemas geralmente propostos para os alunos resolverem geralmente são recorrentes em quaisquer cursos: verificação se um número é par ou ímpar, se um número é maior que o outro, o cálculo de uma equação de segundo grau e vários outros são problemas geralmente propostos para que os alunos resolvam na disciplina de lógica de programação. Muitas vezes, por comodidade ou até mesmo pela filosofia que muitas instituições de ensino abordam no Brasil, o aluno começa a achar que decorar um algoritmo é suficiente. E, de fato, muitas vezes para a disciplina de lógica de programação, esse ato de decorar um algoritmo é suficiente para que o aluno seja aprovado na matéria.

O grande problema é quando nós somos trazidos para ambientes fora dos ambientes propostos pela disciplina de lógica de programação, como problemas do mundo real, por exemplo. Nestes casos, o aluno não terá provavelmente algoritmos decorados para resolver todas as situações que surgirem, pois isso é impossível. E, pelo fato de o aluno começar a se preocupar mais em decorar os algoritmos ao invés de desenvolver esta capacidade analítica apurada, este não consegue se dar bem nestes tipos de situações.E aí, como resultado, surgem a raiva e a frustação com a área de desenvolvimento de software.

É importante deixar claro que lógica de programação em geral não existe para que você decore como verificar se um número é ímpar ou par. A intenção do estudo de lógica de programação é desenvolver esta capacidade analítica aprofundada, tornando o aluno capaz de analisar de maneira analítica quaisquer tipos de problemas e propor soluções algorítmicas.

Se um aluno foca seus esforços de estudo em decorar os algoritmos ao invés de desenvolver esta capacidade de análise apurada (já que esta capacidade de análise não é algo completamente natural para nós), ele estará se sabotando na verdade: ele até será capaz de passar na disciplina de lógica de programação, mas certamente não será capaz de enfrentar estes problemas que aparecem no dia a dia.

Concluindo

Concluindo

Estudar lógica de programação não consiste em decorar diferentes algoritmos para resolução de problemas, pois é impossível decorar todos os algoritmos para a resolução de todos os problemas no mundo. Muitas vezes, um mesmo problema, inclusive, pode ser resolvido de maneiras diferentes. A maneira de resolução pode até variar com o estilo de codificação que estivermos utilizando: certamente, você resolveria um problema de uma determinada maneira se estivesse utilizando a orientação a objetos, por exemplo.

Mas a resolução desse mesmo problema poderia ser completamente diferente se você estivesse utilizando o paradigma funcional… Embora provavelmente você vá escrever código de duas maneiras completamente diferentes nessa situação, ambas estão corretas se elas estiverem resolvendo o problema proposto. Por isso, é completamente inviável ficar decorando código, nem para simplesmente passar na disciplina de lógica de programação de seu curso técnico ou graduação.

É importante ressaltar que, para resolvermos diferentes problemas através dos computadores, nós precisamos desenvolver algoritmos coesos, estruturados e dedicados para a resolução de um determinado problema. Para que sejamos capaz de desenvolver estes algoritmos, precisamos desenvolver uma capacidade analítica muito mais apurada, capacidade esta que irá nos dar a habilidade para resolvemos praticamente qualquer tipo de problema que enfrentarmos em nosso dia a dia como profissionais da área de TI. O estudo da lógica de programação verdadeira visa na verdade justamente o desenvolvimento destas habilidades analíticas e de organização dos fluxos de pensamento.

Lógica de Programação Completo
Curso de Lógica de Programação Completo
CONHEÇA O CURSO

Linguagens e paradigmas de programação

No passado escrevia-se programas utilizando apenas linguagens de baixo nível. A escrita é engessada, complexa e muito específica, sendo pouco acessível para os desenvolvedores no geral. Esse tipo de linguagem exige muito conhecimento de quem a programa (inclusive relacionado à forma com que o processador opera uma instrução-máquina).

Recentemente foi liberado o código-fonte utilizado no computador que guiou a missão Apollo que teve como principal objetivo levar o homem à lua (na tão famigerada corrida espacial entre a União Soviética e os EUA), o Apollo Guidance Computer.

https://github.com/chrislgarry/Apollo-11

Se você navegar no repositório acima encontrará diversos códigos-fonte com instruções como essas:

PROGLARM    CS  DSPTAB +11D
        MASK    OCT40400
        ADS DSPTAB +11D


MULTEXIT    XCH ITEMP1      # OBTAIN RETURN ADDRESS IN A
        RELINT
        INDEX   A
        TC  1

MULTFAIL    CA  L
        AD  BIT15
        TS  FAILREG +2

        TCF MULTEXIT

São instruções da linguagem AGC Assembly Language, uma variante da Assembly, que por sinal, é de baixo nível.

Um programa escrito em uma dessas linguagens, chamadas de baixo nível, é composto por uma série de instruções de máquina que determinam quais operações o processador deve executar. Essas instruções são convertidas para a linguagem que o processador entende, que é a linguagem binária (sequência de bits 0 e 1), que é categorizada como First-generation programming language (1GL), em livre tradução: linguagem de programação de primeira geração.

Linguagens de alto nível

Com a popularidade dos computadores criou-se um “problema”: alta demanda por software e, consequentemente, por programadores. Talvez você esteja pensando que isso não é exatamente um problema, e sim uma coisa boa, uma tendência, um novo mercado. Faz sentido, até certo ponto. O problema era encontrar mão de obra qualificada para codificar àquelas instruções tão complicadas.

Com isso, novas linguagens surgiram e, cada vez mais, aproximavam-se da linguagem humana. Isso abriu “fronteiras” para que uma enorme gama de novos desenvolvedores se especializassem. Tais linguagens são denominadas como sendo de alto nível. As linguagens modernas que hoje conhecemos e usamos são de alto nível: C, PHP, Java, Rust, C#, Python, Ruby etc.

Quanto mais próxima da linguagem da máquina, mais baixo nível é a linguagem. Quanto mais próxima da linguagem humana, mais alto nível ela é.

Paradigmas das linguagens de programação

Quando uma linguagem de programação é criada, a partir das suas características, ela é categorizada em um ou mais paradigmas.

A definição do dicionário Aurélio para “paradigma”:

  1. Algo que serve de exemplo geral ou de modelo.
  2. Conjunto das formas que servem de modelo de derivação ou de flexão.
  3. Conjunto dos termos ou elementos que podem ocorrer na mesma posição ou contexto de uma estrutura.

O paradigma de uma linguagem de programação é a sua identidade. Corresponde a um conjunto de características que, juntas, definem como ela opera e resolve os problemas. Algumas linguagens, inclusive, possuem mais de um paradigma, são as chamadas multi paradigmas.

Alguns dos principais paradigmas utilizados hoje no mercado:

  • Funcional
  • Lógico
  • Declarativo
  • Imperativo
  • Orientado a objetos
  • Orientado a eventos

Paradigma funcional

O foco desse paradigma está na avaliação de funções. Como na matemática quando temos, por exemplo, uma função f(x):

f(x) = x + 2

x é um parâmetro (o valor de entrada) e, após a expressão ser avaliada, obtêm-se o resultado.

Se o valor de entrada for 2, o resultado da avaliação da nossa função será 4.

Algumas das linguagens que atendem a esse paradigma: F# (da Microsoft), Lisp, Heskell, Erlang, Elixir, Mathematica.

É possível desenvolver de forma “funcional” mesmo em linguagens não estritamente funcionais. Por exemplo, no PHP, que é uma linguagem multi paradigma, teríamos:

<?php

$sum = function($value) {
    return $value + 2;
};

echo $sum(2); // 4

Paradigma lógico

Também é conhecido como “restritivo”. Muito utilizado em aplicações de inteligência artificial. Esse paradigma chega no resultado esperado a partir de avaliações lógico-matemáticas. Se você já estudou lógica de predicados, confortável se sentirá em entender como uma linguagem nesse paradigma opera.

Principais elementos desse paradigma:

  • Proposições: base de fatos concretos e conhecidos.
  • Regras de inferência: definem como deduzir proposições.
  • Busca: estratégias para controle das inferências.

Exemplo:

  • Proposição: Chico é um gato.
  • Regra de inferência: Todo gato é um felino.
  • Busca: Chico é um felino?

A resposta para a Busca acima precisa ser verdadeira. A conclusão lógica é:

Se Chico é um gato e todo gato é felino, então Chico é um felino.

A idéia básica da programação em lógica é:

“Oferecer um arcabouço que permita inferir conclusões desejadas, a partir de premissas, representando o conhecimento disponível, de uma forma que seja computacionalmente viável”. Prof. Dr. Silvio do Lago Pereira – DTI / FATEC-SP.

A linguagem mais conhecida que utiliza esse paradigma é a Prolog. Esse paradigma é pouco utilizado em aplicações comerciais, seu uso se dá mais na área acadêmica.

Leitura recomendada: https://www.ime.usp.br/~slago/pl-1.pdf

Paradigma declarativo

O paradigma declarativo é baseado no lógico e funcional. Linguagens declarativas descrevem o que fazem e não exatamente como suas instruções funcionam.

Linguagens de marcação são o melhor exemplo: HTML, XML, XSLT, XAML etc. Não obstante, o próprio Prolog – reconhecido primariamente pelo paradigma lógico – também é uma linguagem declarativa. Abaixo alguns exemplos dessas linguagens.

HTML:

<article>
  <header>
    <h1>Linguagens e paradigmas de programação</h1>
  </header>
</article>

SQL:

SELECT nome FROM usuario WHERE id = 10

Paradigma imperativo

Você já ouviu falar em “programação procedural” ou em “programação modular“? De modo geral, são imperativas.

Linguagens clássicas como C, C++, PHP, Perl, C#, Ruby etc, “suportam” esse paradigma. Ele é focado na mudança de estados de variáveis (ao contrário dos anteriores).

Exemplo:

if(option == 'A') {
    print("Opção 'A' selecionada.");
}

A impressão só será realizada se o valor da variável option for igual a A.

Paradigma orientado a objetos

Esse é, entre todos, talvez o mais difundido. Nesse paradigma, ao invés de construirmos nossos sistemas com um conjunto estrito de procedimentos, assim como se faz em linguagens “fortemente imperativas” como o Cobol, Pascal etc, na orientação a objetos utilizamos uma lógica bem próxima do mundo real, lidando com objetos, estruturas que já conhecemos e sobre as quais possuímos uma grande compreensão.

OO é sigla para orientação a objetos

O paradigma orientado a objetos tem uma grande preocupação em esconder o que não é importante e em realçar o que é importante. Nele, implementa-se um conjunto de classes que definem objetos. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento entre eles.

Esse é o paradigma mais utilizado em aplicações comerciais e as principais linguagens o implementam: C#, Java, PHP, Ruby, C++, Python etc.

Paradigma orientado a eventos

Toda linguagem que faz uso de interface gráfica é baseada nesse paradigma. Nele, o fluxo de execução do software é baseado na ocorrência de eventos externos, normalmente disparados pelo usuário.

Por exemplo, imagine essa interface gráfica:

O usuário, ao interagir, decidirá em qual momento digitar, clicar no botão de “salvar” etc. Essas decisões dispararão eventos. O usuário é, então, o responsável por quando os eventos acontecerão, de tal forma que fluxo do programa fica sensivelmente atrelado à ocorrências desses eventos.

Linguagens de programação que fazem uso de paradigma: Delphi, Visual Basic, C#, Python, Java etc.

Concluindo

Os paradigmas não se restringem aos que aqui vimos ou ao o que conceituamos. Nenhum, por si só, deve ser considerado um “santo graal” da solução efetiva e definitiva para todos os problemas. Cada qual tem sua aplicação e pode ser utilizado dependendo da necessidade do software. É comum aplicações de linguagens multi paradigmas utilizarem mais de um, inclusive. Errado, certo … Você sabe, são só questões de perspectiva!

Até a próxima! 🙂

© 2004 - 2019 TreinaWeb Tecnologia LTDA - CNPJ: 06.156.637/0001-58 Av. Paulista, 1765, Conj 71 e 72 - Bela Vista - São Paulo - SP - 01311-200