Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal da Grande Dourados Faculdade de Ciências Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informação Algoritmos Modularidade (1) Profª Janne Oeiras Lachi 1 Plano de aula ` Programação estruturada de computador ou Programação modular ` Subprogramas: procedimentos e funções ` Variáveis globais e locais ` Passagem de parâmetro: por valor e por referência ` Parâmetros formais e reais Modularidade ` Conceito que surgiu desde 1950. ` Usada quando temos problemas complexos ` Os exercícios que vimos até então NÃO são. ` A ideia é dividir um problema ‘grande’ em problemas menores, isto é, usar o processo de modularização. ` Cada parte menor (módulo) tem um algoritmo mais simples, o que facilita chegar à grande solução. Módulo ` É um bloco de programa que pode efetuar operações computacionais de entrada, processamento e saída. ` Um módulo tem três características operacionais: ` Cada módulo possui um único ponto de entrada; ` Toda unidade de programa chamadora (unidade mestre) é suspensa durante a execução da unidade de módulo chamada (unidade escravo), o que implica na existência de somente um módulo em execução em um determinado momento, exceto quando se trabalha com paralelismo ou co- rotinas; ` Quando a execução do módulo (unidade escravo) é encerrada, o controle do fluxo de execução do programa volta para a primeira linha de instrução após a chamada do módulo na unidade mestre, no caso de ser um procedimento. No caso de ser uma função, o retorno é na mesma linha que efetuou a chamada. Módulo #include <stdio.h> #include <math.h> int main() { int I, N; double res; printf("Informe um numero inteiro maior que zero:"); scanf("%d", &N); for (I=1; I <= N; I++) { res = sqrt(I); printf("\n%lf",res); } return 0; } Módulo: funcionamento Algoritmo principal Módulo (unidade chamadora ou unidade mestre) (unidade escravo) Comando 1 Módulo Comando 3 Comando 4 Comando 5 mmmm mmmm mmmm mmmm mmmm mmmm Um módulo pode ser um Procedimento ou uma Função Módulo: funcionamento Na figura cima está exemplificado o funcionamento de procedimentos (ou sub-rotinas) aninhados http://h10025.www1.hp.com/ewfrf/wc/document?docname=bbia5104&lc=pt&dlc=pt&cc=br&product=60738 Refinamento de módulos ` A figura anterior nos sugere que um módulo pode ser dividido em tantos outros quantos forem necessários para o problema. Tipos de módulos ` Funções ` É um tipo de módulo que tem a capacidade de sempre retornar um valor como resposta. ` Procedimento ou Sub-rotina ` É um tipo módulo que não retorna valor Funções ` Uma função é um bloco de programa; ` Tem início e fim (como qualquer algoritmo) e é identificado por um nome para que possa ser chamado pela unidade mestre (algoritmo principal); ` Esse tipo de subprograma sempre retorna um conteúdo de resposta. ` Atenção: uma função retorna apenas 1 valor. Nunca 2 ou mais valores. Funções: como definir ` Sintaxe programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> x : <tipo> início <instruções> x Å <nome_da_função> <instruções> fim O código da função deve ser escrito ANTES da definição do algoritmo principal. Módulo #include <stdio.h> #include <math.h> int main() { int I, N; double res; printf("Informe um numero inteiro maior que zero:"); scanf("%d", &N); for (I=1; I <= N; I++) { res = sqrt(I); printf("\n%lf",res); } return 0; } Neste caso, veja que incluímos os módulos stdio e math. Neles estão definidas as funções que vamos usar neste programa. Funções: como definir ` Sintaxe programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> início <instruções> x Å <nome_da_função> <instruções> fim Note que é como se você tivesse um programa dentro de outro. Por isso o nome de SUBPROGRAMA. Funções: como definir programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> início <instruções> x Å <nome_da_função> <instruções> fim Dentro do algoritmo principal, você chamará a função pelo seu nome. Módulo #include <stdio.h> #include <math.h> int main() { int I, N; double res; printf("Informe um numero inteiro maior que zero:"); scanf("%d", &N); for (I=1; I <= N; I++) { res = sqrt(I); printf("\n%lf",res); } return 0; } Chamando as funções pelo nome dentro do programa principal Funções: como definir ` Uma função SEMPRE retorna um valor calculado programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> início <instruções> x Å <nome_da_função> <instruções> fim Como a função retorna um valor, esse valor será guardado dentro de uma variável. Geralmente, teremos uma variável recebendo o valor retornado pela função. Módulo #include <stdio.h> #include <math.h> int main() { int I, N; double res; printf("Informe um numero inteiro maior que zero:"); scanf("%d", &N); for (I=1; I <= N; I++) { res = sqrt(I); printf("\n%lf",res); } return 0; } Como a função retorna um valor, esse valor será guardado dentro de uma variável. Geralmente, teremos uma variável recebendo o valor retornado pela função. Funções: como definir ` Parâmetros programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> início <instruções> x Å <nome_da_função (parâmetros)> <instruções> fim Geralmente vamos passar alguns valores para que a função faça o cálculo necessário. Esses valores são chamados de PARÂMETROS. Módulo #include <stdio.h> #include <math.h> int main() { int I, N; double res; printf("Informe um numero inteiro maior que zero:"); scanf("%d", &N); for (I=1; I <= N; I++) { res = sqrt(I); printf("\n%lf",res); } return 0; } Geralmente vamos passar alguns valores para que a função faça o cálculo necessário. Esses valores são chamados de PARÂMETROS. Funções: como definir ` Tipo de retorno programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> início <instruções> x Å <nome_da_função> <instruções> fim Como a função retorna um valor, precisamos definir o tipo de retorno da função (inteiro, real, caractere, lógico) Módulo #include <stdio.h> #include <math.h> int main() { int I, N; double res; printf("Informe um numero inteiro maior que zero:"); scanf("%d", &N); for (I=1; I <= N; I++) { res = sqrt(I); printf("\n%lf",res); } return 0; } A função sqrt() retorna um valor do tipo double. Por essa razão a variável res foi definida como sendo do tipo double também. Funções: como definir ` Tipo de retorno programa <nome_do_seu_programa> função <nome_da_função> (parâmetros): <tipo de dado de retorno da função> var <variáveis da função> início <instruções da função> fim var <variáveis do seu programa> início <instruções> x Å <nome_da_função> <instruções> fim Preste atençãono recuo (indentação) da função dentro do algoritmo principal. Exemplo 1 ` Escreva um algoritmo que receba 3 números e escreva o dobro de cada um deles. programa DOBRO início fim Corpo do mínimo do algoritmo Exemplo 1 ` Escreva um algoritmo que receba 3 números e escreva o dobro de cada um deles. programa DOBRO início escreva “Informe um numero” leia n fim Vamos ler os dados 1 vez Exemplo 1 ` Escreva um algoritmo que receba 3 números e escreva o dobro de cada um deles. programa DOBRO início escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim Vamos calcular e imprimir o resultado Exemplo 1 ` Escreva um algoritmo que receba 3 números e escreva o dobro de cada um deles. programa DOBRO início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Vamos incluir REPETIÇÃO para ler os 3 números Exemplo 1 ` Escreva um algoritmo que receba 3 números e escreva o dobro de cada um deles. programa DOBRO var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Vamos declarar as variáveis que usamos Exemplo 2 ` Escreva um algoritmo que receba 3 números e escreva o dobro de cada um deles. O dobro de cada número deve ser calculado por meio de uma função. O que mudar no algoritmo abaixo? programa DOBRO var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Vamos criar uma função programa EXEMPLO2 função DOBRO (???): ??? início fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Apenas criamos o corpo da função. Note que o nome da função é DOBRO e o nome do algoritmo é EXEMPLO2. Parâmetros que serão definidos Tipo que será definido Exemplo 2: passo-a-passo ` Pense no que a função deve fazer (calcular o dobro) Vamos fazer a função calcular o dobro e tirar isso do algoritmo principal. programa EXEMPLO2 função DOBRO (???): ??? início fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Pense no que a função deve fazer (calcular o dobro) programa EXEMPLO2 função DOBRO (???): ??? início calc Å n*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Vamos fazer a função calcular o dobro e tirar isso do algoritmo principal. Exemplo 2: passo-a-passo ` Pense no que a função deve fazer (calcular o dobro) Como usamos uma variável dentro da função, devemos declará-la também. Note que a variável é declarada dentro da função porque é usada somente nela. programa EXEMPLO2 função DOBRO (???): ??? var calc : real início calc Å n*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å n*2 escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Chamando a função No lugar do cálculo, dentro do algoritmo principal, fazemos uma chamada a função. Note que escrevemos o nome da função e entre parênteses colocamos a variável n, pois precisamos passar esse valor de n para a função calcular o dobro. programa EXEMPLO2 função DOBRO (???): ??? var calc : real início calc Å n*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Definindo parâmetros Se estamos passando o valor de n, então ele é um PARÂMETRO da função e vamos especificá-lo na definição da função. Note que sempre vamos definir o nome do parâmetro e seu tipo. programa EXEMPLO2 função DOBRO (n: real): ??? var calc : real início calc Å n*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Tipo do parâmetro O tipo do parâmetro é real porque o tipo da variável n no algoritmo principal é real. programa EXEMPLO2 função DOBRO (n: real): ??? var calc : real início calc Å n*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Nome do parâmetro No slide anterior, colocamos o mesmo nome da variável usada no algoritmo principal (nome n), mas poderia ser qualquer outro nome, como v. Assim, precisamos mudar também no corpo da função programa EXEMPLO2 função DOBRO (v: real): ??? var calc : real início calc Å v*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Definindo o tipo de retorno da função O usuário pode fornecer um número n real. Assim, a função DOBRO vai calcular um resultado também do tipo real. O tipo de resultado a ser calculado é o que define o TIPO DA FUNÇÃO. programa EXEMPLO2 função DOBRO (v: real): real var calc : real início calc Å v*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Retornando um valor para o algoritmo principal Para retornar um valor para o algoritmo principal, devemos atribuir o valor calculado ao NOME da função. Pronto! Assim, concluímos nossa função. programa EXEMPLO2 função DOBRO (v: real): real var calc : real início calc Å v*2 DOBRO Å calc fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: passo-a-passo ` Simplificando... Como o cálculo a ser feito é bem simples, aqui podemos excluir a variável calc e atribuir o cálculo direto no nome da função. programa EXEMPLO2 função DOBRO (v: real): real var calc : real início calc Å v*2 DOBRO Å calc fim . . . programa EXEMPLO2 função DOBRO (v: real): real início DOBRO Å v*2 fim . . . Exemplo 2: novo algoritmo programa EXEMPLO2 função DOBRO (v: real): real início DOBRO Å v*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, res fim_para fim Exemplo 2: novo algoritmo programa EXEMPLO2 função DOBRO (v: real): real início DOBRO Å v*2 fim var i: inteiro n, res: real início para i de 1 ate 3 passo 1 faça escreva “Informe um numero” leia n res Å DOBRO(n) escreva “O dobro eh: ”, DOBRO(n) fim_para fim Podemos também simplificar a chamada da função e eliminar o uso da variável res. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meiode uma função. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa RAIZ var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num Ç (1/2) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Aqui temos a solução SEM o uso de FUNÇÃO. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (???): ??? inicio fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num Ç (1/2) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Vamos incluir uma função Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (???): ??? inicio fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num Ç (1/2) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Vamos fazer o cálculo na função Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (???): ??? inicio RAIZ Å num Ç (1/2) fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva num Ç (1/2) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Vamos fazer o cálculo na função Note que o cálculo já foi atribuído ao NOME da função para retornar o valor calculado para o algoritmo principal. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (???): ??? inicio RAIZ Å num Ç (1/2) fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva RAIZ(num) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim No lugar do cálculo, escrevemos a chamada da função. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (num: inteiro): ??? inicio RAIZ Å num Ç (1/2) fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva RAIZ(num) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Vamos incluir o parâmetro da função. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (num: inteiro): ??? inicio RAIZ Å num Ç (1/2) fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva RAIZ(num) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Vamos incluir o parâmetro da função. Note que o tipo do parâmetro é inteiro porque o valor que está sendo passado é do tipo inteiro. Exemplo 3 ` Elaborar um algoritmo que receba um valor numérico inteiro qualquer. Em seguida calcule a raiz quadrada do valor de entrada e apresente o resultado dessa operação. Após mostrar o resultado, o algoritmo deve perguntar se o usuário deseja um novo cálculo. O cálculo da raiz deve ser feito por meio de uma função. programa EXEMPLO3 função RAIZ (num: inteiro): real inicio RAIZ Å num Ç (1/2) fim var num: inteiro resp: caractere início continua escreva “Informe um número inteiro:” leia num escreva RAIZ(num) escreva “Deseja continuar calculando (S ou N)?” leia resp enquanto_for (resp = “S” .ou. resp = “s”) fim Vamos definir o tipo da função. Como o cálculo será um valor do tipo real, então o tipo da função deve ser real. Exemplo 4 ` Elaborar um algoritmo que receba dois números. Faça a soma desses dois valores e apresente o resultado. A soma deve ser feita por meio de uma função. Exemplo 4 programa SOMA var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, x+y fim Aqui temos a solução SEM o uso de FUNÇÃO. Exemplo 4 programa EXEMPLO4 função SOMA (???): ??? inicio fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, x+y fim Vamos incluir uma função Exemplo 4 programa EXEMPLO4 função SOMA (???): ??? inicio fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, x+y fim Vamos fazer o cálculo na função Exemplo 4 programa EXEMPLO4 função SOMA (???): ??? inicio SOMA Å x+y fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, SOMA (x, y) fim Vamos fazer o cálculo na função. No lugar do cálculo, escrevemos a chamada da função. Note que SOMA tem 2 parâmetros. Exemplo 4 programa EXEMPLO4 função SOMA (???): ??? inicio SOMA Å x+y fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, SOMA (x, y) fim Note que o cálculo já foi atribuído ao NOME da função para retornar o valor calculado para o algoritmo principal. Exemplo 4 programa EXEMPLO4 função SOMA (x, y: real): ??? inicio SOMA Å x+y fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, SOMA (x, y) fim Vamos incluir os parâmetros da função. Temos dois valores dentro da chamada da função, então teremos dois parâmetros na definição da função. Exemplo 4 programa EXEMPLO4 função SOMA (x, y: real): real inicio SOMA Å x+y fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “A soma dos numeros eh:”, SOMA (x, y) fim Como o cálculo será um valor do tipo real, então o tipo da função deve ser real também. Exemplo 5 ` Elaborarum algoritmo que receba dois números e verifique qual é o maior deles (suponha que os números sempre são diferentes). Essa verificação deve ser feita por meio de uma função. Exemplo 5 programa EXEMPLO5 var x, y: real início escreva “Informe dois numeros:” leia x, y se (x > y) então escreva “O maior eh:”, x senão escreva “O maior eh:”, y fim_se fim Aqui temos a solução SEM o uso de FUNÇÃO. Exemplo 5 programa EXEMPLO5 função MAIOR (???): ??? inicio fim var x, y: real início escreva “Informe dois numeros:” leia x, y se (x > y) então escreva “O maior eh:”, x senão escreva “O maior eh:”, y fim_se fim Vamos incluir uma função Exemplo 5 programa EXEMPLO5 função MAIOR (???): ??? inicio se (x > y) então MAIOR Å x senão MAIOR Å y fim_se fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “O maior eh:”, MAIOR (x,y) fim Vamos fazer a verificação na função. Note que fazemos a decisão dentro da função, mas quem deve imprimir o resultado é o algoritmo principal. Exemplo 5 programa EXEMPLO5 função MAIOR (???): ??? inicio se (x > y) então MAIOR Å x senão MAIOR Å y fim_se fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “O maior eh:”, MAIOR (x,y) fim Note que RETORNAMOS para o algoritmo principal o maior valor encontrado. Somente 1 valor é retornado: ou x ou y. Exemplo 5 programa EXEMPLO5 função MAIOR (x, y: real): ??? inicio se (x > y) então MAIOR Å x senão MAIOR Å y fim_se fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “O maior eh:”, MAIOR (x,y) fim Vamos incluir os parâmetros da função. Temos dois valores dentro da chamada da função, então teremos dois parâmetros na definição da função. Exemplo 5 programa EXEMPLO5 função MAIOR (x, y: real): real inicio se (x > y) então MAIOR Å x senão MAIOR Å y fim_se fim var x, y: real início escreva “Informe dois numeros:” leia x, y escreva “O maior eh:”, MAIOR (x,y) fim Como o valor a ser retornado (x ou y) é do tipo real, então o TIPO DA FUNÇÃO deve ser real também. Exemplo 6 ` Elaborar um algoritmo que leia um número inteiro n >= 0 e calcule o fatorial desse número. O fatorial deve ser calculado por meio de uma função. Exemplo 6 programa EXEMPLO6 var n, I, FAT: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim-se escreva “O fatorial de ”, n, “eh”, FAT fim_se fim Aqui temos a solução SEM o uso de FUNÇÃO. Exemplo 6 programa EXEMPLO6 função FATORIAL (???): ??? inicio fim var n, I, FAT: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim-se escreva “O fatorial de ”, n, “eh”, FAT fim_se fim Vamos incluir uma função Exemplo 6 programa EXEMPLO6 função FATORIAL (???): ??? inicio fim var n, I, FAT: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim-se escreva “O fatorial de ”, n, “eh”, FAT fim_se fim Vamos fazer o cálculo do fatorial dentro da função. Exemplo 6 programa EXEMPLO6 função FATORIAL (???): ??? inicio FAT Å 1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se fim var n, I, FAT: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim-se escreva “O fatorial de”,n, “eh:”, FAT fim-se fim Vamos fazer o cálculo do fatorial dentro da função. Exemplo 6 programa EXEMPLO6 função FATORIAL (???): ??? var FAT, I: inteiro inicio FAT Å 1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se fim var n, I, FAT: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim-se escreva “O fatorial de”,n, “eh:”, FAT fim-se fim Declare as variáveis usadas dentro da função Exemplo 6 programa EXEMPLO6 função FATORIAL (???): ??? var FAT, I: inteiro inicio FAT Å 1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se fim var n, I, FAT: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “O fatorial de”,n, “eh:”, FATORIAL(n) fim-se fim Faça a chamada da função e passe como parâmetro o valor de n Exemplo 6 programa EXEMPLO6 função FATORIAL (n: inteiro): ??? var FAT, I: inteiro inicio FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “O fatorial de”,n, “eh:”, FATORIAL(n) fim-se fim Defina o parâmetro da função Exemplo 6 programa EXEMPLO6 função FATORIAL (n: inteiro): ??? var FAT, I: inteiro inicio FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se FATORIAL Å FAT fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “O fatorial de”,n, “eh:”, FATORIAL(n) fim-se fim Retorne o valor da função por meio do nome dela Exemplo 6 programa EXEMPLO6 função FATORIAL (n: inteiro): ??? var FAT, I: inteiro inicio FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se FATORIAL Å FAT fim Note que neste problema precisamos usar a variável auxiliar FAT durante o cálculo. programa EXEMPLO6 função FATORIAL (n: inteiro): ??? var FAT, I: inteiro inicio FATORIAL Å1 se (n > 0) então para I de 1 até n passo 1 faça FATORIAL Å FATORIAL * I fim_para fim_se fim Neste problema não é possível fazer o cálculo no nome da função como em exemplos anteriores. Exemplo 6 Neste caso, na primeira aparição da palavra FATORIAL, a função seria terminada e todo resto da função não seria executado. Portanto, não faria o cálculo corretamente. programa EXEMPLO6 função FATORIAL (n: inteiro): ??? var FAT, I: inteiro inicio FATORIAL Å1 se (n > 0) então para I de 1 até n passo 1 faça FATORIAL Å FATORIAL * I fim_para fim_se fim Exemplo 6 programa EXEMPLO6 função FATORIAL (n: inteiro): inteiro var FAT, I: inteiro inicio FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se FATORIAL Å FAT fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “O fatorial de”,n, “eh:”, FATORIAL(n) fim-se fim Defina o TIPO DA FUNÇÃO com base no tipo de dado a ser retornado. Exemplo 7 ` Elaborar um algoritmo que leia um número inteiro n >= 0 e calcule a raiz cúbica do fatorial desse número. O fatorial e a raiz cúbica devem ser calculados por meio de funções. Exemplo 7 ` Aproveitando parte da solução anterior programa EXEMPLO6 função FATORIAL (n: inteiro): inteiro var FAT, I: inteiro inicio FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se FATORIAL Å FATfim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh:”, FATORIAL(n) Ç(1/3.0) fim-se fim Mudamos apenas uma linha para calcular a raiz cúbica. Porém o problema requer que essa raiz seja calculada por meio de uma função também. Exemplo 7 programa EXEMPLO7 função FATORIAL (n: inteiro): inteiro var FAT, I: inteiro inicio FAT Å1 se (n > 0) então para I de 1 até n passo 1 faça FAT Å FAT * I fim_para fim_se FATORIAL Å FAT fim função RAIZ_3(???): ??? inicio fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh:”, FATORIAL(n) Ç (1/3.0) fim-se fim Vamos criar uma nova função Exemplo 7 programa EXEMPLO7 função FATORIAL (n: inteiro): inteiro . . . fim função RAIZ_3(???): ??? inicio RAIZ_3 Å FATORIAL(n) Ç (1/3.0) fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh”, FATORIAL(n) Ç (1/3.0) fim-se fim Não podemos simplesmente colar aqui o que está no algoritmo principal porque nem sempre vamos resolver a raiz cúbica sobre o fatorial de um número. Precisamos criar funções que sejam genéricas. ERRADO! Exemplo 7 programa EXEMPLO7 função FATORIAL (n: inteiro): inteiro . . . fim função RAIZ_3(???): ??? inicio RAIZ_3 Å v Ç (1/3.0) fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh”, FATORIAL(n) Ç (1/3.0) fim-se fim Vamos incluir o cálculo na função. Vamos fazer o cálculo da raiz cúbica sobre uma variável v genérica. Exemplo 7 programa EXEMPLO7 função FATORIAL (n: inteiro): inteiro . . . fim função RAIZ_3(???): ??? inicio RAIZ_3 Å v Ç (1/3.0) fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh”, RAIZ_3(FATORIAL(n)) fim-se fim No lugar do cálculo, vamos fazer a chamada da função. Note que a função RAIZ_3 tem como parâmetro o valor retornado pela função FATORIAL. Exemplo 7 programa EXEMPLO7 função FATORIAL (n: inteiro): inteiro . . . fim função RAIZ_3(v: inteiro): ??? inicio RAIZ_3 Å v Ç (1/3.0) fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh”, RAIZ_3(FATORIAL(n)) fim-se fim Defina o parâmetro da função. Como o fatorial de um número é um valor inteiro, então nosso parâmetro será do tipo inteiro. Exemplo 7 programa EXEMPLO7 função FATORIAL (n: inteiro): inteiro . . . fim função RAIZ_3(v: inteiro): real inicio RAIZ_3 Å v Ç (1/3.0) fim var n: inteiro início escreva “Informe um número n>=0:” leia n se (n < 0) então escreva “Numero invalido!” senão escreva “A resposta eh”, RAIZ_3(FATORIAL(n)) fim-se fim Defina o TIPO DA FUNÇÃO. Como a raiz cúbica é um valor do tipo real, então o tipo da função será real também. Exemplo 8 ` Elaborar que leia dois números inteiros e verifique se eles são iguais por meio de uma função. Exemplo 8 programa EXEMPLO8 var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (X = Y) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim Aqui temos a solução SEM o uso de FUNÇÃO. Exemplo 8: função programa EXEMPLO8 função IGUAIS (???): ??? inicio fim var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (X = Y) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim Incluindo uma função. Exemplo 8: função programa EXEMPLO8 função IGUAIS (???): ??? inicio IGUAIS Å X=Y fim var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (X = Y) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim Fazendo a comparação dentro da função. Exemplo 8: função programa EXEMPLO8 função IGUAIS (???): ??? inicio IGUAIS Å X=Y fim var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (X = Y) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim Fazendo a comparação dentro da função. Neste caso a função vai retornar um valor lógico .v. ou .f. Exemplo 8: função programa EXEMPLO8 função IGUAIS (???): ??? inicio IGUAIS Å X=Y fim var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (IGUAIS(X,Y)) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim No lugar da comparação, chamamos a função passando os valores de X e Y Exemplo 8: função programa EXEMPLO8 função IGUAIS (X, Y: inteiro): ??? inicio IGUAIS Å X=Y fim var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (IGUAIS(X,Y)) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim Vamos definir os parâmetros da função. Exemplo 8: função programa EXEMPLO8 função IGUAIS (X, Y: inteiro): lógico inicio IGUAIS Å X=Y fim var X, Y: inteiro início escreva “Informe o 1º número:” leia X escreva “Informe o 2º número:” leia Y se (IGUAIS(X,Y)) então escreva “Os números são iguais” senão escreva “Os números são DIFERENTES” fim_se fim O valor de retorno define o TIPO DA FUNÇÃO. Lembre que o resultado de uma expressão relacional é um valor do tipo LÓGICO. Procedimentos ` Tem início e fim (como qualquer algoritmo) e é identificado por um nome para que possa ser chamado pela unidade mestre (algoritmo principal). ` Sintaxe em Português estruturado: programa <nome_do_seu_programa> procedimento <nome_do_procedimento> (parâmetros) var <variáveis do procedimento> início <instruções do procedimento> fim var <variáveis do seu programa> início <instruções> <sub-rotina> <instruções> fim Procedimentos ` O código da sub-rotina deve ser escrito ANTES de sua chamada dentro do algoritmo principal. programa <nome_do_seu_programa> procedimento <nome_do_procedimento> (parâmetros) var <variáveis do procedimento> início <instruções do procedimento> fim var <variáveis do seu programa> início <instruções> <sub-rotina> <instruções> fim Procedimentos ` Procedimentos NÃO retornam valor programa <nome_do_seu_programa> procedimento <nome_do_procedimento> (parâmetros) var <variáveis do procedimento> início <instruções do procedimento> fim var <variáveis do seu programa> início <instruções> <sub-rotina> <instruções> fim Note que não há uma variável do lado esquerdo da chamada ao procedimento. Por quê? Porque procedimento não retorna valor. Procedimentos ` Procedimentos pode receber parâmetros programa <nome_do_seu_programa> procedimento <nome_do_procedimento> (parâmetros) var <variáveis do procedimento> início <instruções do procedimento> fim var <variáveis do seu programa> início <instruções> <sub-rotina> <instruções> fim Um procedimento geralmente vai receber parâmetros, assim como as funções. Mas não é obrigatório. Exemplo 1 ` Escreva algoritmo para imprimir o seguinte cabeçalho: Universidade Federal da Grande Dourados Curso de Bachareladoem Sistemas de Informação Ano 2013 Exemplo 1: uma solução programa IMPRESSAO início escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim Note que o algoritmo escreve o cabeçalho e não são necessárias variáveis neste problema. Exemplo 2 ` Escreva um procedimento para imprimir o seguinte cabeçalho: Universidade Federal da Grande Dourados Curso de Bacharelado em Sistemas de Informação Ano 2013 ` Escreva um algoritmo em Português estruturado que utilize o procedimento para escrever o cabeçalho. Exemplo 2: passo-a-passo programa IMPRESSAO procedimento CABECALHO( ) inicio fim início escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim Vamos incluir um procedimento Exemplo 2: passo-a-passo programa IMPRESSAO procedimento CABECALHO( ) inicio fim início escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2012” fim Vamos escrever as informações por meio do procedimento Exemplo 2: passo-a-passo programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim início fim Vamos escrever as informações por meio do procedimento Exemplo 2: passo-a-passo programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2012” fim início CABECALHO( ) fim No lugar da impressão, vamos fazer a chamada ao procedimento. Exemplo 2: passo-a-passo programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2012” fim início CABECALHO( ) fim Note que neste problema não usamos parâmetros porque não são necessários. Exemplo 2: passo-a-passo programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2012” fim início CABECALHO( ) fim Note também que não há nenhum valor de retorno para o algoritmo principal. Exemplo 3 ` Escreva um algoritmo em Português estruturado que receba do usuário o nome da Universidade, o nome do Curso e o ano vigente para imprimir um cabeçalho. Esses dados devem ser passados para um procedimento escrever o cabeçalho. Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim início CABECALHO( ) fim Precisamos fazer a leitura dos dados de entrada! Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim início escreva “Informe o nome da universidade:” leia universidade escreva “Informe o nome do curso:” leia curso escreva “Informe o ano:” leia ano CABECALHO( ) fim Precisamos fazer a leitura dos dados de entrada! Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim var ano: inteiro universidade, curso: caractere início escreva “Informe o nome da universidade:” leia universidade escreva “Informe o nome do curso:” leia curso escreva “Informe o ano:” leia ano CABECALHO( ) fim Vamos declarar as variáveis usadas Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO( ) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim var ano: inteiro universidade, curso: caractere início escreva “Informe o nome da universidade:” leia universidade escreva “Informe o nome do curso:” leia curso escreva “Informe o ano:” leia ano CABECALHO (universidade, curso, ano) fim Como as variáveis foram lidas no algoritmo principal, vamos passá-las via parâmetros para o procedimento Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO(u, c: caractere, a: inteiro) inicio escreva “Universidade Federal da Grande Dourados” escreva “Curso de Bacharelado em Sistemas de Informação” escreva “Ano 2013” fim var ano: inteiro universidade, curso: caractere início escreva “Informe o nome da universidade:” leia universidade escreva “Informe o nome do curso:” leia curso escreva “Informe o ano:” leia ano CABECALHO (universidade, curso, ano) fim Vamos definir os parâmetros do procedimento Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO(u, c: caractere, a: inteiro) inicio escreva u escreva c escreva “Ano ”, a fim var ano: inteiro universidade, curso: caractere início escreva “Informe o nome da universidade:” leia universidade escreva “Informe o nome do curso:” leia curso escreva “Informe o ano:” leia ano CABECALHO (universidade, curso, ano) fim Vamos usar os valores passados para escrever o cabeçalho corretamente Exemplo 3: o que muda nesta solução? programa IMPRESSAO procedimento CABECALHO(u, c: caractere, a: inteiro) inicio escreva u escreva c escreva “Ano ”, a fim var ano: inteiro universidade, curso: caractere início escreva “Informe o nome da universidade:” leia universidade escreva “Informe o nome do curso:” leia curso escreva “Informe o ano:” leia ano CABECALHO (universidade, curso, ano) fim Procure fazer a leitura dos dados de entrada no algoritmo principal e não dentro do procedimento Exemplo de problema ` Desenvolver um algoritmo que simule as operações básicas de uma calculadora que opere com a entrada de dois valores do tipo real após a escolha da operação a ser executada. ` O algoritmo deve apresentar uma lista de opções (menus) com as operações matemáticas de adição, subtração, multiplicação e divisão, além de uma opção de saída do algoritmo. ` Escolhida a opção desejada, deve ser solicitada a entrada de dois valores numéricos para que seja possível executar o processamento escolhido. ` Após a execução da operação, o algoritmo deve apresentar o resultado e voltar a apresentar o menu de opções. Entendimento do problema ` Pode-se entender e dividir o problema em cinco rotinas: 1 – Adição 2 – Subtração 3 – Multiplicação 4 – Divisão 5 – Fim do algoritmo Rotina 3 Multiplicação Rotina 4 Divisão Rotina 1 Adição Rotina 2 Subtração Rotina principal Rotinas secundárias Rotina principal ` Apresentar o menu de opções; ` Quando o usuário escolher uma opção: ` Se o valor escolhido estiver entre 1 e 4, chamar a rotina correspondente OU ` Se o valor 5 for escolhido, encerrar o algoritmo. Exemplo em Português estruturado programa CALCULADORA procedimento ROTSOMA() ... fim procedimento ROTSUBTRACAO() ... fim procedimento ROTMULTIPLICACAO() ... fim procedimento ROTDIVISAO() ... fim var OPCAO: inteiro início OPCAO Å 0 enquanto (OPCAO <> 5) faça escreva “1. Adição” escreva “2. Subtração” escreva “3. Multiplicação” escreva “4. Divisão” escreva “5. Sair do algoritmo” escreva “Escolha uma opção:” leia OPCAO Exemplo em Português estruturado início OPCAO Å 0 enquanto (OPCAO <> 5) faça escreva “1. Adição” escreva“2. Subtração” escreva “3. Multiplicação” escreva “4. Divisão” escreva “5. Sair do algoritmo” escreva “Escolha uma opção:” leia OPCAO se (OPCAO <> 5) então caso (OPCAO) seja 1 faça ROTSOMA seja 2 faça ROTSUBTRACAO seja 3 faça ROTMULTIPLICACAO seja 4 faça ROTDIVISAO senão escreva “Opção inválida, tente novamente” fim_caso fim_se fim_enquanto fim Rotinas secundárias Rotina 1 - Adição Rotina 2 - Subtração 1. Ler dois valores (variáveis A e B) 2. Efetuar a soma das variáveis A e B, colocando o resultado na variável R. 3. Apresentar o valor da variável R. 4. Retornar ao algoritmo principal. 1. Ler dois valores (variáveis A e B) 2. Efetuar a subtração das variáveis A e B, colocando o resultado na variável R. 3. Apresentar o valor da variável R. 4. Retornar ao algoritmo principal. Rotinas secundárias (cont.) Rotina 1 – Multiplicação Rotina 2 - Divisão 1. Ler dois valores (variáveis A e B) 2. Efetuar a multiplicação das variáveis A e B, colocando o resultado na variável R. 3. Apresentar o valor da variável R. 4. Retornar ao algoritmo principal. 1. Ler dois valores (variáveis A e B) 2. Efetuar a divisão das variáveis A e B, colocando o resultado na variável R. 3. Apresentar o valor da variável R. 4. Retornar ao algoritmo principal. Exemplo em Português estruturado programa CALCULADORA procedimento ROTSOMA( ) var R1, A1, B1 : real início escreva “Rotina de Adição” escreva “Entre o 1º. Valor:” leia A1 escreva “Entre o 2º. Valor:” leia B1 R1 Å A1 + B1 escreva “O resultado da adição é:”, R1 fim procedimento ROTSUBTRACAO( ) var R2, A2, B2 : real início escreva “Rotina de Subtração” escreva “Entre o 1º. Valor:” leia A2 escreva “Entre o 2º. Valor:” leia B2 R2 Å A2 - B2 escreva “O resultado da subtração é:”, R2 fim Exemplo em Português estruturado procedimento ROTMULTIPLICACAO( ) var R3, A3, B3 : real início escreva “Rotina de Multiplicação” escreva “Entre o 1º. Valor:” leia A3 escreva “Entre o 2º. Valor:” leia B3 R3 Å A3 * B3 escreva “O resultado da multiplicação é:”, R3 fim procedimento ROTDIVISAO( ) var R4, A4, B4 : real início escreva “Rotina de Divisão” escreva “Entre o 1º. Valor:” leia A4 escreva “Entre o 2º. Valor:” leia B4 se (B4 = 0) então escreva “Erro: divisão por zero!” senão R4 Å A4 / B4 escreva “O resultado da divisão é:”, R4 fim_se fim Repensando as rotinas ` Podemos enxugar as rotinas pedindo para ler os valores dentro do algoritmo principal e depois passá-los via parâmetros para cada procedimento chamado. ` Faça essa alteração. 124 Referências ` Algoritmos – Fundamento e Prática. Everton Coimbra de Araújo. Florianópolis: Visual Book, 2007. ` Algoritmos - Lógica para desenvolvimento de programação de computadores. José Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. São Paulo: Érica, 2006. 125 Algoritmos Plano de aula Modularidade Módulo Módulo Módulo: funcionamento Módulo: funcionamento Refinamento de módulos Tipos de módulos Funções Funções: como definir Módulo Funções: como definir Funções: como definir Módulo Funções: como definir Módulo Funções: como definir Módulo Funções: como definir Módulo Funções: como definir Exemplo 1 Exemplo 1 Exemplo 1 Exemplo 1 Exemplo 1 Exemplo 2 Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: novo algoritmo Exemplo 2: novo algoritmo Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 3 Exemplo 4 Exemplo 4 Exemplo 4 Exemplo 4 Exemplo 4 Exemplo 4 Exemplo 4 Exemplo 4 Exemplo 5 Exemplo 5 Exemplo 5 Exemplo 5 Exemplo 5 Exemplo 5 Exemplo 5 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 6 Exemplo 7 Exemplo 7 Exemplo 7 Exemplo 7 Exemplo 7 Exemplo 7 Exemplo 7 Exemplo 7 Exemplo 8 Exemplo 8 Exemplo 8: função Exemplo 8: função Exemplo 8: função Exemplo 8: função Exemplo 8: função Exemplo 8: função Procedimentos Procedimentos Procedimentos Procedimentos Exemplo 1 Exemplo 1: uma solução Exemplo 2 Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 2: passo-a-passo Exemplo 3 Exemplo 3: o que muda nesta solução? Exemplo 3: o que muda nesta solução? Exemplo 3: o que muda nesta solução? Exemplo 3: o que muda nesta solução? Exemplo 3: o que muda nesta solução? Exemplo 3: o que muda nesta solução? Exemplo 3: o que muda nesta solução? Exemplo de problema Entendimento do problema Rotina principal Exemplo em Português estruturado Exemplo em Português estruturado Rotinas secundárias Rotinas secundárias (cont.) Exemplo em Português estruturado Exemplo em Português estruturado Repensando as rotinas Referências
Compartilhar