Buscar

Tecnica-Programacao-com-Fluxograma

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 1/38 
 
 
 
 
TÉCNICAS DE PROGRAMAÇÃO 
 
FLUXOGRAMA 
 
PIC - Microchip 
 
 
 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 2/38 
 
Técnicas de programação 
 
Fluxograma 
 
Introdução 
 
Conhecer e até dominar uma linguagem de programação (seus comandos e funções) é relativamente simples. 
Este conhecimento permite que programas simples ou complexos possam ser escritos e tarefas sejam 
realizadas. Então podemos concluir que fazer um programa que realiza tarefas também é simples. É claro 
que precisamos conhecer como as tarefas são realizadas e obviamente,escrevermos uma seqüência de 
instruções (ou comandos) para que isso aconteça. 
 
Hoje qualquer aplicação envolve equipamentos e dispositivos eletrônicos, e em muitos casos,envolve um 
programa para que funcionem da maneira esperada pelo usuário. 
 
Alguns exemplos simples 
 
- Bilhete único: processo de pagamento de passagem no transporte urbano utilizando-se um cartão que 
contém valores, datas e horários gravados. Considerando apenas o item “valor da passagem”, a 
aproximação do cartão do leitor faz com que o valor seja debitado do cartão e um novo saldo seja 
gravado. É claro que outras operações são realizadas em conjunto e isto envolve a aplicação de um 
componente eletrônico, tanto no cartão como no leitor capaz de trocar informações entre si, o que 
obriga a existência de uma complexa seqüência de tarefas que são realizadas a partir de um programa 
gravado no componente do cartão e no componente do leitor. Tudo isso para o simples ato de pagar 
uma passagem de ônibus. 
 
- Telefone celular: Considerando apenas o fato do aparelho ligado, existe uma constante troca de 
informações com uma estação radio-base (ERB) utilizando o canal de sinalização que identifica o 
aparelho, o assinante, a qualidade de sinal recebido e a localização física. Um programa específico no 
processador interno se encarrega de realizar estas tarefas. Se houver uma ligação, mais dois canais são 
ativados (controle e voz) e outros programas vão realizar as tarefas envolvidas na manutenção da 
conexão e na codificação e decodificação da voz. 
 
Foram expostos acima apenas dois fatos comuns, que no dia a dia facilita a vida da maioria das pessoas e 
ninguém percebe, e ainda envolve algum tipo de programa que realiza inúmeras tarefas (simples ou 
complexas). Com a evolução da tecnologia da construção de semicondutores, processadores complexos 
tiveram seu custo drásticamente reduzidos e como conseqüência, seu uso em aparelhos e dispositivos 
domésticos com larga aplicação tornou-se comum. 
 
O técnico atual necessita conhecer como funcionam os processadores e naturalmente, ter condições de 
escrever e/ou alterar programas em qualquer modelo disponível no mercado. A técnica de programação mais 
interessante que se pode utilizar é o fluxograma. Para utilizá-lo não é necessário nenhum conhecimento de 
linguagem de programação de um modelo especifico de processador. O importante é conhecer o processo 
que se deseja controlar e então realizar o fluxograma. 
 
Antes de atacar o problema,é importante que as três leis dos controladores/processadores sejam conhecidas: 
 
1ª - Um controlador/processador cumpre exatamente as instruções dadas, sem discussão. 
 
2ª - Um controlador/processador não toma iniciativa em nenhuma ocasião, mesmo quando o desastre é 
iminente. 
 
3ª - Um controlador/processador jamais erra, quem erra é o programador. 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 3/38 
Definição 
 
“Uma figura vale mais que mil palavras” - (atribuída a Fred R. Barnard – executivo de vendas em 1921 - 
que disse ser um provérbio chinês) 
 
Um fluxograma é a representação gráfica da definição, análise ou solução de um problema onde símbolos 
são utilizados para representar operações, dados, fluxos, equipamentos etc.. 
 
Fluxograma é uma ferramenta originalmente criada na indústria de computadores para mostrar os diversos 
passos envolvidos em um programa. Provavelmente é o método mais antigo criado para representar uma 
seqüência de atividades ou comandos. 
 
É constituído por um diagrama que utiliza figuras geométricas (quadrados, retângulos, losangos, círculos 
etc.) conectados por linhas e flechas, onde cada figura representa um passo no programa e as flechas 
representam a seqüência em que os passos ocorrem. 
 
A utilização de fluxograma apresenta algumas vantagens: 
 
- São fáceis de fazer e compreender (melhor que um texto descritivo). 
 
- Demonstram claramente o fluxo do programa ou atividade usando símbolos padronizados. 
 
- Facilmente atualizados ou modificados. 
 
A quantidade de informação que se coloca no fluxograma é suficiente para a compreensão do comando, 
instrução ou processo. 
 
 
O detalhamento deve ser evitado em favor da compreensão rápida. 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 4/38 
Símbolos 
 
Os símbolos utilizados na construção de um fluxograma são básicamente os mostrados na fig.1: 
 
 
Começo/fim – indica o começo e o fim de uma seqüência de comandos ou instruções. 
 
 
 
 
Processo/comando/instruções – indica um procedimento ou operação. 
 
 
 
 
 
Decisão – ponto em que dois ou três caminhos podem ser escolhidos. 
 
 
 
 
 
Sub-rotina – indica outro fluxograma contendo uma seqüência de comandos ou 
instruções. 
 
 
 
Quebra de página – indica que o fluxograma continua em outra página. 
 
 
 
 
Retorno de página – indica que em vem de outro fluxograma em outra página. 
 
 
 
 
Flecha de sentido – indica direção que o fluxo de comandos ou instruções seguem 
 
 
 
Linha de interligação – conecta os diversos símbolos do fluxograma 
 
 
Fig. 1 – Símbolos usualmente empregados em fluxograma. 
 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 5/38 
Regras Básicas 
 
Clareza e simplicidade na construção de um fluxograma são essenciais. Logo, detalhes de sistema ou 
complexidades devem ser evitados logo no início do desenvolvimento do fluxograma. 
 
Texto explicativo de alguns trechos de comandos/instruções podem (e devem) ser incluídos, mas devem ser 
breves. 
 
A combinação de fluxograma e textos explicativos costuma ser bastante eficiente na compreensão e solução 
de problemas. 
 
a) Início de um fluxograma: 
 
A primeira providencia é executar o projeto eletro-eletrônico completo com as seguintes informações: 
 
- Diagrama funcional: contendo os sinais de entrada (vindos do campo – sensores,botões etc.) e saída 
(retornam para o campo – lampadas, relés etc.). 
- Tabela de Estado ou Tabela Verdade: indica todas as possibilidades que os sinais de entrada/saída 
podem assumir. 
- Gráfico Funcional: mostra como os diversos elementos de entrada e saída se relacionam no tempo. 
- Descritivo funcional: conhecimento e descrição do processo a ser controlado detalhadamente. 
 
b) Montagem de um fluxograma: 
 
O fluxograma é a seqüência de um raciocínio lógico portanto, também deve ter uma disposição dos diversos 
símbolos de forma lógica. 
 
Então, algumas regras simples devem ser seguidas: 
 
1. Iniciar do topo para a base da folha. 
 
2. Desenvolvimento lateral deve ser da esquerda para a direita, preferencialmente. 
 
3. Nas quebras de página, identificar numéricamente a página de destino/retorno. 
 
4. Sempre empregar as flechas de sentido para maior clareza do fluxo de raciocínio. 
 
5. Numerar as páginas seqüencialmente. 
 
6. Escrever as operações dentro dos símbolos de forma clara e compacta. 
 
