Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Aula-10 - Funcoes (3), Notas de aula de Informática

Aula de Linguagem de Programação 1/C++ da professora Cátia Brasil.

Tipologia: Notas de aula

Antes de 2010

Compartilhado em 14/04/2010

ygor-dos-santos-luz-3
ygor-dos-santos-luz-3 🇧🇷

4.7

(3)

55 documentos

1 / 29

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Funções
Aula nº 10
Classes de armazenamento
Escopo
Recursão
Funções inline
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d

Pré-visualização parcial do texto

Baixe Aula-10 - Funcoes (3) e outras Notas de aula em PDF para Informática, somente na Docsity!

Funções

Aula nº 10 Classes de armazenamento Escopo Recursão Funções inline

Classes de Armazenamento

  • (^) C++ fornece 5 classes de armazenamento: - (^) auto; - (^) register; - (^) extern; - (^) static; - (^) mutable (para tipos definidos pelo usuário). automátic a estática

Classes de Armazenamento

  • (^) automática – a variável é criada quando o bloco é ativado e existe enquanto o bloco estiver ativo; é destruída quando termina a execução do bloco. - (^) auto; - (^) register. auto int x, y;
  • (^) Variáveis locais de uma função são automáticas por default. register int cont;

Classes de Armazenamento

  • (^) estática – existe desde quando o programa começa a ser executado e só é destruída ao final do programa; - (^) static; - (^) extern.
  • (^) Variáveis globais e nomes de função são externas por default;
  • (^) Variáveis locais serão estáticas se declaradas com especificador static: static int cont = 1;

void F() { int x=1; cout <<"A funcao F foi chamada pela “ <<x<<"a vez.\n\n"; x++; return; }

#include using namespace std; void F(); int main() { F (); F (); F (); return 0; } void F() { int x=1; cout <<“O valor de x eh ”<<x<<“.\n\n"; x++; return; }

Exemplo 2 – estática

#include using namespace std; void F(); int main() { F (); F (); F (); return 0; }

void F() { static int x=1; cout <<"A funcao F foi chamada pela “ <<x<<"a vez.\n\n"; x++; return; }

09/10/2008 Funções (3) 13 - 29 #include using namespace std; void F (); int main() { F (); F (); F (); system("PAUSE"); return 0; } void F ( ) { static int x=1; cout << "A funcao F foi chamada pela " <<x<<"a vez.\n\n"; x 123 A funcao F foi chamada pela 1a vez. A funcao F foi chamada pela 2a vez.

A funcao F foi chamada pela 3a vez. Fim

Regras de Escopo

  • (^) Escopo de um identificador é o local onde se pode fazer referência a ele; - (^) Escopo de arquivo; - (^) Escopo de função; - (^) Escopo de bloco; - (^) Escopo de protótipo de função.

Regras de Escopo

  • (^) Escopo de bloco
    • (^) identificadores declarados dentro de um bloco - parâmetros de função - variáveis locais - variáveis locais static também têm escopo de bloco, embora existam desde que o programa começa a ser executado.

Regras de Escopo

  • (^) Escopo de bloco (continuação)
    • (^) identificadores em bloco externo com mesmo nome de outro em bloco interno é escondido pelo interno if (x = = 8){ int a = 3; for (int a = 1; a<=10; a++) cout << a << endl; cout << a; } Isso não é possível com alguns compiladores – redeclaração de variáveis

Recursão

  • (^) Uma função recursiva é uma função que chama a si mesma, direta ou indiretamente;
  • (^) Na realidade, a função só sabe resolver os casos mais simples – o caso básico;
  • (^) Quando a função é chamada com um problema mais complexo, ela divide o problema em duas partes – uma que ela sabe resolver e outra que não;

Recursão

  • (^) A parte que ela não sabe resolver deve ser parecida com o problema original; então, a função chama a si própria para resolver o novo problema;
  • (^) Assim, a função se auto-convoca quantas vezes for necessário até que o último problema seja o básico e um valor possa ser retornado para a função ativa.