SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Algoritmos


Há certa controvérsia sobre como definir de maneira formal um algoritmo.
Informalmente, podemos dizer que um algoritmo é uma sequência precisa,
sistemática e finita de passos ou instruções para solução de algum
problema. Uma tentativa de formalização do termo teve início com a
tentativa de solução do problema Entscheidungs problem, ou o problema da
decisão, proposto por David Hilbert em 1928. O termo “algoritmo” tem sua
origem no cientista persa Muhammad ibn Musa al-Khwarizm.
A latinização de seu nome deu origem ao termo algoritmo e algarismo na
língua portuguesa. Suas principais contribuições incluem inovações
importantes na matemática, em especial em álgebra e trigonometria.
Um de seus mais importantes livros, “Sobre o Cálculo com Números
Hindus”, do ano de 825, foi responsável pela disseminação do sistema
hindu-arábico de numeração no Oriente Médio e na Europa.
Um algoritmo é então um conjunto de ideias abstratas para solução de um
problema. Mais formalmente, podemos estabelecer que um algoritmo fosse
uma sequência finita de instruções para resolver um problema, a qual
possui as seguintes propriedades:

• Garantia de término: o problema a ser resolvido possui condições
específicas que, quando satisfeitas, a execução do algoritmo é encerrada e o
problema é então tido como “resolvido”.
Além disso, estas condições devem ser satisfeitas após uma quantidade
finita de tempo, a ser contado a partir do início da execução do algoritmo;

• Exatidão: a intenção de cada instrução no algoritmo deve ser
suficientemente clara, de
forma que não haja ambiguidade na interpretação da intenção.

• Efetividade: cada instrução deve ser básica o suficiente para ser
executada, pelo menos em princípio, por qualquer agente usando apenas
lápis e papel.
Lidamos com algoritmos desde nossa infância em diversas situações.
Por exemplo, aprendemos no ensino primário o algoritmo de Euclides para
obtenção do máximo divisor comum (MDC) entre dois números inteiros.
Inicialmente, tomamos dois números inteiros a e b. Se b = 0 então
o máximo divisor comum entre a e b é o número a. Caso contrário, o
máximo divisor comum entre a e b é dado pelo máximo divisor comum de
b e do resto da divisão de a por b.
O processo então se repete até que b seja igual a 0 (zero).
Esquematicamente, podemos escrever a seguinte sequência de instruções
para resolver o problema:

PASSO 1 Chame o maior número de a e o menor de b

PASSO 2 Divida a por b e chame o resto de r

PASSO 3 Se r é igual a zero então o máximo divisor comum é igual a b e a
execução das instruções encerra aqui.
Caso contrário, siga para a próxima instrução.

PASSO 4 Atribua o valor de b a a e o valor de r a b.

PASSO 5 Volte para o passo 2.

