Você está na página 1de 16

Fluxogramas

Leandro Tonietto
ltonietto@unisinos.br
ago-09
Introdução

Planejar, modelar e projetar primeiro, depois


fazer (programar).
 Maiores chances de sucesso na programação
 Facilita a resolução, pois primeiro tem-se a
dedicação em chegar a uma solução e depois a
programar efetivamente.
 Programação, também envolve conhecimento da
linguagem de programação, do ambiente de
programação e da resolução de problemas de
compilação. Isto consome tempo e, geralmente,
atrapalha da solução. Então, pense primeiro depois
26-ago-09
programe. Leandro Tonietto 2
Introdução

Diversas ferramentas podem ser utilizadas para


modelagem e projeto de software.
 Diagrama de casos de uso, diagrama de classes, diagrama de
seqüências, modelagem entidade-relacionamento (ER), ...
 Estamos interessados, neste momento, em fluxogramas.
 Fluxograma utilizado para representar graficamente um fluxo /
seqüência de instruções para solucionar um problema
computacional.
 Pode-se criar um fluxograma para cada problema pontual. Por
exemplo, para resolver um programa inteiro ou uma parte
dele, também chamada de rotina, procedimento, função ou
método (veremos mais sobre funções no decorrer da
disciplina).
 Por enquanto, faremos um fluxograma por programa.

26-ago-09 Leandro Tonietto 3


Funcionamento

Todo fluxograma deve:


 Determinar um ponto de início
• Apenas uma marca de início
 Seqüencia de instruções ou comandos
• Instruções imperativas ou comandos
• Instruções de desvio condicional de fluxo.
• Não existem, formalmente, representação para estruturas iteradas
(loops). No entanto, pode-se utilizar alguma simbologia especial para
este tipo de instrução.
 Determinar ponto(s) de fim do fluxo.
• Apenas uma marca de fim
A execução deve começar no ponto inicial e,
obrigatoriamente, terminar num ponto de parada ou de
fim.
26-ago-09 Leandro Tonietto 4
Representação Gráfica - Básico

Início
Início tem apenas a marcação e somente uma saída. Não
possui entrada

Tarefa ou instrução Instrução possui um ponto de entrada e um de saída

Desvio Condição é uma pergunta e possui um ponto de entrada e dois


condicional N de saída; uma para resposta verdadeira e outra caso contrário.
S

Fim é apenas um terminador que recebe uma ou mais entradas


Fim e não tem saída

26-ago-09 Leandro Tonietto 5


Representação Gráfica – Extensão
para disciplina

Tem uma entrada e várias saídas. Geralmente, uma resposta


Desvio para mais que pode ter várias respostas. No condicional simples, é
de duas saídas
1 2 n
possível apenas 2 possibilidades (V ou F, S ou N)

Lê opção de
menu e, caso:
1 2 0

Salva arquivo Carregar arquivo Sair

26-ago-09 Leandro Tonietto 6


Representação Gráfica – Extensão
para disciplina
Instrução para iteração ou repetição de um bloco de
Tarefa ou instrução comandos. Neste caso, tem apenas uma saída para a
próxima instrução e última instrução deve apontar para a
iteração

até n==10; n++

ESCREVE “Digite o salário: “ Note que a instrução “ESCREVER Total / 10” só


será executada quando n for igual a 10. Até lá o
LER salario fluxograma não consegue sair da sua seqüência
interna de comandos.
Todo comando de iteração (loop) contém uma
Total = Total + salario instrução de condição para avaliar de deve
continuar dentro loop ou não.

ESCREVER total / 10

26-ago-09 Leandro Tonietto 7


Exemplo de fluxograma

Início
Exercício do calculo
Ler peso e altura
do IMC.
imc = peso / altura2
 Ler dados
 Calcula IMC imc == 25?
S
Escreve: peso ideal

N
 Se == 25, ideal
imc < 25? Escreve: peso abaixo
 Se < 25, abaixo N
S

 Se > 25, acima Escreve: peso acima

Fim

26-ago-09 Leandro Tonietto 8


Nível de detalhe

O nível de detalhamento do fluxograma depende da


necessidade do programador ou da exigência da
especificação ou do solicitante.
 Pode-se fazer tanto uma mais alto nível para apenas documentar o
procedimento, ou até fazer uma versão a nível de comando da
linguagem de programação ou ainda, fazer as duas versões, em
alto e em baixo nível
 Por exemplo, na instrução imc = peso / altura2, poderia ser
