SlideShare a Scribd company logo
1 of 12
Download to read offline
Algoritmos
Existem muitas formas de se representar algoritmos, utilizando-se linguagens de programação,
linguagem formal, formas geométricas, diagramas, e muitas outras. Algumas destas formas se
tornaram especiais pela eficácia de sua representação nas diversas áreas do conhecimento.

Neste texto de maneira sucinta são apresentadas três destas formas, porém dando-se mais ênfase a
duas delas. É importante salientar que o estudo de algoritmos exige do estudante um esforço quanto
à realização de exercícios, de modo que não se pode aprendê-lo apenas lendo textos.

Sendo assim, procurem realizar os exercícios que são passados em sala de aula.


Conceito de Algoritmo

- Algoritmo é a especificação de uma sequência ordenada de passos que deve ser seguida com o
intuito de realizar uma tarefa, garantindo a sua repetibilidade.
Obs.: repetibilidade – permite que esta sequência possa ser repetida toda vez que a tarefa tiver que
ser realizada.

- Algoritmo é um conjunto finito de regras bem definidas para a solução de um problema, em um
tempo finito, e com um número finito de passos.

Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo
a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa.
Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma
compreensível pelo computador.


Formas de Algoritmos

Existem diversas formas possíveis de se representar um algoritmo.
Para a Informática, algumas das formas mais conhecidas são:
- Descrição Narrativa
- Fluxograma
- Pseudocódigo

>> Descrição Narrativa:

Nesta forma os algoritmos são expressos diretamente em linguagem coloquial, descrevendo-se em
passos a sequência de ações a serem realizadas.
Exemplo:

>> Troca de um pneu furado:
Passo 1 – Afrouxar ligeiramente as porcas
Passo 2 – Suspender o carro
Passo 3 – Retirar as porcas e o pneu
Passo 4 – Colocar o pneu reserva
Passo 5 – Apertar as porcas
Passo 6 – Abaixar o carro
Passo 7 – Dar o aperto final nas porcas

Um exemplo bastante comum de um Algoritmo em forma de Descrição Narrativa é o texto de um
Manual que ensine a utilização de um determinado aparelho. Nele são descritos passos que devem
ser seguidos para se realizar as possíveis ações daquele aparelho. O nível de detalhamento destas
descrições deve ser tal que permita que toda vez que o Usuário pretenda realizar aquela ação, basta
seguir aqueles passos na sequência correta para se ter o êxito esperado.
>> Fluxograma ou Diagrama de Blocos:

É uma representação gráfica de algoritmos, onde formas geométricas diferentes implicam em ações
(instruções ou comandos) distintas. Esta forma facilita o entendimento das idéias contidas nos
algoritmos.

De modo geral, o fluxograma são símbolos dispostos em uma determinada sequência, em que há um
único caminho orientado a ser seguido, representando a sequência de execução daquelas instruções.
Dos diversos símbolos existentes que podem ser utilizados em um Fluxograma, os que serão
necessários para o curso apresentado neste texto, são:


                  = Início e final do fluxograma

                  = Seta do Fluxo de Dados

                  = Operações de entrada de dados via teclado


                  = Operações de saída de dados em vídeo (monitor)


                  = Processo – ou Processamento, como operações de atribuição


                  = Decisão - utilizado nas estruturas condicionais ("Se..então..senão")


                  = Conector utilizado quando é preciso particionar o diagrama


                  = Preparação – utilizado em laços de repetição do tipo "Para..de..até..faça"



>> Pseudocódigo:

Esta forma de representação de algoritmos, também conhecida como Português Estruturado ou
Portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas
são escritos, será juntamente com o Fluxograma, a forma de representação de algoritmos a ser
adotada nesta disciplina.

Estrutura de Um Algoritmo na Forma de Pseudocódigo

          Algoritmo <nome_do_algoritmo>
          Var
               <declaração_de_variáveis>
          Início
               <corpo_do_algoritmo>
          Fim.

"Algoritmo" é uma palavra que indica o início da definição do algoritmo em forma de pseudocódigo.

"<nome_do_algoritmo>" – no lugar deste, deve ser colocado o nome simbólico do algoritmo, o que
irá distingui-lo dos demais.

"<declaração_de_variáveis>" parte do algoritmo onde devem ser declaradas as variáveis utilizadas
no algoritmo. Esta parte será detalhada mais adiante.

"Início" e "Fim." são respectivamente as palavras que delimitam o início e o término do conjunto de
instruções do corpo do algoritmo.
Exemplo de um Algoritmo que calcula a média de duas notas, que devem ser digitados pelo Usuário
ao executar o programa, e ao final mostra se houve aprovação ou não, segundo um critério
estabelecido.

Algoritmo Media
Var
       N1, N2, Media: Real;
Início
       Leia (N1, N2);
       Media = (N1+N2)/2;
       Se Media >= 7 Então
              Escreva ("Aprovado");
       Senão
              Escreva ("Reprovado");
       Fim_se
Fim.


Tipos de Dados

Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas
em sua memória. Estas informações podem ser classificadas em dois tipos:
– As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem
ser tratados os dados.
– Os dados propriamente ditos, que correspondem à porção das informações a serem processadas
pelo computador.

Para que sejam manipulados pelo processador, os dados devem ser declarados no início do
programa, a fim de que o compilador conheça os tipos e os nomes das variáveis que contemplarão
estes dados.

>> Tipos Inteiros:

São os dados numéricos positivos ou negativos excluindo-se destes qualquer número fracionário.
Como exemplo deste tipo de dado, tem-se os valores: 35, 0, 234, -56, 1024 entre outros.

>> Tipos Reais:

São os dados numéricos positivos e negativos, incluindo-se os números fracionários. Como exemplo
deste tipo de dado, tem-se os valores: 35, 0, -56, 1.2, 234.18, -45.8987 entre outros.

>> Tipos Caracteres:

São as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve
ser indicada entre aspas (""). Este tipo de dado também é conhecido como Alfanumérico, String,
Literal ou Cadeia. Como exemplo deste tipo de dado, tem-se os valores: "Programação", "Rua Alfa,
52 Apto 1", "Fone 574-9988", "04387-030", " ", "7" entre outros.

>> Tipos Lógicos:

São os dados com valor "verdadeiro" ou "falso", sendo que este tipo de dado poderá representar
apenas um dos dois valores. Ele é conhecido também por tipo "booleano", devido à contribuição do
filósofo e matemático inglês George Boole na área da lógica matemática.


Conceito e Utilidade de Variáveis

Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma, e
um valor por ela guardado.

