Capítulo 1 – Algoritmo

Um algoritmo pode ser definido como um conjunto de regras (instruções), bem definidas, para solução de um determinado problema. Segundo o dicionário Michaelis, o conceito de algoritmo é a “utilização de regras para definir ou executar uma tarefa específica ou para resolver um problema específico.”

A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo não é um termo computacional, ou seja, não se refere apenas à área de informática. É uma definição ampla que agora que você já sabe o que significa, talvez a utilize no seu cotidiano normalmente.

Na informática, o algoritmo é o “projeto do programa”, ou seja, antes de se fazer um programa (software) na Linguagem de Programação desejada (Pascal, C, Delphi, etc.) deve-se fazer o algoritmo do programa. Já um programa, é um algoritmo escrito numa forma compreensível pelo computador (através de uma Linguagem de Programação), onde todas as ações a serem executadas devem ser especificadas nos mínimos detalhes e de acordo com as regras de sintaxe  da linguagem escolhida.

O aprendizado da Lógica é essencial para a formação de um bom programador, servindo como base para o aprendizado de todas as Linguagens de Programação, estruturadas ou não. De um modo geral esses conhecimentos serão de supra importância, pois ajudarão no cotidiano, desenvolvendo um raciocínio rápido.

 

Forma de Representação de Algoritmos

Os algoritmos podem ser representados de várias formas, como por exemplo:

  1. Através de uma língua (português, inglês, etc.): forma utilizada nos manuais de instruções, nas receitas culinárias, bulas de medicamentos, etc.
  2. Através de uma linguagem de programação (Pascal, C, Delphi, etc.): esta forma é utilizada por alguns programadores experientes, que “pulam” a etapa do projeto do programa (algoritmo) e passam direto para a programação em si.
  3. Através de representações gráficas: são bastante recomendáveis, já que um “desenho” (diagrama, fluxograma, etc.) muitas vezes substitui, com vantagem, várias palavras.

 

 

       Fluxogramas

Os Fluxogramas ou Diagramas de Fluxo, são uma representação gráfica que utilizam formas geométricas padronizadas ligadas por setas de fluxo, para indicar as diversas ações (instruções) e decisões que devem ser seguidas para resolver o problema em questão.

Eles permitem visualizar os caminhos (fluxos) e as etapas de processamento de dados possíveis e, dentro destas, os passos para a resolução do problema.

11.png

Português Estruturado

O Português Estruturado, é uma forma especial de linguagem bem mais restrita que a Língua Portuguesa e com significados bem definidos para todos os termos utilizados nas instruções (comandos).