É importante destacar que essa sequência de instruções sempre obtém um
valor r = 0 em algum dos passos e, portanto, sempre termina.
Além disso, a sequência de instruções está correta, já que sempre produz
uma resposta correta para um par de números inteiros fornecidos
como entrada. Dessa forma, acabamos de descrever um algoritmo para
solução do problema do máximo divisor comum, o algoritmo de Euclides.
Como era de se esperar, nem toda sequência de instruções para resolver um
determinado problema pode ser considerada um algoritmo. Por exemplo, se
a instrução “Divida x por y se todo número inteiro par maior que 2 é a
soma de dois números primos” estiver presente na sequência, ela só poderá
ser executada se soubermos se a proposição “todo número inteiro
par maior que 2 é a soma de dois números primos” é verdadeira ou falsa.
Entretanto, esta proposição, conhecida como conjectura de Goldbach, foi
proposta em 1742 e continua sem solução até hoje. Logo, nossa instrução
não pode ser executada por qualquer agente hoje em dia e, portanto, não
pode fazer parte de um algoritmo.
Outro exemplo de instrução que não pode fazer parte de um algoritmo é
“Escreva todos os números ímpares”. Neste caso, temos uma instrução que
não pode ser executada porque a execução nunca terminará, apesar de
sabermos exatamente como determinar os números ímpares.
Observe que se modificássemos a instrução para “Escreva todos os
números ímpares menores do que 100”, ela poderia, perfeitamente, fazer
parte de um algoritmo.
Um problema para o qual existe uma solução na forma de algoritmo é dito
um problema algorítmico.
O problema de encontrar o máximo divisor comum de dois números
naturais quaisquer é, portanto, um problema algorítmico.
Problemas algorítmicos, em geral, possuem muitas ocorrências. Por
exemplo, para o problema de encontrar o máximo divisor comum de dois
números naturais, cada ocorrência é uma dupla distinta de números naturais
cujo máximo divisor comum queremos encontrar.
Um algoritmo é dito correto quando ele sempre termina e produz a resposta
correta para todas as ocorrências de um dado problema.
Algoritmo, então, pode ser imaginado como a especificação de um
processo “mecânico” que, quando executado, leva-nos à solução de algum
problema. Embora o termo algoritmo esteja relacionado intimamente com
Computação, algoritmos tem sido parte de nossas vidas desde a primeira
vez que uma pessoa explicou para outra como fazer alguma coisa. As
pessoas utilizam algoritmos quando seguem receitas culinárias ou
instruções para programar um tocador de músicas. Entretanto, nem todo
algoritmo pode ser executado por um computador.
Um computador pode executar apenas aqueles algoritmos cujas instruções
envolvam tarefas que ele possa entender e executar. Este não é o caso, por
exemplo, de instruções como “corte o filé em cubos” e “ligue o tocador de
música”.
Computadores executam algoritmos que manipulam apenas dados e não
coisas físicas, tais como filé e tocador de música.
A execução de um algoritmo por um computador é denominada
processamento de dados e consiste de três partes: uma entrada, um
processo ou processamento e uma saída. A entrada é um conjunto de
informações que é requisitada para que as instruções do algoritmo possam
ser executadas. O processamento é a sequência de instruções que compõe
o algoritmo. E a saída é o resultado obtido com a execução do processo
para a entrada fornecida.
Por exemplo, a entrada e a saída para uma computação do algoritmo para o
problema de encontrar o máximo divisor comum de dois números naturais
são, respectivamente, dois números naturais e o máximo divisor comum
entre eles. Quando escrevemos algoritmos para serem executados por
computador, temos de fazer algumas suposições sobre o modelo de
computação entrada–processamento–saída.
A primeira delas é que, a fim de realizar qualquer computação, o algoritmo
deve possuir um meio de obter os dados da entrada. Esta tarefa é conhecida
como leitura da entrada.
A segunda, é que o algoritmo deve possuir um meio de revelar o resultado
da computação. Isto é conhecido como escrita dos dados da saída. Todo e
qualquer computador possui dispositivos através dos quais a leitura e a
escrita de dados são realizadas.
Algoritmos e resolução de problemas

Todo algoritmo está relacionado com a solução de um determinado
problema. Portanto, construir um algoritmo para um dado problema
significa, antes de mais nada, encontrar uma solução para o problema e
descrevê-la como uma sequência finita de ações.
A tarefa de encontrar a solução de um problema qualquer é, em geral,
realizada de forma empírica e um tanto quanto desorganizada; ocorrem
vários procedimentos mentais, dos quais raramente tomamos
conhecimento.
A capacidade para resolver problemas pode ser vista como uma habilidade
a ser adquirida.
Esta habilidade como qualquer outra, pode ser obtida pela combinação de
duas partes:

1. Conhecimento: adquirido pelo estudo. Em termos de resolução de
problemas, está relacionado a que táticas, estratégias e planos usar e
quando usar;

2. Destreza: adquirida pela prática. A experiência no uso do conhecimento
nos dá mais agilidade na resolução de problemas.

Independente do problema a ser resolvido, ao desenvolvermos um
algoritmo devemos seguir os seguintes passos:

• Análise preliminar: entender o problema com a maior precisão possível,
identificando os dados e os resultados desejados;

• Solução: desenvolver um algoritmo para o problema;

• Teste de qualidade: executar o algoritmo desenvolvido com uma entrada
para a qual o resultado seja conhecido;