Toda variável possui um nome que tem a função de diferenciá-la das demais. Cada linguagem de
programação estabelece suas próprias regras de formação de nomes de variáveis.
Adotaremos para os algoritmos, as seguintes regras para nome de variável:
- deve necessariamente começar com uma letra;
- não deve conter nenhum símbolo especial, exceto o "underline" (_);
- não deve conter nenhum espaço em branco;
- não deve ser uma palavra acentuada;
- não poderá ser uma palavra reservada a uma instrução de programa.

Obviamente é interessante adotar nomes relacionados às funções que serão exercidas pela variável
dentro de um programa.

Outro atributo característico de uma variável é o "tipo" do dado que ela pode armazenar. Este
atributo define a natureza das informações contidas na variável.

Por último há o atributo "valor", que nada mais é do que a informação útil contida na variável.

Uma vez definidos os atributos "nome" e "tipo de dado" de uma variável, estes não podem ser
alterados, e assim permanecem durante toda a sua existência no programa. Por outro lado, o
atributo "valor" está constantemente sujeito a mudanças de acordo com o fluxo de execução do
programa (por ser uma "variável").

Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo
acessar informações na memória dos computadores por meio de um nome, em vez do endereço de
uma célula de memória.


Declaração de Variáveis em Algoritmos

Todas as variáveis utilizadas em algoritmos devem ser declaradas antes de serem utilizadas. Isto se
faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas.

Nos algoritmos, todas as variáveis utilizadas serão declaradas no início do mesmo, por meio de um
comando que pode ser escrito em uma das seguintes formas:

VAR
       <nome_da_variável> : <tipo_da_variável>;
       ou
       <lista_de_variáveis> : <tipo_das_variáveis>;

Observações:
- numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo. Se forem várias,
estas devem estar separadas por vírgulas;
- variáveis de tipos diferentes devem ser declaradas em linhas diferentes.


Operadores

Operadores são elementos fundamentais que atuam sobre operandos e produzem um determinado
resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os números 3 e 2) por meio do
operador (+) que representa a operação de adição.

Pode-se classificar os operadores levando-se em consideração o tipo de dado de seus operandos, e
do valor resultante de sua avaliação. Sendo assim, dividem-se em Operadores "de Atribuição",
"Aritméticos", "Relacionais", "Lógicos" e "Literais".


>> Operador de Atribuição:

Um operador de atribuição serve para atribuir um valor a uma variável.
Neste curso o operador de atribuição será o "sinal de igual":
       =
Sendo assim, a sintaxe de um comando de atribuição será:
       NomeDaVariável = expressão;
A expressão localizada no lado direito do sinal de igual é avaliada, e seu valor resultante é
armazenado na variável que está à esquerda.

"O nome da variável que recebe o valor deve aparecer sempre sozinho, no lado esquerdo do sinal de
igual deste comando."

Exemplos:
      a = 3;
      nota1 = 8.5;
      media = (nota1 + nota2) / 2;
      v = v0 + a * t;
      salFinal = sal * perc / 100;

>> Operadores Aritméticos:

Os operadores aritméticos relacionam as operações aritméticas básicas, conforme a tabela abaixo:

          Operador                        Operação                       Prioridade
             +             adição                                             3
              -            subtração                                          3
             *             multiplicação                                      3
              /            divisão                                            3
            DIV            parte inteira de uma divisão                       2
            MOD            resto de uma divisão                               2
             **            potenciação (ou exponenciação)                     1

Obs.: A prioridade (ou hierarquia) entre operadores define a ordem em que os mesmos serão
avaliados (e executados) dentro de uma mesma expressão.

>> Operadores Relacionais:

Os operadores relacionais são operadores binários que "devolvem" os valores lógicos "verdadeiro" e
"falso".
Obs.: a palavra "devolvem" indica que uma operação com Operadores Relacionais tem como
possíveis resultados apenas 2 valores: "verdadeiro" ou "falso".

                 Operador                     Operação
                     <           menor que
                     >           maior que
                   <=            menor ou igual a
                   >=            maior ou igual a
                    !=           diferente de
                   ==            igual a

Estes valores são somente usados quando se deseja efetuar comparações. Comparações só podem
ser feitas entre objetos de mesma natureza, isto é, variáveis do mesmo tipo de dado.

Por exemplo, digamos que a variável inteira "num" contenha o valor 7(sete). Assim as expressões a
seguir fornecem cada uma, um valor lógico, sendo falso a primeira, e verdadeiro a segunda:
       num <= 5
       num > 5

Operações que utilizam operadores relacionais são como perguntas, cuja resposta será sempre "Não"
ou "Sim"; "Falso" ou "Verdadeiro"; "0" ou "1".
       Ex.: se num for igual a 7(sete), então:
       num <= 5 ? ... Não (Falso)
       num > 5 ? ... Sim (Verdadeiro)

>> Operadores Lógicos:

Os operadores lógicos ou booleanos são usados para combinar expressões relacionais. Também
devolvem como resultado valores lógicos "verdadeiro" ou "falso".
Operador
                          OU
                           E
                          NÃO

Fornecendo dois valores ou expressões lógicas, representadas por expressão1 e expressão2,
podemos descrever as quatro operações lógicas a seguir:

  expressão1 E expressão2 é verdadeiro somente se ambas, expressão1 e expressão2, forem
  verdadeiras. Se uma for falsa, ou se ambas forem falsas, a operação "E"como um todo também
  será falsa.

  expressão1 OU expressão2 é verdadeiro se tanto a expressão1 como a expressão2 forem
  verdadeiras. As operações "OU" só resultam em valores falsos se ambas, expressão1 e
  expressão2, forem falsas.

  NÃO expressão1 é verdadeiro se expressão1 for falsa; de modo contrário, a expressão "NÃO
  expressão1" resultará em falso, se expressão1 for verdadeira.
  Ou seja, a expressão NÃO expressão1 resulta na negação da expressão1.

                                             Tabela Verdade:
                         A       B      A 0U B   AEB     NÃO A       NÃO   B
                         V       V        V        V        F          F
                         V       F        V        F        F          V
                         F       V        V        F       V           F
                         F       F         F       F       V           V


>> Operadores Literais:

São os operadores que atuam sobre caracteres. Eles variam muito de uma linguagem para outra. O
operador mais comum, e mais usado, é o operador que faz a concatenação (união) de strings: ou
seja, tomando-se duas strings e unindo-se (concatenando-se) a segunda ao final da primeira.

