Procedimento com Parâmetro em C
Como construir outro procedimento, porém, agora vai ser um procedimento com parâmetros.
A gente já está aumentando um pouquinho o grau de dificuldade.
Você já deve ter visto que um procedimento é um trecho de código que faz uma ação bem específica; um procedimento nunca tem retorno e grave esse trecho aqui, falou em procedimento você já pode ter certeza, não tem retorno; se tiver retorno é função.
E por fim, também um procedimento ele pode ou não receber parâmetros; e aí, nesta aula, nós vamos ver como passar parâmetros para o nosso procedimento.
Eu tenho aqui um exemplo bastante simples, temos aqui um procedimento void ler o nome, nós temos aqui um vetor chamado nome, oedimos para o usuário digitar seu nome, lemos esse nome e imprimimos esse nome na tela.
Perceba que esse nosso procedimento ele não recebe parâmetros, o nosso par de parênteses aqui está completamente vazio; então vamos ver alguns detalhes a respeito desse bloquinho.
Primeiro, por que ele é um procedimento?
Porque eu coloquei aqui a palavra reservada void, essa palavra significa que não tem retorno.
Perceba que nós não temos aqui o tradicional return, que a gente costuma ver lá na função main, nós não temos ele aqui.
Outro detalhe importante, olha só, sem parâmetros e ler nome é o nome do bloco, porém esse trecho, ele pode ser melhorado, eu disse aqui em cima que um procedimento é um trecho de código que faz uma ação específica.
Perceba que esse trecho, ele faz pelo menos duas ações, ele lê o nome do usuário e depois ele imprime o nome do usuário.
“Ah, e se eu quisesse apenas imprimir o nome do usuário”; “Ah, e se eu quisesse apenas ler o nome do usuário”.
Percebe que esse procedimento ele pode ser melhorado?
Então nós vamos melhorar esse procedimento, nós vamos dividir esse procedimento, a gente vai ter um procedimento para fazer a leitura do nome e um outro procedimento para fazer a impressão do nome.
Só que talvez você se pergunta “Mas, professor; se eu vou ler o nome aqui dentro do meu procedimento, ler nome, como que eu vou imprimir o nome lá no outro procedimento?
É aí que está o ponto chave dessa aula, a gente vai ter que passar um parâmetro, e nesse caso o parâmetro vai ser um nome, então é isso que nós vamos ver.
Vou descer um pouquinho nosso quadro, então, podemos fazer um procedimento que recebe o nome imprimir, então nós teremos agora dois procedimentos, um apenas para fazer a leitura do nome e outro apenas para fazer a impressão do nome.
Esse procedimento para imprimir, perceba ele é extremamente simples, é um procedimento, então void, não tem retorno; qual vai ser o identificador, qual vai ser o nome?
Você pode dar o nome que você
quiser; eu chamei de imprimir nome e agora a alteração está aqui, observe que o nosso par de parênteses não está mais vazio, eu abri o par de interesses aqui e eu fechei ele aqui e aí olha como que a gente recebe parâmetros, perceba, eu estou criando meu procedimento, então eu vou receber uma string, um nome, certo?!?
O que é uma string, não é um vetor de caracteres?
Então eu preciso deixar isso claro, eu preciso dizer qual que é o tipo, eu preciso dar um nome para esse vetor que eu vou receber aqui, pode ser qualquer nome, e eu preciso indicar que isso aqui é um vetor, é por isso que eu tenho esse par de colchetes aqui.
Eu estou dizendo que a variável nome completo que eu vou receber é um vetor de caracteres.
Feito isso aqui dentro, perceba, dentro do nosso procedimento eu tenho uma única linha, um printf para imprimir esse nome na tela, na verdade não tem isso aqui, então vamos corrigir isso aqui.
Eu estou imprimindo, então aqui eu não preciso do par de colchetes, eu vou apenas imprimir dizendo aqui qual é o nome da minha variável.
Então olha só, os pontos importantes aqui, novamente, void, sem retorno, perceba, nós não temos aqui o return; a lista de parâmetros separados por vírgula, por que a lista de parâmetros?
Olha só, aqui eu tenho apenas um o parâmetro que é um vetor de caracteres, mas eu poderia colocar uma vírgula aqui e colocar mais parâmetros, por exemplo, char sexo, int idade, flot peso, …, então eu posso receber aqui uma lista de parâmetros, não precisa ser apenas um não.
Vamos ver esse exemplo funcionando lá no Code Blocks?
Então vem comigo!
Eu estou aqui no Code Blocks e aí perceba que eu tenho aqui exatamente aquele exemplo, temos aqui o nosso procedimento ler nome, então aqui agora eu vou fazer apenas a leitura do nome, olha só, eu tenho aqui um vetor chamado nome, eu peço para o usuário digitar seu nome, eu faço a leitura do nome e agora olha o que nós temos aqui na linha doze, imprimir nome, passando nosso vetor.
Muita atenção aqui, eu estou chamando o meu procedimento imprimi nome, que procedimento é esse?
Ele foi criado aqui; é um procedimento, por isso void, não tem retorno, eu chamei de imprimir nome e eu estou dizendo que ele vai receber uma variável que é um vetor do tipo caractere, e aí eu posso dar aqui, isso que funciona como um apelido, eu posso dar o apelido que eu quiser para minha variável, por que eu estou chamando a atenção para isso?
Perceba que aqui eu estou passando uma variável chamada nome, por que eu estou passando a variável chamada nome?
É o nome do meu vetor, então eu chamo o meu procedimento passando o nome da minha variável, embra como que a gente calculava o tamanho de uma string?
Strlen e aqui dentro você colocava o nome do seu vetor, por exemplo, dessa forma; e aí a função vai calcular o comprimento dessa string e vai te retornar o valor; o procedimento é exatamente a mesma coisa, eu chamo o procedimento e passo o nome do meu vetor, que nesse caso é nome.
Quando eu passo esse vetor, eu vou receber aqui um apelido, que é isso aqui, por que eu posso ter um nome diferente?
Poderia ser apenas nome?
Sim, poderia; mas eu coloquei diferente de propósito, para chamar sua atenção para esse detalhe, este procedimento, imprimir nome, ele pode ser usado diversas vezes, em diversas situações, então em uma situação pode ser que o seu vetor se chame nome, em outra situação pode ser que o seu vetor se chame frase, em outra situação pode ser que o seu vetor se chame título, você pode ter vários vetores com nomes diferentes, não importa o nome, se é um vetor de caracteres, você pode passar o vetor para cá e imprimir essa string na tela, e aí aqui dentro do procedimento você acessa o vetor com o nome que você especificar aqui.
Feito isso, (olha só, ok,) então perceba, eu estou chamando o procedimento, imprimir nome, dentro do procedimento ler nome, e o que eu faço com esse procedimento?
Perceba, eu estou chamando ele aqui na função main, então aqui na função main, quando chegar na linha dezessete, vai desviar, vai vir para cá, vai fazer esse trecho, chegou aqui, opa!
outro procedimento.
Onde ele está?
Ele está aqui, vcm para cá faz o que tem aqui, terminou, volta, terminou isso aqui, chegou aqui, terminou, volta para cá, vai fazer o que tem na sequência, nesse caso vai finalizar o programa.
Vamos testar que o nosso programa?
Eu vou compilar e executar, erceba que ele está exatamente na linha dez esperando que um nome seja digitado.
Eu vou digitar aqui Maria, vou colocar apenas M ponto, vou pressionar enter, ele chamou o procedimento imprimir nome, imprimiu o nome, finalizou, voltou para cá, finalizou, voltou para a função main, finalizou a nossa função.
Vamos fazer outro teste?
Eu posso chamar o meu procedimento diretamente aqui, desde que eu tenho uma string para passar para ele; vou chamar aqui o meu procedimento, imprime nome, perceba que quando eu abro um par de parenteses, o Code Blocks já me informa, olha só, esse procedimento, ele precisa receber um vetor de caracteres, ah, quem que eu vou passar aqui?
Perceba, na função main eu não tenho um vetor de caracteres, não precisa, eu posso criar, apenas aqui para a gente testar, eu posso criar esse vetor aqui dentro, olha só, aí aqui eu vou colocar Maria Madalena, o que vai acontecer quando rodar o meu programa?
Ele vai chamar esse procedimento, vai pedir um nome, eu vou digitar o nome, elle vai imprimir o nome, quando terminar, ele vai chegar aqui e vai chamar o procedimento imprimir novamente, só que agora passando Maria Madalena, e aí esse nome também será impresso.
Vamos testar?
Eu vou compilar e executar aqui o meu programa, perceba que nós já temos aqui digite o seu nome, que está aqui na linha oito, eu vou digitar aqui Pedro Paulo, vou pressionar enter e aí olha só, chamou aqui na linha doze imprimir nome, passando este vetor com o nome que eu digitei, Pedro Paulo, saltou duas linhas, finalizou, finalizou Isso aqui, voltou para a função main, veio para linha dezoito, linha dezanove, opa!
imprimir nome novamente, Maria Madalena, chamou o imprimir nome, imprimiu Maria Madalena, e aí finalizou a impressão, volta para cá, finalizou a linha dezanove, finaliza a nossa função main.
Então nessa aula você aprendeu como construir um procedimento passando parâmetros.