Você está na página 1de 5

Paradigma de Programao Subprogramas Linguagem C

Mdulo 05

Funes: uma sub-rotina que contm uma ou mais instrues e realiza tarefa especfica. Dividem grandes tarefas em tarefas menores; Impede a escrita do mesmo cdigo repetidas vezes possibilitando que vrias partes do programa as reutilizem; Exemplo: funo main() Forma geral: Tipo_Retorno Nome_Funo(<Lista_Parmetros>) { //corpo da funo } Especfica o tipo de dado retornado pela funo (int, double, char, float). Se no houver nada para retornar, seu tipo de retorno deve ser void; o Nome_Funo Ser a identificao da funo; o( ) Deve existir, indica o incio e o fim da lista de parmetros (se existir); o <Lista_Parmetros> Opcional. Se existir, so variveis que recebem o valor dos argumentos passados para a funo quando chamada. Deve ser uma seqncia de pares de tipo e identificados separados por vrgulas. o{ } Indica o incio e o fim do corpo de instrues; o //corpo da funo Ser a(s) instruo(es) que compem a funo; Exemplo: Alugarmos a mo-de-obra de algum para executar um trabalho especfico. Algumas vezes a interao simples, outras vezes, mais complexa. Chamando Funes: especifique o nome da funo seguido de parnteses( ). o Nome_funo(<argumentos>); Nome_funo Nome da funo que contem as instrues a serem executadas; () So necessrios para que o compilador possa diferenciar a chamada a uma funo de uma varivel que voc esqueceu de declarar; <argumentos> Valores ou variveis que sero passadas s funes. Comparando com a funo printf(): assim como a funo que exige um formato especfico, funes tambm exigem um formato (que o que o programador definiu). Funes simples: que no recebem e tambm no retornam nenhum valor: Exerccio 01: Fazer um programa para: 1) Dentro de a funo principal mostrar a mensagem: Estou na funo main 2) Fazer uma chamada a funo Mostrar_Mensagem; 3) Definir a funo Mostrar_Mensagem e no corpo da funo: a. Exibir a mensagem: Estou na funo Mostrar Mensagem; b. E pedir para o usurio digitar qualquer tecla pra voltar a funo principal. 4) Novamente na funo principal exibir: Voltei pra funo main. #include <stdio.h> main() { printf("Estou na funcao main"); Mostrar_Mensagem(); printf("\nVoltei pra funcao main");
Prof. Msc. Marcos da Silva Alves 1

Onde: o Tipo_Retorno

Paradigma de Programao Subprogramas Linguagem C getch(); }

Mdulo 05

Mostrar_Mensagem() { printf("\nEstou na funcao Mostrar Mensagem"); printf("\nPressione qq tecla pra voltar a funcao main"); getch(); } o Explicao: Primeiro printf(Estou na funo main) executado; Segundo, chamada a funo Mostrar_Mensagem e o controle passa para essa funo; Terceiro printf("\nEstou na funcao Mostrar Mensagem"); e printf("\nPressione qq tecla pra voltar a funcao main"); so executados; Quarto a instruo getch() espera que uma tecla seja pressionada; Quinto a chave finalizadora da funo faz com que o controle retorne imediatamente aps a sua chamada; Sexto printf("\nVoltei pra funcao main"); executado Stimo getch(); executado e o programa finalizado. Comando return: possui duas formas: uma que retorna um valor e uma que no retorna qualquer valor: O tipo void no retorna nada da funo; Exerccio 02: Fazer um programa para: 1) Definir a funo Mostrar_Mensagem com o tipo void e no corpo da funo: a. Exibir a mensagem: Estou na funo Mostrar Mensagem; b. E pedir para o usurio digitar qualquer tecla pra voltar a funo principal. c. Colocar o comando getch() d. Colocar o comando return; e. Exibir a mensagem: Vou voltar agora 2) Dentro de a funo principal mostrar a mensagem: Estou na funo main 3) Fazer uma chamada a funo Mostrar_Mensagem; 4) Novamente na funo principal exibir: Voltei pra funo main. 5) Veja o que acontece. (Aula_13_Exemplo_02.c) #include <stdio.h> main() { printf("Estou na funcao main"); Mostrar_Mensagem(); printf("\nVoltei pra funcao main"); getch(); } void Mostrar_Mensagem() {
Prof. Msc. Marcos da Silva Alves 2

Paradigma de Programao Subprogramas Linguagem C printf("\nEstou na funcao Mostrar Mensagem"); printf("\nPressione qq tecla pra voltar a funcao main"); getch(); return; printf("\nVou voltar agora."); }

Mdulo 05

