v procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando...

30
Procedimentos Procedimentos – s – s ão estruturas que ão estruturas que agrupam um conjunto de comandos, que são agrupam um conjunto de comandos, que são executados quando o procedimento é executados quando o procedimento é chamado. chamado. Funções Funções – são procedimentos que retornam – são procedimentos que retornam um valor ao seu término. um valor ao seu término. Procedimentos e Funções

Upload: internet

Post on 16-Apr-2015

126 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

ProcedimentosProcedimentos – s – são estruturas que agrupam um ão estruturas que agrupam um conjunto de comandos, que são executados conjunto de comandos, que são executados quando o procedimento é chamado.quando o procedimento é chamado.

Funções Funções – são procedimentos que retornam um – são procedimentos que retornam um valor ao seu término.valor ao seu término.

Procedimentos e FunçõesProcedimentos e Funções

Page 2: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Evitar que os blocos do programa fiquem grandes demais e Evitar que os blocos do programa fiquem grandes demais e mais difíceis de ler e entender.mais difíceis de ler e entender.

Ajudam a organizar o algoritmoAjudam a organizar o algoritmo..

Permitem reaproveitamento de códigos construídos Permitem reaproveitamento de códigos construídos anteriormente.anteriormente.

Permitir que um bloco de código de programa seja usado Permitir que um bloco de código de programa seja usado diversas vezes em sua execução, evitando repetição de trechos diversas vezes em sua execução, evitando repetição de trechos de códigos.de códigos.

Fazer com que o programa fique mais legível, mais bem Fazer com que o programa fique mais legível, mais bem estruturado.estruturado.

Porque utilizar procedimentos e funções?Porque utilizar procedimentos e funções?

Page 3: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

<tipo> nome_da_função (<tipo> parâmetro1, <tipo> parâmetro2, ..., <tipo> parâmetroN)

{

<corpo da função>

return valor_de_retorno;

}

<tipo> nome_da_função (<tipo> parâmetro1, <tipo> parâmetro2, ..., <tipo> parâmetroN)

{

<corpo da função>

return valor_de_retorno;

}

Funções:: Como declararFunções:: Como declarar

Page 4: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

int soma(int a, int b){

int c;c = a + b;return c;

}

int soma(int a, int b){

int c;c = a + b;return c;

}

Exemplo de uma função:Exemplo de uma função:

Funções:: Como declararFunções:: Como declarar

Page 5: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Toda função Toda função deve ter um tipodeve ter um tipo (char, int, float), o (char, int, float), o qual indicará o tipo de seu valor de retorno.qual indicará o tipo de seu valor de retorno.

Os parâmetros (ou argumentos) Os parâmetros (ou argumentos) indicam o tipo e indicam o tipo e quais valores quais valores são esperados para serem são esperados para serem manipulados pela função.manipulados pela função.

Uma função pode não ter parâmetros, basta não Uma função pode não ter parâmetros, basta não informá-los.informá-los.

Funções:: Como declararFunções:: Como declarar

Page 6: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

A expressão contida no comando A expressão contida no comando returnreturn é é chamado de valor de retorno da função.chamado de valor de retorno da função.

Esse comando é sempre o último a ser executado Esse comando é sempre o último a ser executado por uma função. Nada após ele será executado.por uma função. Nada após ele será executado.

As funções só podem ser declaradas fora de outras As funções só podem ser declaradas fora de outras funções. funções.

O corpo do programa principal (O corpo do programa principal (main()main()) é uma ) é uma função!função!

Funções:: Como declararFunções:: Como declarar

Page 7: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Uma forma clássica de realizarmos a invocação Uma forma clássica de realizarmos a invocação (ou chamada) de uma função é atribuindo o seu (ou chamada) de uma função é atribuindo o seu valor a uma variável:valor a uma variável:

Uma função pode ser usada em qualquer lugar Uma função pode ser usada em qualquer lugar que aceite uma expressão:que aceite uma expressão:

resultado = soma(x,y);resultado = soma(x,y);

printf("Soma: %d\n", soma(a,b) );printf("Soma: %d\n", soma(a,b) );

Funções:: InvocandoFunções:: Invocando

