Mostrando postagens com marcador VisuALG. Mostrar todas as postagens
Mostrando postagens com marcador VisuALG. Mostrar todas as postagens

VisuAlg Vetores

Para esta semana veremos como os vetores funcionam em VisuAlg. Para compreender os vetores em suas estruturas recomendo que observe as aulas de vetores aqui. 
Posteriormente, sabendo o que são, vamos a usabilidade destas estruturas no Visualg, deste modo acompanhe o enunciado do problema inédito (?!?).

1 - Criar um programa que leia um vetor de 5 elementos e apresente esses elementos em ordem crescente.

Veja o código do programa...


Observe que outro índice foi criado para acompanhar a ordenação sendo o j = i+1. Acompanhe as imagens para entender melhor...




Na imagem acima vemos que o Vetor A foi criado e contém 5 elementos (dados guardados em cada espaço do vetor) e, que o índice indica o lugar de cada elemento ( na imagem é o 1, 2, 3, 4 e 5 sobre os quadrados do vetor ). também foi criado um campo de mesmo tipo chamado TROCA para ajudar na manipulação dos dados do Vetor A. Acompanhando o programa teremos o trecho de SORT que é o "para, para se" veja;


Aqui identificamos que o "i" inicia em 1 enquanto que o "j" inicia em "i+1", isto é, o próximo item do vetor. Veja a tabela para identificar qual o valor do i e do j durante o sort.



Certo, vemos então que enquanto o i for 1 o j (preso no para) vai valer de 2 até 5. Por este mesmo motivo o i deve ir apenas até o penúltimo lugar, caso fosse o último, o j seria um valor fora do vetor. i = 5, j = 6 ( i+1 )?!?

Acompanhando o programa no trecho teremos o i como 1, na próxima linha teremos o para iniciando o j como i+1 (2), na próxima linha teremos uma decisão que observa se o elemento de a[i] é maior que o elemento de a[j]. Está sendo observado se o primeiro elemento é maior que o segundo no Vetor A!.
Caso SIM! trocamos a posição do primeiro pelo segundo utilizando o campo TROCA como apoio para não ferir a integridade dos dados veja...



Observe que, como o trecho de programa diz, o campo TROCA recebe o elemento de A[i]. Posteriormente o campo de A[i] recebe o elemento de A[j], veja abaixo...

Agora o campo de TROCA pode ser inserido em A[j]. acompanhe abaixo o processo...
Observamos que comparando os campos uma troca acontece, fazendo com que o elemento menos seja posicionado na primeira posição, onde i é igual a 1. Agora o fimse é alcançado, e posteriormente o primeiro fimpara, neste momento o programa volta para o para do J (o segundo para ) fazendo com que o j passe para o próximo passo, passando a valer 3. E a comparação agora é "se(a[i]>a]j])entao" sendo o i = 1 e o j = 3. Novamente os campos são comparados e trocados toda vez que atender a condição, fazendo o programa colocar os dados na ordem. Quando o j chegar a 5 (última posição possível) o i passa a valer 2 e todo o processo se reinicia...
Observe o resultado final abaixo no compilador.



Note que os valores entraram de uma forma aleatória e saíram ordenados de forma crescente. Para inverter a ordem para decrescente apenas mude o sinal ( operador relacional ) de maior ">" para menor "<".

Vamos ver outro exemplo...

2- Criar um programa que leia 10 elementos inteiros de um Vetor A e apresente em um Vetor B os valores de A invertidos.

Código...

No caso apenas criamos um índice para ajudar a manipular os dados de entrada de do Vetor A de forma invertida diretamente do looping de entrada dos elementos do Vetor A. Veja a saída em monitor...


é isso....
Apreenda!
Compartilhe!

Pronto! <- Pronto! *2;


VisuAlg: Looping Para

Nesta aula veremos como o looping finito For ( Para ) funciona em Visualg. Primeiramente veremos a estrutura do loop para, veja;

