Disciplina: Constr. de Algoritmos e Prog. de Sistemas
Professor: Jeovane Reges
Caxias – MA
2016
ACULDADE DE CIÊNCIAS
E TECNOLOGIA DO
MARANHÃO
Link Drive
bit.ly/ads-algoritmos
2
3
Algoritmos
4
Procedimentos ou
Funções
• Algoritmos
• Introdução
• Suponha que seja necessário utilizar a fórmula
abaixo em diversas partes de um dado programa.
𝑓 𝑥 =
5𝑥 + 3
𝑥² − 16
• Agora, imagine que você a utilizou em 50 partes do
seu código e precisa altera-la?
• COMO RESOLVERIA ESSE PROBLEMA?
5
6
Fazer tantas alterações é inviável.
Seria mais fácil se fizéssemos uma
ÚNICA alteração.
• Algoritmos
• Introdução
• Para contornar tal problema, utilizamos as funções
ou procedimentos.
• A principal vantagem é não precisar escrever o
mesmo código diversas vezes para um mesmo tipo
de operação.
• Os procedimentos diferem das funções apenas por
não retornarem valor nenhum.
• Ao longo da disciplina já usamos diversas funções.
7
• Algoritmos
• Introdução
• Parâmetros
• Funções (e procedimentos) podem ou não
receber parâmetros.
• No caso da função abaixo, é necessário passar
como parâmetro um valor para ser atribuído a
variável x.
𝑓 𝑥 =
5𝒙 + 3
𝒙² − 16
8
• Algoritmos
• Introdução
• Parâmetros
• São canais por onde os dados são transferidos
pelo algoritmo chamador a um subalgoritmo.
• Parâmetros Formais:
 São os nomes simbólicos usados na definição dos
parâmetros de um subalgoritmo.
• Parâmetros Reais:
 São aqueles que substituem os parâmetros formais
quando da chamada de um subalgoritmo.
9
• Algoritmos
• Introdução
• Parâmetros
 Exemplo:
• Parâmetros Formais
• Parâmetros Reais
10
procedimento soma (a, b: inteiro)
var
soma: inteiro
inicio
x ← 10
y ← 20
soma(x, y)
fimalgoritmo
• Algoritmos
• Procedimento
• A sintaxe para criação de procedimentos é:
11
procedimento <nome do procedimento> (<parâmetros>)
var
<declaração das variáveis locais>
inicio
<bloco de instruções>
fimprocedimento
Faça um procedimento que receba um
valor como parâmetro e escreva o
dobro desse valor.
12
Problema I
• Algoritmos
• Procedimento
13
algoritmo "Problema 01"
var
procedimento dobro(valor: inteiro)
var
total: inteiro
inicio
total ← valor * 2
escreval("O dobro é: ", total)
fimprocedimento
inicio
dobro(8)
fimalgoritmo
SoluçãodoProblemaI...
Problema I
Faça um procedimento que receba um
valor como parâmetro e escreva a
tabuada de 0 a 10 desse valor.
14
Problema II
• Algoritmos
• Procedimento
15
algoritmo "Problema 02"
var
numero: inteiro
procedimento tabuada(valor: inteiro)
var
i: inteiro
inicio
para i de 1 ate 10 faca
escreval(valor * i)
fimpara
fimprocedimento
inicio
escreval("Digite um valor: ")
leia(numero)
tabuada(numero)
fimalgoritmo
SoluçãodoProblemaII...
• Algoritmos
• Procedimento
• Variáveis
• A variável numero do código anterior é uma
variável cujo escopo é global.
• Uma variável pertence ao escopo global quando
ela é visível em qualquer trecho do código.
• Uma variável possui o escopo local quando ela é
visível apenas no trecho onde foi
declarada/criada.
16
17
Funções
• Algoritmos
• Funções
• Introdução
• As funções sempre irão retornar algum valor.
• A sintaxe para criação de funções é:
18
funcao <nome da funcao> (<parâmetros>): tipo
var
<declaração das variáveis locais>
inicio
<bloco de instruções>
retorne <valor>
fimfuncao
Problema I
Crie uma função que receba dois
valores por parâmetro e retorne a
soma desses valores.
19
Problema III
• Algoritmos
• Função
20
algoritmo "Problema 03"
var
res: inteiro
funcao soma(n1, n2: inteiro) : inteiro
var
inicio
retorne n1 + n2
fimfuncao
inicio
res ← soma(8, 7)
escreval("Resultado: ", res)
fimalgoritmo
SoluçãodoProblemaIII...
21
Problema IV
Faça uma função chamada maior que
receba dois números (inteiros) por
parâmetros e retorne o maior deles.
• Algoritmos
• Função
22
algoritmo "Problema 04"
var
funcao maior(v1, v2: inteiro) : inteiro
var
inicio
se (v1 > v2) entao
retorne v1
senao
retorne v2
fimse
fimfuncao
inicio
escreval("Maior: ", maior(8, 7))
fimalgoritmo
SoluçãodoProblemaIV...
23
Problema V
Faça uma função chamada compara que receba
dois números por parâmetros. A função deve
retornar os seguintes resultados:
→ 0, se os dois números forem iguais;
→ 1, se o primeiro número for maior que o segundo;
→ -1 , se o segundo número for maior que o primeiro.
• Algoritmos
• Função
24
SoluçãodoProblemaV...
algoritmo "Problema 05"
var
funcao compara(v1, v2: inteiro) : inteiro
var
inicio
se (v1 = v2) entao
retorne 0
senao
se (v1 > v2) entao
retorne 1
senao
retorne -1
fimse
fimse
fimfuncao
inicio
escreval("Resultado: ", compara(8, 7))
fimalgoritmo
• Algoritmos
• Conclusão
• Funções e procedimentos são utilizados com
muita frequência em desenvolvimento de
software.
• São vários benefícios:
 Evita duplicação de código quando precisamos