7. Fazer comentários quando a descrição das operações não for suficiente. 
 
c) Uso dos símbolos: 
 
O uso dos símbolos também segue algumasregras. Evitar criar novos símbolos e, se não houver alternativa, 
explicar a função do novo símbolo detalhadamente. 
 
1 - Os símbolos possuem apenas uma entrada e uma saída (com exceção do símbolo de decisão) como 
mostra a fig.2: 
 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 6/38 
Fig.2 – Entra/saída de símbolos funcionais. 
 
2 - O símbolo de decisão possui apenas 1 entrada, mas pode ter 2 ou 3 saídas de acordo com as 
necessidades da lógica. A fig. 3 mostra as opções possíveis. 
Fig. 3 - Opções de saída para símbolo decisão. 
 
3 – Toda a lógica admite vários caminhos para atingir uma mesma solução. Portanto, escolher um 
caminho lógico entre vários exige uma decisão com o emprego do símbolo adequado (losango), como 
mostra a fig.4a. O desvio a partir de uma linha de interligação (fig.4b) não é possível. 
Fig. 4 – Opção Correta de desvio ou derivação lógica. 
 
sim
a) Desvio Correto b) Desvio Não Possível
não
sim >=
não <=
< >
=
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 7/38 
4 – Vários caminhos lógicos convergindo para uma única solução é comum e, como já foi observado, a 
um símbolo lógico associa-se uma única entrada. Conseqüência, os vários caminhos convergentes se 
unem sobre uma linha de interligação (fig.5a). Evitar o uso igual ao da fig.5b para maior clareza e 
organização do fluxograma. 
Fig.5 – Convergência de Caminhos lógicos. 
 
5 - Podemos verificar que as figuras 2, 3, 4 e 5 mostram símbolos lógicos conectados por linhas de 
interligação, e nestas foram colocadas flechas de sentido, indicando com clareza o fluxo do raciocínio 
lógico ou da informação. É importante o uso da flecha de sentido (não deve haver dúvida quanto à 
direção do raciocínio). 
 
6 - A função/instrução ou operação desejada deve ser escrita no interior do símbolo e deve ser sucinta, 
compacta, suficiente para total compreensão. Se houver necessidade de maior detalhe, este pode ser 
escrito externamente ao símbolo como um comentário. 
 
7 - A fig.6 mostra a disposição dos símbolos lógicos na área de uma página. Não se trata de uma norma 
mas uma regra que a experiência mostra ser bastante funcional. A disposição do fluxograma em uma 
folha (A4) pode ser em três ou quatro colunas onde a coluna central recebe o fluxo principal do 
raciocínio. Derivações ou retornos ocupam as demais colunas. Observe que nesta disposição surgem 
áreas para comentários ou observações, ao mesmo tempo em que mantém o trabalho organizado. Se a 
apresentação for por meio eletrônico, a disposição pode ser modificada e ocupar menos área. 
a) Forma Adequada a) Forma não Adequada
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 8/38 
ROT_PRINC
ATIVA 
TEMPO t1
ATIVA 
TEMPO t2
t2 = 10s ?
CH = 1 ?
ABRE 
VÁLVULA
A
F_CH = 0 C
F_CH = 1 ?
B
t2 = 10s
t2 < 10s
= 0
(ABERTA)
= 1
(FECHADA)
= 1
(CONTINUA FECHADA APÓS 10s)
= 0
(ABRIU - PRIMEIRA VEZ)
Vai p/ Pg..2/10
Inicia tempo para 
modo "SLEEP" 
(baixo consumo)
Vem da Pg..2/10
Verifica estado da chave CH:
- se permanece fechada 
para t2>=10s
- se abriu ao menos uma vez 
para t2<10s
 
Fig. 6 - Exemplo de fluxograma 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 9/38 
d) Fazendo o fluxograma 
 
Para iniciar um fluxograma é necessário que tenhamos um projeto, conhecimento do funcionamento deste 
projeto e o seguinte material: 
 
- Papel (preferencialmente rascunho) em quantidade. 
- Lápis (vários) ou lapiseira (com muita carga) – não usar canetas. 
- Borracha (grande). 
 
Por maior que seja seu conhecimento do processo ou funcionamento do projeto,o fluxograma não nasce 
pronto. Começa de uma idéia simples e vai crescendo e evoluindo até que atenda a todos (todos mesmo) os 
requisitos funcionais do processo. 
 
Logo, muita coisa vai ser desenhada, escrita, apagada, redesenhada, reescrita etc., etc, e mais alguns etc.. 
 
O trabalho está confuso, atrapalhado enfim, uma bagunça difícil de entender, é hora de redesenhar 
organizadamente todo o fluxograma desenvolvido e estudá-lo novamente. 
 
Todo o documento/informação substituído por um documento novo ou redesenhado não deve ser jogado 
fora. Em várias ocasiões o raciocínio original contém a melhor solução.Não tenha o mesmo trabalho duas 
vezes. Quando tudo estiver terminado (testado, retestado, funcionando), descartar os documentos antigos ou 
modificados. 
 
Fluxograma Básico – Projeto 1 
 
Vamos adotar o Projeto 1 - Acionamento de um Led - como início do nosso procedimento. A fig.7 mostra o 
diagrama funcional do projeto contendo as informações dos sinais de entrada e saída. 
 
Para facilitar a compreensão e organizar o projeto, desenhou-se a entrada à esquerda e a saída à direita. O 
retângulo denominado MCU (microcontroller unit - microcontrolador) representa a unidade de controle que 
deve produzir uma saída em função de um estado da entrada. No caso do diagrama funcional da fig.7, a 
entrada é representada pelo botão B1, e a saída é representada pelo led L1. 
Fig. 7 - Diagrama funcional - Projeto 1 
 
Considerando como o botão B1 e o led L1 devem operar no circuito, devemos elaborar uma Tabela de 
Estados como mostra a fig. 8: 
 
B1
RB1
R2
L1
MCU
RA2
R1
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 10/38 
Tabela de Estados 
 
B1 Livre 1 Pressionado 0 
 
L1 Apagado 0 Aceso 1 
 
Fig.8 - Tabela de Estados - Projeto 1 
 
A função desta tabela é determinar os níveis lógicos (0 ou 1) que os dispositivos de entrada e saída vão 
operar. O que pode parecer óbvio ao olharmos o diagrama funcional, quando fizermos a análise de operação 
no fluxograma podem surgir muitas dúvidas e erros. Portanto, a elaboração da Tabela de Estado é 
importante. 
 
Analisando o caso da fig.8, podemos afirmar que: 
 
- O botão B1 (tipo NA – normal aberto) mantém seu contato aberto quando seu acionamento estiver 
livre (ou não pressionado). De acordo com a fig.7, a entrada do microcontrolador fica conectada ao 
positivo da fonte (Vdd) através do resistor R1, logo, o nível lógico da entrada quando B1 estiver livre 
(não pressionado) será 1 (um). Quando o botão B1 tiver seu acionamento pressionado o contato deve 
se fechar, fazendo com que o negativo da fonte (Vss) se ligue à entrada do controlador logo, o nível 
lógico da entrada quando B1 estiver pressionado será 0 (zero). Atenção para o fato que, nesta 
situação,deve circular uma corrente pelo resistor R1. Para que o consumo do circuito não seja 
elevado e, ao mesmo tempo, a resistência de contato de B1 não interfira no circuito, sugerimos que 
R1 seja dimensionado para uma corrente não menor que 1mA. 
 