Page 8: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

int x, y, resultado;int soma(int a, int b){ return (a + b);}

int main(){ x = 3; y = 5; resultado = soma(x, y); printf("%d\n", resultado);}

int x, y, resultado;int soma(int a, int b){ return (a + b);}

int main(){ x = 3; y = 5; resultado = soma(x, y); printf("%d\n", resultado);}

Função que calcula a soma dos valores de x e y

Funções:: InvocandoFunções:: Invocando

Page 9: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

As variáveis x e y no exemplo anterior são As variáveis x e y no exemplo anterior são chamadas de chamadas de parâmetros reaisparâmetros reais..

Conforme exemplo anterior, os argumentos Conforme exemplo anterior, os argumentos não não possuem necessariamente os mesmos nomespossuem necessariamente os mesmos nomes que os parâmetros que a função espera.que os parâmetros que a função espera.

Seus valores são apenas copiados para a função Seus valores são apenas copiados para a função chamada, chamada, sem ser afetados pelas alteraçõessem ser afetados pelas alterações nos nos parâmetros dentro da função.parâmetros dentro da função.

Funções:: InvocandoFunções:: Invocando

Page 10: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Funções :: Pré-definidas para stringsFunções :: Pré-definidas para strings

Função Descrição

strlen(var) Retorna o o tamanho de uma string

strcpy(var2,var1)

Copia uma string em outra (var2 <- var1)

strcat(var1,var2) Concatena duas strings

strupr(var) Converte uma string para maiúsculas

strlwr(var) Converte uma string para minusculo

strchr(var,caracter )

Localiza 1a ocorrência de um caractere em uma string

strrchr(var,caracter

) Localiza última ocorrência de um caractere numa string

strstr( var,substr)

Localiza uma substring dentro da string

strcmp(var1,var2)

Compara duas strings

atoi(var) Converte string em int

atof(var) Converte string em float

Page 11: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Funções Pré-definidas para strings :: Retorna o tamanho de uma stringFunções Pré-definidas para strings :: Retorna o tamanho de uma string

#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>#include <stdlib.h>#include <stdlib.h>int main()int main() {{ char string[20];char string[20];

printf("\n");printf("\n"); printf("Determinando o tamanho de uma string\n");printf("Determinando o tamanho de uma string\n"); printf("------------------------------------\n");printf("------------------------------------\n"); printf("\n");printf("\n"); printf("Digite a string :");printf("Digite a string :"); gets(string);gets(string); printf("\n");printf("\n"); printf("A string tem %d carateres.\n\n",strlen(string));printf("A string tem %d carateres.\n\n",strlen(string)); system("pause");system("pause"); return(0);return(0);}}

#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>#include <stdlib.h>#include <stdlib.h>int main()int main() {{ char string[20];char string[20];

printf("\n");printf("\n"); printf("Determinando o tamanho de uma string\n");printf("Determinando o tamanho de uma string\n"); printf("------------------------------------\n");printf("------------------------------------\n"); printf("\n");printf("\n"); printf("Digite a string :");printf("Digite a string :"); gets(string);gets(string); printf("\n");printf("\n"); printf("A string tem %d carateres.\n\n",strlen(string));printf("A string tem %d carateres.\n\n",strlen(string)); system("pause");system("pause"); return(0);return(0);}}

Page 12: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Funções Pré-definidas para strings :: Localiza 1a ocorrência de um caracter uma string

Funções Pré-definidas para strings :: Localiza 1a ocorrência de um caracter uma string#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>#include <stdlib.h>#include <stdlib.h>int main()int main() {{ char string[30] = "Teste da funcao strchr().";char string[30] = "Teste da funcao strchr()."; char *ptr;char *ptr; printf("\n%s\n",string);printf("\n%s\n",string); ptr = strchr(string,'d');ptr = strchr(string,'d'); if (ptr != NULL)if (ptr != NULL) {{ printf("\n");printf("\n"); printf("Posicao de memoria de d %d\n",ptr );printf("Posicao de memoria de d %d\n",ptr ); printf("1a posicao de memoria de string %d\n",string );printf("1a posicao de memoria de string %d\n",string ); printf(“1a ocorrencia de d posicao %d\n",(ptr-string)+1);printf(“1a ocorrencia de d posicao %d\n",(ptr-string)+1); }} elseelse printf("Caractere não encontrado.\n");printf("Caractere não encontrado.\n"); system("pause"); system("pause"); return(0);return(0); }}