executar a mesma operação várias vezes;
 Deixa o entendimento do algoritmo mais intuitivo,
pois tiramos a parte complexa do código do fluxo
principal do algoritmo.
25
• Algoritmos
• Conclusão
• São vários benefícios:
 Dividir e estruturar um algoritmo em partes
logicamente coerentes.
 Proporcionar ao programador a reutilização de
código, através da criação de bibliotecas de
funções personalizadas.
 Maior legibilidade do algoritmo.
 Evitar a repetição de código, substituindo códigos
semelhantes por chamadas a uma única função.
26

Construcao de Algoritmos - Aula 12

  • 1.
    Disciplina: Constr. deAlgoritmos e Prog. de Sistemas Professor: Jeovane Reges Caxias – MA 2016 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO
  • 2.
  • 3.
  • 4.
  • 5.
    • Algoritmos • Introdução •Suponha que seja necessário utilizar a fórmula abaixo em diversas partes de um dado programa. 𝑓 𝑥 = 5𝑥 + 3 𝑥² − 16 • Agora, imagine que você a utilizou em 50 partes do seu código e precisa altera-la? • COMO RESOLVERIA ESSE PROBLEMA? 5
  • 6.
    6 Fazer tantas alteraçõesé inviável. Seria mais fácil se fizéssemos uma ÚNICA alteração.
  • 7.
    • Algoritmos • Introdução •Para contornar tal problema, utilizamos as funções ou procedimentos. • A principal vantagem é não precisar escrever o mesmo código diversas vezes para um mesmo tipo de operação. • Os procedimentos diferem das funções apenas por não retornarem valor nenhum. • Ao longo da disciplina já usamos diversas funções. 7
  • 8.
    • Algoritmos • Introdução •Parâmetros • Funções (e procedimentos) podem ou não receber parâmetros. • No caso da função abaixo, é necessário passar como parâmetro um valor para ser atribuído a variável x. 𝑓 𝑥 = 5𝒙 + 3 𝒙² − 16 8
  • 9.
    • Algoritmos • Introdução •Parâmetros • São canais por onde os dados são transferidos pelo algoritmo chamador a um subalgoritmo. • Parâmetros Formais:  São os nomes simbólicos usados na definição dos parâmetros de um subalgoritmo. • Parâmetros Reais:  São aqueles que substituem os parâmetros formais quando da chamada de um subalgoritmo. 9
  • 10.
    • Algoritmos • Introdução •Parâmetros  Exemplo: • Parâmetros Formais • Parâmetros Reais 10 procedimento soma (a, b: inteiro) var soma: inteiro inicio x ← 10 y ← 20 soma(x, y) fimalgoritmo
  • 11.
    • Algoritmos • Procedimento •A sintaxe para criação de procedimentos é: 11 procedimento <nome do procedimento> (<parâmetros>) var <declaração das variáveis locais> inicio <bloco de instruções> fimprocedimento
  • 12.
    Faça um procedimentoque receba um valor como parâmetro e escreva o dobro desse valor. 12 Problema I
  • 13.
    • Algoritmos • Procedimento 13 algoritmo"Problema 01" var procedimento dobro(valor: inteiro) var total: inteiro inicio total ← valor * 2 escreval("O dobro é: ", total) fimprocedimento inicio dobro(8) fimalgoritmo SoluçãodoProblemaI...
  • 14.
    Problema I Faça umprocedimento que receba um valor como parâmetro e escreva a tabuada de 0 a 10 desse valor. 14 Problema II
  • 15.
    • Algoritmos • Procedimento 15 algoritmo"Problema 02" var numero: inteiro procedimento tabuada(valor: inteiro) var i: inteiro inicio para i de 1 ate 10 faca escreval(valor * i) fimpara fimprocedimento inicio escreval("Digite um valor: ") leia(numero) tabuada(numero) fimalgoritmo SoluçãodoProblemaII...
  • 16.
    • Algoritmos • Procedimento •Variáveis • A variável numero do código anterior é uma variável cujo escopo é global. • Uma variável pertence ao escopo global quando ela é visível em qualquer trecho do código. • Uma variável possui o escopo local quando ela é visível apenas no trecho onde foi declarada/criada. 16
  • 17.
  • 18.
    • Algoritmos • Funções •Introdução • As funções sempre irão retornar algum valor. • A sintaxe para criação de funções é: 18 funcao <nome da funcao> (<parâmetros>): tipo var <declaração das variáveis locais> inicio <bloco de instruções> retorne <valor> fimfuncao
  • 19.
    Problema I Crie umafunção que receba dois valores por parâmetro e retorne a soma desses valores. 19 Problema III
  • 20.
    • Algoritmos • Função 20 algoritmo"Problema 03" var res: inteiro funcao soma(n1, n2: inteiro) : inteiro var inicio retorne n1 + n2 fimfuncao inicio res ← soma(8, 7) escreval("Resultado: ", res) fimalgoritmo SoluçãodoProblemaIII...
  • 21.
    21 Problema IV Faça umafunção chamada maior que receba dois números (inteiros) por parâmetros e retorne o maior deles.
  • 22.
    • Algoritmos • Função 22 algoritmo"Problema 04" var funcao maior(v1, v2: inteiro) : inteiro var inicio se (v1 > v2) entao retorne v1 senao retorne v2 fimse fimfuncao inicio escreval("Maior: ", maior(8, 7)) fimalgoritmo SoluçãodoProblemaIV...
  • 23.
    23 Problema V Faça umafunção chamada compara que receba dois números por parâmetros. A função deve retornar os seguintes resultados: → 0, se os dois números forem iguais; → 1, se o primeiro número for maior que o segundo; → -1 , se o segundo número for maior que o primeiro.
  • 24.
    • Algoritmos • Função 24 SoluçãodoProblemaV... algoritmo"Problema 05" var funcao compara(v1, v2: inteiro) : inteiro var inicio se (v1 = v2) entao retorne 0 senao se (v1 > v2) entao retorne 1 senao retorne -1 fimse fimse fimfuncao inicio escreval("Resultado: ", compara(8, 7)) fimalgoritmo
  • 25.
    • Algoritmos • Conclusão •Funções e procedimentos são utilizados com muita frequência em desenvolvimento de software. • São vários benefícios:  Evita duplicação de código quando precisamos executar a mesma operação várias vezes;  Deixa o entendimento do algoritmo mais intuitivo, pois tiramos a parte complexa do código do fluxo principal do algoritmo. 25
  • 26.
    • Algoritmos • Conclusão •São vários benefícios:  Dividir e estruturar um algoritmo em partes logicamente coerentes.  Proporcionar ao programador a reutilização de código, através da criação de bibliotecas de funções personalizadas.  Maior legibilidade do algoritmo.  Evitar a repetição de código, substituindo códigos semelhantes por chamadas a uma única função. 26