Podem-se utilizar dois operadores que fazem esta operação de união de caracteres: o "sinal de mais",
ou a "vírgula".

Por exemplo, a concatenação das strings "ALGO" e "RITMO" pode ser representada por:
       "ALGO" + "RITMO"
       ou
       "ALGO", "RITMO"
       ...e o resultado de sua avaliação é: "ALGORITMO"

Nesta Apostila será adotada a "vírgula" como operadora de concatenação.


Funções Matemáticas

Abaixo, estão enumeradas algumas Funções Matemáticas que poderão ser abordadas e utilizadas em
exercícios neste curso:

ABS (x)   Retorna   o   valor absoluto (positivo) de uma expressão
SEN (x)   Retorna   o   valor do seno
COS (x)   Retorna   o   valor do cosseno
TAN (x)   Retorna   o   valor da tangente
EXP (x)   Retorna   o   valor exponencial (ex - sendo "e" o no de Euler)
LN (x)    Retorna   o   logaritmo natural (logaritmo neperiano)
PI        Retorna   o   valor de PI (3.1415...)
Exemplos de expressões que utilizam estas funções matemáticas:
   val1 = SEN (4*x);
   val2 = ABS (val1);
   val3 = PI * SEN (x + 1);
   val4 = 2 * a * EXP (x + TAN (y));
   val5 = LN (x ** 2) + 3 * COS (x – 2);


Expressões

O conceito de "expressão", em termos computacionais, está intimamente ligado ao conceito de
expressão ou fórmula matemática, onde um conjunto de variáveis e constantes numéricas relaciona-
se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num
valor.

Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou
real. Somente o uso de funções, operadores aritméticos, variáveis numéricas e parênteses é
permitido em expressões deste tipo.

"Toda expressão aritmética deve estar linearizada, ou seja, representada inteiramente em apenas
uma linha."

As seguintes regras são essenciais para a correta avaliação de expressões:

1. Deve-se observar a prioridade dos operadores, conforme mostrado nas tabelas de operadores:
(obs.: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relação
à precedência, então a avaliação se faz da esquerda para a direita).

2. Os parênteses usados em expressões tem o poder de "roubar" a prioridade dos demais
operadores, forçando a avaliação da subexpressão em seu interior, independente de qual seja.

3. Entre os quatro principais grupos de operadores existentes, a saber, aritmético, lógico, literal e
relacional, há uma certa prioridade de avaliação: os aritméticos e literais devem ser avaliados
primeiro; a seguir, são avaliadas as sub-expressões com operadores relacionais e, por último são
avaliados os operadores lógicos.


Comandos de Entrada de Dados

Os comandos de entrada de dados são o meio pelo qual as informações dos usuários são transferidas
para a memória dos computadores, para que possam ser usadas nos programas.

No diagrama de blocos o comando de entrada de dados é representado por:

                   = Operações de entrada de dados via teclado


Em Português Estruturado há duas sintaxes possíveis para esta instrução:
       LEIA (<variável>)
              Ex: LEIA (X)
       LEIA (<lista_de_variáveis>)
              Ex: LEIA (nome, endereco, cidade)
Obs.: A lista_de_variáveis é um conjunto de um ou mais nomes de variáveis separados por vírgulas.

No diagrama, as variáveis que devem receber os valores devem ser descritas dentro do símbolo:

       X                 nome, endereco,
                         cidade
                  OU
Comandos de Saída de Dados

Os comandos de saída de dados são o meio pelo qual informações contidas na memória dos
computadores são colocadas nos dispositivos de saída, para que os usuários possam apreciá-las.

No diagrama de blocos o comando de saída de dados é representado por:

                  = Operações de saída de dados em vídeo (monitor)


Em Português Estruturado há quatro sintaxes possíveis para esta instrução:
      ESCREVA (<variável>);
            Ex: ESCREVA (X);
      ESCREVA (<lista_de_variáveis>);
            Ex: ESCREVA (nome, endereco, cidade);
      ESCREVA (<literal>);
            Ex: ESCREVA ("Algoritmo é o máximo!");
      ESCREVA (<literal>, <variável>, ... ,<literal>, <variável>);
            Ex: ESCREVA ("Meu nome é: ", nome, "e meu endereço é: ", endereco);

No Fluxograma, os valores que devem ser mostrados na tela devem ser descritos dentro do símbolo:
      X                "Valor da média: ", media
               OU

Uma <lista_de_variáveis> é um conjunto de nomes de variáveis separados por vírgulas. Um literal é
simplesmente um dado do tipo literal (string ou cadeia de caracteres) delimitado por aspas.

Há ainda a possibilidade de se misturar nomes de variáveis com literais na lista de um mesmo
comando. O efeito obtido é bastante útil e interessante: a lista é lida da esquerda para a direita e
cada elemento da mesma é tratado separadamente; se um nome de variável for encontrado, então o
valor da mesma é colocado no dispositivo de saída; no caso de um literal, o mesmo é escrito
diretamente no dispositivo de saída (na tela).

Exemplo: algoritmo que calcula o preço total de acordo com a quantidade de produto comprada.

            Algoritmo exemplo_comando_de_entrada_de_dados
            Var
                preco_unit, preco_tot : Real;
                quant : Inteiro;
            Início
                Leia (preco_unit, quant);
                preco_tot = preco_unit * quant;
                Escreva (preco_tot);
            Fim.
Estruturas Condicionais:
(Comandos de Decisão)

Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da
avaliação de uma ou mais condições. Uma condição é uma expressão lógica.

A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser
testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação, têm-se 3 tipos
de estruturas de decisão:
- Estrutura de Decisão Simples (Se..então..fim_se)
- Estrutura de Decisão Composta (Se..então..senão..fim_se)
- Estrutura de Decisão Múltipla (Se..então..senão se..então ... fim_se)

Uma Estrutura de decisão inicia-se na palavra reservada "SE" (inicial), e termina na palavra
reservada "FIM_SE".


>> Estruturas de Decisão Simples (Se..então..fim_se)

Nesta estrutura uma única condição (expressão lógica) é avaliada. Dependendo do resultado desta
avaliação, um comando ou conjunto de comandos serão executados (se a avaliação for verdadeira)
ou não serão executados (se a avaliação for falsa).

No diagrama de blocos a estrutura para instrução "Se..então..fim_se" é representado por:




    FALSA                        VERDADEIRA
                CONDIÇÃO




                                INSTRUÇÕES




Sintaxe em Português Estruturado de uma estrutura de decisão simples:

       SE <condição> ENTÃO
            <instruções>;
       FIM_SE