escrita de forma mais textual, como: calcular o imc; se a
questão da fórmula já subentendida pelo programador, então não
há necessidade colocar instrução a nível de código. Em contra-
partida, colocando a fórmula facilidade a atividade de
programação.

26-ago-09 Leandro Tonietto 9


Depois do fluxo

Depois de pensar na solução, de se gerar um


fluxograma, por exemplo, deve-se converter as
instruções para comandos em linguagem de
programação.
Neste momento, algumas instruções até podem
“sobrar” e algumas, certamente, faltaram.
O programador deve escrever os comandos em
linguagem de programação para executar a
funcionalidade que é tratada no fluxograma.

26-ago-09 Leandro Tonietto 10


Exemplo do fluxo ao código

inicio imc
var peso, altura, imc;
ler peso, altura;
altura=altura*altura;
imc = peso/altura;
se imc==25
escrever " Você está com o peso ideal"
se não se imc<25
escrever " Você está abaixo do peso"
se não
escrever " Você está acima do peso"
fim imc

26-ago-09 Leandro Tonietto 11


Liguagem LA1
Comandos:
 VAR <nome> - declara uma variável
 LER <var> - ler dados do usuário
 “” – o que está entre aspas é um texto.
 , - significa que deve-se repetir o comando para que vem depois dela.
 ESCREVER <expressão> - escreve algum texto, variável ou expressão na tela
 + - * / % - são operadores aritméticos, respectivamente, soma, subtração,
multiplicação, divisão e resto da divisão.
 < > == != <= >= - são operadores lógicos. Utilizados para testar
condições. Comumente, utilizados dentro do comando SE. São respectivamente:
menor que, maior que, igual a, diferente de, menor ou igual a e maior ou igual a
 SE <expressão> e SENÃO – comando para fazer desvio de fluxo. O SE testa uma
condição lógica que, em caso verdadeira, o computador deve executar um fluxo de
comandos; caso contrário, ele deve executar o fluxo do SENÃO.
 INICIO <nome_programa> e FIM <nome_programa> - sinaliza início e fim do
programa.

26-ago-09 Leandro Tonietto 12


Exercício de fluxograma

Ler dados de uma turma de alunos de um


disciplina (nome, nota GA e nota GB) e imprimir
média que cada um atingiu na disciplina.
O programa deve ficar lendo dados até que o
usuário opte por parar.
Ao final da leitura, deve ser impresso a média
total da turma e o número de alunos.

26-ago-09 Leandro Tonietto 13


Exercício de fluxograma

Ler dados de notas de um aluno


Calcular a média
Se o aluno passou (>=6), então, verificar qual o
conceito final do aluno (MB>8.5, B>7.5, R>=6); imprimir
nota e conceito.
Se o aluno reprovou (<6), ele pode fazer o GC uma vez
apenas. E a nota do GC deve substituir a do GA ou a do
GB.
 Neste caso, o cálculo da nota deve ser refeito e o programa
deve avaliar se ele passou (ou não) e, se passou, qual foi o seu
“conceito”.
Por fim, tente fazer isto para mais de um aluno. E ao
final do fluxo calcule e imprima a média dos alunos.

26-ago-09 Leandro Tonietto 14


Exercício de fluxograma

Considera operação de retirada de uma conta bancária. Digamos


que a conta possua um saldo e um limite de crédito (que é o
quanto um correntista pode “ficar no negativo”).
Você deve desenhar o fluxo das operações necessárias para
retirada de uma conta corrente; considere que você recebe por
parâmetro no procedimento o saldo da conta, o limite de crédito e
o valor a ser retirado.
Regras para retirada:
 Não é possível/permitido retirar um valor negativo ou zero.
 Não é possível/permitido retirar um valor que ultrapasse o limite da
conta. Portanto, se o saldo pode ficar negativo até o valor do limite
de crédito, abaixo disto, não é possível fazer a retirada.

26-ago-09 Leandro Tonietto 15


Exercício de fluxograma

Considere um procedimento que faz reajuste no salário


de um funcionário.
O salário atual do funcionário é recebido por parâmetro
no procedimento.
O cálculo do reajuste segue as regras:
 Salários abaixo de 1000 reais recebem 15% de aumento.
 Salários acima de 1000 reais e abaixo de 1200 reais recebem
12% de aumento.
 Salários acima de 1200 reais e abaixo de 1700 reais recebem
10% de aumento.
 Por fim, salários acima de 1700 reais recebem 7% de aumento.
Imprimir o salário antes e depois do reajuste.

26-ago-09 Leandro Tonietto 16