Free cookie consent management tool by TermsFeed Update cookies preferences

Lógica de programação: Algoritmo, Pseudocódigo e Fluxograma

Ajudante de Angola
By -
0


A inteligência é uma das principais características que diferencia um ser humano de outras criaturas vivas na Terra. A inteligência básica abrange a resolução de problemas do dia a dia e a elaboração de estratégias para lidar com diferentes situações que surgem na vida cotidiana. Uma pessoa vai ao banco para sacar dinheiro. Após saber o saldo em sua conta, ele/ela decide sacar todo o valor de sua conta, mas precisa deixar um saldo mínimo. Decidir quanto ele/ela pode sacar da conta é um exemplo de inteligência básica. Durante o processo de resolução de qualquer problema, procura-se encontrar as etapas necessárias a serem tomadas em uma sequência. Nesta Unidade, você desenvolverá sua compreensão sobre resolução de problemas e abordagens.

RESOLUÇÃO DE PROBLEMAS

Você consegue pensar em um dia em sua vida que passe sem a resolução de problemas? A resposta para essa pergunta é, naturalmente, Não. Em nossa vida, estamos destinados a resolver problemas. Em nossas atividades cotidianas, como comprar algo em uma loja e efetuar pagamentos, pagar taxas na escola ou sacar dinheiro da conta bancária, todas essas atividades envolvem algum tipo de resolução de problemas.

Pode-se dizer que qualquer atividade realizada por um ser humano ou máquina para alcançar um objetivo específico está relacionada à resolução de problemas. Para tornar isso mais claro, vejamos alguns outros exemplos.

Exemplo 1: Se você está assistindo a um canal de notícias na TV e deseja mudar para um canal esportivo, é preciso fazer algo, ou seja, mudar para esse canal pressionando o número do canal no controle remoto. Isso é uma forma de resolução de problemas.

Exemplo 2: Em uma segunda-feira de manhã, um aluno está pronto para ir à escola, mas ainda não pegou os livros e cadernos necessários conforme o horário. Portanto, pegar os livros e cadernos de acordo com o horário é uma forma de resolução de problemas.

Exemplo 3: Se alguém lhe perguntar que horas são, ver a hora em seu relógio e informá-lo também é uma forma de resolução de problemas.

Exemplo 4: Alguns alunos em uma turma planejam fazer um piquenique e decidem dividir as despesas entre eles. Portanto, calcular as despesas totais e a quantia que cada indivíduo deve contribuir para o piquenique também é uma forma de resolução de problemas.

É importante mencionar que nem todos os problemas do mundo podem ser resolvidos. Existem problemas que não têm solução e esses problemas são chamados de Problemas em Aberto.

Se você pode resolver um problema dado, também pode escrever um algoritmo para isso.

ALGORITMO

Um algoritmo pode ser definido como: "Uma sequência de atividades a serem processadas para obter uma saída desejada a partir de uma entrada fornecida." Também podemos definir um algoritmo como: "Uma fórmula ou conjunto de etapas para resolver um problema específico. Para ser um algoritmo, um conjunto de regras deve ser inequívoco e ter um ponto de parada claro."  Pode haver mais de uma maneira de resolver um problema, então pode haver mais de um algoritmo para um problema.

Agora, se pegarmos a definição de algoritmo como: "Uma sequência de atividades a serem processadas para obter uma saída desejada a partir de uma entrada fornecida."

Então podemos dizer que:

  • Obter a saída especificada é essencial após a execução do algoritmo.
  •  Você obterá a saída somente se o algoritmo parar após um tempo finito.
  •  As atividades em um algoritmo devem ser claramente definidas, em outras palavras, para que sejam inequívocas.

A palavra "algoritmo" está relacionada ao nome do matemático Al-Khwarizmi, o que significa um procedimento ou técnica. Engenheiros de software comumente usam um algoritmo para planejar e resolver problemas. 
Um algoritmo é uma sequência de etapas para resolver um problema específico, ou seja, um conjunto ordenado de etapas inequívocas que produz um resultado e termina em um tempo finito.