• Alteração: se o resultado do teste de qualidade não for satisfatório, altere
o algoritmo e submeta-o a um novo teste de qualidade;

• Produto final: algoritmo concluído e testado, pronto para ser aplicado.

Contenu connexe

Tendances (8)

01 logica
01 logica01 logica
01 logica
 
Algoritmos visualg
Algoritmos visualgAlgoritmos visualg
Algoritmos visualg
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - Algoritmos
 
Ap algoritmosglauco
Ap algoritmosglaucoAp algoritmosglauco
Ap algoritmosglauco
 
01 conceitos básicos
01   conceitos básicos01   conceitos básicos
01 conceitos básicos
 
Progr
ProgrProgr
Progr
 
Lógica de programação 2
Lógica de programação 2Lógica de programação 2
Lógica de programação 2
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 

En vedette

Salamanca y sana
Salamanca y sanaSalamanca y sana
Salamanca y sanaREYMIS820
 
Presentación para lau
Presentación para lauPresentación para lau
Presentación para laulaura10_2
 
GO ECO FRIENDLY TO SAVE EARTH
GO ECO FRIENDLY TO SAVE EARTHGO ECO FRIENDLY TO SAVE EARTH
GO ECO FRIENDLY TO SAVE EARTHjohnalden47
 
Futbol temporada 1990 1991
Futbol temporada 1990 1991Futbol temporada 1990 1991
Futbol temporada 1990 1991miguelmedina1965
 
Salamanca y sana
Salamanca y sanaSalamanca y sana
Salamanca y sanaREYMIS820
 
36 5 minut ptoject
36 5 minut ptoject36 5 minut ptoject
36 5 minut ptojectGraphiTe2005
 
Producción y comercialización de harina de alcachofa
Producción y comercialización de harina de alcachofaProducción y comercialización de harina de alcachofa
Producción y comercialización de harina de alcachofaSofya Hinojosa Roman
 
New text document
New text documentNew text document
New text documentsudhir143
 
Tarea 1. sergio_manzanilla
Tarea 1. sergio_manzanillaTarea 1. sergio_manzanilla
Tarea 1. sergio_manzanillasergiomanzanilla
 
Utopia I, Cristo e cristianesimo
Utopia I, Cristo e cristianesimoUtopia I, Cristo e cristianesimo
Utopia I, Cristo e cristianesimoGabriella Giudici
 
Internet como fuente de consulta
Internet como fuente de consulta Internet como fuente de consulta
Internet como fuente de consulta BrandStrat
 
Ciclo del oxigeno
Ciclo del oxigenoCiclo del oxigeno
Ciclo del oxigenoKevin Meliu
 
Ear prented by jomarie labial
Ear prented by jomarie labialEar prented by jomarie labial
Ear prented by jomarie labialjolabs098
 
Isabella 6 ano A
Isabella 6 ano AIsabella 6 ano A
Isabella 6 ano Agodoyisa
 
Guía de trabajo convivencia y paz
Guía de trabajo convivencia y pazGuía de trabajo convivencia y paz
Guía de trabajo convivencia y pazBiviana Quiroga
 
Fiche conseil : Comment évoluer au sein du Service client
Fiche conseil : Comment évoluer au sein du Service clientFiche conseil : Comment évoluer au sein du Service client
Fiche conseil : Comment évoluer au sein du Service clientCRM DOCTOR
 

En vedette (20)

Salamanca y sana
Salamanca y sanaSalamanca y sana
Salamanca y sana
 
Presentación para lau
Presentación para lauPresentación para lau
Presentación para lau
 
7th generation vs
7th generation vs7th generation vs
7th generation vs
 
GO ECO FRIENDLY TO SAVE EARTH
GO ECO FRIENDLY TO SAVE EARTHGO ECO FRIENDLY TO SAVE EARTH
GO ECO FRIENDLY TO SAVE EARTH
 
Futbol temporada 1990 1991
Futbol temporada 1990 1991Futbol temporada 1990 1991
Futbol temporada 1990 1991
 
Salamanca y sana
Salamanca y sanaSalamanca y sana
Salamanca y sana
 