- O led L1 fica apagado se não houver tensão sobre R2, o que implica nível de tensão nulo na saída do 
controlador logo, o nível lógico da saída quando L1 estiver apagado será 0 (zero). Quando L1 estiver 
aceso é porque existe tensão na saída do controlador logo, o nível lógico da saída quando L1 estiver 
aceso será 1 (um). 
 
O simples fato de possuirmos o diagrama funcional (fig.7) e a tabela de estado (fig.8) não nos possibilitam 
entender como o circuito deve funcionar.É necessário que haja uma descrição das operações ou seqüências 
que se desejam realizar. A descrição operacional deve conter a seqüência (ou seqüências) de funcionamento 
que o conjunto deve realizar. O grau de detalhamento deve ser suficiente para que todas as operações de 
funcionamento sejam analisadas.A fig.9 procura mostrar um exemplo: 
 
DESCRITIVO OPERACIONAL 
1- Energizar o dispositivo com B1 livre, L1 apagado. 
2- Mantendo B1 livre, L1 permanece apagado. 
3- Pressionando B1, L1 acende. 
4- Mantendo B1 pressionado, L1 permanece aceso. 
5- Liberando B1, L1 apaga. 
 
Fig.9 - Descritivo Operacional - Projeto 1 
 
A formade expor a operação ou seqüência lógica é simples e direta. A descrição da fig.9 poderia ser 
resumida de uma forma mais direta,ainda: 
 
- Aperta o botão, acende o led. 
- Solta o botão, apaga o led. 
 
Elaborar uma Tabela Verdade também ajuda a visualizar as diversas situações e principalmente, permite 
estipular todas as combinações possíveis que as entradas podem assumir e estabelecer as combinações 
possíveis que as saídas podem ter. No caso do Projeto 1, a Tabela Verdade tem o aspecto da fig.10: 
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 11/38 
B1 L1 
0 1 
1 0 
 
Fig.10 - Tabela Verdade – Projeto 1 
 
A Tabela Verdade coloca de forma simples e objetiva o descrito na Tabela de Estado e no Descritivo 
Operacional. 
 
Uma outra forma de descrever a operação de um sistema, principalmente envolve temporizações (a Tabela 
Verdade não consegue trabalhar intervalos de tempo de forma eficiente), é a utilização de gráficos. 
 
A fig.11 mostra o gráfico que representa o funcionamento do sistema do Projeto 1 exatamente de acordo 
com o Descritivo Operacional e a Tabela Verdade. 
Fig. 11 – Gráfico Funcional – Projeto 1. 
 
Vamos observar que o o diagrama é um retrato mais claro e objetivo do funcionamento do Projeto 1 do que 
o Descritivo Operacional e a Tabela Verdade. Óbviamente que os parametros de funcionamento já foram 
definidos anteriormente na fig.8 portanto, fica fácil entender o texto do Descritivo e a Tabela Verdade. Os 
comentários incluídos relativos ao funcionamento de cada componente (B1 Livre, L1 Aceso etc.) tem apenas 
o objetivo de melhorar a compreensão dos diversos estados lógicos durante o funcionamento. Não são 
obrigatórios, mas podem ser úteis. 
 
As figuras 7 e 11 dispõem de todas as informações necessárias para o desenvolvimento do fluxograma 
lógico do Projeto 1 - Acionamento de um Led. 
 
Para iniciarmos o fluxograma, devemos recorrer aos símbolos da fig.1 e utilizar aqueles que atendam às 
nossas necessidades. Portanto, mãos à obra. 
 
Um fluxograma tem que possuir um início então,devemos começar com o símbolo que representa o início, 
como mostra a fig.12: 
Fig.12 - Início fluxograma - Projeto 1 
ROT_PRINC
L1
0
L1
 
A
ce
so
L1
 
A
pa
ga
do
1
B1
0
1
B
1 
Pr
es
sio
n
ad
o
B
1 
Li
v
re
L1
 
A
pa
ga
do
L1
 
A
ce
so
L 1
 
A
pa
ga
do
t
t
B
1 
Pr
es
sio
n
a d
o
B
1 
Li
v
re
B
1 
Li
v
re
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 12/38 
Observar que foi colocado um nome dentro do símbolo de início - Rot_Princ. Este nome (pode ser qualquer 
um) é uma referencia ou endereço quando o programa do controlador for escrito. 
 
Na fig.9 o Descritivo Operacional especifica como o circuito deve operar desde as condições iniciais. 
Portanto, para fazermos com que L1 esteja apagado (nível lógico zero), precisamos saber qual é o estado do 
botão B1. 
 
Para saber o estado de qualquer dispositivo (interno ou externo), precisamos “olhar” para o dispositivo. E 
“olhar” para o dispositivo implica em perguntar o seu estado lógico naquele instante. Se existe uma 
pergunta, existe uma decisão (o estado lógico do dispositivo está alto - 1 ou baixo - 0). Vamos incluir no 
fluxograma esta pergunta na fig.13: 
Fig.13 – Determinação do estado de B1 – Projeto 1 
 
Dentro do símbolo que representa “decisão” e que, logicamente, é uma pergunta, colocamos a questão: 
 
B1 = 1? 
 
Ou seja, perguntamos se o estado lógico do botão B1 é igual a 1 (um) .Na fig.8 encontra-se a Tabela de 
Estados que determina como raciocinar o estado lógico do botão B1. Como o botão B1 só pode assumir dois 
estados, somente duas respostas são possíveis. Então, no símbolo de decisão assumimos duas saídas onde 
respondemos à questão proposta: 
 
Sim – B1 livre (logo B1 = 1) 
Não – B1 pressionado (logo B1 = 0) 
 
Após cada resposta, uma instrução deve ser dada. Na fig.14 acrescentamos as duas instruções necessárias 
para cumprir o Descritivo Operacional: 
Fig.14 – Acréscimo das Instruções - Projeto 1 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 0
L1 = 1
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 13/38 
 
Então, se B1 = 1 (sim - B1 livre) devemos desligar o led L1(L = 0) .Se B1 = 0 (não - B1 pressionado) 
devemos ligar o led L1 (L1 = 1). 
 
Ao que tudo indica, o fluxograma está completo. O Descritivo Operacional foi atendido integralmente e 
portanto, a fig.14 representa o fluxograma do projeto 1. 
 
Vamos olhar com mais atenção o fluxograma da fig.14. Vamos seguir o caminho lógico que ele representa, 
simulando cada uma das opções de caminho disponível, como podemos ver na fig.14a onde estabelecemos a 
condição: 
 
1) Botão B1 está livre (B1 = 1). 
 
Fig.14a – Análise Primeiro Caminho – Projeto 1 
 
Primeiro Caminho (fig.15a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado do botão B1: 
# B1 livre (B1 = 1): segue para comando 
 
c) Apaga L1 (L1 = 0). 
 
 
 
Observe que, ao tomarmos a decisão de B1 = 0, adotamos o desvio para L1 = 0 ou seja, descartamos a outra 
opção B1 = 1. Como não existe nenhuma linha de interligação após a instrução L1 = 0, paramos nesta 
posição e não vamos para nenhum outro caminho (eternamente). Se neste período B1 mudar de estado (B1 = 
1) nunca saberemos. 
 
Vamos ver a outra opção de caminho, mostrada na fig.14b porém, com a seguinte condição: 
 
1) Botão B1 está pressionado (B1 = 0). 
 
Fig.14b – Análise Segundo Caminho – Projeto 1 
 
Segundo Caminho (fig.15a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado do botão B1: 
# B1 pressinado (B1 = 0): segue para comando 
 
c) Acende L1 (L1 = 0). 
 
 
 
