FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)

Slides:



Advertisements
Apresentações semelhantes
Centro Integrado de Tecnologia da Informação
Advertisements

Construção de Algoritmos AULA 07
Programação II Estruturas de Dados
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Algoritmos e Estrutura de Dados I
LPG - I: Alocação Dinâmica de Memória - Ponteiros
UDESC - Prof. Juliano Maia1 Funções. UDESC - Prof. Juliano Maia2 Índice Seção 1 – Funções em C Seção 2 – Iniciação Ponteiros Seção 3 – Recursão.
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal do Espírito Santo
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Curso de C/C++ Avançado
Linguagem C Strings.
Vetores, Matrizes e Funções
Ponteiros em Linguagem C
Linguagem C Estruturas de Seleção.
1MF. Vectores Tipo de dado usado para representar um CONJUNTO de dados do um mesmo tipo Estrutura de dados homogénea unidimensional Ex: Ler a nota de 3.
Revisão da Linguagem C.
Vetor de Ponteiros Exemplo de Alocação. Escrever Vetor de Vetores de floats int main() { int i, k, n; float **vetor; // vetor de vetores int *tamanho;
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
1 Ponteiros Ponteiros são variáveis que guardam localizações em memória. A declaração de uma variável ponteiro x para um dado tipo type é type *x; Essa.
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
PROGRAMAÇÃO ESTRUTURADA II
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
CADEIA DE CARACTERES (Strings)
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Professor Mário Dantas
Prof. Ricardo Santos PONTEIROS
Curso de C/C++ Aula 2 Instrutor: Luiz Felipe Sotero
Linguagem C : Ponteiros
Técnicas de Desenvolvimento de Programas
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Declarando e Chamando Funções
Algoritmos e Estruturas de Dados
Aula Prática 3 Funções Monitoria Introdução à Programação.
STRINGS Dilvan Moreira (baseado no livro Big Java e Z. Liang)
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Programação de Computadores I – Arquivos
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Aula Prática 3 Funções Monitoria Introdução à Programação.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação Computacional Aula 9: Meu primeiro programa em C
Ameliara Freire Dividir para Conquistar.
Profa. Maria Augusta Constante Puget
Linguaguem de Programação II
Estrutura de Dados Revisão Professor Luiz José Hoffmann Filho
Estruturas Homogêneas – Vetores e Matrizes
Linguaguem de Programação II
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Algoritmo e Estrutura de Dados I Aulas 14 – Linguagem C Matriz Márcia Marra
Linguagem de Programação
Programação em C Aula 9.
PRE 1002 Éverlin Marques 2015/1.
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
1 Aula 07 Strings Prof. Filipe Mutz. 2 Em nossos programas ainda não vimos como armazenar palavras e textos, e eles são muito importantes! Exemplos: Programas.
Transcrição da apresentação:

FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)

Objetivos  Entender o que são e como usar:  Funções

 Ponteiros guardam endereços de memória.  Um ponteiro também tem tipo.  que tipo de variável vamos apontá-lo.  Um ponteiro int aponta para um inteiro, isto é, guarda o endereço de um inteiro. Lembrando: Ponteiros

 Declararando ponteiros: tipo_do_ponteiro *nome_da_variável;  É o asterisco (*) que diz o compilador que aquela variável não vai guardar um valor mas sim um endereço para aquele tipo especificado. Exemplos: int *pt; char *temp, *pt2; Lembrando: Declarando e Usando Ponteiros

 Para alterar o valor de uma variável apontado por um ponteiro, basta usar o operador *. int count=10; int *pt; pt = &count; *pt = 12;  Resumindo, *pt  o conteúdo da posição de memória apontado por pt; &count  o endereço onde armazena a variável count. Lembrando: Declarando e Usando Ponteiros

 Veremos nestas seções que ponteiros e vetores têm uma ligação muito forte.  Quando você declara uma matriz da seguinte forma: tipo_da_variável nome_da_variável [tam1][tam2]... [tamN]; O tamanho, em bytes, necessário para armazenar esta matriz é: tam 1  tam 2  tam 3 ...  tam N  tamanho_do_tipo  O nome da variável é um ponteiro que aponta para o primeiro elemento da matriz Lembrando: Ponteiros e Vetores