o Explicao: a instruo printf("\nVou voltar agora."); dentro da funo no executada, pois antes foi executado o comando return, fazendo com que o controle do programa sasse da funo imediatamente. Funes que retornam um valor: Forma geral: Tipo_Retorno Nome_Funo(<Lista_Argumentos>) { //corpo da funo return valor; } O comando return retornar o tipo de dado definido na funo; a maneira de se obter informaes de uma funo; Uma funo que retorna um valor deve especificar o tipo do valor a ser retornado (int, char, float, double etc.); O tipo retorno deve ser o mesmo utilizado na funo return se no for o compilador gerar um erro; Funes retornam apenas um nico valor; Quando uma funo deste tipo chamada, deve-se ter uma varivel para atribuir o valor retornado: Nota = Calcular_Nota(); Exerccio 03: um programa principal deve chamar uma funo e nesta pedir para o usurio escolher as opes I (incluso), A (alterao) ou S (sair), e retornar ao programa principal mostrando a opo escolhida pelo usurio. (Aula_13_Exemplo_03.c) #include <stdio.h> main() { char Opcao; Opcao = Funcao_Opcao(); /* Na chamada da funo que retorna algum valor, */ /* deve-se atribuir este valor a uma varivel do */ /* mesmo que que a funo retornar */ printf("\nVoce digitou a letra: %c", Opcao); getch(); } char Funcao_Opcao() { char Tecla, Escolha; /* A funo retornar um tipo de dado caractere */

printf("Escolha a opcao: [I / A / S]: "); Tecla = getche(); if (Tecla == 'i' || Tecla == 'I') Escolha = 'I';
Prof. Msc. Marcos da Silva Alves 3

Paradigma de Programao Subprogramas Linguagem C if (Tecla == 'a' || Tecla == 'A') Escolha = 'A'; if (Tecla == 's' || Tecla == 'S') Escolha = 'S'; return(Escolha); /* Retornando um tipo de dado caractere */ }

Mdulo 05

o Explicao: O comando Opcao = Funcao_Opcao(); chama a funo e espera por uma valor; A definio da funo char Funcao_Opcao() indica que ser retornado um tipo de dado caractere; O comando return o que retornar o valor funo que a chamou. Exerccio 04: Fazer uma funo para receber as quatro notas bimestrais. Utilizar um lao (for-while-do) para controlar as quantidades de notas. Se a nota for menor que 0 e maior que 10, posicionar o cursor na mesma linha da nota erra e no deixar que o usurio digite outra nota at esta estiver correta. Se a nota estiver correta, acumular em uma varivel soma. A soma das notas deve ser retornada para qualquer funo que a chamou. Salvar este programa com o nome de notas.h Exerccio 05: Fazer um programa para incluir a biblioteca notas.h, receber o nome de um aluno e chamar a funo que est definida nesta biblioteca. Do valor retornado da funo (que a soma das notas), calcular a mdia das notas e mostrar a mensagem baseada nas seguintes condies: Para mdia > 5 mensagem: Aluno AAAA voc foi reprovado; Para mdia >= 5 e < 7 mensagem: Aluno AAAA voc est de exame Final; Para mdia >= 7 e <= 10 mensagem: Aluno AAAA voc foi Aprovado; 1) 2) 3) 4) 5) 6) Sintaxe de prottipos de funes: void nome_funo(); Funo que no retorna nenhum valor e no recebe nenhum parmetro void nome_funo(tipo_var nome_var); Funo que no retorna nenhum valor e recebe um parmetro void nome_funo(tipo_var_1, nome_var_1, tipo_var_2 nome_var_2, etc.); Funo que no retorna nenhum valor e recebe vrios parmetros (pares compostos de tipo e nome de varivel separados por vrgula) tipo_retorno nome_funo(); Funo que retorna um valor e no recebe nenhum parmetro tipo_retorno nome_funo(tipo_var nome_var); Funo que retorna um valor e recebe um parmetro tipo_retorno nome_funo(tipo_var_1, nome_var_1, tipo_var_2 nome_var_2, etc.); Funo que retorna um valor e recebe vrios parmetros (pares compostos de tipo e nome de varivel separados por vrgula)

Sintaxe de chamadas de funes: 1) nome_funo(); Chama uma funo que no retorna nenhum valor e no passa nenhum argumento para a funo 2) nome_funo(argumento); Chama uma funo que no retorna nenhum valor e passa um argumento para a funo 3) nome_funo(argumento_1, argumento_2, etc.);
Prof. Msc. Marcos da Silva Alves 4

Paradigma de Programao Subprogramas Linguagem C

Mdulo 05

Chama uma funo que no retorna nenhum valor e passa vrios argumentos para a funo separados por vrgula 4) Nome_vaivel_retorno = nome_funo(); Chama uma funo e espera um valor de retorno da funo e no passa nenhum argumento para a funo 5) Nome_varivel_retorno nome_funo(argumento); Chama uma funo e espera um valor de retorno da funo e passa um argumento para a funo 6) Nome_varivel_retorno nome_funo(argumento_1, argumento_2, etc.); Chama uma funo e espera um valor de retorno da funo e passa vrios argumentos para a funo separados por vrgula A definio da funo, segue os mesmos critrios da declarao/prottipo, porm, substitui-se o ; (ponto-e-vrgula) pelas {} (abre e fecha chaves), que indicam o incio do bloco de comandos da funo, ou seja, as tarefas que sero executadas pela funo. Argumentos: so variveis ou constantes passados para a funo, a(s) qual(is), devem estar posicionadas na mesma seqncia de tipos que a funo ir receber; Parmetros: so tipos (int, double float, char, etc.) e nomes de variveis que receberam os argumentos passados para a funo quando chamada. Uma funo que retorna um valor, deve-se utilizar o comando: return, seguido do valor

Prof. Msc. Marcos da Silva Alves

Você também pode gostar