O algoritmo possui as seguintes características:

  • Entrada: Um algoritmo pode ou não exigir entrada.
  • Saída: Espera-se que cada algoritmo produza pelo menos um resultado.
  • Definição: Cada instrução deve ser clara e inequívoca.
  • Finitude: Se as instruções de um algoritmo forem executadas, o algoritmo deve terminar após um número finito de etapas.

Tipos de Algoritmos

Os algoritmos e fluxogramas se classificam em três tipos de estruturas de controle. São eles:

  • Sequência
  • Ramificação (Seleção)
  • Loop (Repetição)

Essas três estruturas de controle são suficientes para todos os propósitos. 

Sequência: Na estrutura de sequência, as declarações são colocadas uma após a outra e a execução ocorre de cima para baixo.

Ramificação (Seleção): No controle de ramificação, há uma condição e, de acordo com uma condição, uma decisão de VERDADEIRO ou FALSO é alcançada. No caso de VERDADEIRO, um dos dois ramos é explorado; mas no caso da condição FALSA, a outra alternativa é escolhida. Geralmente, o 'SE-ENTÃO' é usado para representar o controle de ramificação.

Loop (Repetição): O Loop ou Repetição permite que uma ou mais instruções sejam executadas repetidamente com base em uma determinada condição de loop, como os loops ENQUANTO (WHILE) ou PARA (FOR).

Vantagens do algoritmo:

  • É uma representação passo a passo de uma solução para um problema dado, o que facilita o entendimento.
  • Um algoritmo usa um procedimento definido.
  • Não depende de nenhuma linguagem de programação, sendo fácil de entender para qualquer pessoa, mesmo sem conhecimento de programação.
  • Cada etapa em um algoritmo tem sua própria sequência lógica, tornando-o fácil de depurar.

Como escrever um algoritmo ?

Antes de escrever um algoritmo para um problema, deve-se descobrir qual/quais são as entradas para o algoritmo e qual/quais é a saída esperada após a execução do algoritmo. 

  • Passo 1: Defina a entrada do seu algoritmo: Muitos algoritmos recebem dados a serem processados, por exemplo, para calcular a área de um retângulo, a entrada pode ser a altura e a largura do retângulo.
  • Passo 2: Defina as variáveis: As variáveis do algoritmo permitem que você as utilize em mais de um lugar. Podemos definir duas variáveis para a altura e largura do retângulo, como ALTURA e LARGURA. Devemos usar nomes de variáveis significativos, por exemplo, em vez de usar A e L, use ALTURA e LARGURA como nome de variável.
  • Passo 3: Esboce as operações do algoritmo: Use as variáveis de entrada para fins de cálculo. Por exemplo, para encontrar a área de um retângulo, multiplique as variáveis ALTURA e LARGURA e armazene o valor em uma nova variável (digamos) AREA. As operações de um algoritmo podem assumir a forma de várias etapas e até ramificações, dependendo do valor das variáveis de entrada.
  • Passo 4: Apresente os resultados das operações do seu algoritmo: No caso da área de um retângulo, a saída será o valor armazenado na variável AREA. Se as variáveis de entrada descreviam um retângulo com ALTURA de 2 e LARGURA de 3, o algoritmo produziria o valor 6.

Agora, vamos fazer alguns exercícios para desenvolver um algoritmo para alguns problemas simples: Ao escrever algoritmos, usaremos o seguinte símbolo para diferentes operações:

+ para Adição
- para Subtração
* para Multiplicação
/ para Divisão e
= para atribuição. 

Por exemplo, A= X*3 significa que A terá um valor de X*3.

A linguagem usada para escrever algoritmos é simples e semelhante à linguagem do dia a dia. Os nomes das variáveis são usados para armazenar os valores. O valor armazenado em uma variável pode ser alterado nas etapas da solução. Além disso, alguns símbolos especiais são usados da seguinte forma:

O Símbolo de Atribuição (← ou =) é usado para atribuir um valor à variável.
Por exemplo, para atribuir o valor 5 à variável ALTURA, a declaração é:

ALTURA ← 5
  ou
ALTURA = 5