Essa linguagem também é conhecida como Portugol (junção de Português com Algol , Pseudocódigo ou Pseudolinguagem. O Português Estruturado na verdade é uma simplificação extrema da língua portuguesa, limitada a pouquíssimas palavras e estruturas que têm significado pré-definido, pois deve-se seguir um padrão. Emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação, para descrever os algoritmos.

A sintaxe do Português Estruturado não precisa ser seguida tão rigorosamente quanto a sintaxe de uma linguagem de programação, já que o algoritmo não será executado como um programa.

Embora o Português Estruturado seja uma linguagem bastante simplificada, ela possui todos os elementos básicos e uma estrutura semelhante à de uma linguagem de programação de computadores.

13.png

 

Capítulo 2 – Constantes, Variáveis e Operadores

Constantes

São chamadas de constantes, as informações (dados) que não variam com o tempo, ou seja, permanecem sempre com o mesmo conteúdo, é um valor fixo (invariável). Como exemplos de constantes pode-se citar: números, letras, palavras etc.

Variáveis

Os dados referem-se a uma recolha de informações organizadas, eventos, atividades e transações que são gravados, classificados e armazenados dentro de um sistema de computador.

Exemplo: texto, fotos, figuras, sons gravados, animação, numéricos, alfanuméricos entre outros.

 Regras para se nomear uma variável

 

Regra Exemplo
Inicie sempre por um caractere alfabético, nunca por um número. Nome (correto)
1nome (errado)
Não utilize caracteres especiais como “ , ( ) / * ; + . Nome(M);N*B
Não coloque espaços em branco ou hífen entre nomes. salario-bruto
Utilize, se necessário, underline. salario_bruto
Crie suas variáveis com nomes sugestivos. Se vai guardar salário de funcionários, dê à variável o nome salario.

Tipos de Variáveis

Quando declaramos uma variável, devemos ter em mente quais valores serão armazenados naquele espaço de memória. É essa observação que definirá o tipo da variável a ser declarado. Uma variável pode ser de um dos seguintes tipos:

  • Tipo inteiro: Declararemos variáveis do tipo numérico inteiro quando precisarmos armazenar valores inteiros, positivos ou negativos (0, 1, 5, 7, -10, -5…). Por exemplo, se precisarmos de uma variável para armazenar o número de filhos de um funcionário, o tipo ideal para essa variável seria inteiro.
  • Tipo real: Declararemos variáveis do tipo numérico real para armazenar valores reais; em outras palavras, valores com ponto decimal (5.7, 3.2, -8.5). Esse seria o tipo ideal para armazenar, por exemplo, o salário de funcionários.
  • Tipo Texto: Declararemos variáveis do tipo texto para armazenar caracteres, que pode ser letras,  símbolos etc. Tipo lógico: Declararemos variáveis do tipo lógico para armazenar valores lógicos. O valor de variáveis desse tipo será sempre VERDADEIRO ou FALSO.

 

       A atribuição

Atribuições Possíveis Exemplo
Variável  constante Idade 12 (lê-se: idade recebe 12)
Variável  variável Preço valor
Variável expressão A B + C

É uma notação utilizada para atribuir um valor a uma variável, ou seja, para armazenar um determinado conteúdo em uma variável. A operação de atribuição, normalmente, é representada por uma seta apontando para a esquerda, mas existem outros símbolos para representar a atribuição, depende da forma de representação do algoritmo. Na Tabela a seguir, são apresentados alguns exemplos de atribuições possíveis:

Operadores

       Operadores aritméticos

Muitas vezes, ao desenvolvermos algoritmos, é comum utilizarmos expressões matemáticas para a resolução de cálculos. Neste capítulo são apresentados os operadores aritméticos necessários para determinadas expressões.

Operação Símbolo Prioridade
Multiplicação (Produto) *
Divisão /
Adição (Soma) +
Subtração (Diferença)

 

       Operadores relacionais

São as comparações permitidas entres valores, variáveis, expressões e constantes.

Símbolo Significado
> maior
< menor
= igual
>= Maior ou igual
<= Menor ou igual
<> diferente

 

 

Comparação Válida Exemplo
Variável e constante X=3
Variável e variável A<>B
Variável e expressão Y=W+J
Expressão e expressão (X+1)<(Y+4)

 

       Operadores lógicos

permitem que mais de uma condição seja testada em uma única expressão, ou seja, pode-se fazer mais de uma comparação (teste) ao mesmo tempo.

Operação Operador
Negação não
Conjunção e
Disjução (não-exclusiva) ou
Disjunção (exclusiva) xou (lê-se: “ou exclusivo”)

 


Capítulo 3 – Construção do Algoritmo

Regras para construção do algoritmo

Para escrever um algoritmo precisamos descrever a seqüência de instruções, de maneira simples e objetiva. Para isso utilizaremos algumas técnicas:

  • Usar somente um verbo por frase
  • Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática
  • Usar frases curtas e simples
  • Ser objetivo
  • Procurar usar palavras que não tenham sentido dúbio

 Fases de um algoritmo

Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais.

03.png

Onde temos:

  • ENTRADA:  São os dados de entrada do algoritmo
  • PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final
  • SAÍDA: São os dados já processados

 

EXERCÍCIOS I

  1. Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se as expressões são verdadeiras ou falsas.

04.png

Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas.

  1. (A+C) > B ( )
  2. B >= (A + 2) ( )
  3. C = (B –A) ( )
  4. (B + A) <= C ( )
  5. (C+A) > B ( )

Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras ou falsas.

  1. (A > C) AND (C <= D) ( )
  2. (A+B) > 10 OR (A+B) = (C+D) ( )
  3. (A>=C) AND (D >= C) ( )

Analise os algoritmos abaixo e diga o que será impresso na tela ao serem executados:

09.jpg

Capítulo 4 – Tipos de Algoritmos

Algoritmos sequenciais

Os algoritmos sequenciais  apresentam uma sequência de passos que devem ser seguidos para atingir um objetivo bem definido. Todos os passos dos algoritmos devem ser executados a fim de que o objetivo seja alcançado.

Por exemplo, o nosso primeiro algoritmo define uma sequência de passos para trocar uma lâmpada. Em momento algum perguntamos se a lâmpada está queimada. Simplesmente trocamos a lâmpada sem fazer qualquer teste.

Exemplo algoritmo sequencial

  1. Pegue uma lâmpada nova;
  2. Pegue uma escada;
  3. Posicione a escada embaixo da lâmpada;
  4. Suba na escada;
  5. Retire a lâmpada velha;
  6. Coloque a lâmpada nova.

 

Exemplo:

Elabore um algoritmo para receber duas notas e calcular sua media.

Algoritmo Media

Declare nota1, nota2, media : numerico

Inicio

Leia (nota1, nota2)

Media = (nota1+nota2)/2

Escreva (media)

Fim

 

Algoritmos com estrutura de decisão

Porém, há algoritmos nos quais a execução de alguns passos pode depender de decisões a serem tomadas. Dessa forma, algum fato indicará se um ou mais passos do algoritmo serão executados ou não.

Exemplo algoritmo com desvios (decisão)

  1. Ligue o interruptor
  2. Se a lâmpada não acender:

2.1. Pegue uma escada;

2.2. Posicione a escada embaixo da lâmpada;

2.3. Pegue uma lâmpada nova;

2.4. Suba na escada;

2.5. Retire a lâmpada velha;

2.6. Coloque a lâmpada nova.

 

       Testes

Determinam quais ações serão executadas; são chamados de estruturas de seleção ou estruturas de decisão.

Agora, estamos ligando os passos de efetuar a troca da lâmpada a uma condição. Assim, só executamos os passos definidos de 2.1 a 2.6 caso a condição definida do passo 2 seja verdadeira, ou seja, caso a lâmpada não acenda.

 

Algoritmos com estrutura de repetição

Note que, apesar de nosso novo algoritmo estar verificando a necessidade de trocar a lâmpada antes de fazê-lo, em momento algum verificamos se a lâmpada nova que foi instalada funciona. Assim, vamos tentar alterar o nosso algoritmo a fim de garantir que ao fim de sua execução tenhamos uma lâmpada funcionando. Para isso, vamos incluir um novo teste em seu final:
 

  1. Ligue o interruptor
  2. Se a lâmpada não acender:

2.1. Pegue uma escada;

2.2. Posicione a escada embaixo da lâmpada;

2.3. Pegue uma lâmpada nova;

2.4. Suba na escada;

2.5. Retire a lâmpada velha;

2.6. Coloque a lâmpada nova;

2.7. Se a lâmpada não acender:

2.7.1. Retire a lâmpada;

2.7.2. Coloque uma outra lâmpada;

2.7.3. Se a lâmpada ainda não acender:

2.7.3.1. Retire a lâmpada;

2.7.3.2. Coloque uma outra lâmpada;

(Até quando ficaremos nesses testes???)

 

Pelo nosso novo algoritmo, caso a nova lâmpada não acenda, devemos trocá-la novamente e repetir esse procedimento indefinidamente até que uma lâmpada funcione. Note que não sabemos quantas vezes teremos de repetir o teste até acharmos uma lâmpada que funcione. Em casos como esse, devemos utilizar estruturas de repetição.

Essas estruturas definem um fluxo de ações que se repete enquanto uma determinada situação acontece.

Dessa forma, substituímos nossa sequência indefinida de estruturas de decisão por uma estrutura de repetição:

  1. Ligue o interruptor;
  2. Se a lâmpada não acender:

2.1. Pegue uma escada;

2.2. Posicione a escada embaixo da lâmpada;

2.3. Pegue uma lâmpada nova;

2.4. Suba na escada;

2.5. Retire a lâmpada velha;

2.6. Coloque a lâmpada nova.

2.7. Enquanto a lâmpada não acender:

2.7.1. Retire a lâmpada;

2.7.2. Coloque uma outra lâmpada.

Assim, neste novo algoritmo, enquanto a condição definida na linha 2.7 for verdadeira (ou seja, enquanto a lâmpada não acender), as ações definidas em 2.7.1 e 2.7.2 serão repetidas. Abstraímos os fatos de ter de descer da escada para pegar uma lâmpada nova e subir novamente.

 

Capítulo 5 – Comando de Decisão

Os comandos de decisão ou desvio fazem parte das técnicas de programação que conduzem a estruturas de programas que não são totalmente seqüenciais. Com as instruções de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo com as decisões lógicas tomadas em função dos dados ou resultados anteriores. As principais estruturas de decisão são: “Se Então”, “Se então Senão” e “Caso Selecione”

 SE <expressão >

ENTÃO

<instruções a serem executadas caso a expressão booleana resulte em VERDADEIRO>

SENÃO

<instruções a serem executadas caso a expressão booleana resulte em FALSO>

FIM-SE

 SE ENTÃO / IF…THEN

A estrutura de decisão “SE/IF” normalmente vem acompanhada de um comando, ou seja, se determinada condição for satisfeita pelo comando SE/IF então execute determinado comando. Imagine um algoritmo que determinado aluno somente estará aprovado se sua média for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria.

SE MEDIA >= 5.0 ENTÃO ALUNO APROVADO

Exemplo:

Enunciado: Tendo como dados de entrada o nome, a altura e o sexo (M ou F) de uma pessoa, calcule e mostre seu peso ideal, utilizando as seguintes fórmulas:

– para sexo masculino: peso ideal = (72.7 * altura) – 58

– para sexo feminino: peso ideal = (62.1 * altura) – 44.7

 SE ENTÃO SENÃO/ IF…THEN

A estrutura de decisão “SE/ENTÃO/SENÃO”, funciona exatamente como a estrutura “SE”, com apenas uma diferença, em “SE” somente podemos executar comandos caso a condição seja verdadeira, diferente de “SE/SENÃO” pois sempre um comando será executado independente da condição, ou seja, caso a condição seja “verdadeira” o comando da condição será executado, caso contrário o comando da condição “falsa” será executado.

Em algoritmo ficaria assim:

SE MEDIA >= 5.0 ENTAO

ALUNO APROVADO

SENAO

ALUNO REPROVADO

CASO SELECIONE/ SELECT…CASE

A estrutura de decisão CASO/SELECIONE é utilizada para testar, na condição, uma única expressão, que produz um resultado, ou, então, o valor de uma variável, em que está armazenado um determinado conteúdo. Compara-se, então, o resultado obtido no teste com os valores fornecidos em cada cláusula “Caso”.

ESCOLHA <variável de verificação>

CASO <valor1> FAÇA

“instruções a serem executadas caso <variável de verificação> = <valor1>”

CASO <valor2> FAÇA

“instruções a serem executadas caso <variável de verificação> = <valor2>”

CASO <valor3> FAÇA

“instruções a serem executadas caso <variável de verificação> = <valor3>”

FIM-ESCOLHA

EXERCÍCIOS II

 

  1. Faça um algoritmo que o usuário irá digitar o nome e o sexo de uma pessoa. Deverá ser impresso o nome e se esta pessoa é um homem ou uma mulher.
  2. Faça um algoritmo que o usuário digitando o nome e a respectiva idade, retorne se esta pessoa é ou não maior de idade.
  3. Faça um algoritmo que leia o nome, cargo e o salário de um funcionário. Se o cargo for operador, o funcionário deverá receber um aumento de 30%, se o cargo for programador, o funcionário deverá receber um aumento de 18%. Escreva o nome e o novo salário.
  4. Faça um algoritmo que leia 3 valores. Determine e imprima o maior.
  5. Para um aluno ser aprovado deve-se:
  1. Se obter um média final maior ou igual a 7;
  2. Se obter uma freqüência superior ou igual a 80%;
  3. Faça um algoritmo que leia: nome, 1ª nota, 2ª nota, 3ª nota, quantidade de aulas dadas e o número de presenças;

Determine e imprima o nome, se o aluno foi aprovado ou reprovado e a média.

  1. Uma empresa possui a seguinte política de auxílio:
  1. se um funcionário ganha menos de 2 salários mínimos, ele recebe um auxílio de 35% de auxílio;
  2. se recebe de 2 salários mínimos até 4 salários, recebe um auxílio de 20%
  3. nos demais casos, recebe um auxílio de 10%

Faça um algoritmo em que o operador informando o nome e o salário obtenha como resultado: o nome, o salário e o valor do auxílio.

 

 

  1. Sabendo-se que:
  1. uma caixa de laranja contém 60 unidades
  2. uma caixa de limão contém 80 unidades
  3. uma caixa de morango contém 20 unidades

Faça um algoritmo em que o usuário irá informar o fruto e o respectivo preço unitário e obtenha como resultado a fruta e o preço da caixa.

  1. Faça um algoritmo que leia nome, sexo, salário. Determine e imprima o nome e o novo salário, sabendo-se que os ho-mens devem receber um aumento de 20% e as mulheres um aumento de 22%

Faça um algoritmo para ler nome da mercadoria, o valor pago ao fornecedor, a categoria da mercadoria (A ou B). Sabendo-se que a categoria A deve possuir uma margem de lucro de 5%, a categoria B 3% e as demais 12%. Obtenha como resultado: o nome da mercadoria, o preço da mercadoria ao consumidor para obter o lucro desejado.