36 5 minut ptoject
36 5 minut ptoject36 5 minut ptoject
36 5 minut ptoject
 
Producción y comercialización de harina de alcachofa
Producción y comercialización de harina de alcachofaProducción y comercialización de harina de alcachofa
Producción y comercialización de harina de alcachofa
 
New text document
New text documentNew text document
New text document
 
Tarea 1. sergio_manzanilla
Tarea 1. sergio_manzanillaTarea 1. sergio_manzanilla
Tarea 1. sergio_manzanilla
 
Utopia I, Cristo e cristianesimo
Utopia I, Cristo e cristianesimoUtopia I, Cristo e cristianesimo
Utopia I, Cristo e cristianesimo
 
Emprendimiento
EmprendimientoEmprendimiento
Emprendimiento
 
Internet como fuente de consulta
Internet como fuente de consulta Internet como fuente de consulta
Internet como fuente de consulta
 
Ciclo del oxigeno
Ciclo del oxigenoCiclo del oxigeno
Ciclo del oxigeno
 
Ear prented by jomarie labial
Ear prented by jomarie labialEar prented by jomarie labial
Ear prented by jomarie labial
 
Nota padres castañada
Nota padres castañadaNota padres castañada
Nota padres castañada
 
Mala
MalaMala
Mala
 
Isabella 6 ano A
Isabella 6 ano AIsabella 6 ano A
Isabella 6 ano A
 
Guía de trabajo convivencia y paz
Guía de trabajo convivencia y pazGuía de trabajo convivencia y paz
Guía de trabajo convivencia y paz
 
Fiche conseil : Comment évoluer au sein du Service client
Fiche conseil : Comment évoluer au sein du Service clientFiche conseil : Comment évoluer au sein du Service client
Fiche conseil : Comment évoluer au sein du Service client
 

Similaire à Algoritmos

Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
Teoria da Computação
Teoria da ComputaçãoTeoria da Computação
Teoria da ComputaçãoAlefe Variani
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoRegis Magalhães
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Aula1 introdução à lógica de programação
Aula1 introdução à lógica de programaçãoAula1 introdução à lógica de programação
Aula1 introdução à lógica de programaçãoHelder Martins
 
Aula 1 - Lógica de Programação.pptx
Aula 1 - Lógica de Programação.pptxAula 1 - Lógica de Programação.pptx
Aula 1 - Lógica de Programação.pptxAnalderMagalhaes
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programaçãomafsistemas
 
Aula 04 - Introducao a Algoritmos.pdf
Aula 04 - Introducao a Algoritmos.pdfAula 04 - Introducao a Algoritmos.pdf
Aula 04 - Introducao a Algoritmos.pdfEMERSONMUNIZDECARVAL
 
59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)arapido
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em PascalPepe Rocker
 
Pensamento Computacional.................................
Pensamento Computacional.................................Pensamento Computacional.................................
Pensamento Computacional.................................AnabelaAlferes
 

Similaire à Algoritmos (20)

Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 01 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Teoria da Computação
Teoria da ComputaçãoTeoria da Computação
Teoria da Computação
 
Introdução
IntroduçãoIntrodução
Introdução
 
Aula2
Aula2Aula2
Aula2
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
01 conceitos
01 conceitos01 conceitos
01 conceitos
 
Aula1 introdução à lógica de programação
Aula1 introdução à lógica de programaçãoAula1 introdução à lógica de programação
Aula1 introdução à lógica de programação
 
Aula 1 - Lógica de Programação.pptx
Aula 1 - Lógica de Programação.pptxAula 1 - Lógica de Programação.pptx
Aula 1 - Lógica de Programação.pptx
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Algoritmos com java script
Algoritmos com java scriptAlgoritmos com java script
Algoritmos com java script
 
Aula 04 - Introducao a Algoritmos.pdf
Aula 04 - Introducao a Algoritmos.pdfAula 04 - Introducao a Algoritmos.pdf
Aula 04 - Introducao a Algoritmos.pdf
 
59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)59 algoritmosgeneticos(1)
59 algoritmosgeneticos(1)
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
Pensamento Computacional.................................
Pensamento Computacional.................................Pensamento Computacional.................................
Pensamento Computacional.................................
 