O símbolo ‘=’ é usado na maioria das linguagens de programação como um símbolo de atribuição, e o mesmo foi usado em todos os algoritmos e fluxogramas no manual.

A declaração C = A + B significa que adicione o valor armazenado na variável A ao valor armazenado na variável B e, em seguida, atribua/armazene o valor na variável C.

A declaração R = R + 1 significa que adicione 1 ao valor armazenado na variável R e, em seguida, atribua/armazene o novo valor na variável R, em outras palavras, aumente o valor da variável R em 1.

Operadores Matemáticos:

Operador

Significado

Exemplo

+

Adição

A + B

-

Subtração

A - B

*

Multiplicação

A * B

/

Divisão

A / B

^

Potência

A^3 (A ao cubo)

%

Resto

A % B

 

Operadores Relacionais

Operador

Significado

Exemplo

<

Menor que

A < B

<=

Menor ou igual a

A <= B

= ou ==

Igual a

A = B

# ou !=

Diferente de

A # B ou A != B

>

Maior que

A > B

>=

Maior ou igual a

A >= B

 

 

Operadores Lógicos

Operador

Exemplo

Significado

AND

A < B AND B < C

Resultado é verdadeiro se tanto A<B quanto B<C forem verdadeiros, caso contrário é falso

OR

A < B OR B < C

Resultado é verdadeiro se A<B ou B<C forem verdadeiros, caso contrário é falso

NOT

NOT (A > B)

Resultado é verdadeiro se A>B for falso, caso contrário é verdadeiro


 

Instruções de Controle de Seleção

Controle de Seleção

Exemplo

Significado

SE (Condição) Então

...

FIM_SE

SE (X > 10) Então
  Y = Y + 5
FIM_SE

Se a condição X > 10 for verdadeira,

execute a instrução entre ENTÃO e FIM_SE.

SE (Condição) Então

...

SENÃO

...

FIM_SE

SE (X > 10) Então
Y = Y + 5
SENÃO
Y = Y + 8
Z = Z + 3
FIM_SE

Se a condição X > 10 for verdadeira,

execute a instrução entre ENTÃO e SENÃO,

caso contrário, execute as instruções entre

SENÃO e FIM_SE.

 

Declarações de controle de loop

Controle de Seleção

Exemplo

Significado

ENQUANTO (Condição) FAÇA

   ...

   ...

FIM_ENQUANTO

ENQUANTO (X < 10) FAÇA
  imprimir x
  x = x + 1
FIM_ENQUANTO

Execute o loop enquanto a condição for VERDADEIRA.

FAÇA

   ...

   ...

ATÉ (Condição)

FAÇA
  imprimir x
  x = x + 1
ENQUANTO (X <= 10)

Execute the loop as long as the condition is false

 

Observação: Podemos usar as palavras-chave ENTRADA ou LER ou OBTER para aceitar entrada(s) / valor(es) e as palavras-chave IMPRIMIR ou ESCREVER ou EXIBIR para exibir o(s) resultado(s).

Exemplo 1: Encontrar a área de um círculo de raio r.

Entradas para o algoritmo:
Raio (r) do círculo.

Saída esperada:
Área do círculo.

Algoritmo:
Passo 1: Ler o valor do raio (r) do círculo.
Passo 2: Calcular a área usando a fórmula Área = π * r * r.
Passo 3: Exibir o valor da área calculada.


Exemplo 2: Escrever um algoritmo para ler dois números e encontrar sua soma.

Entradas para o algoritmo:
Primeiro número (num1).
Segundo número (num2).

Saída esperada:
Soma dos dois números.

Algoritmo:
Passo 1: Iniciar
Passo 2: Ler o valor do primeiro número (num1).
Passo 3: Ler o valor do segundo número (num2).
Passo 4: Calcular a soma: soma = num1 + num2.
Passo 5: Exibir o valor da soma.
Passo 6: Fim.


Exemplo 3: Converter temperatura de Fahrenheit para Celsius.

Entradas para o algoritmo:
Temperatura em Fahrenheit.

Saída esperada:
Temperatura em Celsius.