#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>#include <stdlib.h>#include <stdlib.h>int main()int main() {{ char string[30] = "Teste da funcao strchr().";char string[30] = "Teste da funcao strchr()."; char *ptr;char *ptr; printf("\n%s\n",string);printf("\n%s\n",string); ptr = strchr(string,'d');ptr = strchr(string,'d'); if (ptr != NULL)if (ptr != NULL) {{ printf("\n");printf("\n"); printf("Posicao de memoria de d %d\n",ptr );printf("Posicao de memoria de d %d\n",ptr ); printf("1a posicao de memoria de string %d\n",string );printf("1a posicao de memoria de string %d\n",string ); printf(“1a ocorrencia de d posicao %d\n",(ptr-string)+1);printf(“1a ocorrencia de d posicao %d\n",(ptr-string)+1); }} elseelse printf("Caractere não encontrado.\n");printf("Caractere não encontrado.\n"); system("pause"); system("pause"); return(0);return(0); }}

Page 13: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Funções Pré-definidas para strings :: Compara duas stringsFunções Pré-definidas para strings :: Compara duas strings

#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>#include <stdlib.h>#include <stdlib.h>int main()int main() {{ char string1[20],string2[20];char string1[20],string2[20]; int retorno;int retorno; printf("\n Comparando duas strings\n");printf("\n Comparando duas strings\n"); printf("\n Entre com a primeira string :");printf("\n Entre com a primeira string :"); scanf("%s",&string1);scanf("%s",&string1); printf("\n Entre com a segunda string :");printf("\n Entre com a segunda string :"); scanf("%s",&string2);scanf("%s",&string2); retorno = strcmp(string1,string2);retorno = strcmp(string1,string2); if(retorno == 0)if(retorno == 0) printf("\n As strings sao iguais.\n");printf("\n As strings sao iguais.\n"); else else printf("\n As strings sao diferente.\n");printf("\n As strings sao diferente.\n"); system("pause");system("pause"); return(0); return(0); }}

#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>#include <stdlib.h>#include <stdlib.h>int main()int main() {{ char string1[20],string2[20];char string1[20],string2[20]; int retorno;int retorno; printf("\n Comparando duas strings\n");printf("\n Comparando duas strings\n"); printf("\n Entre com a primeira string :");printf("\n Entre com a primeira string :"); scanf("%s",&string1);scanf("%s",&string1); printf("\n Entre com a segunda string :");printf("\n Entre com a segunda string :"); scanf("%s",&string2);scanf("%s",&string2); retorno = strcmp(string1,string2);retorno = strcmp(string1,string2); if(retorno == 0)if(retorno == 0) printf("\n As strings sao iguais.\n");printf("\n As strings sao iguais.\n"); else else printf("\n As strings sao diferente.\n");printf("\n As strings sao diferente.\n"); system("pause");system("pause"); return(0); return(0); }}

Page 14: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Funções matemáticaFunções matemática

Page 15: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Exercícios: :: ExercíciosExercícios: :: Exercícios

1.1. Fazer um programa que calcule o quadrado de Fazer um programa que calcule o quadrado de um número lido. O cálculo do quadrado do um número lido. O cálculo do quadrado do número deverá ser feito através da chamada a número deverá ser feito através da chamada a uma função que recebe como parâmetro, o uma função que recebe como parâmetro, o número lido no programa principal.número lido no programa principal.

2.2. Faça um programa que leia 5 números e calcule Faça um programa que leia 5 números e calcule o seu fatorial. O cálculo do fatorial deverá ser o seu fatorial. O cálculo do fatorial deverá ser feito através de uma funçãofeito através de uma função

3.3. Faça um programa para ler uma string Faça um programa para ler uma string econverter para miusculas.econverter para miusculas.