void main () { float matrx [50][50]; int i, j; for (i = 0; i < 50; i++) for (j = 0; j < 50; j++) matrx[i][j] = 0.0; } Podemos reescrever usando ponteiros: Lembrando: Ponteiros e Vetores void main () { float matrx [50][50]; float *p; int count; p = matrx[0]; for (count = 0; count < 2500; count++) { *p = 0.0; p++; }

 Funções são as estruturas que permitem ao usuário separar seus programas em blocos de funcionalidade.  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 } Função

 O tipo-de-retorno é o tipo de variável que a função vai retornar. O default é o tipo int.  A declaração de parâmetros é uma lista com a seguinte forma geral: tipo nome1, tipo nome2,..., tipo nomeN Função

#include int Square (int a) { return (a*a); } void main () { int num; printf ("Entre com um numero: "); scanf ("%d", &num); num = Square(num); printf ("\n\n O seu quadrado vale: %d\n", num); } Exemplo 1 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; Comando return

 É 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. Comando return

#include int Square (int a) { return (a*a); } void main () { int num; printf ("Entre com um numero: "); scanf ("%d", &num); num = Square(num); printf ("\n\n O seu quadrado vale: %d\n", num); } Exemplo 1 Comando return

#include int EPar (int a) { if (a%2) /* Verifica se a e divisivel por dois */ return 0; /* Retorna 0 se nao for divisivel */ else return 1; /* Retorna 1 se for divisivel */ } void main () { 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"); } Comando return

 Como as funções retornam valores  podemos aproveitá-los para fazer atribuições, ou mesmo para que estes valores participem de expressões. x= func(a,b);  Mas não podemos fazer: func(a,b) = x; /* Errado! */ Comando return

 Podemos chamar funções em um arquivo que serão compiladas em outro arquivo.  Para isso, a solução são os protótipos de funções.  Um protótipo tem o seguinte formato: tipo_de_retorno nome_da_função (declaração_de_parâmetros); Protótipos de Funções

#include float Square (float a); void main () { float num; printf ("Entre com um numero: "); scanf ("%f", &num); num = Square(num); printf ("\n\n O seu quadrado vale: %f\n", num); } float Square (float a) { return (a*a); } Exemplo Protótipos de Funções

 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 Escopo de Variáveis

 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. Variáveis Locais

func1 (...) { int abc, x;... } func (...) { int abc;... } void main () { int a, x, y; for (...) { float a,b,c;... }... } Exemplos de variáveis locais Variáveis Locais

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

 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. Variáveis Globais

int z, k; func1 (...) { int x, y;... } func2 (...) { int x, y, z;... z =10;... } main () { int count;... } Variáveis Globais

 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. Variáveis Globais

#include float sqr (float num); void main () { float num, 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); } float sqr (float num) { num = num*num; return num; } Passagem de parâmetros por valor

 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);  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.  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);  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. Passagem de Parâmetros por Referência

#include void Swap (int *a, int *b); void main (void) { int num1, num2; num1 = 100; num2 = 200; Swap (&num1, &num2); printf ("\n\n Eles agora valem %d %d\n", num1, num2); } void Swap (int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } Passagem de Parâmetros por Referência

 Podemos declarar a função de três modos. Seja o vetor: int matrx [50]; Podemos declarar func() : void func (int matrx[50]); void func (int matrx[]); void func (int *matrx); Vetores como Argumentos de Funções

Exercício Escreva um programa para ler uma string e uma substring do usuário e imprimir o total de ocorrências de todos os caracteres da substring na string principal. Crie 2 funções, uma que recebe uma string e um caractere e retorna a quantidade de ocorrências de apenas 1 caractere e outra que recebe 2 strings e utiliza a primeira função para retornar o valor total desejado. Ex: String: banana Substring: ab Total de ocorrências : 4

Perguntas ?