Algoritmo:
Passo 1: Iniciar
Passo 2: Ler a temperatura em Fahrenheit (F).
Passo 3: Calcular a temperatura em Celsius (C) usando a fórmula C = 5/9 * (F - 32).
Passo 4: Exibir a temperatura em Celsius (C).
Passo 5: Fim.


Combinar o uso dessas estruturas de controle é uma prática comum no design de algoritmos, permitindo resolver problemas mais complexos e intrincados. Aqui estão alguns exemplos de como as estruturas de controle podem ser combinadas:

1. Loops Aninhados:

É possível ter loops dentro de loops para realizar tarefas repetitivas com condições variáveis. Por exemplo, você pode ter um loop externo que itera pelas linhas e um loop interno que itera pelas colunas para processar uma matriz 2D.

2. Ramificações Aninhadas:

Declarações condicionais (if-else) podem ser aninhadas para lidar com várias condições. Por exemplo, dentro de uma condição externa, você pode ter condições aninhadas para lidar com diferentes casos.

3. Loop Dentro de uma Ramificação:

Pode-se usar um loop para realizar uma tarefa específica com base em uma condição. Por exemplo, se um usuário tem várias tentativas para inserir uma senha correta, você pode usar um loop para solicitar repetidamente a entrada até que a senha correta seja inserida ou o número máximo de tentativas seja atingido.

4. Ramificação Dentro de um Loop:

Pode-se usar declarações condicionais dentro de um loop para tomar decisões a cada iteração. Por exemplo, dentro de um loop que processa dados, você pode usar uma condição para pular ou modificar determinados pontos de dados com base em critérios específicos.

À medida que os algoritmos se tornam mais complexos, é importante modularizá-los e dividi-los em partes menores e gerenciáveis. Isso não apenas torna o algoritmo mais fácil de entender e manter, mas também permite testes e depuração mais simples. Cada módulo menor pode encapsular uma tarefa ou funcionalidade específica, tornando o algoritmo geral mais organizado e legível.

Iniciantes em programação devem praticar o uso e a combinação eficazes das estruturas de controle. É útil visualizar e traçar o algoritmo passo a passo, até mesmo no papel, antes de implementar o código. Esse processo de pensamento e planejamento algorítmico pode levar a um código melhor projetado e mais eficiente.

Pseudocódigo: Introdução e Exemplos

O pseudocódigo é uma forma de representação de algoritmos utilizando uma linguagem próxima da natural, facilitando a compreensão e a comunicação das etapas de um processo lógico. Neste tutorial, exploraremos os conceitos básicos do pseudocódigo e forneceremos exemplos práticos para ajudar você a começar.

O que é Pseudocódigo?

O pseudocódigo é uma maneira intermediária entre a linguagem natural e a linguagem de programação, usada para descrever algoritmos de forma clara e compreensível. Ele não é vinculado a nenhuma linguagem de programação específica, o que o torna flexível e acessível para todos.

Sintaxe Básica do Pseudocódigo

1. Declaração de Variáveis

Comece definindo as variáveis que você usará no algoritmo, atribuindo nomes significativos. Por exemplo:

Variável idade: Inteiro
Variável nome: Texto

 

2. Entrada e Saída de Dados

Use comandos para receber entradas do usuário e exibir informações na tela:

Leia idade
Escreva "Sua idade é: ", idade

 

3. Estruturas Condicionais 

Tome decisões usando estruturas condicionais (if-then-else)

Se idade >= 18 então
   Escreva "Você é maior de idade."
Senão
   Escreva "Você é menor de idade."
Fim Se

 

4. Estruturas de Repetição:

Execute ações repetidamente com estruturas de repetição (para, enquanto):

Para contador de 1 até 10 passo 1 faça
    Escreva contador
Fim Para

 

5. Operações Matemáticas:

Realize cálculos comuns com operadores matemáticos (+, -, *, /):

total <- 0
Para i de 1 até 5 faça
    total <- total + i
Fim Para

 

Exemplos de Pseudocódigo

Exemplo 1: Calculadora de Média

Variável nota1, nota2, media: Real

Leia nota1
Leia nota2