O mesmo problema acontece se adotarmos o desvio para L1 =1, ou seja, descartando a opção B1 = 0. Após a 
instrução L1 = 1, não vamos para lugar nenhum. 
 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 0
L1 = 1
Fig. 14b
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 0
L1 = 1
Fig. 14a
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 14/38 
Se quisermos saber se o estado de B1 sofreu alteração, será necessário voltar ao ponto do fluxograma 
imediatamente anterior à pergunta sobre o estado do botão B1. E este retorno deve ser feito por ambos os 
caminhos lógicos propostos. A fig.15 mostra o retorno anterior à verificação do estado do botão B1: 
Fig.15 - Fluxograma Completo - Projeto 1 
 
Agora podemos verificar constantemente o estado do botão B1 e, a partir desta verificação, podemos ligar ou 
desligar o led L1. 
 
Simulando a operação do Projeto 1 na fig.15a, partindo das condições abaixo (na fig.11 o gráfico mostra a 
condição inicial de cada componente): 
 
1) Botão B1 está livre (B1 = 1). 
2) Led L1 apagado (L1 = 0). 
 
Fig.15a – Análise Primeiro Caminho – Projeto 1 
 
Primeiro Caminho (fig.15a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado do botão B1: 
# B1 livre (B1 = 1): segue para comando 
 
c) Apaga L1 (L1 = 0). 
 
d) Retorna para verificar estado de B1 em 
ROT_PRINC 
 
 
 
Fica claro porque o sistema é dinâmico: enquanto B1 estiver livre (B1 = 1) o ciclo operacional vai percorrer 
sempre este caminho escolhido. O outro caminho possível é ignorado (como se não existisse). 
 
Agora vamos simular a operação do Projeto 1 considerando que o botão B1 foi pressionado. O caminho a ser 
seguido vai considerar as condições: 
 
1) Botão B1 pressionado (B1 = 0). 
2) Led L1 apagado (L1 = 0). 
 
A fig.15b mostra o caminho analisado: 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)L1 = 0
L1 = 1
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 0
L1 = 1
Fig.15a
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 15/38 
 
Fig.15b – Análise Primeiro Caminho – Projeto 1 
 
Segundo Caminho (fig.15b): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado do botão B1: 
# B1 pressionado (B1 = 0): segue para comando 
 
c) Acende L1 (L1 = 1). 
 
d) Retorna para verificar estado de B1 em 
ROT_PRINC. 
 
 
 
Da mesma forma que o Primeiro Caminho, enquanto B1 estiver pressionado (B1 = 0) o ciclo operacional vai 
percorrer sempre este caminho escolhido. O outro caminho possível é ignorado (como se não existisse). 
 
Notar que: 
 
- O fluxograma é um ciclo fechado dinâmico, supervisionando constantemente o estado das entradas e 
acionando as saídas de acordo com a lógica proposta. 
- Através do fluxograma todas as opções possíveis de operação são analisadas e testadas. 
- A partir do fluxograma é possível escolher os caminhos lógicos que envolvem o menor número de 
instruções, isto é, o caminho mais curto ou o código-fonte mais eficiente. 
 
Para a realização do fluxograma da fig.15 empregamos apenas três símbolos: 
 
- Início. 
- Decisão (ou desvio). 
- Instrução/operação. 
 
 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 0
L1 = 1
Fig.15b
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 16/38 
Desvio Interno – Flag. – Projeto 2 
 
Existem situações que exigem desvio no processo lógico, e estes não podem depender de um agente externo 
ligado a uma entrada. A existência de um dispositivo externo implica na necessidade de algo ou alguém 
interferindo no processo. Um desvio interno é provocado exclusivamente por processos internos. Apenas a 
seqüência lógica determina a sua utilização ou não, independente de uma ação externa. 
 
Para analisar o uso e onde colocar um desvio interno – ou flag (bandeira) – vamos adotar o Projeto 2 – Ligar 
e Desligar por Toque. A fig.16 mostra o diagrama funcional do Projeto 2 contendo as informações dos sinais 
de entrada e saída. 
Fig.16 – Diagrama funcional Projeto – 2 
 
Olhando a fig.7 - Projeto 1 - verificamos que o diagrama funcional é idêntico ao da fig.16 – Projeto 2 - 
portanto, são válidas as mesmas considerações feitas para a fig.7 - Projeto 1. 
 
Elaborando a Tabela de Estados na fig.17: 
Tabela de Estados 
 
B1 Livre 1 Pressionado 0 
 
L1 Apagado 0 Aceso 1 
 
Fig.17 - Tabela de estados – Projeto 2. 
 
Da mesma forma, a fig.17 é igual à fig.8. A fig.18 mostra o Descritivo Operacional do projeto 2: 
 
DESCRITIVO OPERACIONAL 
1- Energizar dispositivo com B1 livre, L1 apagado. 
2- Mantendo B1 livre, L1 permanece apagado. 
3- Pressionado B1, L1 acende. 
4- Mantendo B1 pressionado, L1 permanece aceso. 
5- Liberando B1, L1 permanece aceso. 
6- Mantendo B1 livre, L1 permanece aceso. 
7- Pressionando B1, L1 apaga. 
8- Mantendo B1 pressionado, L1 permanece apagado. 
9- Liberando B1, L1 permanece apagado. 
B1
RB1
R2
L1
MCU
RA2
R1
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 17/38 
10- Mantendo B1 livre, L1 permanece apagado. 
 
Fig.18 - Descritivo Operacional – Projeto 2. 
 
Agora, a comparação da fig.18 com a fig.9 mostra que o funcionamento de cada um dos dispositivos é 
completamente distinto, apesar de possuírem o diagrama funcional (fig.7 e16) e a tabela de estados (fig.8 e 
17) idênticos.A diferença vai ocorrer na unidade de controle (MCU) que conterá a lógica adequada a cada 
função. 
 
De maneira simples, o descritivo operacional da fig.18 pode ser resumido como: 
 
- Aperta o botão para acender o led. 
- Aperta o botão para apagar o led. 
 
A Tabela Verdade para o Projeto 2 fica de acordo com a fig.19: 
 
B1 L1 
0 0 
1 1 
0 1 
1 0 
0 0 
 
Fig.19 - Tabela Verdade – Projeto 2. 
 
Para atender à nova situação, a Tabela Verdade mostra uma seqüência de operação, uma vez que a saída L1 
pode assumir dois estados distintos para o mesmo estado na entrada B1. Isto se deve porque o Projeto 2 é um 
circuito bi-estável, ou seja, a mudança de estado da saída é estável, mesmo que a entrada retorne ao estado 
original. O gráfico da fig.20 torna a operação descrita na fig.18 mais clara (observe no gráfico que o tempo 
que B1 fica pressionado não interfere na operação de L1). 
Fig.20 – Gráfico funcional - Projeto 2. 
 
Com todas as informações disponíveis, vamos começar a desenhar o fluxograma. Em uma primeira análise, 
podemos observar que B1 livre não tem nenhuma ação (nem liga L1 ou desliga L1). Então podemos 
começar o fluxograma exatamente nesta ação: 
 
L1
 
A
ce
so
B
1 
Li
v
re
B
1 
Pr
es
sio
n
ad
o
L1
 
A
ce
so
L1
 
A
pa
ga
do
B
1 
Pr
es
sio
n
ad
o
B
1 
Pr
es
sio
n
ad
o
B
1 
Li
v
re
B
1 
Li
v
re
L1
0
L1
 
A
pa
g a
do
B
1 
Li
v
re
1
B1
0
1
L1
 