A semântica desta construção é a seguinte:

– a condição é avaliada:

– Se ela for verdadeira, então o conjunto de instruções delimitado pelas palavras-reservadas
"ENTÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo prossegue
pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada
"FIM_SE".

– No caso da condição ser falsa, o fluxo do algoritmo prossegue pela instrução seguinte à construção,
ou seja, o primeiro comando APÓS a palavra-reservada "FIM_SE", sem executar o conjunto de
instruções entre as palavras-reservadas "ENTÃO" e "FIM_SE".
Exemplo de algoritmo que lê um número e escreve se o mesmo é maior que 10:

       Algoritmo exemplo_estrutura_de_decisão_simples
       Var
             X : Inteiro;
       Início
             Escreva ("Digite um valor");
             Leia (X);
             Se X > 10 Então
                   Escreva ("X é maior que 10");
             Fim_se
       Fim.


>> Estruturas de Decisão Compostas (Se..então..senão..fim_se):

Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for
"verdadeiro", um conjunto de instruções será executado. Caso contrário, ou seja, quando o resultado
da avaliação for "falso", um outro conjunto de instruções será executado.

No diagrama de blocos a estrutura para instrução "Se..então..senão..fim_se" é representado por:




          FALSA                        VERDADEIRA
                       CONDIÇÃO




      INSTRUÇÕES_2                    INSTRUÇÕES_1




Sintaxe em Português Estruturado de uma estrutura de decisão composta:

    SE <condição> ENTÃO
         <instruções_1>;
    SENÃO
         <instruções_2>;
    FIM_SE

A semântica desta construção é a seguinte:

– a condição é avaliada:

– Se ela for verdadeira, então o conjunto de "instruções_1" delimitado pelas palavras-reservadas
"ENTÃO" e "SENÃO" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela
instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE".

– No caso da condição ser falsa, então o conjunto de "instruções_2" delimitado pelas palavras-
reservadas "SENÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo
prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-
reservada "FIM_SE".
Exemplo de algoritmo que lê um número e escreve se o mesmo é, ou não, maior que 100:

    Algoritmo exemplo_estrutura_de_decisão_composta
    Var
          X : Inteiro;
    Início
          Leia (X);
          Se X > 100 Então
                Escreva ("X é maior que 100");
          Senão
                Escreva ("X não é maior que 100");
          Fim_se
    Fim.


>> Estruturas de Decisão Múltiplas (Se..então..senão se..então ... fim_se)

Nesta estrutura várias condições (expressões lógicas) são avaliadas. Se o resultado de uma destas
avaliações for "verdadeiro", apenas o conjunto de instruções daquela condição será executado.

No diagrama de blocos a estrutura para instrução "Se..então..senão se..então ... fim_se" é
representado por:



                     VERDADEIRA
      CONDIÇÃO_1

                        INSTRUÇÕES_1
      FALSA


                     VERDADEIRA
      CONDIÇÃO_2        nome,

                        INSTRUÇÕES_2
      FALSA                  nome,


                     VERDADEIRA
                        nome,

                        INSTRUÇÕES_3
     FALSA                   nome,



     INSTRUÇÕES_N
         nome,




Sintaxe em Português Estruturado de uma estrutura de decisão múltipla:

    SE <condição_1> ENTÃO
         <instruções_1>;
    SENÃO SE <condição_2> ENTÃO
         <instruções_2>;
    SENÃO SE <condição_3> ENTÃO
         <instruções_3>;
    ...
    SENÃO
         <instruções_N>;
    FIM_SE
A semântica desta construção é a seguinte:

– a 1a condição é avaliada.

– Se ela for verdadeira, então o conjunto de "instruções_1" será executado. Ao término de sua
execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro
comando após a palavra-reservada "FIM_SE".

– No caso da 1a condição ser falsa, então a 2a condição é avaliada.

– Se ela for verdadeira, então o conjunto de "instruções_2" será executado. Ao término de sua
execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro
comando após a palavra-reservada "FIM_SE".

– No caso desta condição ser falsa, então as seguintes condições são avaliadas em sequência, até
encontrar alguma "verdadeira".
Se nenhuma das condições existentes for "verdadeira", o conjunto de "instruções_N" delimitado pelas
palavras-reservadas "SENÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do
algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a
palavra-reservada "FIM_SE".

OBS.: Não é obrigatória a existência do conjunto de "instruções_N" delimitado pelas palavras-
reservadas "SENÃO" e "FIM_SE".

Exemplo de algoritmo que lê um número e escreve se o mesmo é menor que: 10, 20, 30, ou 40:

    Algoritmo exemplo_estrutura_de_decisão_multipla
    Var
          X : Inteiro;
    Início
          Leia (X);
          Se X < 10 Então
                Escreva ("X é menor que 10");
          Senão Se X < 20 Então
                Escreva ("X é menor que 20");
          Senão Se X < 30 Então
                Escreva ("X é menor que 30");
          Senão Se X < 40 Então
                Escreva ("X é menor que 40");
          Senão
                Escreva ("X é maior ou igual a 40");
          Fim_se
    Fim.

More Related Content

What's hot

Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em PascalPepe Rocker
 
3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacao3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacaoDisys do Brasil
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de ProgramaçãoAdao Chiavelli
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmosslashmelhor
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmospronatecvja
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoRegis Magalhães
 
Guia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psGuia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psMauro Pereira
 
Apostila de algoritimo super básica
Apostila de algoritimo super básicaApostila de algoritimo super básica
Apostila de algoritimo super básicaPablo Verlly Moreira
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)Sandro Lopes
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosRodrigo Kiyoshi Saito
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação12anogolega
 

What's hot (19)

Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacao3 e 4_-_comandos_de_leitura_e_escrita_identacao
3 e 4_-_comandos_de_leitura_e_escrita_identacao
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e Programação
Algoritmos e ProgramaçãoAlgoritmos e Programação
Algoritmos e Programação
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Prova algoritmos
Prova algoritmosProva algoritmos
Prova algoritmos
 
Logica Algoritmo 02 Algoritmo
Logica Algoritmo 02 AlgoritmoLogica Algoritmo 02 Algoritmo
Logica Algoritmo 02 Algoritmo
 
Guia para traducao algoritmos x l ps
Guia para traducao algoritmos x l psGuia para traducao algoritmos x l ps
Guia para traducao algoritmos x l ps
 
Apostila de algoritimo super básica
Apostila de algoritimo super básicaApostila de algoritimo super básica
Apostila de algoritimo super básica
 