Cap04
Cap04Cap04
Cap04
 

Algoritmos

  • 1. Algoritmos Há certa controvérsia sobre como definir de maneira formal um algoritmo. Informalmente, podemos dizer que um algoritmo é uma sequência precisa, sistemática e finita de passos ou instruções para solução de algum problema. Uma tentativa de formalização do termo teve início com a tentativa de solução do problema Entscheidungs problem, ou o problema da decisão, proposto por David Hilbert em 1928. O termo “algoritmo” tem sua origem no cientista persa Muhammad ibn Musa al-Khwarizm. A latinização de seu nome deu origem ao termo algoritmo e algarismo na língua portuguesa. Suas principais contribuições incluem inovações importantes na matemática, em especial em álgebra e trigonometria. Um de seus mais importantes livros, “Sobre o Cálculo com Números Hindus”, do ano de 825, foi responsável pela disseminação do sistema hindu-arábico de numeração no Oriente Médio e na Europa. Um algoritmo é então um conjunto de ideias abstratas para solução de um problema. Mais formalmente, podemos estabelecer que um algoritmo fosse uma sequência finita de instruções para resolver um problema, a qual possui as seguintes propriedades: • Garantia de término: o problema a ser resolvido possui condições específicas que, quando satisfeitas, a execução do algoritmo é encerrada e o problema é então tido como “resolvido”. Além disso, estas condições devem ser satisfeitas após uma quantidade finita de tempo, a ser contado a partir do início da execução do algoritmo; • Exatidão: a intenção de cada instrução no algoritmo deve ser suficientemente clara, de forma que não haja ambiguidade na interpretação da intenção. • Efetividade: cada instrução deve ser básica o suficiente para ser executada, pelo menos em princípio, por qualquer agente usando apenas lápis e papel. Lidamos com algoritmos desde nossa infância em diversas situações. Por exemplo, aprendemos no ensino primário o algoritmo de Euclides para obtenção do máximo divisor comum (MDC) entre dois números inteiros. Inicialmente, tomamos dois números inteiros a e b. Se b = 0 então o máximo divisor comum entre a e b é o número a. Caso contrário, o máximo divisor comum entre a e b é dado pelo máximo divisor comum de b e do resto da divisão de a por b.
  • 2. O processo então se repete até que b seja igual a 0 (zero). Esquematicamente, podemos escrever a seguinte sequência de instruções para resolver o problema: PASSO 1 Chame o maior número de a e o menor de b PASSO 2 Divida a por b e chame o resto de r PASSO 3 Se r é igual a zero então o máximo divisor comum é igual a b e a execução das instruções encerra aqui. Caso contrário, siga para a próxima instrução. PASSO 4 Atribua o valor de b a a e o valor de r a b. PASSO 5 Volte para o passo 2. É importante destacar que essa sequência de instruções sempre obtém um valor r = 0 em algum dos passos e, portanto, sempre termina. Além disso, a sequência de instruções está correta, já que sempre produz uma resposta correta para um par de números inteiros fornecidos como entrada. Dessa forma, acabamos de descrever um algoritmo para solução do problema do máximo divisor comum, o algoritmo de Euclides. Como era de se esperar, nem toda sequência de instruções para resolver um determinado problema pode ser considerada um algoritmo. Por exemplo, se a instrução “Divida x por y se todo número inteiro par maior que 2 é a soma de dois números primos” estiver presente na sequência, ela só poderá ser executada se soubermos se a proposição “todo número inteiro par maior que 2 é a soma de dois números primos” é verdadeira ou falsa. Entretanto, esta proposição, conhecida como conjectura de Goldbach, foi proposta em 1742 e continua sem solução até hoje. Logo, nossa instrução não pode ser executada por qualquer agente hoje em dia e, portanto, não pode fazer parte de um algoritmo. Outro exemplo de instrução que não pode fazer parte de um algoritmo é “Escreva todos os números ímpares”. Neste caso, temos uma instrução que não pode ser executada porque a execução nunca terminará, apesar de sabermos exatamente como determinar os números ímpares. Observe que se modificássemos a instrução para “Escreva todos os números ímpares menores do que 100”, ela poderia, perfeitamente, fazer parte de um algoritmo. Um problema para o qual existe uma solução na forma de algoritmo é dito um problema algorítmico. O problema de encontrar o máximo divisor comum de dois números naturais quaisquer é, portanto, um problema algorítmico.
  • 3. Problemas algorítmicos, em geral, possuem muitas ocorrências. Por exemplo, para o problema de encontrar o máximo divisor comum de dois números naturais, cada ocorrência é uma dupla distinta de números naturais cujo máximo divisor comum queremos encontrar. Um algoritmo é dito correto quando ele sempre termina e produz a resposta correta para todas as ocorrências de um dado problema. Algoritmo, então, pode ser imaginado como a especificação de um processo “mecânico” que, quando executado, leva-nos à solução de algum problema. Embora o termo algoritmo esteja relacionado intimamente com Computação, algoritmos tem sido parte de nossas vidas desde a primeira vez que uma pessoa explicou para outra como fazer alguma coisa. As pessoas utilizam algoritmos quando seguem receitas culinárias ou instruções para programar um tocador de músicas. Entretanto, nem todo algoritmo pode ser executado por um computador. Um computador pode executar apenas aqueles algoritmos cujas instruções envolvam tarefas que ele possa entender e executar. Este não é o caso, por exemplo, de instruções como “corte o filé em cubos” e “ligue o tocador de música”. Computadores executam algoritmos que manipulam apenas dados e não coisas físicas, tais como filé e tocador de música. A execução de um algoritmo por um computador é denominada processamento de dados e consiste de três partes: uma entrada, um processo ou processamento e uma saída. A entrada é um conjunto de informações que é requisitada para que as instruções do algoritmo possam ser executadas. O processamento é a sequência de instruções que compõe o algoritmo. E a saída é o resultado obtido com a execução do processo para a entrada fornecida. Por exemplo, a entrada e a saída para uma computação do algoritmo para o problema de encontrar o máximo divisor comum de dois números naturais são, respectivamente, dois números naturais e o máximo divisor comum entre eles. Quando escrevemos algoritmos para serem executados por computador, temos de fazer algumas suposições sobre o modelo de computação entrada–processamento–saída. A primeira delas é que, a fim de realizar qualquer computação, o algoritmo deve possuir um meio de obter os dados da entrada. Esta tarefa é conhecida como leitura da entrada. A segunda, é que o algoritmo deve possuir um meio de revelar o resultado da computação. Isto é conhecido como escrita dos dados da saída. Todo e qualquer computador possui dispositivos através dos quais a leitura e a escrita de dados são realizadas.
  • 4. Algoritmos e resolução de problemas Todo algoritmo está relacionado com a solução de um determinado problema. Portanto, construir um algoritmo para um dado problema significa, antes de mais nada, encontrar uma solução para o problema e descrevê-la como uma sequência finita de ações. A tarefa de encontrar a solução de um problema qualquer é, em geral, realizada de forma empírica e um tanto quanto desorganizada; ocorrem vários procedimentos mentais, dos quais raramente tomamos conhecimento. A capacidade para resolver problemas pode ser vista como uma habilidade a ser adquirida. Esta habilidade como qualquer outra, pode ser obtida pela combinação de duas partes: 1. Conhecimento: adquirido pelo estudo. Em termos de resolução de problemas, está relacionado a que táticas, estratégias e planos usar e quando usar; 2. Destreza: adquirida pela prática. A experiência no uso do conhecimento nos dá mais agilidade na resolução de problemas. Independente do problema a ser resolvido, ao desenvolvermos um algoritmo devemos seguir os seguintes passos: • Análise preliminar: entender o problema com a maior precisão possível, identificando os dados e os resultados desejados; • Solução: desenvolver um algoritmo para o problema; • Teste de qualidade: executar o algoritmo desenvolvido com uma entrada para a qual o resultado seja conhecido; • Alteração: se o resultado do teste de qualidade não for satisfatório, altere o algoritmo e submeta-o a um novo teste de qualidade; • Produto final: algoritmo concluído e testado, pronto para ser aplicado.