media <- (nota1 + nota2) / 2

Escreva "A média é: ", media

 

Exemplo 2: Verificando Números Pares

Variável numero: Inteiro

Leia numero

Se numero mod 2 = 0 então
    Escreva "O número é par."
Senão
    Escreva "O número é ímpar."
Fim Se

 

Exemplo 3: Tabuada de um Número

Variável numero, resultado: Inteiro

Leia numero

Para i de 1 até 10 passo 1 faça
    resultado <- numero * i
    Escreva numero, " x ", i, " = ", resultado
Fim Para

O pseudocódigo é uma ferramenta poderosa para planejar e comunicar algoritmos de forma clara. Usando uma linguagem próxima da natural, você pode descrever processos complexos de maneira compreensível e estruturada. Pratique criando seus próprios algoritmos em pseudocódigo e observe como isso facilitará a transição para a codificação real em linguagens de programação!


Exemplos de Algoritmos

A sequência é exemplificada por uma sequência de declarações colocadas uma após a outra - a que está acima ou antes de outra é executada primeiro. Em fluxogramas, a sequência de declarações é geralmente contida na caixa retangular de processo.

Problema 1: Escrever um algoritmo para encontrar o maior número entre dois números.

Algoritmo:
Passo 1: Iniciar
Passo 2: Ler os valores de A e B.
Passo 3: Se A for maior que B, então atribuir C = A.
Passo 4: Caso contrário, se B for maior que A, então atribuir C = B.
Passo 5: Exibir o valor de C (que é o maior número).
Passo 6: Fim.

