Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Lógica de Programação Professor: Wilton Souza Sub-rotina Sub-rotina ou subalgoritmo é o nome dado a um algoritmo que realiza uma tarefa especifica, mas não representa um algoritmo (ou solução) completo. As sub-rotinas são utilizadas para a resolução de partes de algoritmo. O programa que chama um sub-algoritmo (chamador) é temporariamente suspenso e o controle é passado para o sub-algoritmo, que é executado. Ao terminar o sub-algoritmo, o controle retorna para o programa que realizou a chamada (chamador). Sub-rotina Seu uso é aconselhável principalmente para os seguintes casos: Evitar que o algoritmo torne-se complexo: nesse caso a sub-rotina pode representar partes específicas da solução de um problema maior, tornando mais simples o entendimento da solução como um todo. Incentivar a reutilização de algoritmos: por exemplo, se fosse escrita uma sub-rotina para ordenar um vetor de tamanho N, esta poderia ser utilizada em qualquer problema que existisse a ordenação de um vetor de tamanho N, sem a necessidade de reescrevê-lo. Funções Na Matemática, ao se escrever x = sen(0,77), está se aplicando a função seno sobre um argumento que, nesse exemplo, é 0,77.Esse resultado é atribuido à variável x. Assim, em todas as situações em que se deseja o seno de um número, acaba-se por reutilizar essa função. Ao se executar uma função, ocorre um desvio no fluxo no qual a função está definida. Funções Nesse desvio, executa-se uma função, obtém-se um valor de retorno e volta-se para logo após o ponto em que se executou a função. Uma função nada mais é do que uma subrotina usada em um programa. Uma função retorna sempre um único valor. Na linguagem C, denominamos função a um conjunto de comandos que realiza uma tarefa específica em um módulo dependente de código. Funções A utilização de funções visa modularizar um programa, o que é muito comum em programação estruturada. Podemos dividir um programa em várias partes, no qual cada função realiza uma tarefa bem definida. Após sua execução, programa volta ao ponto do programa situado imediatamente após a chamada. A volta ao programa que chamou a função é chamada de retorno. Funções Sintaxe função: tipo_de_retorno nomeDaFuncao (Lista_de_Parametros) { // corpo da função } Funções Os parâmetros são as variáveis declaradas diretamente no cabeçalho da função. A finalidade dos parâmetros é fazer a comunicação entre as funções e a função principal. Chamamos de passagem de parâmetros a passagem de valores entre as funções. #include<stdio.h> int multiplica(int n1, int n2){ int resultado; resultado = n1 * n2; return(resultado); } int main(){ int n1, n2, resultado; printf("Digite o primeiro valor:"); scanf("%d", &n1); printf("Digite o segundo valor:"); scanf("%d", &n2); resultado = multiplica(n1, n2); printf("Resultado = %d\n", resultado); system("pause"); return 0; } Funções Em C, é possível criar funções que não retornam nenhum valor (funções void). Normalmente, isto é feito quando queremos executar um bloco de comandos, mas estes comandos não precisam retornar nada. #include <stdio.h> void soma(float a, int b){ float result; result = a + b; printf("A soma de %6.3f com %d = %6.3f\n", a,b, result); } int main(){ int a; float b; a = 10; b = 12.3; soma(b, a); system("pause"); return 0; } Funções Por escopo de uma variável entende-se o bloco de código onde esta variável é válida. Com base nisto, temos as seguintes afirmações: • As variáveis valem no bloco que são definidas; • as variáveis definidas dentro de uma função recebem o nome de variáveis locais; • os parâmetros formais de uma função valem também somente dentro da função; #include<stdio.h> void FUNC1(){ int B; B = -100; printf("Valor de B dentro da função FUNC1: %d\n", B); } void FUNC2(){ int B; B = -200; printf("Valor de B dentro da função FUNC2: %d\n", B); } int main(){ int B; B = 10; printf("Valor de B: %d\n", B); B = 20; FUNC1(); printf("Valor de B: %d\n", B); B = 30; FUNC2(); printf("Valor de B: %d\n", B); system("pause"); return 0; } Funções A passagem de parâmetros apresentada a até aqui é chamada de passagem por valor. No exemplo a seguir a variável f, passada por parâmetro para a função Zera não será alterado dentro da função. #include <stdio.h> void zera(float a){ a = 0; } int main(){ float f; f = 20.7; zera(f); printf("%.3f \n", f); system("pause"); return 0; } Funções Para permitir a alteração da variável usada como parâmetro é preciso passar o endereço da variável, caracterizando desta forma uma passagem por referência. Funções Para passar o endereço de uma variável para uma função, deve-se tomar as seguintes providências: • na chamada da função deve-se usar o operador & antes do nome da variável; • no cabeçalho da função, declarar o parâmetro como um ponteiro; • dentro da função, deve-se usar o operado de derreferência * para alterar o conteúdo da variável. #include <stdio.h> void zera(float *a){ *a = 0; } int main(){ float f; f = 20.7; zera(&f); printf("%d \n", f); system("pause"); return 0; } EXERCÍCIOS 1 - Crie uma função que verifique se um determinado número é par. Retorne um valor 1 para numero par e 0 para número impar. 2 - Escreva uma função que receba por parâmetro um número inteiro e retorne o fatorial desse número. EXERCÍCIOS 3 - Faça uma função sem retorno (função void) que recebe a idade de um nadador por parâmetro e escreva a categoria desse nadador de acordo com a tabela abaixo: Idade Categoria 5 a 7 anos Infantil A 8 a 10 anos Infantil B 11-13 anos Juvenil A 14-17 anos Juvenil B Maiores de 18 anos (inclusive) Adulto
Compartilhar