Você está na página 1de 7

03/10/2011

Ricardo Ribeiro Assink ricardo.assink@unisul.br ricardo@equipedigital.com

http://www.ricardoassink.com.br/
Algoritmos II UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br 1

Um matemtico uma vez disse que um grande problema se resolve dividindo-o em pequenas partes e resolvendo tais partes em separado. Estes dizeres servem tambm para a construo de programas. Os profissionais de informtica quando necessitam construir um grande sistema, o fazem, dividindo tal programa em partes, sendo ento desenvolvido cada parte em separado, mais tarde, tais partes sero acopladas para formar o sistema.

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

03/10/2011

import javax.swing.*; public class Principal{ public static double calculo(double sal){ double valor; valor = sal * 10.0 / 100.0; return valor; } public static void main(String args[]){ double salario, aumento, novosalario; salario = Double.parseDouble(JOptionPane.showInputDialog( "Digite o Salrio")); aumento = calculo(salario); novosalario = salario + aumento; JOptionPane.showMessageDialog(null,"O novo Salrio :" + novosalario); } }

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

Objetivos Dividir e estrutura um algoritmo em partes lgicas e coerentes; Facilidade em testar os trechos em separado; O programador poder criar sua biblioteca de funes, tornando sua programao mais eficiente uma vez que poder fazer uso de sub-rotinas por ele escritas em vrios outros algoritmos com a vantagem de j terem sido testadas; Maior legibilidade de um algoritmo; Evitar que certa seqncia de comandos necessria em vrios locais de um algoritmo tenha de ser escrita repetidamente nestes locais, diminuindo tambm o cdigo fonte.

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

03/10/2011

Chamada de uma Sub-rotina Quando uma sub-rotina chamada, o fluxo de execuo desviado para a sub-rotina, no momento em que ela chamada no algoritmo principal. Ao terminar a execuo dos comandos da sub-rotina, o fluxo de execuo retorna ao comando seguinte quele onde ela foi ativada, exatamente como na figura abaixo.

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

Definio de Sub-rotina
A definio de uma sub-rotina consta de:
Um cabealho, onde esto definidos o nome e o tipo da sub-rotina, bem como os seus parmetros e variveis locais; Um corpo, onde se encontram as instrues da sub-rotina.

Cabealho

Corpo

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

03/10/2011

O nome de uma sub-rotina o nome simblico pelo qual ele chamado por outro algoritmo. O corpo da sub-rotina contm as instrues que so executadas cada vez que ele chamado. Variveis locais so aquelas definidas dentro da prpria sub-rotina e s podem ser utilizadas pela mesma. Parmetros so canais por onde os dados so transferidos pelo algoritmo chamador a uma sub-rotina, e vice-versa. Para que possa iniciar a execuo das instrues em seu corpo, uma sub-rotina s vezes precisa receber dados do algoritmo que o chamou e, ao terminar sua tarefa, a sub-rotina deve fornecer ao algoritmo chamador os resultados da mesma. Esta comunicao bidirecional pode ser feita de dois modos que sero estudados frente: por meio da passagem de variveis globais ou por meio da passagem de parmetros.
Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br 7

O tipo de uma sub-rotina definido em funo do nmero de valores que a sub-rotina retorna ao algoritmo que o chamou. Segundo esta classificao, os algoritmos podem ser de dois tipos:
Procedimentos, que retornam zero ou mais valores ao algoritmo chamador; Funes, que retornam um, e somente um, valor ao algoritmo chamador.

Na realidade, a tarefa desempenhada por uma sub-rotina do tipo funo pode perfeitamente ser realizada por outra do tipo procedimento (o primeiro um caso particular deste). Esta diferenciao feita por razes histricas, ou, ento, pelo grande nmero de sub-rotinas que se encaixam na categoria de funes.
Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br 8

03/10/2011

PROCEDIMENTOS um tipo em especial de sub-rotina. Este tipo de sub-rotina no possui retorno. Conseqentemente no possui no corpo de instrues o comando Retorne. Tambm no possui tipo especificado para a sub-rotina. Quando o seu nome colocado em alguma parte do algoritmo esta sub-rotina e ativada. Desta forma, assim que o nome de um procedimento encontrado durante a execuo ocorre um desvio do algoritmo, para que os comandos da sub-rotina sejam executados. Ao trmino da sub-rotina, a execuo retornar ao ponto subseqente chamada do procedimento.

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

import javax.swing.*; public class EscreveNumeros{ static int n; static int numero; public static void mostraNumeros(){ for(numero=1;numero<=n;numero++){ JOptionPane.showMessageDialog(null,"Numero: " + numero ); } } public static void main(String args[]){ n = Integer.parseInt( JOptionPane.showInputDialog( "Digite a quantidade de numeros")); mostraNumeros(); JOptionPane.showMessageDialog(null,"Fim"); } }

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

10

03/10/2011

EXERCCIOS:

Nestes exerccios utilize somente sub-rotinas tipo procedimento. No utilize parmetros nem variveis locais, faa somente a diviso dos algoritmos em sub-rotinas.
1 - Faa um algoritmo que possui uma sub-rotina

para ler um vetor A de N elementos inteiros. O valor de N dever ser lido. Aps a utilizao da sub-rotina de leitura, chame outra sub-rotina que mostre os elementos do vetor A.
Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br 11

EXERCCIOS: 2 - Faa um algoritmo que possui uma sub-rotina

para ler um vetor A de N elementos reais. O valor de N devera ser lido. Aps a utilizao da sub-rotina de leitura, chame outra sub-rotina que mostre a soma dos elementos do vetor A. 3 - Faa um algoritmo que possui uma sub-rotina para ler uma matriz de ordem 2x4 de nmeros inteiros e outra sub-rotina para imprimir os elementos da matriz.
Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br 12

03/10/2011

EXERCCIOS: 4 - Faa um algoritmo para armazenar na memria as


informaes de N alunos, tais como: Nome, idade e sexo. Construa um menu de opes para chamar sub-rotinas que devero executar as seguintes operaes:
a) Ler as informaes de um aluno; b) Emitir um relatrio dos dados ordenado crescentemente pelo Nome; c) Emitir um relatrio ordenado dos dados decrescentemente pela idade; d) Informar qual o percentual de alunos do sexo feminino.

Algoritmos II - UNIDADE 3. parte 1 Ricardo Ribeiro Assink ricardo.assink@unisul.br

13

FIM
Material Original: Osmar de Oliveira Braz Junior
14