Problema 2: Escrever um algoritmo para encontrar o resultado da equação: ( ) { -x, x<0 x, x>=0.

Algoritmo:
Passo 1: Iniciar
Passo 2: Ler o valor de x.
Passo 3: Se x for menor que 0, então atribuir Resultado = -x.
Passo 4: Caso contrário, se x for maior ou igual a 0, então atribuir Resultado = x.
Passo 5: Exibir o valor do Resultado.
Passo 6: Fim.

Problema 3: Um algoritmo para encontrar o maior valor entre três números.

Algoritmo:
Passo 1: Iniciar
Passo 2: Ler os valores de A, B e C.
Passo 3: Se (A >= B) e (A >= C), então atribuir Max = A.
Passo 4: Caso contrário, se (B >= A) e (B >= C), então atribuir Max = B.
Passo 5: Caso contrário, se (C >= A) e (C >= B), então atribuir Max = C.
Passo 6: Exibir o valor de Max (que é o maior número).
Passo 7: Fim.


O loop permite que uma declaração ou uma sequência de declarações seja repetidamente executada com base em alguma condição de loop. Ele é representado pelas construções 'while' e 'for' na maioria das linguagens de programação, para loops não limitados e loops limitados, respectivamente. (Loops não limitados referem-se àqueles cujo número de iterações depende da eventual satisfação da condição de término; loops limitados referem-se àqueles cujo número de iterações é conhecido antecipadamente.)

Uma passagem ao redor do loop é conhecida como iteração. Você deve garantir que a condição para a terminação do loop seja satisfeita após um número finito de iterações, caso contrário, ele se tornará um loop infinito, um erro comum cometido por programadores inexperientes. O loop também é conhecido como estrutura de repetição.

Problema 1: Um algoritmo para calcular os números pares entre 0 e 99

1. Início
2. I ← 0
3. Escrever I na saída padrão
4. I ← I + 2
5. Se (I <= 98) então vá para a linha 3
6. Fim


Problema 2: Projete um algoritmo que recebe um valor natural, n, como entrada e calcula os números ímpares menores ou iguais a n. Em seguida, escreva-os na saída padrão:

1. Início
2. Ler n
3. I ← 1
4. Escrever I na saída padrão
5. I ← I + 2
6. Se (I <= n) então vá para a linha 4
7. Fim


Problema 3: Projete um algoritmo que gera números pares entre 1000 e 2000 e, em seguida, os imprime na saída padrão. Ele também deve imprimir a soma total:

1. Início
2. I ← 1000 e S ← 0
3. Escrever I
4. S ← S + I
5. I ← I + 2
6. Se (I <= 2000) então vá para a linha 3
senão vá para a linha 7
7. Escrever S
8. Fim


Problema 4: Projete um algoritmo com um número natural, n, como entrada, que calcula a seguinte fórmula e escreve o resultado na saída padrão:

S = 1/2 + 1/4 + ... + 1/n
1. Início
2. Ler n
3. I ← 2 e S ← 0
4. S = S + 1/I
5. I ← I + 2
6. Se (I <= n) então vá para a linha 4
senão escreva S na saída padrão
7. Fim


Introdução aos fluxogramas, como desenhar um fluxograma?

A sequência é exemplificada por uma sequência de declarações colocadas uma após a outra - a que está acima ou antes de outra é executada primeiro. Em fluxogramas, a sequência de declarações é geralmente contida na caixa retangular de processo.

O primeiro design de fluxograma remonta a 1945 e foi projetado por John Von Neumann. Ao contrário de um algoritmo, o fluxograma utiliza símbolos diferentes para projetar uma solução para um problema. É outra ferramenta de programação amplamente utilizada. Ao observar um fluxograma, é possível compreender as operações e a sequência de operações realizadas em um sistema. O fluxograma é frequentemente considerado como uma planta baixa de um design usado para resolver um problema específico.

Vantagens do fluxograma

  • O fluxograma é uma excelente maneira de comunicar a lógica de um programa.
  • É fácil e eficiente analisar problemas usando um fluxograma.
  • Durante o ciclo de desenvolvimento de um programa, o fluxograma desempenha o papel de uma planta baixa, tornando o processo de desenvolvimento do programa mais fácil.
  • Após o desenvolvimento bem-sucedido de um programa, é necessário um contínuo e oportuno processo de manutenção durante o curso de sua operação. O fluxograma facilita a manutenção do programa ou sistema.
  • É fácil converter o fluxograma em código de qualquer linguagem de programação.

Símbolos de Fluxograma

Existem 6 símbolos básicos comumente usados na elaboração de fluxogramas de programas em linguagem de montagem: Terminal, Processo, Entrada/Saída, Decisão, Conector e Processo Pré-definido. Esta não é uma lista completa de todos os símbolos de fluxograma possíveis, mas sim os mais frequentemente usados na estrutura da programação em linguagem de montagem.


Regras Gerais para a Elaboração de Fluxogramas

  1. Todas as caixas do fluxograma são conectadas por setas (não por linhas).
  2. Os símbolos do fluxograma possuem um ponto de entrada no topo do símbolo sem outros pontos de entrada. O ponto de saída para todos os símbolos de fluxograma está na parte inferior, exceto para o símbolo de Decisão.
  3. O símbolo de Decisão possui dois pontos de saída; estes podem estar nos lados ou na parte inferior e em um dos lados.
  4. Geralmente, um fluxograma fluirá de cima para baixo. No entanto, um fluxo ascendente pode ser mostrado desde que não exceda 3 símbolos.
  5. Conectores são usados para conectar quebras no fluxograma. Exemplos incluem:
    • De uma página para outra.
    • Do final de uma página para o topo da mesma página.
    • Um fluxo ascendente com mais de 3 símbolos.
  6. Sub-rotinas e programas de interrupção têm seus próprios fluxogramas independentes.
  7. Todos os fluxogramas começam com um símbolo Terminal ou Processo Pré-definido (para programas de interrupção ou sub-rotinas).
  8. Todos os fluxogramas terminam com um símbolo de terminal ou com um loop contínuo.

 

Alguns Exemplos de Fluxogramas

Agora, vamos discutir alguns exemplos de fluxogramas. Esses exemplos ajudarão no entendimento adequado da técnica de criação de fluxogramas. Isso o ajudará no processo de desenvolvimento de programas na próxima unidade deste bloco.

Exemplo 1: Fluxograma para calcular a Área de um Círculo de raio r.

Exemplo 2: Fluxograma para converter temperatura de Fahrenheit para Celsius

 


Tags:

Postar um comentário

0Comentários

Postar um comentário (0)