A
pa
ga
do
t
B
1 
Pr
es
sio
n
ad
o
B
1 
Li
v
re
t
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 18/38 
Início, verificação do estado de B1. 
Fig.21 – Determinação do estado de B1. 
 
De acordo com a fig.21 iniciamos o processo em ROT_PRINC e verificamos o estado do B1. Considerando 
que B1 está livre (portanto B1 = 1), retornamos à verificação do estado de B1 novamente. 
 
Lembre-se sempre que o processo é dinâmico e não pára simplesmente após uma condição satisfeita. 
Portanto, deve-se retornar à supervisão porque em algum momento o estado do botão B1 pode ser alterado. 
 
Vamos observar a Tabela Verdade da fig.19 e o gráfico funcional da fig.20. Podemos ver que, se o botão B1 
for pressionado, isto é, B1 = 1, duas ações distintas podem ser adotadas: 
 
- Se o led L1 estiver apagado (L1 = 0), deve-se acendê-lo. 
- Se o led L1 estiver aceso (L1 = 1), deve-se apagá-lo. 
 
Como não há conhecimento prévio do estado do led L1, é necessário verificar seu estado e só depois, agir. 
Com base neste raciocínio, o fluxograma será acrescentado com a decisão (pergunta) para verificação do 
estado do led L1: 
Fig.22 – Determinação do estado de L1 + ação correspondente. 
 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
L1 = 0 L1 = 1
SIM NÃO
(Ligado) (Desligado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 19/38 
Agora o fluxograma da fig.22 está completo e atende aos requisitos de funcionamento descritos nas fig.18,19 
e 20. Vamos fazer a análise do funcionamento do dispositivo a partir do fluxograma da fig.22: 
 
Fig.22a – Análise Primeiro Caminho – Projeto 2 
 
Primeiro Caminho (fig.22a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado do botão B1: 
# B1 livre (B1 = 1): retorna para verificar B1. 
 
 
 
Fig.22b – Análise Segundo Caminho – Projeto 2 
 
Segundo Caminho (fig.22b): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para verificar 
L1. 
 
c) Verifica o estado de L1: 
# L1 apagado (L1 = 0): segue para comando. 
 
d) Comando: acende L1 (L1 = 1). 
 
e) Retorna para verificar B1. 
 
 
 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
L1 = 0 L1 = 1
SIM NÃO
(Ligado) (Desligado)
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
L1 = 0 L1 = 1
SIM NÃO
(Ligado) (Desligado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 20/38 
Fig.22c – Análise Terceiro Caminho – Projeto 2 
 
Terceiro Caminho (fig.22c): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado do botão B1: 
# B1 pressionado (B1= 0): segue para verificar 
L1. 
 
c) Verifica o estado de L1: 
# L1 aceso (L1 = 1): segue para comando. 
 
d) Comando: apaga L1 (L1 = 0). 
 
e) Retorna para verificar B1. 
 
 
Alerta: Um fluxograma permite enxergar, analisar e simular todas as opções e possibilidades 
que um sistema dispõe. Mesmo a situação mais absurda deve ser analisada. 
 
Ora, sob todos os aspectos, atendemos plenamente os requisitos de funcionamento propostos. Atendemos 
mesmo? Verificamos efetivamente todos os aspectos de funcionamento? Testamos todas as possibilidades? 
 
Então, retornando à fig.22b e considerando que B1 está pressionado (B1 = 0), na seqüência vamos verificar 
o estado do led L1 que, para efeito de raciocínio, está desligado (L1 = 0). A ação adotada será ligar L1 (L1 = 
1) e retornar para a verificação do estado do botão B1. 
 
Vamos considerar que, por um motivo qualquer, B1 permanece pressionado (não foi liberado, logo, B1 
continua igual a 0). Como B1 continua pressionado (fig.22c), voltamos a verificar o estado do led L1 que, 
agora, se encontra aceso(L1 = 1). A ação adotada será desligar L1 (L1 = 0) e retornar para verificação do 
botão B1. 
 
Como B1 ainda está pressionado (fig.22b), voltamos a verificar o estado do led L1 que, agora, está apagado 
(L1 = 0). A ação adotada será ligar o led L1 e retornar para... 
 
Enquanto o botão B1 se mantiver pressionado, o led L1 será aceso e apagado constantemente (pisca-pisca). 
Se considerarmos a velocidade que a informação gira no fluxograma é muito alta, o led L1 ficará “meio” 
aceso aos nossos olhos. Quando liberarmos o botão B1 (B1 fica igual a 1) o led L1 assume o último 
comando (ou instrução) dado e, como podemos perceber, não sabemos se o led ficará aceso ou apagado. 
 
Como o caminho para as ambas as situações é o mesmo (possui o mesmo número de instruções e consome o 
mesmo número de ciclos de máquina) a possibilidade de termos o led L1 aceso é de 50%. 
 
Conclusão: Os requisitos de funcionamento proposto não foram atendidos. 
 
Podemos tentar uma outra solução no fluxograma para contornar o problema de L1 piscar enquanto B1 
estiver pressionado, ao mesmo tempo em que seja certa a função de Ligar ou Desligar o led L1. 
 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
L1 = 0 L1 = 1
SIM NÃO
(Ligado) (Desligado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 21/38 
Podemos desenhar um novo fluxograma onde verificamos o estado do led L1 para adotarmos a ação do 
botão B1 em seguida: 
Fig.23 – Nova solução para fluxograma da fig.22. 
 
Comparando o fluxograma da fig.22 com o fluxograma da fig.23 podemos observar o aumento do número 
de instruções para realizar a mesma tarefa. 
 
Vamos fazer a análise do funcionamento do dispositivo utilizando o fluxograma da fig.23a considerando as 
condições: 
 
1) Botão B1 está livre (B1 = 1). 
2) Led L1 apagado (L1 = 0). 
 
Fig.23a – Análise Primeiro Caminho – Projeto 2 
 
Primeiro Caminho (fig.23a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 apagado (L1 = 0): segue para 
verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para 
verificar L1. 
 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 22/38 
Pressionado o botão B1, o fluxograma da fig.23b mostra o novo caminho para as condições: 
 
1) Botão B1 pressionado (B1 = 0). 
2) Led L1 apagado (L1 = 0). 
 
Fig.23b – Análise Segundo Caminho – Projeto 2 
 
Segundo Caminho (fig.23b): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 apagado (L1 = 0): segue para 
verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para 
comando. 
 
d) Comando: desliga L1 (L1 = 0). 
 
e) Retorna para verificar L1. 
 
 
Como podemos ver, ao percorrer o caminho da fig.23b a Lampada L1 foi acendida (L1 = 1). 
 
Vamos considerar que ao retornar para verificar L1 (em ROT_PRINC), o botão B1 tenha sido liberado (B1 = 
1). Então vamos percorrer o caminho mostrado na fig.23c que inicia nas condições de: 
 
1) Botão B1 está livre (B1 = 1). 
2) Led L1 aceso (L1 = 1). 
 
Fig.23c – Análise Terceiro Caminho – Projeto 2 
 
Terceiro Caminho (fig.23c): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 aceso (L1 = 1): segue para verificar 
B1. 
 
c) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para 
verificar L1. 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 23/38 
 
Agora pressionamos B1 (B1 = 0) e seguimos o caminho da fig.23d com as condições: 
 
1) Botão B1 pressionado (B1 = 0). 
2) Led L1 aceso (L1 = 1). 
 
 
Fig.23d – Análise Quarto Caminho – Projeto 2 
 
Quarto Caminho (fig.23d): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 aceso (L1 = 1): segue para 
verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para 
comando. 
 