Note que o looping para possui palavras chave diversas para funcionar, são elas:
para - de - ate - passo - faca
fimpara
deste modo apenas inserimos a variável para contar os loopings, essa variável muitos chamam de CONTADOR.
Vamos aos exemplos.

Exemplo LOOPing PARA 01: Criar um programa que apresente o fatorial de um valor digitado pelo usuário.

Veja o código em visualg;
Note que NÃO existe a necessidade de iniciarmos a variável i fora do loop como em enquanto - while, a variável no loop finito possui o inicio e o fim pré-estabelecidos pelo programador. No caso, a variável i começa em 1 e vai até o valor digitado pelo usuário de 1 em 1.
Veja o resultado;
Agora vemos que o fatorial de 5 é 120, e que o programa funciona normalmente...

Exemplo LOOPing PARA 02: Criar um programa que apresente a sequencia de Fibonacci até o valor digitado pelo usuário.
Código;

No caso, vemos acontecer o mesmo princípio, que a variável é iniciada em 1 e vai até o termo digitado pelo usuário de 1 em 1. 

Saída;


Exemplo LOOPing PARA 03: Criar um programa que leia 5 valores e apresente o maior e o menor dos valores lidos.
Código;
Neste caso a variável contador i vai de 1 até 5 passo 1, verificando para cada loop se os valores maior e menor mudam com a entrada do valor digitado pelo usuário.
Saída;



Exemplo LOOPing PARA 04: Criar um programa que apresente todos os valores PARES situados entre 40 e 0. Apresente os valores em ordem decrescente.

Veja o código;
Muito simples não? Veja que apenas criamos um looping que tem o contador ( i ) para ir de 40 até 1 de 2 em 2 decrementando o valor para cada loop, isto é, vai tirar de 2 em 2 da variável para cada rodada.
veja o resultado;
É isso!
Pronto, Pronto!!!







VisuAlg: Looping Enquanto

Primeiramente saibamos que existem dois tipos principais de looping, os finitos e os infinitos, os finitos são processos de repetição definidos que recebem o primeiro e o último termo para repetir o trecho de programa e os infinitos são os que dependem da estrutura condicional para verificar se repetem o trecho de programa ou não.
Nesta aula veremos como os loopings infinitos funcionam. Para iniciarmos, veremos a estrutura do looping Enquanto, veja;


Observe que apenas se a condição - pergunta tiver uma resposta SIM - positiva, o trecho se repete, caso contrário ele não faz as instruções dentro da repetição.
Vamos aos exemplos...

Exemplo Enquanto 01: Criar um programa que leia um valor e apresente seu Fatorial.

Veja o código em VisualG;
Note que a variável "i" deve ser utilizada para controlar quantas vezes queremos que o looping aconteça, onde inicializamos a variável em 1 e sempre antes do comando enquanto - loop, pois vamos fazer com que o loop enquanto verifique se o valor de i é menor que o valor digitado pelo usuário, quando a variável i for maior o looping para de repetir o trecho de instruções e imprime o resultado do fatorial. Observe ainda a variável i sendo incrementada dentro do loop para passar para a próxima rodada assim ele soma 1 para cada vez que repetir o trecho de programa de 1 em 1 até o valor digitado pelo usuário.
Veja o resultado compilado;

Vamos para outro exemplos utilizando o looping enquanto...

Exemplo Enquanto 02 : Criar um programa que apresente a sequencia de Fibonacci até o termo digitado pelo usuário.

Vamos ao código;
Neste caso veja que a variável i faz o mesmo efeito de controle de repetições do exercício anterior, sendo iniciada em 1 e verificando se ela é menor que o termo que o usuário digitou. Enquanto SIM o trecho será repetido pelo programa. Veja o resultado;


Exemplo Enquanto 03 : Criar um programa que leia 5 valores e apresente o maior e o menor dos valores digitados pelo usuário.

Vamos ao código...
Note que primeiramente iniciamos as variáveis maior e menor com os valores limite sendo para o menor o maior valor e para o maior o menor valor. Veja a saída...
Neste exemplo, cada valor que entrar será comparado com os que no momento são o maior e o menor, no fim, apenas apresentamos o maior e o menor que guarda os respectivos valores.