4.4. Fazer um programa para ler 2 strings e verificar Fazer um programa para ler 2 strings e verificar se uma esta dentro da outrase uma esta dentro da outra

Page 16: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

O tipo voidO tipo void

É utilizado em É utilizado em procedimentosprocedimentos..

É um tipo que representa o “nada”, ou seja:É um tipo que representa o “nada”, ou seja: uma uma variávelvariável desse tipo desse tipo armazenaarmazena conteúdo conteúdo

indeterminado, indeterminado,

uma uma funçãofunção desse tipo desse tipo retornaretorna um conteúdo um conteúdo indeterminado.indeterminado.

Indica que uma função não retorna nenhum Indica que uma função não retorna nenhum valor, ou seja, é um procedimento.valor, ou seja, é um procedimento.

Page 17: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

void nome_do_procedimento (<tipo>parâmetro1, <tipo> parâmetro2, ...,

<tipo> parâmetroN){

<corpo do procedimento>}

void nome_do_procedimento (<tipo>parâmetro1, <tipo> parâmetro2, ...,

<tipo> parâmetroN){

<corpo do procedimento>}

Procedimentos:: Como declararProcedimentos:: Como declarar

Page 18: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

void imprime_dobro(int x) {

printf("Dobro de x: ", 2*x);}

void imprime_dobro(int x) {

printf("Dobro de x: ", 2*x);}

Exemplo de procedimento:Exemplo de procedimento:

Procedimentos:: Como declararProcedimentos:: Como declarar

Page 19: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Para invocarmos um procedimento, devemos Para invocarmos um procedimento, devemos utilizá-lo como qualquer outro comando:utilizá-lo como qualquer outro comando:

Compare a diferença de invocação de uma Compare a diferença de invocação de uma função:função:

procedimento(parâmetros);procedimento(parâmetros);

resultado = função(parâmetros);resultado = função(parâmetros);

Procedimentos:: InvocandoProcedimentos:: Invocando

Page 20: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

void soma() {int x, y, resultado;x = 3;

y = 5;resultado = x + y;

printf("%d\n", resultado);}

main() {

soma();}

void soma() {int x, y, resultado;x = 3;

y = 5;resultado = x + y;

printf("%d\n", resultado);}

main() {

soma();}

Procedimentos:: InvocandoProcedimentos:: Invocando

Page 21: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

É uma função especial invocada É uma função especial invocada automaticamente pelo sistema operacional (OS) automaticamente pelo sistema operacional (OS) ao iniciar o programa.ao iniciar o programa.

Quando utilizado, o comando Quando utilizado, o comando returnreturn informa ao informa ao OS se o programa funcionou corretamente ou OS se o programa funcionou corretamente ou não. não.

O padrão é que um programa:O padrão é que um programa: retorne zero caso tenha funcionado corretamente ,retorne zero caso tenha funcionado corretamente ,

qualquer outro valor caso contrário.qualquer outro valor caso contrário.

A função main()A função main()

Page 22: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Funções e procedimentos podem ser definidos Funções e procedimentos podem ser definidos antes ou depois da função antes ou depois da função main()main()..

Em ambos os casos, as funções e/ou Em ambos os casos, as funções e/ou procedimentos procedimentos devem ser declarados antes devem ser declarados antes da da função função main()main()..

O conjunto de comandos que constituem uma O conjunto de comandos que constituem uma função ou procedimento pode ser função ou procedimento pode ser definido em definido em qualquer lugar do programaqualquer lugar do programa. .

Declaração de funções e procedimentos Declaração de funções e procedimentos

Page 23: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Declaração de funções e procedimentos :: ExemploDeclaração de funções e procedimentos :: Exemplo

void soma();main() {

soma();}

void soma(){int x, y, resultado;x = 3;

y = 5;resultado = x + y;

printf("%d\n", resultado);}

void soma();main() {

soma();}

void soma(){int x, y, resultado;x = 3;

y = 5;resultado = x + y;

printf("%d\n", resultado);}

Page 24: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Uma variável é chamada Uma variável é chamada locallocal quando é quando é declarada dentro de uma funçãodeclarada dentro de uma função. Nesse caso:. Nesse caso: Ela Ela existe apenas dentro da função existe apenas dentro da função que a contém.que a contém.