d) Comando: liga L1 (L1 = 1). 
 
e) Retorna para verificar L1. 
 
 
Agora, se considerarmos que o botão B1 permanece pressionado (B1 = 0) por tempo suficiente para 
completar o ciclo com retorno a ROT_PRINC, podemos facilmente verificar que a Lampada L1 também 
entra no processo de piscar, da mesma forma que o fluxograma da fig.22. 
 
Fig.23b – Análise Segundo Caminho – Projeto 2 Fig.23d – Análise Quarto Caminho – Projeto 2 
 
Uma solução para este problema seria criar um desvio tal que o fluxo lógico só passa por um determinado 
caminho uma única vez enquanto uma condição não retornar à posição original. 
 
Para criar um desvio condicional, utiliza-se o artifício do “flag”, ou seja, o programa sinaliza que passou por 
aquele caminho específico uma vez, não devendo retornar a ele até que a condição que gerou o desvio seja 
desfeita. 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 24/38 
 
O termo “flag” significa “bandeira” (rígida ou não) e, nos sistemas ferroviários, sinaliza o estado do desvio 
em uma via para as composições que trafegam. Da mesma forma em um fluxograma, o “flag”tem a função 
de sinalizar o estado do desvio em uma lógica. 
 
Um “flag” é colocado dentro de uma seqüência lógica de acordo com a sua necessidade, pode ser acionado 
por um elemento externo (botão, chave, sensor etc..) ou por um elemento interno, mas não faz nenhum 
controle externo. 
 
Não existe regra para a colocação de um ou vários “flags” em um fluxograma, mesmo para o local exato do 
desvio e das instruções/comandos paraacionar ou não o desvio. 
 
A necessidade, a localização e o modo de operar são determinados pela lógica do processo, o que pode levar 
ao procedimento de tentativas e erros para a colocação de um “flag”. 
 
No caso das figuras 22 e 23, é necessário que verifiquemos os estados do botão B1 (fig.22) e do led (fig.23) 
para adotarmos a ação correta porém, uma vez escolhida a opção, este caminho lógico deve ser percorrido 
uma única vez. 
 
Fazendo a inclusão do flag no fluxograma da fig.22: 
Fig.24 - Inclusão do flag no fluxograma da fig.22. 
 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
FLAG = 1 FLAG = 1
SIM NÃO
(Ligado) (Desligado)
FLAG = 1 ?
FLAG = 0
L1 = 0 L1 = 1
SIM
NÃO
(Acionado)
(Não Acionado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 25/38 
Podemos observar na fig.24 que o desvio do flag foi incluído entre a verificação de estado do botão B1 e do 
led L1. 
 
Para a análise de funcionamento da fig.24a, consideramos as condições iniciais: 
 
1) Botão B1 está livre (B1 = 1). 
2) Flag tem nível lógico igual a zero (FLAG = 0). 
3) Led L1 apagado (L1 = 0). 
 
Fig.24a – Análise Primeiro Caminho – Projeto 2 
 
Primeiro Caminho (fig.24a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado do botão B1: 
# B1 livre (B1 = 1): segue para comando. 
 
c) Comando: 
#Desliga FLAG (FLAG = 0). 
 
d) Retorna para verificar B1 em ROT_PRINC. 
 
 
 
Enquando forem mantidas as condições iniciais, o caminho seguido será sempre o marcado na fig.24a. 
 
Para ligar o Led L1 é necessário pressionar o botão B1. Portando, vamos consideramos as condições: 
 
1) Botão B1 foi pressionado (B1 = 1) - para ligar L1 
2) Flag tem nível lógico igual a zero (FLAG = 0). 
3) Led L1 apagado (L1 = 0). 
 
e seguir o caminho lógico mostrado na fig.24b para ligar L1: 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
FLAG = 1 FLAG = 1
SIM NÃO
(Ligado) (Desligado)
FLAG = 1 ?
FLAG = 0
L1 = 0 L1 = 1
SIM
NÃO
(Acionado)
(Não Acionado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 26/38 
Fig.24b – Análise Segundo Caminho – Projeto 2 
 
Segundo Caminho (fig.24b): 
 
a) Inicia no retorno em ROT_PRINC. 
 
b) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para verificar 
FLAG. 
 
c) Verifica estado do FLAG 
# FLAG não acionado (FLAG = 0): segue para 
verificar L1. 
 
d) Verifica estado de L1 
# L1 apagado (L1 = 0): segue para comando. 
 
e) Comando: 
# Acende L1 (L1 = 1). 
# Liga FLAG (FLAG = 1). 
 
e) Retorna para verificar B1. 
 
 
 
Após ligar L1 e acionar o FLAG e retornando para verificar o estado de B1 (em ROT_PRINC), vamos 
encontrar a seguinte situação: 
 
1) Botão B1 continua pressionado (B1 = 1). 
2) Flag foi acionado (FLAG = 1). 
3) Led L1 foi aceso (L1 = 1). 
 
O novo caminho a ser seguido é mostrado na fig.24c: 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
FLAG = 1 FLAG = 1
SIM NÃO
(Ligado) (Desligado)
FLAG = 1 ?
FLAG = 0
L1 = 0 L1 = 1
SIM
NÃO
(Acionado)
(Não Acionado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 27/38 
Fig.24c – Análise Terceiro Caminho – Projeto 2 
 
Terceiro Caminho (fig.24c): 
 
a) Inicia no retorno em ROT_PRINC. 
 
b) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para verificar 
FLAG. 
 
c) Verifica estado do FLAG 
# FLAG acionado (FLAG = 1): retorna para 
verificar B1. 
 
 
 
Mantendo B1 pressionado (B1 = 0), vamos observar que o caminho da fig.24b só será percorrido uma única 
vez devido ao acionamento do FLAG (como mostra a fig.24c). 
 
Liberando o botão B1 (fazendo B1 = 1), voltamos a percorrer o caminho da fig.24a, com o retorno do FLAG 
ao nível lógico zero (FLAG = 0) mas agora as seguintes condições são encontradas: 
 
1) Botão B1 está livre (B1 = 1). 
2) Flag tem nível lógico igual a zero (FLAG = 0). 
3) Led L1 aceso (L1 = 1) - na condição inicial estava apagado (L1 = 0). 
 
Observar que o retorno do FLAG ao nível lógico zero (FLAG = 0) prepara o caminho para apagar a lampada 
L1 quando B1 for pressionado novamente. 
 
Acionando novamente o botão B1 para apagar L1, percorremos o fluxograma com as condições: 
 
1) Botão B1 é pressionado (B1 = 0). 
2) Flag tem nível lógico igual a zero (FLAG = 0). 
3) Led L1 aceso (L1 = 1). 
 
A fig.24d mostra o novo caminho: 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
FLAG = 1 FLAG = 1
SIM NÃO
(Ligado) (Desligado)
FLAG = 1 ?
FLAG = 0
L1 = 0 L1 = 1
SIM
NÃO
(Acionado)
(Não Acionado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 28/38 
Fig.24d – Análise Quarto Caminho – Projeto 2 
 
Quarto Caminho (fig.24d): 
 
a) Inicia no retorno em ROT_PRINC. 
 
b) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para verificar 
FLAG. 
 
c) Verifica estado do FLAG 
# FLAG não acionado (FLAG = 0): segue para 
verificar L1. 
 
d) Verifica estado de L1 
# L1 aceso (L1 = 1): segue para comando. 
 
e) Comando: 
# Apaga L1 (L1 = 0). 
# Liga FLAG (FLAG = 1). 
 
