Você está na página 1de 32

Algoritmos II

MATHEUS BRUNORO DILEM


MATHEUSDILEM@PROFESSOR.MULTIVIX.EDU.BR

MULTIVIX
SERRA – ES
2024/1
Ementa
Modularização de programas: unidades de programação e
passagem de parâmetros. Recursividade; Noções de análise de
complexidade de algoritmos. Manipulação de Arquivos. Algoritmos
de busca e ordenação. Estudo da linguagem C.
Bibliografia Básica
• SOFFNER, Renato. Algoritmos e programação em linguagem C. São Paulo:
Saraiva, 2013. Livro digital. (1 recurso online). ISBN 9788502207530. Disponível em:
https://integrada.minhabiblioteca.com.br/books/9788502207530.

• MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lógica
para desenvolvimento de programação de computadores. 29. ed. São Paulo:
Érica, 2019. Livro digital. (1 recurso online). ISBN 9788536531472. Disponível em:
https://integrada.minhabiblioteca.com.br/books/9788536531472

• SOUZA, Marco A. Furlan de et al. Algoritmos e lógica de programação: um


texto introdutório para a engenharia. 3. ed. São Paulo: Cengage Learning,
2019. Livro digital. (1 recurso online). ISBN 9788522128150. Disponível em:
https://integrada.minhabiblioteca.com.br/books/9788522128150.
Bibliografia Complementar
• GOODRICH, Michael T.; TAMASSIA, Roberto. Estruturas de Dados e Algoritmos
em Java. [Digite o Local da Editora]: Grupo A, 2013. 9788582600191. Disponível
em: https://integrada.minhabiblioteca.com.br/#/books/9788582600191.

• RIBEIRO, J.A. Introdução à Programação e aos Algoritmos. Rio de Janeiro:LTC,


2019. 9788521636410. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788521636410/

• PIVA JUNIOR, Dilermando et al. Algoritmos e programação de computadores.


2. ed. Rio de Janeiro: GEN LTC, 2019. Livro digital. (1 recurso online). ISBN
9788595150508. Disponível em:
https://integrada.minhabiblioteca.com.br/books/9788595150508.
Bibliografia Complementar
• MORAIS, Izabelly Soares de et al. Algoritmo e programação: engenharia. Porto
Alegre: SAGAH, 2018. Livro digital. (1 recurso online). ISBN 9788595024731.
Disponível em: https://integrada.minhabiblioteca.com.br/books/9788595024731.

• MUELLER, John Paul; MASSARON, Luca. Algoritmos para leigos. Rio de Janeiro:
Alta Books, 2018. Livro digital. (1 recurso online). (Os primeiros passos para o
sucesso!). ISBN 9788550809298. Disponível em:
https://integrada.minhabiblioteca.com.br/books/9788550809298.
Agenda
1) Funções (modularização)

1.1) Conceituando funções

1.2) Chamada por valor e chamada por referência

1.3) Recursividade
Funções (modularização)
• Funções são importantes em programação estruturada, pois
permitem que um código já estabelecido seja reaproveitado
quando da nova chamada à função, e que ações específicas
possam ser realizadas de forma eficiente

• Depois de escrita, uma função pode ser executada quantas


vezes se fizerem necessárias, o que aumenta drasticamente a
produtividade de um programador e de seu programa

• Funções podem, ou não, retornar valores ao ponto do programa


que as chamou
Agenda
1) Funções (modularização)

1.1) Conceituando funções

1.2) Chamada por valor e chamada por referência

1.3) Recursividade
Conceituando funções
• Funções são trechos (ou blocos) de código que diminuem a
complexidade de um programa, ou evitam a repetição excessiva
de determinada parte do aplicativo

• A isso chamamos de modularização

• O conceito de modularização se aplica às linguagens


estruturadas, em que as funções são elementos fundamentais
para a construção de blocos ordenados e organizados
Conceituando funções
• Em Linguagem C, main(), printf(), scanf() são funções que
apresentam, como forma geral:

<tipo do retorno> nome (parâmetros)


{
corpo da função
retorno (não obrigatório)
}
Conceituando funções
• Exemplo:

• A função a seguir retorna a multiplicação de dois valores


inteiros recebidos como argumentos:

int multiplica(int a, int b) // função de fato


{
int resultado;
resultado = a*b;
return resultado;
}

