Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação Aula 2 – Funções Prof.: Teresinha Letícia da Silva leticia@cafw.ufsm.br UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET Lógica de Programação Prof. Teresinha Letícia da Silva Revisão... Funções As funções formam o alicerce da programação em C e C++. Conforme vamos aumentando a prática em programação, os programas começam a tomar uma aparência modular quando programamos com funções. Podemos fazer toda a programação em C e C++ dentro de uma função. Isto porque todos os programas devem incluir main, que é uma função. O modo como as funções trabalham determina o alto grau de eficiência, legibilidade e portabilidade do código do programa em C. Lógica de Programação Prof. Teresinha Letícia da Silva Revisão... Funções Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. O uso de funções permite que o programa fique mais legível, mais bem estruturado. Um programa em C consiste, no fundo, de várias funções colocadas juntas. Lógica de Programação Prof. Teresinha Letícia da Silva Revisão... Funções Uma função no C tem a seguinte forma geral: tipo_de_retorno nome_da_função (declaração_de_parâmetros) { corpo_da_função; } O tipo-de-retorno é o tipo de variável que a função vai retornar. O default é o tipo int, ou seja, uma função para qual não declaramos o tipo de retorno é considerada como retornando um inteiro. Lógica de Programação Prof. Teresinha Letícia da Silva Revisão... Funções tipo void Em inglês, void quer dizer vazio e é isto mesmo que o void é. Ele nos permite fazer funções que não retornam nada e funções que não têm parâmetros. #include <stdio.h> void mensagem() //definição da função { printf ("Ola! Eu estou vivo.\n"); } int main () { mensagem(); //chamada da função printf ("Diga de novo:\n"); mensagem(); //chamada da função return 0; } Lógica de Programação Prof. Teresinha Letícia da Silva Exercício funções void Faça um programa que leia um número inteiro, e escreva, através de uma função, todos os valores inteiros de 1 até o número lido. Lógica de Programação Prof. Teresinha Letícia da Silva Revisão... Funções que retornam valores Funções de outros tipos, que não void, devem retornar um valor para o programa que a chamou. O Comando return O comando return tem a seguinte forma geral: return valor_de_retorno; ou return; Digamos que uma função está sendo executada. Quando se chega a uma declaração return a função é encerrada imediatamente e, se o valor de retorno é informado, a função retorna este valor. É importante lembrar que o valor de retorno fornecido tem que ser compatível com o tipo de retorno declarado para a função. Uma função pode ter mais de uma declaração return. Lógica de Programação Prof. Teresinha Letícia da Silva Revisão... Funções que retornam valores Exemplo: #include <stdio.h> int num; int quadrado () { return (num*num); } int main () { printf ("Entre com um numero: "); scanf ("%d",&num); num=quadrado(); printf ("\n\nO seu quadrado vale: %d\n",num); return 0; } Lógica de Programação Prof. Teresinha Letícia da Silva Exercício- funções com retorno de valores Faça um programa em C que leia dois números inteiros e chame uma função que calcule e retorne a soma dos dois números. Lógica de Programação Prof. Teresinha Letícia da Silva Protótipos de Funções Até agora, nos exemplos apresentados, escrevemos as funções antes de escrevermos a função main(). Isto é, as funções estão fisicamente antes da função main(). Isto foi feito por uma razão. Imagine-se na pele do compilador. Se você fosse compilar a função main(), onde são chamadas as funções, você teria que saber com antecedência quais são os tipos de retorno e quais são os parâmetros das funções para que você pudesse gerar o código corretamente. Foi por isto as funções foram colocadas antes da função main(): quando o compilador chegasse à função main() ele já teria compilado as funções e já saberia seus formatos. Mas, muitas vezes, não poderemos nos dar ao luxo de escrever nesta ordem. Muitas vezes teremos o nosso programa espalhado por vários arquivos. Lógica de Programação Prof. Teresinha Letícia da Silva Protótipos de Funções A solução são os protótipos de funções. Protótipos são nada mais, nada menos, que declarações de funções. Isto é, você declara uma função que irá usar. O compilador toma então conhecimento do formato daquela função antes de compilá-la. O código correto será então gerado. Um protótipo tem o seguinte formato: tipo_de_retorno nome_da_função (declaração_de_parâmetros); onde o tipo-de-retorno, o nome-da-função e a declaração-de- parâmetros são os mesmos que você pretende usar quando realmente escrever a função. Lógica de Programação Prof. Teresinha Letícia da Silva Protótipos de Funções Exemplo: #include <stdio.h> int num; int quadrado (); int main () { printf ("Entre com um numero: "); scanf ("%d",&num); num=quadrado(); printf ("\n\nO seu quadrado vale: %d\n",num); getchar(); return 0; } int quadrado () { return (num*num); } Lógica de Programação Prof. Teresinha Letícia da Silva Escopo de Variáveis O escopo é o conjunto de regras que determinam o uso e a validade de variáveis nas diversas partes do programa. Variáveis globais Variáveis globais são declaradas, fora de todas as funções do programa. Elas são conhecidas e podem ser alteradas por todas as funções do programa. Quando uma função tem uma variável local com o mesmo nome de uma variável global a função dará preferência à variável local. Lógica de Programação Prof. Teresinha Letícia da Silva Escopo de Variáveis Variáveis globais Exemplo: #include <stdio.h> int num; int quadrado () { return (num*num); } int main () { printf ("Entre com um numero: "); scanf ("%d",&num); num=quadrado(); printf ("\n\nO seu quadrado vale: %d\n",num); getchar(); return 0; } Lógica de Programação Prof. Teresinha Letícia da Silva Escopo de Variáveis Variáveis locais Estas variáveis só têm validade dentro do bloco no qual são declaradas. Podemos declarar variáveis dentro de qualquer bloco. Só para lembrar: um bloco começa quando abrimos uma chave e termina quando fechamos a chave. Um comando for pode ter variáveis locais e que não serão conhecidas fora dali. A declaração de variáveis locais é a primeira coisa que devemos colocar num bloco. A característica que torna as variáveis locais tão importantes é justamente a de serem exclusivas do bloco. Podemos ter quantos blocos quisermos com uma variável local chamada x, por exemplo, e elas não apresentarão conflito entre elas. Lógica de Programação Prof. Teresinha Letícia da Silva Escopo de Variáveis Variáveis locais Exemplo: #include <stdio.h> void funcao1 () { int x; x=10; printf (“ A variável X vale: %d",x); } int main () { int x; x=50; printf (“ A variável X vale: %d",x); funcao1(); getchar(); return 0; } Lógica de Programação Prof. Teresinha Letícia da Silva Passagem de parâmetros Parâmetros são um mecanismo de comunicação entre as funções; Os parâmetros são as informações necessárias para o funcionamento da função. Uma função pode receber qualquer número de parâmetros, ou mesmo nenhum. Na hora de definir a função, no cabeçalho, definem-se os parâmetros que vai receber; Parâmetros se comportam como variáveis locais, ou seja, variáveis que só tem validade no corpo da função. Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros Passagem de Parâmetro por valor Apenas o valor é passado para a função; Após a execução da função a variável utilizada para passar como parâmetro não possui seu valor alterado. Ex:#include <stdio.h> void funcao1 (int x) { x=10; } int main () { int x; x=50; printf (“ A variável X vale: %d",x); funcao1(x); printf (“ A variável X vale: %d",x); getchar(); } Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros Passagem de Parâmetro por valor Exercício: Faça um programa em C que leia dois valores inteiros (a,b) e chame uma função Troca, que recebe os dois valores, e troca os respectivos conteúdos. Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros #include<stdio.h> void troca(int a, int b){ int aux; aux=a; a=b; b=aux; } int main(){ int a,b; printf("\n Informe o valor de a: "); scanf("%d",&a); printf("\n Informe o valor de b: "); scanf("%d",&b); printf("Antes de chamar a funcao :\na=%d\nb=%d\n",a,b); troca(a,b); printf("Depois de chamar a funcao:\na=%d\nb=%d\n",a,b); return 0; } Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros Passagem de Parâmetro por referência Neste caso o endereço de memória da variável é passada a função, e não apenas seu valor; Ao final da execução da função o valor do parâmetro pode estar alterado. Ex:#include <stdio.h> void funcao1 (int *x) { *x=10; } int main () { int x; x=50; printf (“ A variável X vale: %d",x); funcao1(&x); printf (“ A variável X vale: %d",x); getchar(); } & - endereço de memória da variável * - ponteiro para a variável Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros Passagem de Parâmetro por referência A passagem de parâmetro por referência usa o conceito de ponteiros. A presença do * na frente do nome dos parâmetros indica que esses são na verdade ponteiros. Ao passar o parâmetro por referência a função chamadora deve passar o endereço da sua variável, para isso usa-se o &. O scanf é um exemplo de função que altera o valor da variável passada como referência. Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros Passagem de Parâmetro por referência Exercício: Faça um programa em C que leia dois valores inteiros (a,b) e chame uma função Troca, que recebe os dois valores, e troca os respectivos conteúdos. Lógica de Programação Prof. Teresinha Letícia da Silva Tipos de passagem de parâmetros #include<stdio.h> void troca(int *a, int *b){ int aux; aux=*a; *a=*b; *b=aux; } int main(){ int a,b; printf("\n Informe o valor de a: "); scanf("%d",&a); printf("\n Informe o valor de b: "); scanf("%d",&b); printf("Antes de chamar a funcao :\na=%d\nb=%d\n",a,b); troca(&a,&b); printf("Depois de chamar a funcao:\na=%d\nb=%d\n",a,b); return 0; } Lógica de Programação Prof. Teresinha Letícia da Silva Exercícios
Compartilhar