e) Retorna para verificar B1. 
 
 
 
O caminho para comando do led L1 vai ficar bloqueado pelo flag enquanto o botão B1 permanecer 
pressionado. Ao liberar B1, desligamos o flag (flag = 0) e permitimos o acesso ao comando do led L1 na 
próxima vez que B1 for pressionado. 
 
Conclusão: A colocação do flag no fluxograma da fig.22 eliminou o problema da incerteza de 
funcionamento do dispositivo e L1 não pisca, ou seja, agora todos os requisitos descritos nas 
figuras 16 a 20 foram atendidos. 
 
Agora, vamos incluir o flag no fluxograma da fig.23, obtendo a fig.25 e analisar os resultados. 
ROT_PRINC
B1 = 1 ?
SIM
(B1 livre)
NÃO
(B1 pressionado)
L1 = 1 ?
FLAG = 1 FLAG = 1
SIM NÃO
(Ligado) (Desligado)
FLAG = 1 ?
FLAG = 0
L1 = 0 L1 = 1
SIM
NÃO
(Acionado)
(Não Acionado)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 29/38 
Fig.25 - Inclusão do Flag no fluxograma da fig.23. 
 
No fluxograma da fig.25, como o estado do botão B1 é que controla a operação do dispositivo, optou-se 
colocar o desvio através do flag após a verificação do estado de B1 (semelhante ao fluxograma da fig.24). 
Como são dois caminhos lógicos independentes (um para ligar o led L1 e outro para desligar), cada caminho 
recebeu o desvio do flag. 
 
Para analisar a lógica do fluxograma da fig.25a (Primeiro Caminho) devemos considerar que o sistema está 
nas condições iniciais: 
 
1) Led L1 apagado (L1 = 0). 
2) Botão B1 está livre (B1 = 1). 
3) Flag tem nível lógico igual a zero (FLAG = 0). 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 30/38 
Fig.25a – Análise Primeiro Caminho 
 
Primeiro Caminho (fig.25a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado de L1: 
# L1 apagado (L1 = 0): segue para 
verificar B1. 
 
c) Verifica estado do Botão B1 
# B1 livre (B1 = 1): segue para 
comando. 
 
d) Comando: 
# Desliga FLAG (FLAG = 0). 
 
e) Retorna para verificar L1 em 
ROT_PRINC. 
 
 
 
Agora vamos pressionar o botão B1 e analisar o caminho seguido na fig.25b, observando as condições: 
 
1) Led L1 apagado (L1 = 0). 
2) Botão B1 pressionado (B1 = 0). 
3) Flag igual a zero (FLAG = 0). 
 
Fig.25b– Análise Segundo Caminho 
 
Segundo Caminho (fig.25b): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado de L1: 
# L1 desligado (L1 = 0): segue para 
verificar B1. 
 
c) Verifica estado do Botão B1 
# B1 pressionado (B1 = 0): segue 
para verificar FLAG. 
 
d) Verifica estado do FLAG 
# FLAG desligado (FLAG = 0): 
segue comando. 
 
e) Comando: 
# Acende L1 (L1 = 1) 
# Liga FLAG (FLAG = 1). 
 
f) Retorna para verificar L1 em 
ROT_PRINC. 
 
 
 
Assim que ligamos o led L1, mudamos o estado do FLAG. Se ao retornarmos a ROT_PRINC para verificar 
o estado de L1 novamente, e mantivermos o botão B1 pressionado (B1 =1), vamos encontrar as seguintes 
condições: 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 31/38 
1) Led L1 aceso (L1 = 1). 
2) Botão B1 pressionado (B1 = 0). 
3) Flag acionado (FLAG = 1). 
 
O que nos leva a percorrer o caminho da fig.25c: 
 
Fig.25c – Análise Terceiro Caminho 
 
Terceiro Caminho (fig.25c): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado de L1: 
# L1 aceso (L1 = 1): segue para 
verificar B1. 
 
c) Verifica estado do Botão B1 
# B1 pressionado (B1 = 0): segue 
para verificar FLAG. 
 
d) Verifica estado do FLAG 
# FLAG acionado (FLAG = 1): 
Retorna para verificar L1. 
 
 
 
O fato de termos o FLAG acionado faz com que tenhamos o desvio de retorno para ROT_PRINC antes de 
acionarmos o comando de desligar o led L1. Portanto, enquanto mantivermos o botão B1 pressionado (B1 = 
0), o caminho seguido será o da fig.25c. 
 
Liberando o botão B1 (B1 = 1), as condições serão: 
 
1) Led L1 aceso (L1 = 1). 
2) Botão B1 livre (B1 = 1). 
 
Observar que o estado do FLAG não será mais verificado quando o botão B1 for liberado. 
 
O novo caminho a ser percorrido está na fig.25d: 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 32/38 
Fig.25d – Análise Quarto Caminho 
 
Quarto Caminho (fig.25d): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado de L1: 
# L1 aceso (L1 = 1): segue para 
verificar B1. 
 
c) Verifica estado do Botão B1 
# B1 livre (B1 = 1): segue comando. 
 
d) Comando 
# Desliga FLAG (FLAG = 0). 
 
e) Retorna para verificar L1 em 
ROT_PRINC. 
 
 
Como podemos ver, com o botão B1 livre, o FLAG é desligado o que permitirá, na próxima vez que o botão 
B1 for pressionado, desligar o led L1. Para tanto, as condições serão: 
 
1) Led L1 aceso (L1 = 1). 
2) Botão B1 pressionado (B1 = 0). 
3) Flag desligado (FLAG = 0). 
 
A fig.25e mostra como o caminho é seguido: 
 
Fig.25e – Análise Quinto Caminho 
 
Quinto Caminho (fig.25e): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado de L1: 
# L1 aceso (L1 = 1): segue para 
verificar B1. 
 
c) Verifica estado do Botão B1 
# B1 pressionado (B1 = 0): segue 
para verificar FLAG. 
 
d) Verifica estado do FLAG 
# FLAG desligado (FLAG = 0): 
segue comando. 
 
e) Comando: 
# Apaga L1 (L1 = 0) 
# Liga FLAG (FLAG = 1). 
 
f) Retorna para verificar L1 em 
ROT_PRINC. 
 
 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 33/38 
Assim que desligamos o led L1, mudamos o estado do FLAG. Se ao retornarmos a ROT_PRINC para 
verificar o estado de L1 novamente, e mantivermos o botão B1 pressionado (B1 =1), vamos encontrar as 
seguintes condições: 
 
1) Led L1 apagado (L1 = 0). 
2) Botão B1 pressionado (B1 = 0). 
3) Flag acionado (FLAG = 1). 
 
O que nos leva a percorrer o caminho da fig.25f: 
 
Fig.25f – Análise Sexto Caminho 
 
Sexto Caminho (fig.25f): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica estado de L1: 
# L1 apagado (L1 = 0): segue para 
verificar B1. 
 
c) Verifica estado do Botão B1 
# B1 pressionado (B1 = 0): segue 
para verificar FLAG. 
 
d) Verifica estado do FLAG 
# FLAG ligado (FLAG = 1): 
retorna para verificar L1. 
 
 
 
 
Se liberarmos o botão B1 (B1 = 1), voltamos ao caminho representado pela fig.25 a, repetindo todos os 
caminhos novamente. 
 
Conclusão: A inclusão do flag no fluxograma da fig.23, produzindo o fluxograma da fig.25, eliminou o 
problema da incerteza de funcionamento do dispositivo e L1 não pisca,ou seja,agora todos os 
requisitos descritivos nas fig.16 a 20 foram atendidos. 
 
