Olá e bem-vindo.
Nesta palestra, eu quero falar sobre argumentos e parâmetros.
Esses termos tendem a ser usado de forma intercambiável.
O que eles têm que lidar com são basicamente os dados que você
passa para uma função.
Portanto, um parâmetro é uma variável e uma declaração de função e
uma implementação de definição de função.
Lembre-se, esta diferença entre declaração de função, protótipo
de função e definição de função.
Declaração de função é apenas a assinatura do método, é
o cabeçalho da função.
A definição da função é
a implementação da função, o código real.
Em ambos, os termos definição da declaração,
entenda essas diferenças.
Mas o parâmetro é o que está dentro a declaração e a definição
da função estão nesse cabeçalho.
Porque tanto o cabeçalho está incluído na definição da declaração.
Quando uma função é chamada, o argumentos são os dados que você passa para
os parâmetros da função.
Esses são os valores reais de uma variável que é
passada para a função.
Portanto, parâmetros de função definidos dentro do cabeçalho da função
e seus marcadores para o argumentos que precisam ser especificados quando
a função é chamada.
Então entenda a diferença aqui entre argumentos e parâmetros.
Os parâmetros têm a ver com o definição e declaração de funções.
Os argumentos estão onde você chamar a função,
quando você invoca a função, o dados que você está passando.
Portanto, os argumentos são usados quando você invoca.
Você dirá que estes são os argumentos que vão para a minha função.
E quando a função recebe esses dados, eles
são chamados de parâmetros.
Os parâmetros para uma função são uma lista de nomes de parâmetros com seus
tipos de dados.
Cada parâmetro é separados por uma vírgula.
Toda a lista de parâmetros é colocado entre parênteses após o nome
da função.
Uma função não pode ter parâmetros, o que significa que
não há dados passados para ele.
E, neste caso, você só tem o parênteses esquerdo e direito com um
vazio entre eles ou vazio, você ainda pode ter nada vazio entre eles, mas é uma
boa prática para colocar um vazio entre eles.
Vazio é uma palavra-chave especial isso não significa nada, significa nenhum parâmetro ou
nenhum dado de retorno.
Os parâmetros fornecem os meios para passar dados para uma função.
Dados passados da função de chamada para a função que é chamada, o
invoke e para a extremidade receptora, o extremidade chamadora e extremidade receptora.
Os nomes dos parâmetros são locais para a função.
Vamos falar sobre isso quando falamos sobre dados locais.
Mas esses nomes de parâmetro apenas existem dentro do corpo da função.
Eles assumirão os valores do argumentos que são passados para ele.
Então, se você tem uma função chamada adicionar, você passa uma
variável como um argumento, você passa o valor 5 e você tem uma função com
um parâmetro x, x vai ser igual a 5 em qualquer parte do corpo da função.
O corpo da função deve usar esses
parâmetros em sua implementação.
Se não, então eles não deveria ter sido aprovado.
Se você tem uma variável de parâmetro definido em sua
definição de declaração de função e você nunca usa esse variável dentro da função, isso é um desperdício,
não inclua porque isso está apenas dizendo que você não precisa disso.
Não envie dados para um função que não está usando.
Um corpo de função pode ter variáveis definidas localmente que são necessárias
para a implementação da função.
Você pode ter dentro da função corpo outras variáveis declaradas porque
são necessárias para qualquer tarefa que você está completando.
Você não apenas opera nos dados que são passados para ele.
Você pode operar no local dados dentro da função.
Ao passar um array como um argumento para uma função,
você também deve passar um argumento adicional, tem outro parâmetro definido especificando
o tamanho da matriz.
A razão para isso é que o função não tem como saber quantos
elementos estão no array.
Então, mesmo se você declarar um matriz de tamanho 50, você
pode armazenar apenas 30 elementos.
E se você vai usar isso array dentro do corpo da
função, você provavelmente vai precisar sabe o quão grande é porque você vai
precisar iterar através dele usando um loop ou você
precisará acessar os elementos.
E se seus elementos de acesso estão iterando através dele,
você precisa saber se ou não quando você está fora dos limites.
E falamos sobre a saída de limites lá e por que isso é importante.
Bem, aqui está um exemplo.
Quando a função printf é chamado, você sempre fornece um
ou mais valores como argumentos.
O primeiro valor é aquele string entre aspas duplas.
Os valores restantes são quaisquer variáveis a serem exibidas.
Esta é realmente uma função que leva um número variável de argumentos que
provavelmente não vamos falar sobre como esta é uma aula para iniciantes, esse
é um conceito mais avançado.
Mas a função printf é um bom exemplo no
que diz respeito a passar dados para ele porque você está passando vários
conjuntos de dados para ele, seja a string entre aspas ou variáveis que você deseja exibir.
É por isso que é tão importante ser capaz de passar dados para uma função.
Aumenta muito a utilidade e a flexibilidade de uma função.
Se as funções não tivessem o capacidade de aceitar dados, eles não
seriam tão úteis.
No exemplo que eu forneci na última
aula onde tivemos uma função que mostrava saída, realmente não fez muito.
Foi muito estático.
Fez a mesma coisa toda vez que você o invoca.
Mas e se você tivesse uma função que pegou dados, então você pode
controlar o que é exibido.
Assim como a função printf.
Se a função printf não tem parâmetros, você não seria capaz
de dizer o que exibir
Se você não aceitou dados, você não seria capaz de dizer, ei,
exibir esta variável ou exibir esta string.
Não seria muito útil.
Então você quer ser capaz de passar dados a uma função
a tornam muito mais útil e flexível.
E você verá isso.
Quero dizer, se fizermos multiplicação função, você não gostaria de multiplicar o
mesmo dois números de cada vez.
Você pegaria parâmetros e dados seria passado para ele por dois números.
Então você pode fazer cálculos diferentes com base nos dados que são transmitidos a ele.
Muito, muito importante entender passagem de dados e por que é útil.
É uma boa ideia também adicionar comentários antes de cada uma das suas
próprias definições de função.
Isso ajuda a explicar o que função vai fazer e como
os argumentos devem ser usados.
Você normalmente verá isso.
Você verá isso em meus exemplos.
Você tem a declaração de função no topo do arquivo, você tem
a definição da função.
A definição da função inclui o cabeçalho da função.
Logo acima da função cabeçalho, você tem comentários,
geralmente comentários de várias linhas.
Então você tem a barra, asterisco.
E aí você diz o nome do função, a finalidade da função e, em seguida,
também descrever quaisquer dados que está sendo passado para a função.
Isso, novamente, é para manutenção e ser capaz de encontrar e corrigir
erros com muito mais rapidez.
Normalmente, você quer ter um bom nome para a função
que lhe dirá algo.
Mas com comentários adicionais, isso vai te dizer ainda mais.
Aqui está um exemplo que é uma função que multiplica dois números, que obtém os
dados passados para ele.
Temos nosso multiplicar dois números.
Sabemos que é uma função porque ele tem os parâmetros essencialmente.
Ele tem parênteses.
Essa é uma maneira de identificar funciona quando você vê parênteses.
Quer dizer, também podemos identificar porque tem um tipo de retorno.
Existem várias coisas que diga-nos que é uma função.
Mas o principal são os parênteses e então você também vê os colchetes,
os colchetes que significam o início e fim do bloco.
Isso multiplica dois números funcionam embora.
Lembre-se de que os parâmetros da função são definidos entre parênteses e, em seguida, são
separados por vírgulas.
Aqui temos dois parâmetros.
Temos um parâmetro chamado xe um parâmetro denominado y.
Para cada parâmetro, você tem que identificar o tipo de
dados que está chegando.
Portanto, aqui temos dois ints.
Esta é a maneira padrão de passar dados e como fazê-lo.
Entre os parênteses, dados digite então um nome para a variável.
O nome da variável porque qualquer coisa que seja válida em c para o
nome de uma variável, você poderia chame isso de x y z do que você quiser.
Você simplesmente não pode começar com um símbolo de cifrão.
E então você os separa por vírgulas, acostumar-se a
esta convenção, parâmetros entre parênteses.
Se você não tinha parâmetros, nenhum dado que é passado
para a função, o que você veria entre aqueles parênteses é vazio ou você
não verá nada entre eles.
Essa função tudo que ela vai fazer vai pegar
os dados que são passados para ele, que são duas variáveis agora chamados de xey, e vai
multiplicá-los e armazená-los em uma variável chamada resultado ou, neste caso, parece
que eu digitei incorretamente t.
E então o que isso faz é ele imprime dados.
Ele imprime os dados isso é multiplicado.
Mas, novamente, veja a flexibilidade e utilidade da função
porque leva dados.
Pode exibir diferentes dados com base no que você passa.
Quando invocamos a função no rotina principal aqui, dizemos multiplique dois
números e passamos os argumentos.
Passamos no valor 10 e 20.
Nós poderíamos passar em variável nomes aqui também.
Mas neste exemplo, estamos apenas dizendo 10 e 20.
Isso vai chamar a função multiplique dois números
e vai passar os dados 10 para o primeiro parâmetro 20 para o segundo.
Então x vai ser igual a 10, y vai ser igual a 20.
Então, quando fazemos nossa multiplicação x vezes y, será 10 vezes 20, o resultado
será armazenado 200 e então ele
vai exibir esse resultado junto com as variáveis que estão sendo passados para x y e z.
Então, vai mostrar 10 20 e depois 200.
Observe também que podemos agora reutilize esta função.
Estamos chamando de novo com dados, valores de dados 20 e 30 em nossa segunda
linha aqui na função principal.
E então o chamamos de novo terceira vez para multiplicar 50 por 2.
Muito útil para ser capaz de fazer isso
para criar uma função que leva dados diferentes torna-o reutilizável, torna-o flexível.
E a sintaxe é muito fácil de seguir.
São apenas duas variáveis dentro de os parênteses separados por vírgulas.
E então chamar é mesmo mais fácil, você apenas coloca um
nome no espaço e tem os dois dados.
Quaisquer dados são separados por parênteses laterais comuns e terminando com
um ponto e vírgula.
Você pode passar em qualquer tipo de tipo de dados em uma função.
Você pode passar um array.
Também vamos falar sobre como você pode passar outros tipos de dados.
Temos exemplos simples aqui, mas você também pode passar ponteiros, sobre os quais ainda
não conversamos.
Você pode passar estruturas.
Novamente, outro conceito não conversamos sobre.
Mas torna-se realmente, realmente significativo e útil quando você passa
dados aqui.
Este é um exemplo simples.
Observe a sintaxe, estude isso e irá fornecer um bom desafio para
você, onde você escreve um número de funções diferentes.
Obrigada.