Algoritmos - Pascal
Algoritmos - PascalAlgoritmos - Pascal
Algoritmos - Pascal
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)
 
Apostila Visualg
Apostila VisualgApostila Visualg
Apostila Visualg
 
Logica de Programacao
Logica de ProgramacaoLogica de Programacao
Logica de Programacao
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmos
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Cap05
Cap05Cap05
Cap05
 

Similar to Algoritmos e Pseudocódigo

Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfEizoKato
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfEizoKato
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 
53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-iEdvan Mateó
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosJocelma Rios
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
 
Aula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxAula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxGrsonEgnaciodaConcei
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmiadiogoa21
 
4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmoEugenio Caetano
 

Similar to Algoritmos e Pseudocódigo (20)

Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Aula02
Aula02Aula02
Aula02
 
Cap03
Cap03Cap03
Cap03
 
Cap03
Cap03Cap03
Cap03
 
53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i53297189 apostila-algoritmo-e-logica-i
53297189 apostila-algoritmo-e-logica-i
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - Algoritmos
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
02 algoritmos
02 algoritmos02 algoritmos
02 algoritmos
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
 
Aula02
Aula02Aula02
Aula02
 
Aula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptxAula 3 - Formas de Representacao de Algoritmos.pptx
Aula 3 - Formas de Representacao de Algoritmos.pptx
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Cap05
Cap05Cap05
Cap05
 
Cap05
Cap05Cap05
Cap05
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmia
 
4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo4. metodos de contrucao de algoritmo
4. metodos de contrucao de algoritmo
 

More from Cleide Soares

More from Cleide Soares (20)

Topografia aula04
Topografia aula04Topografia aula04
Topografia aula04
 
Topografia aula03
Topografia aula03Topografia aula03
Topografia aula03
 
Topografia aula02
Topografia aula02Topografia aula02
Topografia aula02
 
Topografia aula01
Topografia aula01Topografia aula01
Topografia aula01
 
Apostila de topografia
Apostila de topografiaApostila de topografia
Apostila de topografia
 
Apostilaescoamentoemcondutosforados 120822120337-phpapp02
Apostilaescoamentoemcondutosforados 120822120337-phpapp02Apostilaescoamentoemcondutosforados 120822120337-phpapp02
Apostilaescoamentoemcondutosforados 120822120337-phpapp02
 
Introducao hidrologia
Introducao hidrologiaIntroducao hidrologia
Introducao hidrologia
 
Hp 50g menor
Hp 50g   menorHp 50g   menor
Hp 50g menor
 
Calculo2lista3
Calculo2lista3Calculo2lista3
Calculo2lista3
 
Calculo2lista2
Calculo2lista2Calculo2lista2
Calculo2lista2
 
Calculo2lista1
Calculo2lista1Calculo2lista1
Calculo2lista1
 
Calculo1 aula20
Calculo1 aula20Calculo1 aula20
Calculo1 aula20
 
Calculo1 aula19
Calculo1 aula19Calculo1 aula19
Calculo1 aula19
 
Calculo1 aula18
Calculo1 aula18Calculo1 aula18
Calculo1 aula18
 
Calculo1 aula17
Calculo1 aula17Calculo1 aula17
Calculo1 aula17
 
Calculo1 aula16
Calculo1 aula16Calculo1 aula16
Calculo1 aula16
 
Calculo1 aula15
Calculo1 aula15Calculo1 aula15
Calculo1 aula15
 
Calculo1 aula14
Calculo1 aula14Calculo1 aula14
Calculo1 aula14
 
Calculo1 aula13
Calculo1 aula13Calculo1 aula13
Calculo1 aula13
 
Calculo1 aula12
Calculo1 aula12Calculo1 aula12
Calculo1 aula12
 