Alguns comentários podem ser feitos a partir das soluções apresentadas para o Projeto 2: 
 
a) Para o mesmo problema,vários fluxogramas podem ser desenvolvidos. 
 
b) A aplicação de desvios condicionais (flags) não possui uma regra específica. 
 
c) Podem ser utilizados vários flags, tantos quantos forem necessários para resolver o problema. 
 
d) Um mesmo flag pode ser empregado para funções/destinos distintos desde que os retornos não sejam 
entrelaçados. 
 
e) A utilização do flag não é obrigatória nem indispensável, como pode ser visto na comparação entre os 
fluxogramas das figuras 22 e 24 e das figuras 23 e 25. Houve um aumento de instruções/comandos 
com acréscimo do flag. 
 
Para confirmar o comentário, vamos observar a fig.26. 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
FLAG = 1 ? FLAG = 1 ?
NÃO NÃO
(Não Aciionado)(Nao Aciionado)
SIMSIM
(Acionado) (Acionado)
FLAG = 1 FLAG = 1
FLAG = 0FLAG = 0
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 34/38 
Fig.26 – Solução sem flag para o fluxograma fig.23. 
 
Vamos analisar o funcionamento do fluxograma da fig.26 para verificarmos se a retirada do flag e o 
redirecionamento dos retornos operam da maneira adequada. 
 
Portanto, estabelecendo as condições iniciais: 
 
1) Led L1 apagado (L1 = 0). 
2) Botão B1 livre (B1 = 1). 
 
A fig.26a mostra o caminho: 
 
Fig.26a – Análise Primeiro Caminho 
 
Primeiro Caminho (fig.26a): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 apagado (L1 = 0): segue para verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para verificar L1. 
 
 
 
Para ligar o led L1 será necessário pressionar o botão B1. Nesta condição, o fluxograma será analisado a 
partirde: 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 35/38 
1) Led L1 apagado (L1 = 0). 
2) Botão B1 pressionado (B1 = 0). 
 
A fig.26b mostra o caminho seguido para ligar L1: 
 
Fig.26b – Análise Segundo Caminho 
 
Segundo Caminho (fig.26b): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 apagado (L1 = 0): segue para verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para comando. 
 
e) Comando: 
# Acende L1 (L1 = 1). 
 
e) Retorna para verificar B1. 
 
 
 
 
Observe que não voltamos para verificar o estado de L1 mas o estado de B1, diferente dos fluxogramas 
anteriores. Se mantivermos B1 pressionado (B1 = 0), o caminho seguido será o demonstrado na fig. 26c: 
 
Fig.26c – Análise Terceiro Caminho 
 
Terceiro Caminho (fig.26c): 
 
a) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para comando. 
 
b) Comando: 
# Acende L1 (L1 = 1). 
 
c) Retorna para verificar B1. 
 
 
 
 
Se B1 permanecer pressionado (B1 = 0), o caminho seguido será sempre o da fig.26c. Agora vamos liberar o 
botão B1 (fazendo B1 = 1) e ver como fica o fluxograma na fig.26d: 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 36/38 
Fig.26d – Análise Quarto Caminho 
 
Quarto Caminho (fig.26d): 
 
a) Comando: 
# Acende L1 (L1 = 1). 
 
b) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para verificar L1. 
 
 
 
 
 
Ao liberar o botão B1, voltamos para verificação do estado do led L1. Notar para o fato de que passamos 
pelo comando acendendo L1 (L1 = 1). Portanto, quando houver a verificação do estado de L1, o desvio 
utilizado será para SIM - L1 ligado. A fig.26e mostra o novo caminho seguido para as condições: 
 
1) Led L1 aceso (L1 = 1). 
2) Botão B1 livre (B1 = 1). 
 
Fig.26e – Análise Quarto Caminho 
 
Quinto Caminho (fig.26e): 
 
a) Retorna em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 aceso (L1 = 1): segue para verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para verificar B1. 
 
 
 
É a mesma situação encontrada na fig.26a porém, com o led L1 acesa. Pressionando o botão B1, agora para 
apagar L1, teremos a seguinte situação: 
 
1) Led L1 aceso (L1 = 1). 
2) Botão B1 pressionado (B1 = 0). 
 
A fig.26f mostra o caminho: 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 37/38 
Fig.26f – Análise Sexto Caminho 
 
Sexto Caminho (fig.26f): 
 
a) Verifica o estado de L1: 
# L1 aceso (L1 = 1): segue para verificar B1. 
 
b) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para comando. 
 
c) Comando: 
# Apaga L1 (L1 = 0). 
 
d) Retorna para verificar B1. 
 
 
 
 
Da mesma forma que na fig.26b, não voltamos para verificar o estado de L1 mas o estado de B1. Se 
mantivermos B1 pressionado (B1 = 0), o caminho seguido será o demonstrado na fig. 26g: 
 
Fig.26g – Análise Sétimo Caminho 
 
Sétimo Caminho (fig.26g): 
 
a) Verifica estado do botão B1: 
# B1 pressionado (B1 = 0): segue para comando. 
 
b) Comando: 
# Apaga L1 (L1 = 0). 
 
c) Retorna para verificar B1. 
 
 
 
 
Se B1 permanecer pressionado (B1 = 0), o caminho seguido será sempre o da fig.26g (verifique que é 
semelhante à fig.26c). Agora vamos liberar o botão B1 (fazendo B1 = 1) e ver como fica o fluxograma na 
fig.26h: 
 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
Bento Alves Cerqueira Cesar Filho - R 1.4 - JUN_07 
Pg. 38/38 
Fig.26h – Análise OitavoCaminho 
 
Oitavo Caminho (fig.26): 
 
a) Comando: 
# Apaga L1 (L1 = 0). 
 
b) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para verificar L1. 
 
 
 
 
 
Novamente, liberando o botão B1, voltamos para verificação do estado do led L1. Notar para o fato de que 
passamos pelo comando apagando L1 (L1 = 0). Portanto, quando houver a verificação do estado de L1, o 
desvio utilizado será para NÃO - L1 desligado. A fig.26i mostra o novo caminho seguido para as condições: 
 
1) Led L1 apagado (L1 = 0). 
2) Botão B1 livre (B1 = 1). 
 
Que nada mais é que a fig.26a do início da nossa análise: 
 
Fig.26i – Análise Primeiro Caminho 
 
Primeiro Caminho (fig.26i): 
 
a) Inicia em ROT_PRINC. 
 
b) Verifica o estado de L1: 
# L1 apagado (L1 = 0): segue para verificar B1. 
 
c) Verifica estado do botão B1: 
# B1 livre (B1 = 1): retorna para verificar L1. 
 
 
 
Como pode ser verificado, bastou uma modificação no retorno após a instrução para acender ou apagar L1 
retornando para a verificação de B1 (e não mais para a verificação de L1), que eliminamos o flag e 
atingimos o objetivo de atender aos requisitos descritivos nas fig.16 a 20. 
 
Ficou claro, nessas longas análises, que o fluxograma não é uma forma rígida e única para solucionar um 
problema. Dependendo do ponto de vista do projetista, várias soluções podem ser encontradas para o mesmo 
problema. Escolher qual solução será empregada no projeto final depende exclusivamente do projetista. 
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)
ROT_PRINC
L1 = 1 ?
L1 = 0
SIM NÃO
(Ligado) (Desligado)
B1 = 1 ? B1 = 1 ?
L1 = 1
NÃO NÃO
SIM SIM
(B1 livre)
(B1 pressionado)(B1 pressionado)
(B1 livre)

Outros materiais