Após o término da execução da função, ela deixa de Após o término da execução da função, ela deixa de existir.existir.

Uma variável é chamada Uma variável é chamada globalglobal quando é quando é declarada fora de qualquer funçãodeclarada fora de qualquer função. Nesse caso:. Nesse caso: Pode ser acessada em Pode ser acessada em qualquer partequalquer parte do programa. do programa.

Ela existe durante toda a execução do programa.Ela existe durante toda a execução do programa.

Variáveis locais e globaisVariáveis locais e globais

Page 25: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

int x, y, resultado;

int soma() {

resultado = x + y;}

int main() {

x = 3; y = 5;soma();printf("%d\n", resultado);

}

int x, y, resultado;

int soma() {

resultado = x + y;}

int main() {

x = 3; y = 5;soma();printf("%d\n", resultado);

}

Variáveis locais e globais:: ExemploVariáveis locais e globais:: Exemplo

Page 26: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Boa prática de programação:Boa prática de programação: Deve-se Deve-se evitar o uso de variáveis globaisevitar o uso de variáveis globais..

As funções devem modificar apenas as suas As funções devem modificar apenas as suas variáveis locais e as variáveis passadas a elas variáveis locais e as variáveis passadas a elas como parâmetros.como parâmetros.

Variáveis locais e globaisVariáveis locais e globais

Page 27: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

O escopo de uma variável determina de que O escopo de uma variável determina de que partes do código ela pode ser acessada.partes do código ela pode ser acessada.

A regra de escopo em C é bem simples:A regra de escopo em C é bem simples: As variáveis As variáveis globaisglobais são visíveis por todas as funções. são visíveis por todas as funções.

As variáveis As variáveis locaislocais são visíveis apenas na função onde são visíveis apenas na função onde foram declaradas.foram declaradas.

Escopo de variáveisEscopo de variáveis

Page 28: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

É possível declarar variáveis locais com o mesmo É possível declarar variáveis locais com o mesmo nome de variáveis globais.nome de variáveis globais.

Nesta situação, a Nesta situação, a variável local “esconde” a variável local “esconde” a variável globalvariável global..

int nota;void funcao() {

int nota;// Neste ponto, nota eh variavel local.

}

int nota;void funcao() {

int nota;// Neste ponto, nota eh variavel local.

}

Escopo de variáveisEscopo de variáveis

Page 29: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Escopo de variaveis :: ExemploEscopo de variaveis :: Exemplo

#include <stdio.h> int a = 1; /* variável global */ void exibe() { int a = 10; /* variável local a função exibe() */ printf("a dentro da função = %d\n",a); /* vai mostra 10 */ } int main() { printf("\n"); printf("a dentro de main = %d\n",a); /* vai mostra 1 */ exibe(); printf("\n"); return(0); }

#include <stdio.h> int a = 1; /* variável global */ void exibe() { int a = 10; /* variável local a função exibe() */ printf("a dentro da função = %d\n",a); /* vai mostra 10 */ } int main() { printf("\n"); printf("a dentro de main = %d\n",a); /* vai mostra 1 */ exibe(); printf("\n"); return(0); }

Page 30: V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos

Procedimentos :: ExercíciosProcedimentos :: Exercícios

1.1. Escreva um procedimento que troca dois valores Escreva um procedimento que troca dois valores A e B, mostrando o valor no programa principal.A e B, mostrando o valor no programa principal.

2.2. Escreva um programa em C que possua um Escreva um programa em C que possua um procedimento querecebe a idade de uma pessoa procedimento querecebe a idade de uma pessoa em anos, meses e dias e retorna essa idade em anos, meses e dias e retorna essa idade expressa em dias.expressa em dias.

3.3. Fazer um procedimento ou que recebe um vetor Fazer um procedimento ou que recebe um vetor de números inteiros de números inteiros V V de tamanho 10 e mostre de tamanho 10 e mostre este vetor. Os elementos do vetor deverão ser este vetor. Os elementos do vetor deverão ser lidos no programa prinicipal. lidos no programa prinicipal.