Em vez de funções , comece com sub - rotinas . Diga a eles que um programa é apenas uma lista de instruções, uma receita para informar ao computador como fazer alguma coisa. E que está sendo executada uma instrução após a outra (com a possibilidade de dar alguns passos em paralelo, mas mais sobre isso depois).
Algumas tarefas são bastante comuns e repetitivas, por isso seria terrível se tivéssemos sempre que anotá-las várias vezes, então escrevemos apenas uma vez e criamos um "programa menor" - uma sub - rotina que pode ser reutilizada por outras partes do programa. Para poder executá-lo mais de uma vez, atribuímos a ele um nome significativo em nosso programa. E então podemos usar esse nome quando queremos executar esse "pequeno programa" como parte de um maior, chamando -o por esse nome.
Chamar uma sub-rotina é como convocar um demônio que sabe como executar essa tarefa, com o nome desse demônio. Então, quando queremos fazer essa tarefa específica em nosso programa, escrevemos "chame o demônio chamado Argoth", e o demônio aparece e faz a tarefa para nós, conforme instruímos a fazê-lo, e depois vai embora e podemos continuar nossa trabalho.
Às vezes, o demônio exige algumas informações adicionais sem as quais ele não pode decidir qual das tarefas executar ou o que realmente queremos dele. Por exemplo, se o demônio deve construir um castelo, ele pode precisar saber onde ele deve construí-lo, ou quão grande , etc. Esses são os argumentos passados ao demônio ... Quero dizer, a sub-rotina, que agora se torna parametrizado .
Parâmetros são aquelas informações que estão faltando, mas são necessárias, para executar a tarefa. Eles mudam o que a sub-rotina pode fazer um pouco. Eles são como espaços em branco na receita que precisam ser preenchidos antes que possamos executá-lo.
Os argumentos , por outro lado, são as informações reais (valores) que fornecemos para esses parâmetros.
Quanto à execução paralela, podemos pensar desta maneira: sempre há alguém (ou algo ) que está executando o programa (a lista de instruções). Ou é outro ser humano (você sabia que "computador" já foi o nome de uma pessoa que estava executando o cálculo?) Ou uma máquina. Um programa é apenas uma lista de instruções, não funciona por si só. Deve haver alguém ou algo que fará o processo computacional(execute essas ações da lista). E, às vezes, essas ações podem ser realizadas em paralelo - podemos distribuir as cópias da lista para várias pessoas e permitir que cada uma faça um conjunto diferente de tarefas da lista, desde que não se interrompam ou não Não é preciso esperar pelos resultados do trabalho de outra pessoa. Isso é multithreading para você;)
Quanto à diferença entre funções e sub - rotinas (também chamadas de procedimentos ), a diferença usual é que uma função está sendo chamada para calcular um determinado valor que ela retorna como resultado de sua execução, enquanto os procedimentos estão sendo executados apenas por diversão;) AKA pelos seus "efeitos colaterais" - apenas pelas operações realizadas na lista.
Mas se a chamada de um procedimento ou função causa algum problema no início, você pode usar outro termo que já foi popular: pular . Pode-se pular para uma sub-rotina, o que significa que você para de executar o que está fazendo no momento e "pula" para outro lugar da lista (ou outra lista) - a sub-rotina - para executar suas tarefas. Então, quando você termina, "pula para trás" - ou seja, volta ao local em que foi interrompido, para poder continuar com a tarefa anterior. A diferença entre chamar e pular é que agora você é o demônio.
Quanto aos métodos mencionados aqui por alguém, ou o fato de que algumas linguagens "não têm funções, apenas métodos" - isso não é correto, porque métodos são funções! - um tipo especial deles: são funções que estão sendo usadas para recuperar algumas informações encapsuladas dentro de um objeto ou operá-las. Eles são um "método de operação com esses dados". O nome veio do paradigma orientado a objetos, no qual os dados são incluídos nos objetos e não podem ser operados diretamente, apenas por funções especiais chamadas "métodos".
Um método é especial de uma outra maneira: ele precisa saber em qual objeto específico ele deve operar / ser chamado (o objeto "this"). É por isso que os métodos geralmente são embelezados com um parâmetro oculto adicional que armazena informações sobre o objeto no qual foi chamado (o ponteiro "this"). Isso complica a maneira como a função está sendo chamada um pouco, mas é um "detalhe de implementação" que um programador não deve se preocupar muito, desde que saiba o que está fazendo.