Pronto! Pronto!
Sentiu?!?... o cheiro de Lista... parece próximo...









VisuAlg - Decisões Compostas e Encadeadas

Nesta aula veremos a utilização de decisões compostas, as decisões que DEVEM possuir as respostas SIM e NÃO para a condição ( pergunta ). Veja a Sintaxe...


Na estrutura vemos que agora a estrutura condicional pede que exista e pergunta, a resposta SIM e a resposta NÃO, sendo o se, então e senão.

Vamos aos exemplos.

VisuAlg Decisão Composta 01 - Criar um programa que leia um valor e apresente se o valor é PAR ou ÍMPAR.

Veja o código no interpretador e as possíveis respostas.
Note que a variável "a" é um inteiro e que a decisão verifica do seguinte modo o valor; se "a" dividido em dois módulos (partes) iguais restar zero então é "PAR", senão é "ÍMPAR" ( como mostrado na aula anterior ), a diferença fica por conta do "SENAO" que abre a parte da resposta "NÃO" da estrutura condicional.

VisuAlg Decisão Composta 02 - Criar um programa que leia 4 notas escolares e apresente e soma das notas, a média, e as seguintes possibilidades: Aprovado ( caso média maior que 7 ) ou Retido ( caso média menor ou igual a 7 ) e a situação; A ( caso média entre 8 e 10 ) ou B ( caso média entre 6 e 8 ) ou C ( caso média entre 4 e 6 ) ou D ( caso média entre 2 e 4 ) ou E ( caso média entre 0 e 2 ).



Note que para a resposta, utilizamos o código de decisão composto encadeado, onde uma resposta NÃO abre uma nova pergunta que por sua vez, abre uma nova resposta SIM e uma nova resposta Não. Para entendermos melhor veja no Fluxograma o desenho da decisão encadeada.

Observe que a decisão possui duas saídas, uma SIM o outra Não, note ainda que a saída não da primeira decisão segue para uma nova decisão, encadeando as respostas, agora a nova decisão possui duas outras saídas, uma SIM e outra Não, ambas apenas aparecem caso a resposta da primeira decisão seja Não. Podemos encadear as decisões para termos certeza de apenas UMA resposta como saída. No caso, o aluno não pode estar com A e C ao mesmo tempo então apenas UMA das respostas esta correta e, esta, será impressa no monitor para o usuário.

Veja as saídas no monitor:;


Veja outros resultados possíveis::


VisuAlg Decisão Composta 03 - Criar um programa que leia 10 valores e apresente o MAIOR e o MENOR valor do grupo.

Código::


Observe que mesmo com a repetição da verificação do maior e menor, o programa é simples, apenas inicia o maior e o menor com a primeira variável lida e depois verifica a necessidade de substituição de Maior ou Menor de acordo com a variável A lida. Observe ainda o uso do comando "limpatela" para deixar menos informações no monitor durante a execução do programa, no caso, antes de um novo pedido de dados, o programa limpa o anterior.

Saída no monitor::

Primeiramente acontecem as entradas dos 10 valores...
...depois, a saída do Maior e Menor valor entre os 10...

Onde temos respectivamente a entrada 7 e 8 para esse caso, do menor e do maior valor.

Para saber mais, apenas o treinamento causa a pergunta certa e a busca pela resposta...
... deste modo, apenas uma boa e longa LISTA de exercícios para relaxar...
... blz...
...
..
.






VisuAlg - Decisões Simples

Nesta aula veremos como o VisuAlg trabalha com decisões. Para isso, iniciaremos o trabalho com decisões simples. As Decisões Simples, são as estruturas condicionais, que apenas respondem SIM para a condição, isto é, quando uma pergunta é feita para o computador, interpretador, apenas a resposta afirmativa interessa ao programador. Podemos dizer simplesmente "que só o SIM interessa!". Veja a sintaxe a seguir:



Note que a escrita tem certas normas, como o então estar sem o til, ou o fim se estar escrito junto, se fizer diferente, não funciona!, fique atento!

Vamos aos exemplos.
VisuAlg Decisão Simples 01 - Criar um programa que leia dois valores, A e B e implique a soma dos valores em R. Apresente o resultado da soma apenas se o resultado for menor ou igual a 10.

Considerando para a atividade, o VisuAlg, temos o seguindo código:
Observe que o comando "escreval" serve para pular uma linha. No exemplo, o comando de decisão "se" verifica se a Soma que está em R é menor ou igual a 10, se SIM, então será impresso com o comando "escreva" a frase: ("A Soma dos Valores é Menor que 10 :: Valor >> ", r), deste modo o resultado da soma será apresentado somente quando a soma for menor que 10, caso seja MAIOR que 10, o programa não faz nada...
Veja a compilação do código:
Note que, os valores de entrada foram para A = 5 e para B = 4 o que somados é 9, sendo MENOR que 10 e deste modo apresentados. Veja esse caso:
Agora temos a entrada de A = 5 e de B = 6 o que resulta na soma MAIOR que 10 e por esse motivo não temos a apresentação do resultado guardado em R.

Precisamos saber ainda o que são operadores relacionais e operadores lógicos para utilizar melhor as condições. Veja os símbolos e seus significados:


VisuAlg Decisão Simples 02 - Criar um programa que leia um valor e apresente se o mesmo é par.

Veja o código...
Observe o código da estrutura condicional ( SE ), aqui ele verifica se um valor lido é dividido por 2 e o restante da divisão é zero, se isso ocorrer quer dizer que o valor é PAR, veja...
Facilmente notamos que o valor dividido em dois módulos iguais, quando resta zero é PAR, caso contrário...
Agora note que quando a divisão em duas partes iguais resulta 1 teríamos o valor ímpar, sendo a estrutura condicional -  se ( vlr mod 2 = 1 ) entao - onde a estrutura verifica se o valor é impar...
Note ainda, e, mais importante, que sempre a verificação deve ser feita com valores INTEIROS, já que se forem REAL sempre teríamos resto zero, como no exemplo acima teríamos 4,5 e 4,5 para dividir 9.
Veja as possíveis saídas em monitor.


VisuAlg Decisão Simples 03 - Criar um programa que leia um valor e apresente um quadrado caso o valor digitado seja 1, um círculo caso o valor seja 2 ou, um triângulo, caso o valor seja 3.

Veja o código...
Veja que apenas temos as decisões simples, verificando cada uma a sua saída, seu valor.
Os resultados podem ser...

Bom, é isso!...
... só tem um jeito de saber...fazendo...
... lista II.









VisuAlg Introdução

Introdução



