1 / 21

Técnicas de Desenvolvimento de Programas

Técnicas de Desenvolvimento de Programas. Função. Introdução. Para estruturação de programas, o conceito utilizado em C é denominado MODULARIZAÇÃO. Introdução.

russ
Télécharger la présentation

Técnicas de Desenvolvimento de Programas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Técnicas de Desenvolvimento de Programas Função

  2. Introdução • Para estruturação de programas, o conceito utilizado em C é denominado MODULARIZAÇÃO

  3. Introdução • Modularizar um programar é determinar pequenos programas (subprogramas) que façam tarefas menores que irão auxiliar a execução de um programa, permitindo uma melhor legibilidade e manutenibilidade do programa. • Existe uma forma básica para modularizar um programa em C: • Funções (function)

  4. Função • Funções são as estruturas que permitem ao usuário separar seus programas em blocos. • Uma função no C tem a seguinte forma geral: • Se não as tivéssemos, os programas teriam que ser curtos e de pequena complexidade. • Para fazermos programas grandes e complexos temos de construí-los bloco a bloco. tipo_de_retornonome_da_função (declaração_de_parâmetros) { corpo_da_função }

  5. Funçã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. • declaração de parâmetros: é uma lista com a seguinte forma geral: tipo nome1, tipo nome2, ... , tipo nomeN • corpo da função: é a sua alma. É nele que as entradas são processadas, saídas são geradas ou outras coisas são feitas.

  6. Comando return • O comando returntem a seguinte forma geral: • Digamos que uma função está sendo executada. Quando se chega a uma declaração return afunção é encerrada imediatamente; • É 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. • A função é terminada quando o programa chega à primeira declaração return. returnvalor_de_retorno; ou return;

  7. O comando return – Exemplo 1 • #include <stdio.h> • intSquare (int a) • { • return(a*a); • } • voidmain () • { • intnum; • printf ("Entre com um numero: "); • scanf ("%d", &num); • num = Square(num); • printf ("\n\n O seu quadrado vale: %d\n", num); • }

  8. O comando return – Exemplo 2 • include <stdio.h> • intEPar (int a){ • if(a%2) /* Verifica se a e divisivel por dois */ • return0; /* Retorna 0 se nao for divisivel */ • else • return1; /* Retorna 1 se for divisivel */ • } • voidmain (){ • int num; • printf ("Entre com numero: "); • scanf ("%d", &num); • if(EPar(num)) • printf ("\n\n O numero e par.\n"); • else • printf ("\n\n O numero e impar.\n"); • }

  9. O comando return • É importante notar que, como as funções retornam valores, podemos aproveitá-los para fazer atribuições, ou mesmo para que estes valores participem de expressões. • Mas não podemos fazer: func(a,b) = x;/* Errado! */

  10. Protótipo 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. • Quando o compilador chegasse à função main() ele já teria compilado as funções e já saberia seus formatos.

  11. Protótipo de Funções • Mas, muitas vezes teremos o nosso programa espalhado por vários arquivos. Ou seja, estaremos chamando funções em um arquivo que serão compiladas em outro arquivo. Como manter a coerência? A solução são os protótipos de funções. • Um protótipo tem o seguinte formato: tipo_de_retornonome_da_função (declaração_de_parâmetros);

  12. Protótipo de Funções • #include <stdio.h> • floatSquare (float a); • voidmain () • { • floatnum; • printf ("Entre com um numero: "); • scanf ("%f", &num); • num = Square(num); • printf ("\n\n O seu quadrado vale: %f\n", num); • } • floatSquare (float a) • { • return(a*a); • }

  13. 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 Locais • Variáveis Globais • Parâmetros formais

  14. Variáveis locais • Variáveis locais são aquelas que só têm validade dentro do bloco no qual são declaradas. • Um bloco começa quando abrimos uma chave e termina quando fechamos a chave. Exemplo func1 (...) { int abc, x; ... } func (...) { int abc; ... } • voidmain () • { • int a, x, y; • for(...) • { • float a,b,c; • ... • } • ... • }

  15. Parâmetros formais • Parâmetros formais são declarados como sendo as entradas de uma função. • O parâmetro formal é uma variável local da função. • Você pode também alterar o valor de um parâmetro formal, pois esta alteração não terá efeito na variável que foi passada à função. • Isto tem sentido, pois quando o C passa parâmetros para uma função, são passadas apenas cópias das variáveis.

  16. 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. • int z, k; • func1 (...) • { • int x, y; • ... • } • func2 (...) • { • int x, y, z; • ... • z =10; • ... • } Evite ao máximo o uso de variáveis globais. Elas ocupam memória o tempo todo (as locais só ocupam memória enquanto estão sendo usadas) e tornam o programa mais difícil de ser entendido e menos geral. • main () • { • intcount; • ... • }

  17. Passagem de Parâmetros por Valor • A passagem de parâmetros por valor faz com que seja criada uma variável local ao subprograma e o valor do argumento é diretamente copiado nela. • Uma alteração no parâmetro não altera o argumento.

  18. Passagem de parâmetros por valor • #include <stdio.h> • floatsqr (floatnum); • voidmain (){ • floatnum, sq; • printf ("Entre com um numero: "); • scanf ("%f", &num); • sq = sqr(num); • printf ("\n\n O numero original e: %f\n", num); • printf ("O seu quadrado vale: %f\n", sq); • } • floatsqr (float num) • { • num = num*num; • return num; • }

  19. Passagem por referência • Este tipo de chamada, não se passa para a função os valores das variáveis, mas sim suas referências (endereço das variáveis); • Ou seja, a passagem de parâmetros por endereço faz com que o subprograma trabalhe diretamente com a variável-argumento. • Neste caso, a alteração dos parâmetros da função, alterará as variáveis que são passadas para a função também.

  20. Exemplo Passagem por referência • #include <stdio.h> • voidTroca (int *a, int*b); • voidmain (void) • { • intnum1, num2; • num1 = 100; • num2 = 200; • Troca (&num1, &num2); • printf ("\n\n Eles agora valem %d %d\n", num1, num2); • } • voidTroca (int*a,int*b) • { • inttemp; • temp = *a; • *a = *b; • *b = temp; • }

  21. Exemplo de passagem por referência • #include <stdlib.h> • #include <conio.h> • #include <stdio.h> • float fatorial(float *); // prototipo da funcao fatorial • intmain(){ // programa principal • float N; • // Leitura dos dados • printf("Entre com o valor de N:\n"); • scanf("%f", &N); • while (N<0){ • printf(" Entre com um valor para N, nao negativo:\n"); • scanf("%f", &N); • } • // Impressão dos resultados • printf("O valor do fatorial de: %f e igual a: %f", N, fatorial(&N)); • getch(); • }

More Related