int x = 2, y = 3, z = 0;
z = multiplica(x, y);
Conceituando funções
• Definições:

• Parâmetros são mostrados quando se cria a função (na


declaração das variáveis que fazem parte dessa função); já
argumentos tratam do uso efetivo dos elementos passados
pela função, quando o programa é executado;

• O retorno da função é o valor que ela devolve ao ponto do


programa que a chamou; se não for declarado, é do tipo
inteiro; void não retorna qualquer valor, ou então não passa
parâmetros;

• Se a função for definida depois de main( ), é preciso introduzir


um protótipo dela antes da função principal
Conceituando funções
• Exemplo 1:

• Função definida antes


da main()
Conceituando funções
• Exemplo 2:

• Função definida após


a main()
Conceituando funções
• Exemplo 3:
Exercício
• Escreva uma programa que implemente a função pow(x,y)
Exercício
• Escreva uma programa que implemente a função pow(x,y)
Agenda
1) Funções (modularização)

1.1) Conceituando funções

1.2) Chamada por valor e chamada por referência

1.3) Recursividade
Chamada por valor e
chamada por referência
• A chamada por valor é a passagem normal do valor dos
argumentos para a função

• Os valores dos argumentos passados não são modificados, pois é


fornecida uma cópia dos valores para a função
Chamada por valor e
chamada por referência
• Exemplo:

• Chamada
por valor
Chamada por valor e
chamada por referência
• Na chamada por referência são passados os endereços de
memória dos argumentos

• Portanto, os valores podem ser modificados


Chamada por valor e
chamada por referência
• Exemplo:

• Chamada
por referência
Chamada por valor e
chamada por referência
• Exemplo2:

• Chamada
por referência
Chamada por valor e
chamada por referência
• As strings e vetores são sempre chamadas por referência

• Quando a Linguagem C passa um vetor ou uma string para uma


função, o que se passa, na verdade, é o endereço de memória
inicial do mesmo

• As variáveis declaradas dentro de uma função são locais, visíveis


apenas ali e destruídas após o término da função. Caso se deseje
manter o valor da variável entre as chamadas a uma função, ela
deve ser declarada static
Exercícios
1. Escreva uma função que retorne a divisão entre dois números.
Atenção para a questão da divisão por zero!

2. Escreva um programa que calcule a área de um círculo e o


comprimento da circunferência a partir de duas funções
especialmente desenhadas para isso; a primeira função recebe
o valor do raio e retorna a área do círculo e a segunda recebe o
valor do raio e retorna o comprimento da circunferência.

3. Escreva uma função que retorne o cubo do valor passado como


argumento (pow(x,3)).
Exercícios
1. Escreva uma função que retorne a divisão entre dois números.
Atenção para a questão da divisão por zero!
Exercícios
2. Escreva um programa que calcule a área de um círculo e o
comprimento da circunferência a partir de duas funções
especialmente desenhadas para isso; a primeira função recebe
o valor do raio e retorna a área do círculo e a segunda recebe o
valor do raio e retorna o comprimento da circunferência.
Exercícios
3. Escreva uma função que retorne o cubo do valor passado como
argumento (pow(x,3)).
Exercícios
4. Escreva um programa que receba um numero inteiro e dobre seu
valor.

5. Escreva um programa que receba as 4 notas do aluno, armazene


em um vetor e calcule a média final; Crie uma função para
receber as notas e outra para calcular a média.

6. Escreva um programa que peça para o usuário 4 números e


armazene em uma matriz 2x2. Logo após, faça uma cópia
idêntica desse vetor e outra cópia mas com os valores dobrados
dos elementos. Por fim, mostre todas as 3 matrizes: original,
copiado e dobrado. Use funções.
Agenda
1) Funções (modularização)

1.1) Conceituando funções

1.2) Chamada por valor e chamada por referência

1.3) Recursividade
Recursividade
• Recursividade é a possibilidade de uma função chamar a si
mesma

• As funções recursivas são formadas por um caso base e pelas


chamadas recursivas
Exercícios
7. Escreva um programa recursivo para calcular a somatória de
todos os número de 1 a N.

8. Escrever uma função recursiva que calcule o valor de X elevado


a Y.

9. Escreva uma função recursiva que calcule a soma de todos os


valores de um array de reais.

Você também pode gostar