Algoritmos e Pseudocódigo

  • 1. Algoritmos Existem muitas formas de se representar algoritmos, utilizando-se linguagens de programação, linguagem formal, formas geométricas, diagramas, e muitas outras. Algumas destas formas se tornaram especiais pela eficácia de sua representação nas diversas áreas do conhecimento. Neste texto de maneira sucinta são apresentadas três destas formas, porém dando-se mais ênfase a duas delas. É importante salientar que o estudo de algoritmos exige do estudante um esforço quanto à realização de exercícios, de modo que não se pode aprendê-lo apenas lendo textos. Sendo assim, procurem realizar os exercícios que são passados em sala de aula. Conceito de Algoritmo - Algoritmo é a especificação de uma sequência ordenada de passos que deve ser seguida com o intuito de realizar uma tarefa, garantindo a sua repetibilidade. Obs.: repetibilidade – permite que esta sequência possa ser repetida toda vez que a tarefa tiver que ser realizada. - Algoritmo é um conjunto finito de regras bem definidas para a solução de um problema, em um tempo finito, e com um número finito de passos. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador. Formas de Algoritmos Existem diversas formas possíveis de se representar um algoritmo. Para a Informática, algumas das formas mais conhecidas são: - Descrição Narrativa - Fluxograma - Pseudocódigo >> Descrição Narrativa: Nesta forma os algoritmos são expressos diretamente em linguagem coloquial, descrevendo-se em passos a sequência de ações a serem realizadas. Exemplo: >> Troca de um pneu furado: Passo 1 – Afrouxar ligeiramente as porcas Passo 2 – Suspender o carro Passo 3 – Retirar as porcas e o pneu Passo 4 – Colocar o pneu reserva Passo 5 – Apertar as porcas Passo 6 – Abaixar o carro Passo 7 – Dar o aperto final nas porcas Um exemplo bastante comum de um Algoritmo em forma de Descrição Narrativa é o texto de um Manual que ensine a utilização de um determinado aparelho. Nele são descritos passos que devem ser seguidos para se realizar as possíveis ações daquele aparelho. O nível de detalhamento destas descrições deve ser tal que permita que toda vez que o Usuário pretenda realizar aquela ação, basta seguir aqueles passos na sequência correta para se ter o êxito esperado.
  • 2. >> Fluxograma ou Diagrama de Blocos: É uma representação gráfica de algoritmos, onde formas geométricas diferentes implicam em ações (instruções ou comandos) distintas. Esta forma facilita o entendimento das idéias contidas nos algoritmos. De modo geral, o fluxograma são símbolos dispostos em uma determinada sequência, em que há um único caminho orientado a ser seguido, representando a sequência de execução daquelas instruções. Dos diversos símbolos existentes que podem ser utilizados em um Fluxograma, os que serão necessários para o curso apresentado neste texto, são: = Início e final do fluxograma = Seta do Fluxo de Dados = Operações de entrada de dados via teclado = Operações de saída de dados em vídeo (monitor) = Processo – ou Processamento, como operações de atribuição = Decisão - utilizado nas estruturas condicionais ("Se..então..senão") = Conector utilizado quando é preciso particionar o diagrama = Preparação – utilizado em laços de repetição do tipo "Para..de..até..faça" >> Pseudocódigo: Esta forma de representação de algoritmos, também conhecida como Português Estruturado ou Portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, será juntamente com o Fluxograma, a forma de representação de algoritmos a ser adotada nesta disciplina. Estrutura de Um Algoritmo na Forma de Pseudocódigo Algoritmo <nome_do_algoritmo> Var <declaração_de_variáveis> Início <corpo_do_algoritmo> Fim. "Algoritmo" é uma palavra que indica o início da definição do algoritmo em forma de pseudocódigo. "<nome_do_algoritmo>" – no lugar deste, deve ser colocado o nome simbólico do algoritmo, o que irá distingui-lo dos demais. "<declaração_de_variáveis>" parte do algoritmo onde devem ser declaradas as variáveis utilizadas no algoritmo. Esta parte será detalhada mais adiante. "Início" e "Fim." são respectivamente as palavras que delimitam o início e o término do conjunto de instruções do corpo do algoritmo.
  • 3. Exemplo de um Algoritmo que calcula a média de duas notas, que devem ser digitados pelo Usuário ao executar o programa, e ao final mostra se houve aprovação ou não, segundo um critério estabelecido. Algoritmo Media Var N1, N2, Media: Real; Início Leia (N1, N2); Media = (N1+N2)/2; Se Media >= 7 Então Escreva ("Aprovado"); Senão Escreva ("Reprovado"); Fim_se Fim. Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: – As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. – Os dados propriamente ditos, que correspondem à porção das informações a serem processadas pelo computador. Para que sejam manipulados pelo processador, os dados devem ser declarados no início do programa, a fim de que o compilador conheça os tipos e os nomes das variáveis que contemplarão estes dados. >> Tipos Inteiros: São os dados numéricos positivos ou negativos excluindo-se destes qualquer número fracionário. Como exemplo deste tipo de dado, tem-se os valores: 35, 0, 234, -56, 1024 entre outros. >> Tipos Reais: São os dados numéricos positivos e negativos, incluindo-se os números fracionários. Como exemplo deste tipo de dado, tem-se os valores: 35, 0, -56, 1.2, 234.18, -45.8987 entre outros. >> Tipos Caracteres: São as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas (""). Este tipo de dado também é conhecido como Alfanumérico, String, Literal ou Cadeia. Como exemplo deste tipo de dado, tem-se os valores: "Programação", "Rua Alfa, 52 Apto 1", "Fone 574-9988", "04387-030", " ", "7" entre outros. >> Tipos Lógicos: São os dados com valor "verdadeiro" ou "falso", sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é conhecido também por tipo "booleano", devido à contribuição do filósofo e matemático inglês George Boole na área da lógica matemática. Conceito e Utilidade de Variáveis Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma, e um valor por ela guardado. Toda variável possui um nome que tem a função de diferenciá-la das demais. Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis.
  • 4. Adotaremos para os algoritmos, as seguintes regras para nome de variável: - deve necessariamente começar com uma letra; - não deve conter nenhum símbolo especial, exceto o "underline" (_); - não deve conter nenhum espaço em branco; - não deve ser uma palavra acentuada; - não poderá ser uma palavra reservada a uma instrução de programa. Obviamente é interessante adotar nomes relacionados às funções que serão exercidas pela variável dentro de um programa. Outro atributo característico de uma variável é o "tipo" do dado que ela pode armazenar. Este atributo define a natureza das informações contidas na variável. Por último há o atributo "valor", que nada mais é do que a informação útil contida na variável. Uma vez definidos os atributos "nome" e "tipo de dado" de uma variável, estes não podem ser alterados, e assim permanecem durante toda a sua existência no programa. Por outro lado, o atributo "valor" está constantemente sujeito a mudanças de acordo com o fluxo de execução do programa (por ser uma "variável"). Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo acessar informações na memória dos computadores por meio de um nome, em vez do endereço de uma célula de memória. Declaração de Variáveis em Algoritmos Todas as variáveis utilizadas em algoritmos devem ser declaradas antes de serem utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas. Nos algoritmos, todas as variáveis utilizadas serão declaradas no início do mesmo, por meio de um comando que pode ser escrito em uma das seguintes formas: VAR <nome_da_variável> : <tipo_da_variável>; ou <lista_de_variáveis> : <tipo_das_variáveis>; Observações: - numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo. Se forem várias, estas devem estar separadas por vírgulas; - variáveis de tipos diferentes devem ser declaradas em linhas diferentes. Operadores Operadores são elementos fundamentais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os números 3 e 2) por meio do operador (+) que representa a operação de adição. Pode-se classificar os operadores levando-se em consideração o tipo de dado de seus operandos, e do valor resultante de sua avaliação. Sendo assim, dividem-se em Operadores "de Atribuição", "Aritméticos", "Relacionais", "Lógicos" e "Literais". >> Operador de Atribuição: Um operador de atribuição serve para atribuir um valor a uma variável. Neste curso o operador de atribuição será o "sinal de igual": = Sendo assim, a sintaxe de um comando de atribuição será: NomeDaVariável = expressão;
  • 5. A expressão localizada no lado direito do sinal de igual é avaliada, e seu valor resultante é armazenado na variável que está à esquerda. "O nome da variável que recebe o valor deve aparecer sempre sozinho, no lado esquerdo do sinal de igual deste comando." Exemplos: a = 3; nota1 = 8.5; media = (nota1 + nota2) / 2; v = v0 + a * t; salFinal = sal * perc / 100; >> Operadores Aritméticos: Os operadores aritméticos relacionam as operações aritméticas básicas, conforme a tabela abaixo: Operador Operação Prioridade + adição 3 - subtração 3 * multiplicação 3 / divisão 3 DIV parte inteira de uma divisão 2 MOD resto de uma divisão 2 ** potenciação (ou exponenciação) 1 Obs.: A prioridade (ou hierarquia) entre operadores define a ordem em que os mesmos serão avaliados (e executados) dentro de uma mesma expressão. >> Operadores Relacionais: Os operadores relacionais são operadores binários que "devolvem" os valores lógicos "verdadeiro" e "falso". Obs.: a palavra "devolvem" indica que uma operação com Operadores Relacionais tem como possíveis resultados apenas 2 valores: "verdadeiro" ou "falso". Operador Operação < menor que > maior que <= menor ou igual a >= maior ou igual a != diferente de == igual a Estes valores são somente usados quando se deseja efetuar comparações. Comparações só podem ser feitas entre objetos de mesma natureza, isto é, variáveis do mesmo tipo de dado. Por exemplo, digamos que a variável inteira "num" contenha o valor 7(sete). Assim as expressões a seguir fornecem cada uma, um valor lógico, sendo falso a primeira, e verdadeiro a segunda: num <= 5 num > 5 Operações que utilizam operadores relacionais são como perguntas, cuja resposta será sempre "Não" ou "Sim"; "Falso" ou "Verdadeiro"; "0" ou "1". Ex.: se num for igual a 7(sete), então: num <= 5 ? ... Não (Falso) num > 5 ? ... Sim (Verdadeiro) >> Operadores Lógicos: Os operadores lógicos ou booleanos são usados para combinar expressões relacionais. Também devolvem como resultado valores lógicos "verdadeiro" ou "falso".
  • 6. Operador OU E NÃO Fornecendo dois valores ou expressões lógicas, representadas por expressão1 e expressão2, podemos descrever as quatro operações lógicas a seguir: expressão1 E expressão2 é verdadeiro somente se ambas, expressão1 e expressão2, forem verdadeiras. Se uma for falsa, ou se ambas forem falsas, a operação "E"como um todo também será falsa. expressão1 OU expressão2 é verdadeiro se tanto a expressão1 como a expressão2 forem verdadeiras. As operações "OU" só resultam em valores falsos se ambas, expressão1 e expressão2, forem falsas. NÃO expressão1 é verdadeiro se expressão1 for falsa; de modo contrário, a expressão "NÃO expressão1" resultará em falso, se expressão1 for verdadeira. Ou seja, a expressão NÃO expressão1 resulta na negação da expressão1. Tabela Verdade: A B A 0U B AEB NÃO A NÃO B V V V V F F V F V F F V F V V F V F F F F F V V >> Operadores Literais: São os operadores que atuam sobre caracteres. Eles variam muito de uma linguagem para outra. O operador mais comum, e mais usado, é o operador que faz a concatenação (união) de strings: ou seja, tomando-se duas strings e unindo-se (concatenando-se) a segunda ao final da primeira. Podem-se utilizar dois operadores que fazem esta operação de união de caracteres: o "sinal de mais", ou a "vírgula". Por exemplo, a concatenação das strings "ALGO" e "RITMO" pode ser representada por: "ALGO" + "RITMO" ou "ALGO", "RITMO" ...e o resultado de sua avaliação é: "ALGORITMO" Nesta Apostila será adotada a "vírgula" como operadora de concatenação. Funções Matemáticas Abaixo, estão enumeradas algumas Funções Matemáticas que poderão ser abordadas e utilizadas em exercícios neste curso: ABS (x) Retorna o valor absoluto (positivo) de uma expressão SEN (x) Retorna o valor do seno COS (x) Retorna o valor do cosseno TAN (x) Retorna o valor da tangente EXP (x) Retorna o valor exponencial (ex - sendo "e" o no de Euler) LN (x) Retorna o logaritmo natural (logaritmo neperiano) PI Retorna o valor de PI (3.1415...)
  • 7. Exemplos de expressões que utilizam estas funções matemáticas: val1 = SEN (4*x); val2 = ABS (val1); val3 = PI * SEN (x + 1); val4 = 2 * a * EXP (x + TAN (y)); val5 = LN (x ** 2) + 3 * COS (x – 2); Expressões O conceito de "expressão", em termos computacionais, está intimamente ligado ao conceito de expressão ou fórmula matemática, onde um conjunto de variáveis e constantes numéricas relaciona- se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num valor. Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou real. Somente o uso de funções, operadores aritméticos, variáveis numéricas e parênteses é permitido em expressões deste tipo. "Toda expressão aritmética deve estar linearizada, ou seja, representada inteiramente em apenas uma linha." As seguintes regras são essenciais para a correta avaliação de expressões: 1. Deve-se observar a prioridade dos operadores, conforme mostrado nas tabelas de operadores: (obs.: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relação à precedência, então a avaliação se faz da esquerda para a direita). 2. Os parênteses usados em expressões tem o poder de "roubar" a prioridade dos demais operadores, forçando a avaliação da subexpressão em seu interior, independente de qual seja. 3. Entre os quatro principais grupos de operadores existentes, a saber, aritmético, lógico, literal e relacional, há uma certa prioridade de avaliação: os aritméticos e literais devem ser avaliados primeiro; a seguir, são avaliadas as sub-expressões com operadores relacionais e, por último são avaliados os operadores lógicos. Comandos de Entrada de Dados Os comandos de entrada de dados são o meio pelo qual as informações dos usuários são transferidas para a memória dos computadores, para que possam ser usadas nos programas. No diagrama de blocos o comando de entrada de dados é representado por: = Operações de entrada de dados via teclado Em Português Estruturado há duas sintaxes possíveis para esta instrução: LEIA (<variável>) Ex: LEIA (X) LEIA (<lista_de_variáveis>) Ex: LEIA (nome, endereco, cidade) Obs.: A lista_de_variáveis é um conjunto de um ou mais nomes de variáveis separados por vírgulas. No diagrama, as variáveis que devem receber os valores devem ser descritas dentro do símbolo: X nome, endereco, cidade OU
  • 8. Comandos de Saída de Dados Os comandos de saída de dados são o meio pelo qual informações contidas na memória dos computadores são colocadas nos dispositivos de saída, para que os usuários possam apreciá-las. No diagrama de blocos o comando de saída de dados é representado por: = Operações de saída de dados em vídeo (monitor) Em Português Estruturado há quatro sintaxes possíveis para esta instrução: ESCREVA (<variável>); Ex: ESCREVA (X); ESCREVA (<lista_de_variáveis>); Ex: ESCREVA (nome, endereco, cidade); ESCREVA (<literal>); Ex: ESCREVA ("Algoritmo é o máximo!"); ESCREVA (<literal>, <variável>, ... ,<literal>, <variável>); Ex: ESCREVA ("Meu nome é: ", nome, "e meu endereço é: ", endereco); No Fluxograma, os valores que devem ser mostrados na tela devem ser descritos dentro do símbolo: X "Valor da média: ", media OU Uma <lista_de_variáveis> é um conjunto de nomes de variáveis separados por vírgulas. Um literal é simplesmente um dado do tipo literal (string ou cadeia de caracteres) delimitado por aspas. Há ainda a possibilidade de se misturar nomes de variáveis com literais na lista de um mesmo comando. O efeito obtido é bastante útil e interessante: a lista é lida da esquerda para a direita e cada elemento da mesma é tratado separadamente; se um nome de variável for encontrado, então o valor da mesma é colocado no dispositivo de saída; no caso de um literal, o mesmo é escrito diretamente no dispositivo de saída (na tela). Exemplo: algoritmo que calcula o preço total de acordo com a quantidade de produto comprada. Algoritmo exemplo_comando_de_entrada_de_dados Var preco_unit, preco_tot : Real; quant : Inteiro; Início Leia (preco_unit, quant); preco_tot = preco_unit * quant; Escreva (preco_tot); Fim.
  • 9. Estruturas Condicionais: (Comandos de Decisão) Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação, têm-se 3 tipos de estruturas de decisão: - Estrutura de Decisão Simples (Se..então..fim_se) - Estrutura de Decisão Composta (Se..então..senão..fim_se) - Estrutura de Decisão Múltipla (Se..então..senão se..então ... fim_se) Uma Estrutura de decisão inicia-se na palavra reservada "SE" (inicial), e termina na palavra reservada "FIM_SE". >> Estruturas de Decisão Simples (Se..então..fim_se) Nesta estrutura uma única condição (expressão lógica) é avaliada. Dependendo do resultado desta avaliação, um comando ou conjunto de comandos serão executados (se a avaliação for verdadeira) ou não serão executados (se a avaliação for falsa). No diagrama de blocos a estrutura para instrução "Se..então..fim_se" é representado por: FALSA VERDADEIRA CONDIÇÃO INSTRUÇÕES Sintaxe em Português Estruturado de uma estrutura de decisão simples: SE <condição> ENTÃO <instruções>; FIM_SE A semântica desta construção é a seguinte: – a condição é avaliada: – Se ela for verdadeira, então o conjunto de instruções delimitado pelas palavras-reservadas "ENTÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE". – No caso da condição ser falsa, o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando APÓS a palavra-reservada "FIM_SE", sem executar o conjunto de instruções entre as palavras-reservadas "ENTÃO" e "FIM_SE".
  • 10. Exemplo de algoritmo que lê um número e escreve se o mesmo é maior que 10: Algoritmo exemplo_estrutura_de_decisão_simples Var X : Inteiro; Início Escreva ("Digite um valor"); Leia (X); Se X > 10 Então Escreva ("X é maior que 10"); Fim_se Fim. >> Estruturas de Decisão Compostas (Se..então..senão..fim_se): Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for "verdadeiro", um conjunto de instruções será executado. Caso contrário, ou seja, quando o resultado da avaliação for "falso", um outro conjunto de instruções será executado. No diagrama de blocos a estrutura para instrução "Se..então..senão..fim_se" é representado por: FALSA VERDADEIRA CONDIÇÃO INSTRUÇÕES_2 INSTRUÇÕES_1 Sintaxe em Português Estruturado de uma estrutura de decisão composta: SE <condição> ENTÃO <instruções_1>; SENÃO <instruções_2>; FIM_SE A semântica desta construção é a seguinte: – a condição é avaliada: – Se ela for verdadeira, então o conjunto de "instruções_1" delimitado pelas palavras-reservadas "ENTÃO" e "SENÃO" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE". – No caso da condição ser falsa, então o conjunto de "instruções_2" delimitado pelas palavras- reservadas "SENÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra- reservada "FIM_SE".
  • 11. Exemplo de algoritmo que lê um número e escreve se o mesmo é, ou não, maior que 100: Algoritmo exemplo_estrutura_de_decisão_composta Var X : Inteiro; Início Leia (X); Se X > 100 Então Escreva ("X é maior que 100"); Senão Escreva ("X não é maior que 100"); Fim_se Fim. >> Estruturas de Decisão Múltiplas (Se..então..senão se..então ... fim_se) Nesta estrutura várias condições (expressões lógicas) são avaliadas. Se o resultado de uma destas avaliações for "verdadeiro", apenas o conjunto de instruções daquela condição será executado. No diagrama de blocos a estrutura para instrução "Se..então..senão se..então ... fim_se" é representado por: VERDADEIRA CONDIÇÃO_1 INSTRUÇÕES_1 FALSA VERDADEIRA CONDIÇÃO_2 nome, INSTRUÇÕES_2 FALSA nome, VERDADEIRA nome, INSTRUÇÕES_3 FALSA nome, INSTRUÇÕES_N nome, Sintaxe em Português Estruturado de uma estrutura de decisão múltipla: SE <condição_1> ENTÃO <instruções_1>; SENÃO SE <condição_2> ENTÃO <instruções_2>; SENÃO SE <condição_3> ENTÃO <instruções_3>; ... SENÃO <instruções_N>; FIM_SE
  • 12. A semântica desta construção é a seguinte: – a 1a condição é avaliada. – Se ela for verdadeira, então o conjunto de "instruções_1" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE". – No caso da 1a condição ser falsa, então a 2a condição é avaliada. – Se ela for verdadeira, então o conjunto de "instruções_2" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE". – No caso desta condição ser falsa, então as seguintes condições são avaliadas em sequência, até encontrar alguma "verdadeira". Se nenhuma das condições existentes for "verdadeira", o conjunto de "instruções_N" delimitado pelas palavras-reservadas "SENÃO" e "FIM_SE" será executado. Ao término de sua execução o fluxo do algoritmo prossegue pela instrução seguinte à construção, ou seja, o primeiro comando após a palavra-reservada "FIM_SE". OBS.: Não é obrigatória a existência do conjunto de "instruções_N" delimitado pelas palavras- reservadas "SENÃO" e "FIM_SE". Exemplo de algoritmo que lê um número e escreve se o mesmo é menor que: 10, 20, 30, ou 40: Algoritmo exemplo_estrutura_de_decisão_multipla Var X : Inteiro; Início Leia (X); Se X < 10 Então Escreva ("X é menor que 10"); Senão Se X < 20 Então Escreva ("X é menor que 20"); Senão Se X < 30 Então Escreva ("X é menor que 30"); Senão Se X < 40 Então Escreva ("X é menor que 40"); Senão Escreva ("X é maior ou igual a 40"); Fim_se Fim.