Académique Documents
Professionnel Documents
Culture Documents
Programao Estruturada ou
Modular
Sub-rotinas
sendo um
operaes
sada) e
projetados
O Mtodo Top-Down
O Mtodo Top-Down
O Mtodo Top-Down
Funes Simples
Funes Simples
Programa Principal
Sub-rotina
Chamada da Sub-rotina
Programa da Sub-rotina
Sub-rotina1
Cdigo do
programa
Cdigo da
sub-rotina
Cdigo do
programa
Fim
Retorna
<cdigo>
<nome_subrotina>;
Fim
<cdigo>
Fim
Funes Simples - C
As sub-rotinas devem ser
declaradas antes do programa
principal, da seguinte forma:
void <nome_subrotina>( )
{
<declarao das variveis>
<cdigo>
<nome_subrotina>( );
}
<cdigo>
}
Exemplo 1
Exemplo 1 - Algoritmo
Rotina 1
Multiplicao
Rotina 2
Diviso
Exemplo 1 - Algoritmo
Programa Principal
1 Apresentar um menu de seleo com trs opes:
1 Multiplicao
2 Diviso
3 Fim do Programa
2 Ao ser selecionado um valor, a rotina correspondente
dever ser executada;
3 Ao escolher o valor 3, o programa dever ser
encerrado.
Rotina 1 Multiplicao
1 Ler dois valores, no caso as variveis A e B;
2 Efetuar a multiplicao das variveis A e B,
implicando o resultado na varivel R;
3 Apresentar o valor da variver R.
Exemplo 1 - Algoritmo
Rotina 2 Diviso
1 Ler dois valores, no caso as variveis A e B;
2 Efetuar a diviso das variveis A e B, implicando o
resultado na varivel R;
3 Apresentar o valor da variver R.
Observe que em cada rotina sero utilizadas as mesmas
variveis, mas elas no sero executadas ao mesmo tempo
para todas as operaes. Sero utilizadas em separado e
semente para a rotina escolhida.
Opcao = 0
Opcao != 3
Menu:
1 Multiplicao
2 Diviso
3 Fim de programa
Opcao
Fim
Opcao == 2
Diviso
A, B
A, B
R=A*B
R=A/B
Retorno
Retorno
Funo Diviso
Incio
Var real A, B, R;
Leia(A, B);
R = A/B;
Escreva(R);
Fim
Se (Opcao == 2) ento
Diviso;
Fim_se
Fim_enquanto
Fim
Exemplo 1 C parte 1
#include<stdlib.h>
#include<stdio.h>
R = A/B;
printf("%f\n", R);
}
void Multiplicacao( )
{
float A, B, R;
scanf("%f %f", &A, &B);
R = A*B;
printf("%f\n", R);
}
void Divisao( )
{
float A, B, R;
scanf("%f %f", &A, &B);
int main()
{
int opcao;
opcao = 0;
while(opcao !=3)
{
printf("Menu:\n");
printf("1 - Multiplicacao\n");
printf("2 - Divisao\n");
Exemplo 1 C Parte 2
printf("3 - Fim de Programa\n");
scanf("%d", &opcao);
if (opcao == 1)
Multiplicacao( );
if (opcao == 2)
Divisao( );
}
}
<varivel> == <valor2>
Instrues 1
Instrues 1
...
<varivel> == <valorN>
Instrues
Instrues 1
case <valorN> :
<instruesN>
break;
default :
<instrues>
}
Opcao != 3
Opcao = 0
Opcao == 1
Opcao != 3
Fim
Menu:
1 Multiplicao
2 Diviso
3 Fim de programa
Opcao
V
Opcao == 2
Opcao Invlida
Fim_caso
Fim_se
Fim_enquanto
Fim
Funo Multiplicao
Incio
Leia(A, B);
R = A*B;
Escreva(R);
Fim
Funo Diviso
Incio
Leia(A, B);
R = A/B;
Escreva(R);
Fim
Variveis Locais
Podemos declarar variveis locais em blocos de programa,
como os blocos condicionais ou de repetio. Estas variveis
devem ser declaradas no incio do bloco e existiram somente
dentro desse bloco e dos hierarquicamente inferiores.
Escopo de Variveis
O escopo das variveis est relacionado com a sua
visibilidade pelas sub-rotinas e blocos do programa. Uma
varivel global possui um escopo global, pois vista por todo
o programa.
O escopo de uma varivel local pertence somente ao bloco de
cdigo que ela abrange, ou seja, o escopo de uma varivel
declarada dentro de uma sub-rotina toda a sub-rotina. O
escopo de uma varivel declarada dentro de um bloco do
programa toda a hierarquia daquele bloco.
A varivel local s existe dentro do seu escopo.
Escopo de Variveis
Podemos ter variveis com o mesmo nome, desde que tenham
escopos diferentes, ou seja, desde que estejam declaradas em
lugares com hierarquia diferente.
Duas variveis com o mesmo nome com escopos diferentes
no so a mesma. O programa sempre utilizar a varivel do
escopo local que estiver sendo executado.
Por exemplo, tem-se uma varivel global X e uma sub-rotina
com uma varivel local X. Ambas so diferentes, porm
dentro da sub-rotina X corresponder a sua varivel local.
Escopo de Variveis
Programa
X, Y
Sub-rotina 1
A,X
Bloco de repetio
A,B
Sub-rotina 2
A, X
Rotina principal
A, B
Refinamento Sucessivo
O refinamento sucessivo uma tcnica de programao que
possibilita dividir uma sub-rotina em outras sub-rotinas.
O programa calculadora apresentado anteriormente permite
que seja aplicada esta tcnica, pois existem nas duas subrotinas de clculo, instrues que efetuam as mesmas tarefas.
Por exemplo: a entrada e a sada so efetuadas com as
mesmas variveis.
A soluo definir as variveis A, B e R como globais e
construir mais duas sub-rotinas, uma para entrada e a outra
para sada. As sub-rotinas de clculo sero diminudas em
nmero de linhas, pois tudo o que se repete ser retirado.
Refinamento Sucessivo
Algoritmo Calculadora
Var real A, B, R;
Incio
Var int Opcao;
Opcao = 0;
Enquanto (opcao != 3) faa
Escreva(Menu);
Escreva(1 Multiplicao);
Escreva(2 Diviso);
Escreva(3 Fim de Programa);
Leia(Opcao);
Se (Opcao != 3) ento
Caso (Opcao == 1) faa Multiplicao;
Caso (Opcao == 2) faa Diviso;
Refinamento Sucessivo
Funo Entrada
Incio
Escreva(Entre um valor para A:);
Leia(A);
Escreva(Entre um valor para B:);
Leia(B);
Fim
Funo Multiplicao
Incio
Escreva(Multiplicao);
Entrada;
R = A*B;
Sada;
Fim
Funo Sada
Incio
Escreva(O resultado de A com B = , R);
Fim
Funo Diviso
Incio
Escreva(Diviso);
Entrada;
R = A/B;
Sada;
Fim