Escolar Documentos
Profissional Documentos
Cultura Documentos
1º Trimestre
Moisés Henrique Ramos Pereira
Técnico Integrado em
Informática
Moisés Henrique Ramos Pereira
Belo Horizonte
Instituto Federal de Minas Gerais
2021
Palavra do Professor-Autor
Este módulo se constitui parte da estratégica pedagógica do IFMG campus Ribeirão das
Neves para o fornecimento do Ensino Remoto Emergencial devido à pandemia da Covid-19.
SEMANA 11
Estruturas de Repetição no Visualg.
21/06 a 25/06
Os temas serão abordados em cada parte por meio de vídeos postados pelo professor e
leitura de textos indicados. Além disso, haverá também a oportunidade de tirar dúvidas por
meio de reuniões virtuais pelo Microsoft Teams. Nessas reuniões virtuais, o professor poderá
mostrar a resolução de algumas atividades para você. De qualquer forma, essas reuniões
serão gravadas para você poder acompanhar depois os passos na resolução de algumas
atividades, juntamente com os vídeos.
Assim, durante o módulo, vamos fazer 4 atividades avaliativas, sendo 3 delas valendo 8
pontos e a avaliação síncrona valendo 6 pontos, totalizando os 30 pontos para o 1º trimestre.
Essas atividades poderão ser postadas em campos próprios da disciplina cadastrada no
Moodle, equivalente a esse material, ou entregues fisicamente no campus pelos estudantes
que não tem recursos de conexão à Internet em casa.
Apresentação dos Ícones
Os ícones são elementos gráficos para facilitar os estudos, fique atento quando eles
aparecem no texto. Veja aqui o seu significado:
Objetivos
Nessa unidade, vamos rever alguns conceitos fundamentais
vistos em sala sobre algoritmos, lógica de programação e tipos
de representação de algoritmos.
Sabemos que um computador serve para receber, manipular e armazenar dados. A partir de
diversos circuitos eletrônicos, cabos e fontes de alimentação, o computador só consegue
armazenar dados em discos, imprimir relatórios, gerar gráficos, realizar cálculos, entre outras
funções, por meio de programas. Com isso, a principal finalidade de um computador é o
processamento de dados, ou seja, receber uma entrada de dados, seja por teclado, mouse,
ou scanner, por exemplo, realizar operações com esses dados e gerar uma resposta em um
dispositivo de saída como impressora, monitor, etc. Um determinado tipo de processamento
de dados que queiramos realizar é definido por meio de um ou mais programas que devemos
escrever. No entanto, para que o computador compreenda e execute esses programas,
devemos escrevê-los usando uma linguagem de códigos que tanto o computador quanto o
desenvolvedor do programa entendam, conhecida por linguagem de programação.
Para auxiliar o entendimento sobre quaisquer linguagens de programação, é necessário
desenvolver uma lógica voltada para o desenvolvimento de programas a partir de algoritmos,
recursos que descrevem uma sequência de comandos não ambíguos que, se obedecidos,
resultam numa sucessão finita de ações que permitam resolver alguma situação-problema.
Em 2012, Ascencio e Campos listaram algumas etapas para a construção de programas:
Análise: estuda-se o enunciado do problema para definir os dados de entrada, o
processamento e os dados de saída;
Algoritmo: ferramentas do tipo descrição narrativa, fluxograma ou português
estruturado são utilizadas para descrever o problema com suas soluções;
Codificação: o algoritmo é transformado em códigos da linguagem de programação
escolhida para se trabalhar.
E olha que no caso do Algoritmo 1, temos um conceito matemático não ambíguo, ou seja,
que não significa outra coisa, mas no Algoritmo 2 temos algumas situações ambíguas. Por
exemplo, se um robô entender que pegar a maionese é ele ia lá com a mão e pegar aquele
conteúdo pastoso e depois passar no pão, vai virar aquela bagunça e pouco higiênico, ainda
mais se for o mesmo robô que limpa o vaso sanitário. O Passo 4 também foi pouco
específico: não falou em passar a maionese no meio do pão entre as duas fatias no local do
corte. O robô poderia passar a maionese na parte de cima do pão, e untar bem, pois não se
falou da quantidade. Pois é: ia ser aquela “maravilha melecada” pra pegar esse troço depois
pra comer, né? rs
Considerando os algoritmos descritos anteriormente, você pode estar pensando: “Mas
eu realizo essas atividades de maneira diferente!”. Esse pensamento está correto, pois, às
vezes, um problema pode ser resolvido de diversas maneiras, porém, gerando a mesma
resposta. Ou seja, podem existir vários algoritmos para solucionar o mesmo problema.
Para a construção de qualquer tipo de algoritmo, é necessário seguir estes passos:
Compreender completamente o problema a ser resolvido, destacando os pontos mais
importantes e as partes que o compõem;
Definir os dados de entrada, ou seja, quais dados serão fornecidos e que fazem parte
dessa situação-problema;
Definir o processamento, ou seja, quais cálculos serão efetuados e quais as restrições
para esses cálculos. O processamento é responsável pela transformação dos dados
de entrada em dados de saída;
Definir quais os dados de saída que serão gerados depois do processamento;
Construir o algoritmo utilizando um dos tipos descritos no próximo tópico;
Testar o algoritmo realizando simulações.
1.2. Tipos de Representação de Algoritmos
Figura 2 – Fluxograma envolvendo o fluxo com duas variáveis para fazer a soma entre dois números.
Fonte: Elaborado pelo Professor-Autor.
Duas pessoas estão conversando e precisam realizar uma conta. A primeira pessoa diz:
“Vamos somar dois números”. E continua: “O primeiro número é 5”. A segunda pessoa
guarda o primeiro número na cabeça, ou seja, na memória. A primeira pessoa diz: “O
segundo número é 3”. A segunda pessoa também guarda o segundo número na cabeça,
sem esquecer o primeiro número, ou seja, cada número foi armazenado em posições
diferentes da memória humana, sem sobreposição. A primeira pessoa pergunta: “Qual é o
resultado da soma?”. Aí a segunda pessoa resgata os valores armazenados na memória,
realiza a conta e responde dizendo que o resultado é 8.
Um algoritmo e, posteriormente, um programa recebem dados que precisam ser
armazenados no computador para serem utilizados no processamento. Esse
armazenamento é feito na memória. Pode ser um posição diferente na memória RAM,
também conhecida como memória primária, caso o programa esteja em execução, ou pode
ser uma posição diferente na memória secundária (HD, SSD, arquivos, pendrive, etc). Essas
posições diferentes na memória para armazenar os dados podem ser representadas nos
programas por meio de variáveis. Uma variável representa uma posição de memória, que
possui nome e tipo, e seu conteúdo pode variar ao longo do tempo, durante a execução de
um programa. Embora uma variável possa assumir diferentes valores, ela só pode
armazenar um valor a cada instante.
Os tipos de dados das variáveis podem ter nomes diferentes para cada linguagem, mas
correspondem, basicamente, nos tipos numéricos, lógicos e literais ou caracteres, que estão
descritos a seguir de uma forma geral:
Os dados numéricos dividem-se em dois grupos: inteiros e reais. Os números inteiros
podem ser positivos ou negativos e não possuem parte fracionária como, por exemplo, os
números -5, 18, 233, 12, e 74. Já os números reais podem ser positivos ou negativos e
possuem parte fracionária, como por exemplo os números 23.45, 346.89, –34.88 e 0.0.
O tipo de dado lógico é também chamado de booleano, por causa da álgebra de Boole,
e podem assumir os valores verdadeiro ou falso.
Os dados do tipo texto, chamados de literais ou caracteres, são dados formados por um
único caractere ou por uma cadeia de caracteres. Esses caracteres podem ser as letras
maiúsculas, as letras minúsculas, os números (não podem ser usados para cálculos) e os
caracteres especiais (&, #, @, ?, +). Alguns exemplos desse tipo de dado seriam “aluno”,
“1234”, “@ internet”, “0.34”, “1 + 2”, ‘A’ e ‘3’. Um caractere é representado entre apóstrofos
(ou aspas simples) e um conjunto de caracteres é representado entre aspas duplas.
Outro componente importante para manipular os dados de uma variável é o conceito de
identificadores, que são os nomes das variáveis, dos programas, das constantes, das
rotinas, das unidades, dentre outros. As regras básicas para a formação dos identificadores
de variáveis são:
Os caracteres permitidos são: os números, as letras maiúsculas, as letras minúsculas
e o caractere sublinhado;
O primeiro caractere deve ser sempre uma letra ou o caractere sublinhado;
Não são permitidos espaços em branco e caracteres especiais (@, $, +, –, %, !);
Não podemos usar as palavras reservadas nos identificadores, ou seja, palavras que
pertençam à linguagem de programação. Por exemplo, ao declarar uma variável para
o nome do seu cachorrinho, se for uma ideia de programar um aplicativo para
petshops, o nome dela poderia ser nomeDog, ou nomeCachorro, ou só meuPet, ou o
nome de algo abstrato, etc. Sua variável não pode se chamar 5dog, pois começou
com número e essa forma está incorreta.
Estrutura Sequencial em Visualg
Objetivos
Nessa unidade, veremos a implementação e execução de
algoritmos simples por meio de estruturas sequenciais de
pseudocódigo em Visualg.
Objetivos
Nessa unidade, veremos a implementação e execução de
algoritmos em pseudocódigo Visualg utilizando estruturas
condicionais simples e compostas.
Objetivos
Nessa unidade, veremos a implementação e execução de
algoritmos em pseudocódigo Visual utilizando as estruturas de
repetição Para, Enquanto e Repita para diversas aplicações.
Essa estrutura de repetição é utilizada quando não se sabe o número de vezes que um
trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se
conhece esse número.
Essa estrutura baseia-se na análise de uma condição. A repetição será feita enquanto a
condição se mostrar verdadeira.
Existem situações em que o teste condicional da estrutura de repetição, que fica no início,
resulta em um valor falso logo na primeira comparação. Nesses casos, os comandos escritos
dentro da estrutura de repetição não serão executados.
Enquanto (condição) Faca
Bloco_de_Comandos1
FimEnquanto
Enquanto a condição for verdadeira, o Bloco_de_Comandos1 será executado.
Enquanto (condição) Faca
Comando1
Comando2
Comando3
FimEnquanto
Enquanto a condição for verdadeira, o Comando1, o Comando2 e o Comando3 serão
executados.
Exemplos de trecho de código:
x <- 1
y <- 5
Enquanto (x < y) Faca
x <- x + 2
y <- y + 1
FimEnquanto
No trecho do algoritmo anterior, portanto, os comandos que estão dentro da estrutura de
repetição são repetidos quatro vezes.
x <- 1 // inicialização da variável x com o valor 1
y <- 1 // inicialização da variável y com o valor 1
Enquanto (x <= 5) Faca
y <- y * x // acumulador das multiplicações
x <- x + 1 // contador incrementado em 1 unidade
FimEnquanto
No trecho do algoritmo anterior, portanto, os comandos que se localizam na estrutura de
repetição são repetidos cinco vezes. Nesse exemplo, a estrutura Enquanto é utilizada para
repetir o trecho do algoritmo em um número definido de vezes.
Essa estrutura de repetição é utilizada quando não se sabe o número de vezes que um
trecho do algoritmo deve ser repetido, embora também possa ser utilizada quando se
conhece esse número.
Essa estrutura baseia-se na análise de uma condição. A repetição será feita até a
condição se tornar verdadeira.
A diferença entre a estrutura Enquanto e a estrutura Repita é que, nessa última, os
comandos serão repetidos pelo menos uma vez, já que a condição de parada se encontra
no final. Exemplos:
Repita
Bloco_de_Comandos
Ate (condição)
Repita os comandos até a condição se tornar verdadeira.
Exemplos:
x <- 1
y <- 5
Repita
x <- x + 2
y <- y + 1
Ate (x >= y)
No trecho do algoritmo anterior, portanto, os comandos escritos dentro da estrutura de
repetição são repetidos quatro vezes.
x <- 1
y <- 1
Repita
y <- y * x
x <- x + 1
Ate (x = 6)
No trecho do algoritmo anterior, portanto, os comandos que se localizam dentro da
estrutura de repetição são repetidos cinco vezes. Nesse exemplo, a estrutura Repita é
utilizada para repetir o trecho do algoritmo em um número definido de vezes.