Vamos dividir a diferença entre um programa e um algoritmo, e como eles trabalham juntos para executar tarefas na ciência da computação.
algoritmo *
Definição: Um algoritmo é um procedimento bem definido e passo a passo ou conjunto de instruções para resolver um problema específico ou realizar uma tarefa específica. É um plano lógico, um plano preciso. Pense nisso como uma receita para um computador seguir.
*
características de um bom algoritmo: *
inequívocas: Cada passo é claro e tem apenas uma interpretação.
*
finito: O algoritmo deve terminar após um número finito de etapas. Não pode continuar para sempre.
*
eficaz: Cada etapa deve ser básica e factível em um tempo finito, usando os recursos disponíveis.
*
Entrada: O algoritmo aceita zero ou mais entradas.
*
saída: O algoritmo produz uma ou mais saídas.
*
correção: Ele deve produzir o resultado correto para todas as entradas válidas.
*
Eficiência: Deve usar recursos (tempo e memória) com eficiência.
*
Exemplos: * Pesquisando uma lista classificada para um número específico (por exemplo, pesquisa binária)
* Classificação de uma lista de nomes em ordem alfabética (por exemplo, classificação de mesclagem, Quicksort)
* Encontrando o caminho mais curto entre duas cidades em um mapa (por exemplo, algoritmo de Dijkstra)
* Calcular o fatorial de um número
*
Representação: Os algoritmos podem ser expressos de várias maneiras:
* idioma natural: (por exemplo, inglês) menos preciso, mas compreensível.
*
pseudocode: Uma notação mais estruturada e semelhante a um código é mais fácil de traduzir em código real. É uma mistura de linguagem natural e construções semelhantes a programação.
*
fluxogramas: Representações gráficas usando símbolos para mostrar o fluxo de etapas.
programa *
Definição: Um programa é uma implementação concreta de um algoritmo em uma linguagem de programação específica. É o algoritmo traduzido em uma forma que um computador pode entender e executar. É o código real que você escreve.
* Relacionamento com algoritmos: Um programa * incorpora * um algoritmo. O algoritmo é a *idéia *, e o programa é a *realização *dessa idéia. Você pode ter vários programas que implementam o mesmo algoritmo, mas escritos em diferentes idiomas ou com diferentes estilos de codificação.
* Requisitos
: *
Sintaxe: Ele deve seguir as regras gramaticais (sintaxe) da linguagem de programação.
*
Semântica: Deve ter um significado definido (semântica) para que o computador saiba o que fazer em cada etapa.
*
executável: Deve ser de uma forma que o processador do computador possa entender e executar (geralmente exigindo compilação ou interpretação).
*
Exemplos: * Um script python que usa o algoritmo do QuickSort para classificar uma lista de números.
* Um aplicativo Java que implementa o algoritmo de Dijkstra para encontrar a rota mais curta em um mapa.
* Um programa C ++ que calcula fatoriais.
* Uma função JavaScript que valida a entrada do formulário de um usuário.
como eles contribuem para a execução 1.
Definição do problema: Primeiro, você identifica o problema que deseja resolver (por exemplo, "Classifique uma lista de números").
2.
Design do algoritmo: Você projeta um algoritmo para resolver o problema. Isso envolve descobrir as etapas lógicas e sua ordem (por exemplo, escolher o Quicksort como o algoritmo).
3.
Implementação do programa: Você traduz o algoritmo em um programa usando uma linguagem de programação (por exemplo, escreva um programa Python que implementa o QuickSort).
4.
Compilação/Interpretação: O programa é então compilado (traduzido em código da máquina) ou interpretado (executado linha por linha) pelo computador.
5. Execução
: O computador executa as instruções no programa, seguindo as etapas definidas pelo algoritmo, para produzir a saída desejada.
analogia Pense em assar um bolo:
* algoritmo
: A receita do bolo (as instruções)
*
Programa: Você segue a receita, usando ingredientes e ferramentas, para realmente assar o bolo.
As diferenças de chave resumidas | Recurso | Algoritmo | Programa |
| ---------------- | -------------------------------------------- | ---------------------------------------------- |
|
Natureza | Resumo, conceitual, um plano lógico | Código concreto, executável |
|
representação | Linguagem natural, pseudocódigo, fluxogramas | Linguagem de programação (por exemplo, Python, Java, C ++) |
|
Execução | Não diretamente executável | Executável por um computador |
|
foco | Lógica e etapas para resolver um problema | Implementação da lógica no código |
Em resumo, o algoritmo é o "O que" (o que precisa ser feito), e o programa é o "como" (como fazê -lo usando um idioma e computador específicos). Você não pode ter um programa de trabalho sem um algoritmo subjacente, e um algoritmo bem projetado é essencial para criar um programa eficiente e confiável.