1 Aula 06 – Funções Prof. Filipe Mutz Colocar mais exemplos de funções simples no começo.

Slides:



Advertisements
Apresentações semelhantes
Universidade Federal do Espírito Santo
Advertisements

Linguagem C Funções.
Programação II Estruturas de Dados Aula 02 - continuação
Técnicas de Desenvolvimento de Programas
 São utilizadas para dividir um código maior (mais complexo) em partes menores (mais simples).  Quando uma mesma tarefa é realizada várias vezes em um.
Revisão Luis Antonio Tavares
Comando de Seleção switch
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo IX Subprogramação e Recursividade.
Profa. Maria Augusta Constante Puget
Profa. Maria Augusta Constante Puget
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
1 Aula 08 Conteúdo de Suporte ao Trabalho 2 Prof. Filipe Mutz.
TÉCNICO EM INFORMÁTICA Linguagem e Técnica de Programação III PROF. MARCELO N. SANTOS
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
Respostas dos Exercícios. Lista 1 1.a) Escreva uma função que receba como parâmetro uma temperatura dada em graus Fahrenheit e retorna a temperatura.
1 Aula 11 Matrizes Prof. Filipe Mutz. Matrizes São estruturas de dados usadas para armazenar informações multidimensionais (que possuem mais de uma dimensão).
Aula 3 - Estruturas de Repetição
Estruturas de Dados Aula 2: Estruturas Estáticas
FUNÇÕES EWERTON AMORIM DE OLIVEIRA LUCAS HENRIQUE SILVA
//. retangulo. c - exibe um retangulo vermelho no vídeo
Algoritmos e Estruturas de Dados I
Vetores e Matrizes em C/C++
Algoritmo e Estrutura de Dados I
Introdução à Programação Linguagem C
Programação de Computadores
INF1007: Programação 2 2 – Alocação Dinâmica
1) Complete as seguintes frases:
Algoritmos e Estruturas de Dados I
Estrutura de Dados Revisão
Introdução à Computação para Engenharia MAC2166
PCI- Estruturas de Controle
Estruturas de Repetição
Introdução ao VisuALG Prof. Andrew Rodrigues
Módulo I Capítulo 2: IDE e Variáveis
Algoritmos e Estruturas de Dados I
Linguagem C Para programadores Python
Prof. Wellington Franco Sub-Rotinas:Funções e Procedimentos
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Algoritmos e Estruturas de Dados I
Prof. Wellington Franco
FUNDAMENTO DE PROGRAMAÇÃO
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Aulas Práticas
INF1007: Programação Funções Recursivas
Fundamentos de Programação 1
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO
CONCEITO DE VARIÁVEIS ESTÁTICAS
Introdução à Programação BCC 201 Aula
Programação de Computadores I – Arquivos
FUNDAMENTO DE PROGRAMAÇÃO PROF. WELLINGTON FRANCO
Lógica de Programação e Algoritmos - LPA Professora: Ecila Alves de Oliveira UNIP – 2.Sem/2015 Décima Primeira Aula - Função.
Lógica de Programação e Algoritmos - LPA Professora: Ecila Alves de Oliveira UNIP – 2.Sem/2015 Décima Primeira Aula - Função.
Algoritmos e Estruturas de Dados I
Subalgoritmo É um trecho de algoritmo construído para resolver parte de um problema maior. Também chamado de módulo. A técnica que consiste dividir o.
PROGRAMAÇÃO I UNIDADE 3.
Aula 22 Modularização 22/10/08.
Fundamentos de Programação 1
Programação de Computadores I – Arquivos
DHD – Desenvolvimento em Hardware
DHD – Desenvolvimento em Hardware
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Estruturas de Dados em C
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
Estruturas definidas pelo programador
Programação de Computadores LINGUAGEM C – AULA 03 – PROF. WELLINGTON TELLES.
DHD – Desenvolvimento em Hardware
Fundamentos de Programação 1
Computação Eletrônica
Transcrição da apresentação:

1 Aula 06 – Funções Prof. Filipe Mutz Colocar mais exemplos de funções simples no começo

2 Introdução Funções são conjuntos de instruções que realizam uma tarefa específica. São usadas para expandir a linguagem e prover novas funcionalidades para os desenvolvedores. Nós já trabalhamos com diversas funções que o C disponibiliza em suas bibliotecas (e existem centenas de bibliotecas) stdio.h math.h Etc.

3 #include int main (void) { float a, b, c; float delta, x1, x2; printf("Digite os coeficientes: "); scanf("%f %f %f", &a, &b, &c); delta = pow(b, 2) - 4 * a * c; x1 = (-b + sqrt(delta)) / (2 * a); x2 = (-b - sqrt(delta)) / (2 * a); printf("Raizes: %f %f\n", x1, x2); return 0; } Funções possuem: Parâmetros (ou Argumentos): o que ela precisa para cumprir sua tarefa Resultados (ou Retornos): Qual é o resultado da tarefa. O que ela produz. Quando o conjunto de parâmetros ou de resultados é vazio, o chamamos de void. pow: recebe dois números (parâmetros) e produz outro número, o primeiro elevado ao segundo. sqrt: recebe um número (parâmetro) e produz como resultado a raíz do número. Cada vez que usamos uma função, estamos fazendo uma chamada da função. O resultado de uma função depende dos parâmetros usados. [veja as chamadas da sqrt]

4 #include float calcula_delta (float a, float b, float c) { float d = pow(b, 2) – 4 * a * c; return d; } int main (void) { float a, b, c; float delta; printf("Digite os coeficientes: "); scanf("%f %f %f", &a, &b, &c); delta = calcula_delta(a, b, c); printf(“Delta: %f\n", delta); return 0; } NomeDaFuncao ( ) { } Sintaxe de Definição de Funções

5 #include float calcula_delta (float a, float b, float c) { float d = pow(b, 2) – 4 * a * c; return d; } int main (void) { float a, b, c; float delta; printf("Digite os coeficientes: "); scanf("%f %f %f", &a, &b, &c); delta = calcula_delta(a, b, c); printf(“Delta: %f\n", delta); return 0; } NomeDaFuncao ( ) { } Sintaxe de Definição de Funções Os nomes das funções devem seguir as mesmas regras dos nomes das variáveis: Podem usar letras minúsculas e maiúsculas, algarismos, e underlines, mas não podem começar com algarismos. A instrução return é usada para retornar um determinado valor. O valor retornado deve ser do tipo especificado na função. A função termina automaticamente quando chegar na instrução return.

6 #include void mostra_texto(void) { printf(“Ola, sou uma funcao\n”); return; } int main (void) { mostra_texto(); return 0; } Se uma função não precisa de parâmetros dizemos que ela recebe void. Entenda isso como se o conjunto de parâmetros fosse vazio. Da mesma forma, se a função não produz nenhum resultado, dizemos que ela retorna void. A instrução return não é obrigatória em funções que retornam void, mas ela pode ser usada e, nesse caso, nenhum valor deve ser usado.

7 #include void mostra_raizes(float delta, float a, float b, float c) { float x1, x2; if (delta < 0) { printf(“Não existem raizes\n”); return; } x1 = (-b - sqrt(delta)) / (2 * a); x2 = (-b + sqrt(delta)) / (2 * a); printf(“raizes: %f %f\n”, x1, x2); } (...) Lembre-se: sempre que a instrução return for alcançada, a função termina imediatamente! (...) int main (void) { float a, b, c; float delta; printf("Digite os coeficientes: "); scanf("%f %f %f", &a, &b, &c); delta = pow(b, 2) – 4 * a * c; mostra_raizes (delta, a, b, c); return 0; }