A linguagem que o VisuAlg interpreta é bem simples: é uma versão portuguesa dos pseudocódigos largamente utilizados nos livros de introdução à programação, conhecida como "Portugol". 
A linguagem do VisuAlg permite apenas um comando por linha: desse modo, não há necessidade de tokens separadores de estruturas, como o ponto e vírgula em Pascal. Também não existe o conceito de blocos de comandos (que correspondem ao begin e end do Pascal e ao { e } do C, nem comandos de desvio incondicional como o goto.
Na versão atual do VisuAlg, com exceção das rotinas de entrada e saída,não há nenhum subprograma embutido, tal como Inc(), Sqr(), Ord(), Chr(), Pos(), Copy() ou outro.

O VisuAlg também não distingue maiúsculas e minúsculas no reconhecimento de palavras-chave e nomes de variáveis.



Formato Básico do Pseudocódigo e Inclusão de Comentários


O formato básico do nosso pseudocódigo é o seguinte:
algoritmo "nome"

// bloco de declaração de variáveis

inicio
// Seção de Comandos

fimalgoritmo
A primeira linha é composta pela palavra-chave algoritmo seguida do seu nome delimitado por aspas duplas. Este nome será usado como título nas janelas de leitura de dados (nas futuras versões do VisuAlg, talvez utilizemos este dado de outras formas). A seção que se segue é a de declaração de variáveis, que termina com a linha que contém a palavra-chave inicio. Deste ponto em diante está a seção de comandos, que continua até a linha em que se encontre a palavra-chave fimalgoritmo. 

Esta última linha marca o final do pseudocódigo: todo texto existente a partir dela é ignorado pelo interpretador.

O VisuAlg permite a inclusão de comentários: qualquer texto precedido de "//" é ignorado, até se atingir o final da sua linha. Por este motivo, os comentários não se estendem por mais de uma linha: quando se deseja escrever comentários mais longos, que ocupem várias linhas, cada uma delas deverá começar por "//".


Tipos de Dados


O VisuAlg prevê quatro tipos de dados: inteiro, real, cadeia de caracteres e lógico (ou booleano). As palavras-chave que os definem são as seguintes (observe que elas não têm acentuação):

  • inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.
  • real: define variáveis numéricas do tipo real, ou seja, com casas decimais.
  • caractere: define variáveis do tipo string, ou seja, cadeia de caracteres.
  • logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.
  • Numéricos: são valores numéricos escritos na forma usual das linguagens de programação. Podem ser inteiros ou reais. Neste último caso, o separador de decimais é o ponto e não a vírgula, independente da configuração regional do computador onde o VisuAlg está sendo executado. O VisuAlg também não suporta separadores de milhares.
  • Caracteres: qualquer cadeia de caracteres delimitada por aspas duplas (").
  • Lógicos: admite os valores VERDADEIRO ou FALSO.

Operadores Aritméticos
+,-Operadores unários, isto é, são aplicados a um único operando. São os operadores aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o operador unário - inverte o sinal do seu operando, o operador + não altera o valor em nada o seu valor.
\Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador de divisão tradicional.
+,-,*,/Operadores aritméticos tradicionais de adição, subtração, multiplicação e divisão. Por convenção, * e / têm precedência sobre + e -. Para modificar a ordem de avaliação das operações, é necessário usar parênteses como em qualquer expressão aritmética.
MOD ou %Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma precedência do operador de divisão tradicional.
^Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência entre os operadores aritméticos binários (aqueles que têm dois operandos).

Operadores de Caracteres
+Operador de concatenação de strings (isto é, cadeias de caracteres), quando usado com dois valores (variáveis ou constantes) do tipo "caractere". Por exemplo: "Rio " + " de Janeiro" = "Rio de Janeiro".

Operadores Relacionais

=, <, >, <=, >=, <> Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou igual a, diferente de. São utilizados em expressões lógicas para se testar a relação entre dois valores do mesmo tipo. Exemplos: 3 = 3 ( 3 é igual a 3?) resulta em VERDADEIRO ; "A" > "B" ("A" está depois de "B" na ordem alfabética?) resulta em FALSO.
Importante: No VisuAlg, as comparações entre strings não diferenciam as letras maiúsculas das minúsculas. Assim, "ABC" é igual a "abc". Valores lógicos obedecem à seguinte ordem: FALSO < VERDADEIRO.


Operadores Lógicos
naoOperador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO = VERDADEIRO. Tem a maior precedência entre os operadores lógicos. Equivale ao NOT do Pascal.
ouOperador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro. Equivale ao OR do Pascal.
eOperador que resulta VERDADEIRO somente se seus dois operandos lógicos forem verdadeiros. Equivale ao AND do Pascal.
xouOperador que resulta VERDADEIRO se seus dois operandos lógicos forem diferentes, e FALSO se forem iguais. Equivale ao XOR do Pascal.

Exemplos:
var a: inteiro

    Valor1, Valor2: real
    nome_do_aluno: caractere
    sinalizador: logico
Note que não há a necessidade de ponto e vírgula após cada declaração: basta pular linha. 


Constantes e Comando de Atribuição


O VisuAlg tem três tipos de constantes:
A atribuição de valores a variáveis é feita com o operador <-. Do seu lado esquerdo fica a variável à qual está sendo atribuído o valor, e à sua direita pode-se colocar qualquer expressão (constantes, variáveis, expressões numéricas), desde que seu resultado tenha tipo igual ao da variável.

Alguns exemplos de atribuições, usando as variáveis declaradas acima:
a <- 3
Valor1 <- 1.5
Valor2 <- Valor1 + 4
nome_do_aluno <- "José da Silva"
sinalizador <- FALSO

Comandos de Saída de Dados

escreva (<lista-de-expressões>)

Escreve no dispositivo de saída padrão (isto é, na área à direita da metade inferior da tela do VisuAlg) o conteúdo de cada uma das expressões que compõem <lista-de-expressões>.  As expressões dentro desta lista devem estar separadas por vírgulas; depois de serem avaliadas, seus resultados são impressos na ordem indicada. 

escreval (<lista-de-expressões>) 

Idem ao anterior, com a única diferença que pula uma linha em seguida. 

Exemplos:
algoritmo "exemplo"
var x: real
    y: inteiro
    a: caractere
    l: logico
inicio
x <- 2.5
y <- 6
a <- "teste"
l <- VERDADEIRO
escreval ("x", x:4:1, y+3:4) // Escreve: x 2.5    9
escreval (a, "ok")           // Escreve: testeok (e depois pula linha)
escreval (a, " ok")          // Escreve: teste ok (e depois pula linha)
escreval (a + " ok")         // Escreve: teste ok (e depois pula linha)
escreva (l)                  // Escreve: VERDADEIRO
fimalgoritmo

Note que o VisuAlg separa expressões do tipo numérico e lógico com um espaço à esquerda, mas não as expressões do tipo caractere, para que assim possa haver a concatenação. Quando se deseja separar expressões do tipo caractere, é necessário acrescentar espaços nos locais adequados.


Comando de Entrada de Dados

leia (<lista-de-variáveis>)

Recebe valores digitados pelos usuário, atribuindo-os às variáveis cujos nomes estão em <lista-de-variáveis> (é respeitada a ordem especificada nesta lista). 
.
Veja no exemplo abaixo o resultado:


algoritmo "exemplo 1"
var x: inteiro;
inicio
leia (x)
escreva (x)
fimalgoritmo

Bom, vamos aos exemplos no aplicativo Interpretador.



1 - Criar um programa que apresente a TABUADA de uma valor digitado pelo usuário.

Primeiramente vejamos como o código fica em Portugol na ferramenta VisuAlg...


acompanhe as linhas do código;
linha 01 - a palavra reservada algoritmo seguida de "semnome", onde semnome poderia ser o nome dado ao código pelo desenvolvedor, como programa 01, exec01 etc.
linha 02 - a palavra reservada var marca o bloco de declaração de variáveis onde a criação das variáveis deve ser feita para depois serem utilizadas no programa. Neste caso apenas uma variável foi necessária sendo a VLR do tipo INTEIRO.
linha 3 - inicio, aqui vemos o inicio do corpo do programa, para a inserção de comandos, procedimentos etc.
linha 4 - escreva("Entre com o valor da TABUADA ::"), vemos aqui a função de saída "escreva", imprimindo no monitor a frase "Entre com o valor para a TABUADA::", para tratamento ao usuário.
linha 5 - leia (vlr), nesta linha a entrada através do comando leia guarda o valor digitado pelo usuário na variável vlr.
linha 6 até linha 15 - o comando de saída apresenta a TABUADA feita com o valor digitado pelo usuário, note que para imprimirmos o valor da variável juntamente com o texto devemos separá-los por vírgula e aspas(quando texto).
linha 16 - fimalgoritmo. aqui indica que o processo terminou.

Veja como aparece no monitor...


Justamente como programamos para sair, cada multiplicação em uma linha e formatado para entendimento do usuário.

2 - Criar um programa que leia 2 valores e apresente os valores invertidos.


É isso!, somente a prática pode facilitar o processo de produção...
... bora fazer a lista I nesse trem!...
...

Pronto! Pronto!