Ferramentas de Site


algoritmo:tutorial

Diferenças

Esta página mostra as diferenças entre as duas revisões da página.

Links para esta vista de comparação

Ambos os lados da revisão anterior Revisão anterior
Próxima revisão
Revisão anterior
algoritmo:tutorial [2021/05/13 10:42]
127.0.0.1 edição externa
algoritmo:tutorial [2021/12/12 14:59]
staff
Linha 4: Linha 4:
 Sendo que a programação está assente na algoritmia, e a algoritmia está assente na lógica, como se verá ao longo deste pequeno tutorial, este torna-se de extrema importância para se entender muitos "porquês" da programação que os //beginners// muitas vezes colocam. Sendo que a programação está assente na algoritmia, e a algoritmia está assente na lógica, como se verá ao longo deste pequeno tutorial, este torna-se de extrema importância para se entender muitos "porquês" da programação que os //beginners// muitas vezes colocam.
  
-====== Lógica ======+===== Lógica =====
 De forma resumida, a lógica é o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar.((//in// [[http://pt.wikipedia.org/wiki/L%C3%B3gica|Wikipédia]].)) De forma resumida, a lógica é o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar.((//in// [[http://pt.wikipedia.org/wiki/L%C3%B3gica|Wikipédia]].))
  
 Nesta parte vamos entender os operadores lógicos básicos - **E**, **OU** e **OU... OU...** - recorrendo às **Tabelas de Verdade**. Nesta parte vamos entender os operadores lógicos básicos - **E**, **OU** e **OU... OU...** - recorrendo às **Tabelas de Verdade**.
  
-===== Proposições e condições =====+==== Proposições e condições ====
 De forma muito resumida, seguem-se três exemplos simples e perceptíveis: De forma muito resumida, seguem-se três exemplos simples e perceptíveis:
   * **Sentença:** O João gosta de ir à praia.   * **Sentença:** O João gosta de ir à praia.
Linha 15: Linha 15:
   * **Condição:** O João gosta de ir à praia se estiver bom tempo.   * **Condição:** O João gosta de ir à praia se estiver bom tempo.
  
-===== Tabela de Verdade =====+==== Tabela de Verdade ====
 Numa Tabela de Verdade são analisadas todas as hipóteses de resposta a um problema lógico, desde o mais simples ao mais complexo, sendo mesmo a base das bases da investigação criminal forense. Numa Tabela de Verdade são analisadas todas as hipóteses de resposta a um problema lógico, desde o mais simples ao mais complexo, sendo mesmo a base das bases da investigação criminal forense.
 São lançadas as hipóteses de forma lógica, unindo as **sentenças** em **proposições** e relacionando estas últimas em **condições**. Um exemplo simples e __sem fundamentação forense__: São lançadas as hipóteses de forma lógica, unindo as **sentenças** em **proposições** e relacionando estas últimas em **condições**. Um exemplo simples e __sem fundamentação forense__:
Linha 30: Linha 30:
 Uma proposição só pode tomar um valor lógico - não pode ser V e F ao mesmo tempo!</note> Uma proposição só pode tomar um valor lógico - não pode ser V e F ao mesmo tempo!</note>
  
-===== Operadores lógicos ===== +==== Operadores lógicos ==== 
-==== E - Conjunção ====+=== E - Conjunção ===
 //O João gosta de praia **e** do campo.// //O João gosta de praia **e** do campo.//
 Ou seja, o João gosta de **ambas** as coisas, a praia e o campo. Ou seja, o João gosta de **ambas** as coisas, a praia e o campo.
Linha 42: Linha 42:
 Só é verdadeiro quando ambas as proposições são verdadeiras. Só é verdadeiro quando ambas as proposições são verdadeiras.
  
-==== OU - Disjunção ====+=== OU - Disjunção ===
 Também denominada de **Disjunção inclusiva**. Também denominada de **Disjunção inclusiva**.
  
 //O João gosta de praia **ou** do campo// //O João gosta de praia **ou** do campo//
 Isto é, o João gosta ou da praia, ou do campo ou de __ambos__. Isto é, o João gosta ou da praia, ou do campo ou de __ambos__.
-^  p  ^  q  ^  p v q  ^+^  p  ^  q  ^  <m>p~v~q</m>  ^
 |  V  |  V  |  V  | |  V  |  V  |  V  |
 |  V  |  F  |  V  | |  V  |  F  |  V  |
Linha 54: Linha 54:
 Só é falso quando ambas as proposições são falsas. Só é falso quando ambas as proposições são falsas.
  
-==== OU... OU... - Disjunção exclusiva ====+=== OU... OU... - Disjunção exclusiva ===
 //O João ou gosta de praia ou gosta de campo.// //O João ou gosta de praia ou gosta de campo.//
 Ou seja, O João gosta de um só destes ambientes, e não dos dois ao mesmo tempo: __ou um ou outro__. Ou seja, O João gosta de um só destes ambientes, e não dos dois ao mesmo tempo: __ou um ou outro__.
Linha 64: Linha 64:
 É falso quando as proposições têm o mesmo valor lógico. É falso quando as proposições têm o mesmo valor lógico.
  
-===== Condições ===== +==== Condições ==== 
-==== Implicação ====+=== Implicação ===
 //**Se** o João gosta de ir à praia, **então** gosta do mar.// //**Se** o João gosta de ir à praia, **então** gosta do mar.//
-^  p  ^  q  ^  <m>p~doubleright~q</m>  ^+^  p  ^  q  ^  <m>p~doubleright~q</m> ^
 |  V  |  V  |  V  | |  V  |  V  |  V  |
 |  V  |  F  |  F  | |  V  |  F  |  F  |
Linha 75: Linha 75:
 Mas "Falso implica verdadeiro" é uma condição verdadeira.</note> Mas "Falso implica verdadeiro" é uma condição verdadeira.</note>
  
-==== Equivalência ====+=== Equivalência ===
 Também chamada de **Implicação dupla** ou **bi-implicação**. Também chamada de **Implicação dupla** ou **bi-implicação**.
  
Linha 86: Linha 86:
 Ou seja, só é verdade quando ambas as proposições tiverem o mesmo valor lógico - só assim as proposições **equivalem** uma à outra. Ou seja, só é verdade quando ambas as proposições tiverem o mesmo valor lógico - só assim as proposições **equivalem** uma à outra.
  
-===== Outras operações lógicas ===== +==== Outras operações lógicas ==== 
-==== Negação ====+=== Negação ===
 Esta é uma operação muito básica que, simplesmente, **nega** o resultado lógico de uma proposição ou condição. Esta é uma operação muito básica que, simplesmente, **nega** o resultado lógico de uma proposição ou condição.
 ^  p  ^  ~<m>p</m>  ^ ^  p  ^  ~<m>p</m>  ^
Linha 95: Linha 95:
 <note normal>**Dupla negação:** ~~<m>p~doubleleftright~p</m></note> <note normal>**Dupla negação:** ~~<m>p~doubleleftright~p</m></note>
  
-==== Igualdade e diferença ====+=== Igualdade e diferença ===
 Sem negação: Sem negação:
   * <m>2+2~=~4</m> - verdadeiro   * <m>2+2~=~4</m> - verdadeiro
Linha 105: Linha 105:
  
  
-==== Maior do que, menor do que, maior ou igual que, menor ou igual que ====+=== Maior do que, menor do que, maior ou igual que, menor ou igual que ===
   * <m>5~>~9</m> - falso   * <m>5~>~9</m> - falso
   * <m>3~<~8</m> - verdadeiro   * <m>3~<~8</m> - verdadeiro
-  * ~<m>((3+pi)~>=~6)</m> - falso +  * ~<m>( (3+pi)~>=~6)</m> - falso 
-  * ~<m>((1/e)~<=~(1/pi))</m> - verdadeiro+  * ~<m>( (1/e)~<=~(1/pi) )</m> - verdadeiro
  
-===== Principais Leis De Morgan =====+==== Principais Leis De Morgan ====
   * ~<m>(p~wedge~q)~doubleleftright~</m>~<m>p~v~</m>~<m>q</m>   * ~<m>(p~wedge~q)~doubleleftright~</m>~<m>p~v~</m>~<m>q</m>
   * ~<m>(p~v~q)~doubleleftright~</m>~<m>p~wedge~</m>~<m>q</m>   * ~<m>(p~v~q)~doubleleftright~</m>~<m>p~wedge~</m>~<m>q</m>
  
-====== Algoritmia ======+===== Algoritmia =====
 Um **algoritmo** é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.((//in// [[http://pt.wikipedia.org/wiki/Algoritmo|Wikipédia]])) Um **algoritmo** é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.((//in// [[http://pt.wikipedia.org/wiki/Algoritmo|Wikipédia]]))
 Ou seja, um algoritmo é um caminho bem definido para se resolver um determinado problema. Por exemplo: Ou seja, um algoritmo é um caminho bem definido para se resolver um determinado problema. Por exemplo:
Linha 122: Linha 122:
 |  Ordenar lista de forma crescente: <m>{7,~3,~6}</m>  |  Alg. de Ordenação (Crescente): <m>{3,~6,~7}</m>  | |  Ordenar lista de forma crescente: <m>{7,~3,~6}</m>  |  Alg. de Ordenação (Crescente): <m>{3,~6,~7}</m>  |
  
-===== Representação de Algoritmos =====+==== Representação de Algoritmos ====
 Um algoritmo tem uma representação para que possa ser facilmente interpretado. Antes de se programar, os problemas devem ser estudados para se chegar a um algoritmo-solução. Este será representado num esquema, chamada **Fluxograma**, ou então escrito na linguagem-mãe (no nosso caso, Português) ou numa mistura desta com a linguagem de programação a que nos propomos resolver o dito problema. Um algoritmo tem uma representação para que possa ser facilmente interpretado. Antes de se programar, os problemas devem ser estudados para se chegar a um algoritmo-solução. Este será representado num esquema, chamada **Fluxograma**, ou então escrito na linguagem-mãe (no nosso caso, Português) ou numa mistura desta com a linguagem de programação a que nos propomos resolver o dito problema.
 Vamos então analisar um algoritmo muito simples que resolve o seguinte problema: Vamos então analisar um algoritmo muito simples que resolve o seguinte problema:
 //Dados dois números, inteiros, inseridos pelo utilizador, dizer qual é o maior, ou então se são iguais.// //Dados dois números, inteiros, inseridos pelo utilizador, dizer qual é o maior, ou então se são iguais.//
  
-==== Fluxograma ====+=== Fluxograma ===
 Vamos resolver o problema anterior segundo o algoritmo tradicional: análise caso-a-caso, que com este problema é totalmente viáveis pois basta analisar duas situações, segundo esta ordem: Vamos resolver o problema anterior segundo o algoritmo tradicional: análise caso-a-caso, que com este problema é totalmente viáveis pois basta analisar duas situações, segundo esta ordem:
   * Se num1 é maior que num2, mostra num1...   * Se num1 é maior que num2, mostra num1...
Linha 142: Linha 142:
 Pontos em que um fluxo se divide são quase sempre Condições, excepto nos Ciclos que, em si, têm dois fluxos: o fluxo das acções a processar dentro do ciclo e um fluxo de retoma do ciclo no caso de a condição de paragem não for satisfeita. Esta é a teoria básica de fluxos nas Estruturas de Repetição. Pontos em que um fluxo se divide são quase sempre Condições, excepto nos Ciclos que, em si, têm dois fluxos: o fluxo das acções a processar dentro do ciclo e um fluxo de retoma do ciclo no caso de a condição de paragem não for satisfeita. Esta é a teoria básica de fluxos nas Estruturas de Repetição.
  
-==== Pseudo-código ====+=== Pseudo-código ===
    Início Programa    Início Programa
       Ler num1       Ler num1
Linha 157: Linha 157:
    Fim Programa    Fim Programa
  
-===== Alguns algoritmos ===== +==== Alguns algoritmos ==== 
-==== Algoritmo de ordenação ====+=== Algoritmo de ordenação ===
 Ver o Capítulo 5 da Parte II do nosso Tutorial de Pascal: [[dev_geral:pascal:tutorial:parte_2#ordenacao_crescente_de_uma_lista_uso_do_ciclo_for_to_do|Ordenação crescente de uma lista]]. Ver o Capítulo 5 da Parte II do nosso Tutorial de Pascal: [[dev_geral:pascal:tutorial:parte_2#ordenacao_crescente_de_uma_lista_uso_do_ciclo_for_to_do|Ordenação crescente de uma lista]].
 Aproveita e vê como pode ser programado recorrendo a Pascal. ;-) Aproveita e vê como pode ser programado recorrendo a Pascal. ;-)
  
-==== Grafos ====+=== Grafos ===
 Ver o artigo da **Revista PROGRAMAR**: [[https://www.revista-programar.info/artigos/grafos-1a-parte/|Parte 1]] e [[https://www.revista-programar.info/artigos/grafos-2a-parte/|Parte 2]]. Ver o artigo da **Revista PROGRAMAR**: [[https://www.revista-programar.info/artigos/grafos-1a-parte/|Parte 1]] e [[https://www.revista-programar.info/artigos/grafos-2a-parte/|Parte 2]].
  
-==== Algoritmos de pesquisa ====+=== Algoritmos de pesquisa ===
 Ver o documento completo [[algoritmo:pesquisa_binaria|Algoritmos de pesquisa]]. Ver o documento completo [[algoritmo:pesquisa_binaria|Algoritmos de pesquisa]].
  
 {{tag>algoritmo}} {{tag>algoritmo}}
  
algoritmo/tutorial.txt · Última modificação em: 2021/12/12 14:59 por staff