8 #include void mostra_raizes(float delta, float a, float b, float c) { float x1, x2; if (delta < 0) { printf(“Não existem raizes\n”); } else { x1 = (-b - sqrt(delta)) / (2 * a); x2 = (-b + sqrt(delta)) / (2 * a); printf(“raizes: %f %f\n”, x1, x2); } (...) int main (void) { float a, b, c; float delta; printf("Digite os coeficientes: "); scanf("%f %f %f", &a, &b, &c); delta = pow(b, 2) – 4 * a * c; mostra_raizes (); return 0; } Outra forma de implementar a função sem usar o return.

9 Atenção! As funções devem ser declaradas, antes de serem usadas!

10 Atenção! As funções devem ser declaradas, antes de serem usadas! OK!

11 Atenção! As funções devem ser declaradas, antes de serem usadas! Forma Alternativa Declaração (protótitpo) Definição ou Implementação

12 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor Estas variáveis são diferentes e estão em lugares diferentes da memória.

13 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor

14 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2

15 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2 incrementox 1º É criada uma variável para armazenar o argumetno.

16 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2 incrementox2 2º O valor do argumento é copiado.

17 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2 incrementox2

18 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2 incrementox2

19 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2 incrementox3

20 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2

21 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include void incremento (float x) { x++; } int main (void) { float x = 2; incremento(x); return 0; } ContextoNomeValor mainx2

22 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor

23 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx mainy

24 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y

25 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y x: 2

26 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y x: 2

27 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y quadradox2 x: 2

28 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y quadradox4 x: 2

29 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 quadradox4 x: 2

30 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 x: 2

31 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 x: 2 ???????????????

32 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 x: 2 x: 2 y: 4

33 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 x: 2 x: 2 y: 4

34 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 quadradox4 x: 2 x: 2 y: 4

35 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx2 y4 quadradox16 x: 2 x: 2 y: 4

36 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx16 mainy4 quadradox16 x: 2 x: 2 y: 4

37 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx16 mainy4 x: 2 x: 2 y: 4

38 Parâmetros Neste curso, vamos trabalhar com passagem de parâmetro por cópia. Significa que as variáveis que mandamos não se alteram, são cópias! #include float quadrado (float x) { x = pow(x, 2); return x; } int main (void) { float x, y; x = 2; printf("x: %f\n", x); y = quadrado(x); printf("x: %f y: %f\n", x, y); x = quadrado(y); printf("x: %f y: %f\n", x, y); return 0; } ContextoNomeValor mainx16 mainy4 x: 2 x: 2 y: 4 x: 16 y: 4

39 Exercícios 1.Crie uma função que some o quadrado de dois números. 2.Crie uma função que calcula a distância euclidiana entre dois pontos dados. 3.Que tal implementar a função pow para inteiros?

40 Escopo de variáveis em funções Escopo: a grosso modo, significa: “onde uma variável é válida” Escopo Local: Variáveis declaradas em uma funções só existirão dentro desta função. Se uma variável com o mesmo nome for criada em outra função, elas são variáveis diferentes. Escopo Global: São variáveis declaradas fora de qualquer função. ATENÇÃO: todas as funções podem ler e escrever em variáveis globais!

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx2

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx2

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx2

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx4

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx4

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx4

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx4

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx16

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx16

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx16

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx16

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx256

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx256

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx256

#include float x; void quadrado_x (void) { x = pow(x, 2); } int main (void) { x = 2; quadrado_x(); return 0; } ContextoNomeValor GLOBALx256 Variáveis globais tornam o código difícil de ser lido! Só use quando for realmente necessário!!!!

59 Por que usar funções? Agilizar o desenvolvimento pela capacidade de reuso Simplificar a manutenção dos códigos Correção de problemas centralizada Tornar códigos mais legíveis

60 Como usar funções na prática? Enquanto estiver escrevendo seu código, reflita e identifique funcionalidades que podem ser úteis a outras pessoas, ou em outros trechos do programa. Se uma função começar a crescer demais, quebre-a em funções menores. Idealmente, todas as funções devem caber em uma tela.

61 Exercícios [Obrigatório uso de funções] 1.Faça uma função que receba uma variável e retorne o seu módulo. 2.Faça um função que calcule a raiz enésima de um número.