Escolar Documentos
Profissional Documentos
Cultura Documentos
Conteúdo programático
Aula 1 – Introdução a programação.
Aula 2 – Variáveis, constantes e tipos de dados.
Aula 3 – Primeiro Programa (Algoritmos)
Aula 4 – Tipos de Operadores
Aula 5 – Estrutura de Decisão 1.
Aula 6 – Estrutura de Decisão 2.
Aula 7 – Estrutura de Repetição 1.
Aula 8 – Estrutura de Repetição 2.
Aula 9 – Manipulação de Vetores
Aula 10 – Manipulação de Matrizes
Aula 11 – Funções e Procedimentos
Aula 12 – Manipulação de Registro
Aula 13 – Tópicos Avançados
Aula 14 – Programação estruturada
0
Lógica de Programação
Sobre o curso
A lógica de programação é a linguagem usada para criar um programa de
computador. A lógica de programação é essencial para desenvolver
programas e sistemas informáticos, pois ela defina o
encadeamento lógico para esse desenvolvimento.
1
SUMÁRIO
1. Aula 1 – Seja Bem-Vindo!...................................... 3 10.3. Exercício de Fixação .................................. 44
1.1. Lógica Básica....................................................... 4 11.Aula 11 – Programação Estruturada. ................... 45
1.2. Exercício de Conteúdo ........................................ 6 11.1. Funções ..................................................... 45
1.3. Exercício de Fixação............................................ 7 11.2. Procedimentos .......................................... 46
2. Aula 2 – Constantes e Variáveis............................. 8 11.3. Variáveis Globais e Locais ......................... 46
2.1. Tipos de Dados ................................................. 10 11.4. Funções Pré-Definidas .............................. 46
2.2. Exercício de Conteúdo ...................................... 11 11.5. Criando Funções ....................................... 47
2.3. Exercício de Fixação.......................................... 11 11.6. Passagens de Parâmetros em
3. Aula 3 – Algoritmos ............................................ 13 Procedimentos ......................................................... 48
3.1. Algoritmos não estruturados ........................... 13 11.7. Exercício de Conteúdo .............................. 49
3.2. Algoritmos estruturados .................................. 14 11.8. Exercício de Fixação .................................. 49
3.3. Algoritmos no Facebook................................... 14 12.Aula 12 – Modularização .................................... 50
3.4. Algoritmos no Google ....................................... 15 12.1. Módulo...................................................... 50
3.5. Algoritmos no Instagram .................................. 15 12.2. Escopo de Dados e Códigos ...................... 51
3.6. Algoritmos no Spotify ....................................... 15 12.3. Alguns comandos no VisuAlg .................... 52
3.7. Representações de um Algoritmo .................... 16 12.4. Comandos de Depuração .......................... 53
3.8. VisuAlg .............................................................. 17 12.5. Exercício de Conteúdo .............................. 54
3.9. Exercício de Conteúdo ...................................... 20 12.6. Exercício de Fixação .................................. 54
3.10. Exercício de Fixação .................................. 21 13.Aula 13 – Praticando........................................... 55
4. Aula 4 – Operadores ........................................... 22 13.1. Exercício de Conteúdo .............................. 56
4.1. Operadores Aritméticos ................................... 22 13.2. Exercício de Fixação .................................. 56
4.2. Operadores Relacionais .................................... 23 14.Aula 13 – Praticando........................................... 57
4.3. Operadores Lógicos .......................................... 23
4.4. Exercício de Conteúdo ...................................... 25
4.5. Exercício de Fixação.......................................... 25
5. Aula 5 – Estrutura de Decisão 1 ........................... 26
5.1. Estrutura de Decisão Simples (Se...Então) ....... 26
5.2. Estrutura de Decisão Composta
(Se...Então...Senão) .................................................. 27
5.3. Exercício de Conteúdo ...................................... 28
5.4. Exercício de Fixação.......................................... 28
6. Aula 6 – Estrutura de Decisão 2 ........................... 29
6.1. Escolha-Caso ..................................................... 29
6.2. OUTROCASO ..................................................... 30
6.3. Exercício de Conteúdo ...................................... 31
6.4. Exercício de Fixação.......................................... 31
7. Aula 7 – Estrutura de Repetição 1 ....................... 32
7.1. ENQUANTO-FAÇA ............................................. 32
7.2. Exercício de Conteúdo ...................................... 33
7.3. Exercício de Conteúdo ...................................... 33
8. Aula 8 – Estrutura de Repetição 2 ....................... 35
8.1. REPITA-ATÉ ....................................................... 35
8.2. PARA-FAÇA ....................................................... 36
8.3. Exercício de Conteúdo ...................................... 38
8.4. Exercício de Fixação.......................................... 38
9. Aula 9 – Manipulação de Vetores. ....................... 39
9.1. VETOR ............................................................... 39
9.2. Exercício de Conteúdo ...................................... 41
9.3. Exercício de Fixação.......................................... 41
10.Aula 10 – Manipulação de Matrizes..................... 42
10.1. Matriz........................................................ 42
10.2. Exercício de Conteúdo .............................. 44
2
Aula
Lógica de Programação V.2
Por que aprender a programar? 01
1. Aula 1 – Seja Bem-Vindo! Aprender programação também é assim. Primeiro
você vai aprender uma linguagem de programação, aos
poucos começará a escrever códigos e então poderá
Steve Jobs disse uma vez: “Todo mundo deveria
aprender a programar um computador porque isso te começar a criar coisas. E, o fato de saber programar
ensina a pensar”. A afirmação do fundador do império também não significa que você terá que trabalhar com
da maçã logo foi confirmada pela ciência, e cada vez isso. Mas, certamente poderá aplicar as habilidades em
várias outras situações do dia a dia. Inclusive, entender
mais estudos mostram que aprender a programar
a lógica da programação é interessante para várias
desenvolve diversas habilidades cognitivas,
outras profissões.
principalmente em crianças.
Aprender a programar possui diversos benefícios,
Diferente do que muita gente pensa, você não
precisa ser um gênio para aprender a programar. vamos citar alguns deles:
Lembra de quando você não sabia ler? As letras eram 1. Desenvolvimento do pensamento crítico
como desenhos ou rabiscos e pra você não formavam
palavras, muito menos frases. Mas, aos poucos você Os códigos ajudam na habilidade de se fazer
aprendeu, primeiro as vogais, depois as consoantes e suposições, ao mesmo tempo que desenvolvem o
então vieram as sílabas, palavras e por fim você estava raciocínio preciso e especifico. Essas vantagens vêm da
lendo e escrevendo. A programação também é uma necessidade das máquinas de executar algoritmos
linguagem, que pode ser lida por computadores, e você muito específicos, exigindo precisão de quem os
não precisa ser nenhum gênio para aprendê-la, assim executa.
como não precisa ser um gênio para aprender a ler e 2. Resolução de desafios
escrever.
A programação traz facilidade de lidar com
Segundo o Centro para Crianças e Tecnologia, problemas e inventar soluções. Torna seus
jovens e adultos também se beneficiam desse desenvolvedores capacitados na arte de inventar, de
aprendizado: quem aprende a programar alcança um fazer descobertas aplicáveis a qualquer tipo de
desempenho cerca de 16% superior nos estudos do que resolução de desafios.
os demais estudantes. Os mais velhos também saem
ganhando, porque a lógica de programação ajuda a 3. Raciocínio múltiplo
blindar o cérebro contra doenças cognitivas muito Quando se constrói um código ou um algoritmo,
comuns com o avançar da idade. dificilmente existe “o melhor”. Por isso, ao programar,
Quem já estudou outros idiomas sabe o quanto é desenvolvemos a capacidade de decidir, entre várias
difícil se tornar fluente. Você precisa se dedicar, opções, quais têm custos e benefícios mais vantajosos
estudar, fazer exercícios e praticar. Com a programação para seus objetivos.
funciona da mesma forma, ninguém decide aprender a 4. Lógica Matemática
programar e no dia seguinte já sabe tudo sobre
códigos. Lembra como foi com o seu idioma nativo? Graças aos códigos e algoritmos, a programação
Primeiro você aprendeu as letras, passou a reconhecê- estimula o contato prático com a matemática através
las, depois começou a fazer combinações e quando viu de atividades exploratórias e contextualização para
já estava lendo e escrevendo. resolução de problemas.
3
1.1. Lógica Básica Logo, o Fubá é um mamífero.
Lógica é um substantivo feminino com origem no Pode-se pensar que o raciocínio lógico não é
termo grego logiké, relacionado com utilizado para determinadas situações no cotidiano. No
o logos, razão, palavra ou discurso, que significa entanto, todas as pessoas utilizam o raciocínio lógico,
a ciência do raciocínio. seja cientista, engenheiro, psicólogo, advogado,
homem de negócios, arquitetos, serralheiros e você.
Em sentido figurado, a palavra lógica está
relacionada com uma maneira específica de raciocinar, Muitas vezes é usado de modo mais informal,
de forma acertada. Por exemplo: Isso nunca vai outras vezes de modo a ter um conhecimento apurado
funcionar! O teu plano não tem lógica nenhuma! do mesmo e saber aplicar em momentos que pareçam
necessários.
1.1.1. Lógica Aristotélica
1.1.3. Raciocínio Lógico
De acordo com Aristóteles, a lógica tem como
objeto de estudo o pensamento, assim como as leis e Para um raciocínio lógico que converge em atitudes
regras que o controlam, para que esse pensamento inteligentes no cotidiano, proporcionando um dia
seja correto. Para o filósofo grego, os elementos agradável e organizado, primeiro faz-se necessário o
constituintes da lógica são saber da definição correta de Lógica e de raciocínio
o conceito, juízo e raciocínio. As leis da lógica lógico. Todos que fazem parte do universo pesquisado
correspondem às ligações e relações que existem entre e colaboraram para essa pesquisa, de maneira formal e
esses elementos. informal, conseguiram definir a Lógica e entender bem
o que é necessário para ter o raciocínio lógico.
O Fubá é um cachorro.
4
Frequentemente, o raciocínio lógico é usado para ou mais proposições. Quer um exemplo? Se eu digo "O
fazer inferências, sendo que começa com uma João possui um canal no Youtube", isto é
afirmação ou proposição inicial, seguido de uma uma proposição, pois aceita o resultado
afirmação intermediária e uma conclusão. Assim, ele de verdadeiro ou falso. Diferentemente de quando
também é uma ferramenta analítica e sequencial para você diz - "Tenha um bom dia!", onde aqui não cabe a
justificar, analisar, argumentar ou confirmar alguns atribuição dos dois valores lógicos.
raciocínios. É fundamentado em dados que podem ser
Da proposição chegamos na contradição. Uma
comprovados, e por isso é preciso e exato.
contradição acontece apenas quando temos
É possível resolver problemas usando o raciocínio uma proposição composta e seu resultado é sempre
lógico. No entanto, ele não pode ser ensinado falso. A proposição composta "Eu gosto de todas as
diretamente, mas pode ser desenvolvido através da frutas, mas não gosto de morango" é uma contradição,
resolução de exercícios lógicos que contribuem para a pois morango é uma fruta.
evolução de algumas habilidades mentais.
A peça fundamental da lógica é a proposição. Por Se Pedro é alto, então Joana é ruiva.
definição, uma proposição é uma frase declarativa, Cada uma das proposições compostas acima é
escrita ou representada por símbolos, que aceita
formada por duas proposições simples unidas pelos
apenas dois valores - lógicos -
conectivos em negrito. Cada proposição simples pode
possíveis: verdadeiro ou falso. Uma proposição pode
ser verdadeira ou falsa e isso implicará diretamente no
ser simples ou composta, caso seja formada por duas
valor lógico da proposição composta. Se adotarmos a
5
frase “João é alto e Maria é baixa”, as possíveis Nós vamos estudar melhor todos estes conceitos
valorações dessa afirmação serão: mais a frente em nosso curso, neste primeiro momento
é importante saber que é comum que os estudiosos da
Se João for alto e Maria for baixa, a frase “João é
tabela verdade memorizem as conclusões de cada uma
alto e Maria é baixa” é VERDADEIRA.
das operações lógicas. Para economizar tempo na
Se João for alto e Maria não for baixa, a frase “João resolução de questões, tenha sempre em mente que:
é alto e Maria é baixa” é FALSA.
1. Proposições Conjuntivas: Só serão verdadeiras
Se João não for alto e Maria for baixa, a frase “João quando todos os elementos forem
é alto e Maria é baixa” é FALSA. verdadeiros.
Se João não for alto e Maria não for baixa, a frase 2. Proposições Disjuntivas: Só serão falsas
“João é alto e Maria é baixa” é FALSA. quando todos os elementos forem falsos.
^ Conjunção e 2. ELFU,
p^q = JoãoGLHU, ILJU,_____,
é alto eMaria MLNU
é baixa.
a)OLPU
v Disjunção ou pvq = João é alto ou Maria é baixa.
b)KLMU
c)LLMU
d) KLLU
p→q = Se João é alto então Maria é
→ Condicional se...então
baixa.
3. BMM, DOO, FQQ,_____, JUU
a)GRR
se e somente p↔q = João é alto se e somente se
↔ Bicondicional b)GSS
se Maria é baixa.
c)HSS
d)ITT
Em seguida, monta-se uma tabela com todas as
possibilidades de valoração de uma proposição 4. Considere a série de números: 26, 24, 20, 18, 14,...
composta, substituindo as afirmações por símbolos. Qual é o próximo número?
Vale esclarecer que nos casos em que existirem mais de a)10
duas proposições, elas poderão ser simbolizadas pelas b)12
letras r, s, e assim em diante. c)13
d)16
Por fim, aplica-se a operação lógica definida pelo
conectivo mostrado. Conforme a lista acima, essas
operações podem ser: negação, conjunção, disjunção, 5. Considere a série de números: 23, 24, 27, 28, 31,
condicional e bicondicional. 32,… Qual é o próximo número?
6
a)27 9. O preço do ouro no mercado interno permaneceu
b)30 inalterado durante a última semana. O preço do ouro
c)34 no mercado internacional subiu durante a última
d)35 semana.
6. Maria corre mais rápido do que Ana. Sílvia corre a)A sentença 1 é a causa e a sentença 2 é o seu efeito
mais rápido do que Maria. Ana corre mais rápido do b)A sentença 2 é a causa e sentença 1 é o seu efeito
que Sílvia. Se as duas primeiras sentenças são c)As sentenças 1 e 2 são causas independentes
verdadeiras, a terceira é: d)As sentenças 1 e 2 são efeitos de causas
independentes
a)Verdadeira
b)Falsa 10. O índice de estabelecimentos fiscalizados e
c)Incerta multados por baixa qualidade de alimentos do
município aumentou no último ano. A prefeitura
7. Os apartamentos no bairro A custam menos do que
implantou um programa de treinamento para os
no bairro B. Os apartamentos no bairro C custam mais
trabalhadores envolvidos no setor de vigilância
do que no bairro B. Os apartamentos no bairro C são
sanitária.
os mais caros. Se as duas primeiras sentenças são
verdadeiras, a terceira é: a) A sentença 1 é a causa e a sentença 2 é o seu efeito
b) A sentença 2 é a causa e sentença 1 é o seu efeito
a)Verdadeira
c)As sentenças 1 e 2 são causas independentes
b)Falsa
d)As sentenças 1 e 2 são efeitos de causas
c)Incerta
independentes
8. Durante o último mês, Diogo assistiu a mais filmes
do que Felipe. Felipe assistiu a menos filmes do que 1.3. Exercício de Fixação
Daniel. Daniel assistiu a mais filmes do que Diogo. Se
as duas primeiras sentenças são verdadeiras, a Solicite ao seu professor o exercício de fixação
terceira é: referente a aula 1, que se encontra nos arquivos
a)Verdadeira auxiliares do curso. O objetivo é exercitar o raciocínio
b)Falsa lógico do aluno, realizando os jogos de acordo com a
c)Incerta descrição de cada um deles. Mostre os resultados
obtidos em cada um dos jogos ao seu professor.
7
Aula
Lógica de Programação V.2
Variáveis, constantes e tipos de dados 02
2. Aula 2 – Constantes e Variáveis na memória para armazenar um valor que não muda
com o tempo. Por exemplo, o valor PI
Programas de computador utilizam os recursos de (3.14159265359...) que nunca vai mudar!
hardware mais básicos para executar algoritmos. Suponha que você precise fazer um programa que
Enquanto o processador executa os cálculos, a solicite ao usuário dois números inteiros, some esses
memória é responsável por armazenar dados e servi- dois números e apresente o resultado da soma para o
los ao processador usuário.
Por hora não se preocupe com o que seria Para resolver esse problema teremos de DECLARAR
algoritmos, vamos estudar mais profundamente sobre duas variáveis do TIPO inteiras. Vamos supor que essas
este assunto na próxima aula. duas variáveis se chamem X e Y. Além disso, você
precisará de uma terceira variável para armazenar o
O recurso utilizado nos programas para escrever e
ler dados da memória do computador é conhecido resultado da soma. Vamos chamar então essa variável
de SOMA. Sendo assim, teremos o seguinte algoritmo
como variável, que é simplesmente um espaço na
memória o qual reservamos e damos um nome. Por passo a passo:
exemplo, podemos criar uma variável chamada "idade" algoritmo soma;
para armazenar a idade de uma pessoa. Você pode inicio
imaginar uma variável como uma gaveta "etiquetada" //DECLARAÇÃO DE VARIÁVEIS
6
em um armário. inteiro x;
7
inteiro y;
8
inteiro soma;
9
10
// ESCREVA UMA MENSAGEM NA TELA
11
escreva ( “por favor, digite o valor do número x”) ;
12
13
// LE VALORES DO TECLADO DIGITADOS PELO
14
USUÁRIO E ARMAZENA NA VARIÁVEL
15
leia (x);
16
17
escreva ( “por favor, digite o valor do número y”) ;
18
leia (y);
19
20
// REALIZA UMA OPERAÇÃO DE SOMA
21
soma <-- x + y;
22
23
escreva (“ o resultado da soma x + y é:”, soma);
Quando criamos uma variável em nosso programa
especificamos que tipo de dados pode ser armazenado fim
nela (dependendo da linguagem de programação). Por
Não se preocupe com alguns detalhes desse
exemplo, a variável nome só poderia armazenar
algoritmo, o que é importante no momento é entender
valores do tipo texto. Já a variável idade, só poderia
como funcionam as variáveis. Veja, o programa solicita
armazenar valores do tipo número (inteiro).
ao usuário para digitar os valores de X e Y.
Chamamos este espaço alocado na memória
Nesse instante é impresso na tela a mensagem que
de variável, porque o valor armazenado neste espaço
está dentro dos parênteses do comando ESCREVA e,
de memória pode ser alterado ao longo do tempo, ou
em seguida, o usuário digita um valor usando o teclado.
seja, o valor ali alocado é "variável" ao longo do tempo.
No momento em que o usuário digita o valor desejado,
Diferente das constantes, que é um espaço reservado
8
esse valor DECIMAL é “passado” para a variável X, por 1 algoritmo pi;
meio do comando LEIA. Lembre-se, a variável X é um
2 inicio
espaço de memória reservado, com o tamanho de bits 3
para o tipo de dado INTEIRO. O mesmo acontece com 4 //DECLARAÇÃO DE VARIÁVEIS
5 real PI = 3.14;
a variável Y. 6 real x;
7 real result;
Esses valores ficarão armazenados nas variáveis 8
enquanto nenhum outro valor for digitado para eles, 9 // ESCREVA UMA MENSAGEM NA TELA
10 escreva ( “por favor, digite o valor do número x”) ;
ou enquanto o programa estiver em execução. Isso 11
significa que depois que o programa terminar de 12 // LE VALORES DO TECLADO DIGITADOS PELO
executar, esses valores deixarão de existir, assim como 13 USUÁRIO E ARMAZENA NA VARIÁVEL
14 leia (x);
as variáveis, e o espaço de memória que estava 15
reservado será também liberado. 16 // REALIZA UMA OPERAÇÃO MATEMÁTICA
17 result <-- x * PI;
Então, quando alguém digita algo no teclado, isso 18
19 escreva (“ o resultado é:”, result);
pode ser obtido por um comando da linguagem de 20
programação, armazenado em uma variável específica, 21 fim
e depois manipulado no resto do programa. A cada vez Uma constante chamada PI foi declarada no início
que você executar esse programa, essas variáveis terão do algoritmo e, posteriormente, usada para realizar
valores diferentes, por isso são variáveis, são valores uma operação de multiplicação. Portanto, lembre-se:
que mudam com o tempo. constantes e variáveis são espaços de memória
Utilizando o exemplo da batata-frita, podemos reservados para o tipo de dados que você deseja
dizer que o óleo é uma variável pois pode estar quente trabalhar. Constantes são valores fixos que você
ou frio. Já a batata é uma constante, pois do início ao utilizará em seu programa e variáveis são valores que
fim ela continua sendo uma batata. Seja ela frita, precisam variar durante o tempo de execução do seu
inteira, cortada, crua. Isso são atributos ou programa.
propriedades, mas ela ainda é uma batata. Nós sempre precisaremos declarar variáveis em
Pare e pense em sua rotina ao acordar. Se você nossos programas. Então, declarar variável é um termo
colocar no papel verá que ela é mais complexa do que importante em computação. Outro termo relevante é
parece, mas a execução é automática. Imagine então o IDENTIFICADOR. Um identificador é o nome que
começar a pensar no que poderia ser variável e damos às nossas variáveis.
constante nessa rotina? A sintaxe de declaração pode ser diferente para
muitas linguagens de programação. Por exemplo, em
Java fazemos assim: String nome, em que STRING é um
TIPO DE DADO e NOME é o nome da variável, ou seja,
o seu IDENTIFICADOR.
9
2.1. Tipos de Dados • BYTE: é capaz de armazenar valores entre
-128 até 127.
Para otimizar a utilização da memória, nós
definimos um tipo de dados para cada variável. Por • SHORT: é capaz de armazenar valores
exemplo, a variável nome, deve armazenar textos, já a entre – 32768 até 32767.
variável idade deve armazenar apenas números
• INT: é capaz de armazenar valores entre –
inteiros (sem casa decimal), na variável sexo podemos
2147483648 até 2147483647.
armazenar apenas um caractere (“M” ou “F”). Seria
correto armazenarmos o valor “M” na variável idade? • LONG: é capaz de armazenar valores entre
Não né? Por isso devemos especificar em nossos –9223372036854775808 até
algoritmos o tipo de cada variável. 9223372036854775807.
Podemos classificar os tipos de dados em Mas essa divisão é uma particularidade da
basicamente duas categorias, os tipos de dados linguagem de programação. O objetivo é otimizar a
primitivos e os tipos de dados customizados. utilização da memória. Em algumas linguagens de
programação não é necessário especificar o tipo de
2.1.1. Tipo de dados primitivos
dados da variável, eles são identificados
Existem quatro tipos de dados primitivos, algumas dinamicamente. Porém, é necessário informar o tipo
linguagens subdividem estes tipos de dados em outros de dados de cada variável em algoritmos.
de acordo com a capacidade de memória necessária
para cada variável, mas no geral, os tipos de dados
primitivos são:
10
de atributos também tem operações, o estudo ______________________________________
de estruturas de dados também vai muito além de ______________________________________
apenas formar tipos de dados a partir de outros. Mas ______________________________________
não se preocupe com isso por agora. Apenas entenda 2. Defina o que seria uma constante?
que são tipos de dados formatos a partir de outros ______________________________________
tipos de dados. ______________________________________
______________________________________
Diferente dos tipos de dados primitivos que já são 3. Defina o que seria dados customizados?
implementados internamente pelas linguagens de ______________________________________
programação, esses tipos de dados são criados pelo ______________________________________
programador. ______________________________________
4. O que seria um identificador?
A todo o momento durante a execução de qualquer ______________________________________
tipo de programa os computadores estão manipulando ______________________________________
informações representadas pelos diferentes tipos de ______________________________________
dados que acabamos de descrever. 5. Defina o tipo de dados REAL?
______________________________________
Para que não se "esqueça" das informações, ______________________________________
o computador precisa guardá-las em sua memória seja ______________________________________
através de uma variável ou de uma constante. 6. Qual a diferença entre os dados primitivos e os
customizados?
Mas para tanto é necessário fazer a declaração das ______________________________________
variáveis ou constantes. ______________________________________
______________________________________
O ato de declarar consiste em duas ações distintas.
A primeira está relacionada a dar um nome para a
variável ou constante. A segunda diz respeito a associar 2.3. Exercício de Fixação
um tipo de dado, os quais acabamos de explicar. 1. No seguinte algoritmo existe algum erro?
Lembrando que uma variável ou constante só pode Onde?
ser declarada como sendo de um mesmo tipo de dado. ALGORITMO Teste
Algo importante sobre os tipos de dados, e que VARIÁVEIS
quase ninguém se dá conta, é que eles devem primeiro idade : INTEIRO
ser possíveis de existirem, e de ser manipulados, pelo
hardware. Isso significa que é o Hardware quem diz letra : CARACTER
quais os tipos de dados primitivos que podem ser Maria : REAL
processados por uma máquina computacional.
INICIO
Hoje consumir memória não é um problema para
idade 23
microprocessadores, pois a temos em abundância, mas
no começo da Computação, os programadores tinham idade 678
que ficar atentos às quantidades de bits consumidas
idade letra
pelos seus tipos de dados, pois a memória era algo bem
escasso. Os microcontroladores se encaixam nesse letra ABC
probleminha, pois sua memória é realmente bem mais
letra A
curta que as memórias usadas com
microprocessadores. letra 2
Saber como funcionam as variáveis/constantes e os FIM
tipos de dados é de suma importância para você se ____________________________________________
tornar um bom programador. ____________________________________________
____________________________________________
2.2. Exercício de Conteúdo ____________________________________________
____________________________________________
1. O que são tipos de dados primitivos? ____________________________________________
11
2. É correto definir uma variável como sendo 5. Na lista seguinte, assinale com V os nomes de
Caracter e atribuirmos a ela o valor: ‘PEDRO’? variáveis válidos e com I os inválidos.
E se a variável fosse definida como LÓGICO, a ( ) abc
mesma poderia receber um valor do tipo ( ) 3abc
CARACTER? ()a
______________________________________ ( ) 123ª
______________________________________ ( ) _a
______________________________________ ( ) acd1
______________________________________ ()_
( ) Aa
3. Identifique os erros e reescreva os ()1
identificadores abaixo de forma correta: ( ) A123
a) 13salário ( ) _1
b) salário$ ( ) A0123
c) salário_mínimo ( ) a123
d) salário+reajuste ( ) _a123
e) novoSalário ( ) b312
f) fumante? ( ) AB CDE
g) Preço médio ( ) etc...
h) %desconto ( ) guarda-chuva
i) km/h
______________________________________
______________________________________
______________________________________
______________________________________
______________________________________
4. Classifique os dados de acordo com o seu tipo,
sendo (I = Inteiro, R = Real, C = Caractere e L =
Lógico):
( ) 0
( ) + 36
( ) 0,3257
( )F
( ) 1
( ) “F”
( ) “+3257”
( ) ‐1
( ) 0,0
( ) ‐ 0,001
( ) “‐0,0”
( ) “.F.”
( ) “o”
( ) + 0,05
( ) “.V.”
( ) 7/2
( ) 32
( ) + 3257
( )V
( ) ‐32
( ) “A”
( ) “abc”
( ) ‐1,9E123
( ) “0”
12
Aula
Lógica de Programação V.2
Primeiro Programa (Algoritmos). 03
3. Aula 3 – Algoritmos Mas não são apenas os programadores que usam
algoritmos. Em nosso cotidiano, os algoritmos Não
Algoritmo não é o bicho papão dos contos infantis. Estruturados são trabalhados em nossas mentes sem
nem mesmo percebermos. Vamos aprender mais sobre
Se realmente pararmos para ver, ele é bastante
simples, já que está frequentemente presente em eles.
nossas vidas. Ao começarmos a fazer algoritmos, fica
muito mais fácil desenvolvê-los com segurança quando 3.1. Algoritmos não estruturados
realizamos analogias com coisas simples do dia a dia.
Para o desenvolvimento de um algoritmo eficiente
Algoritmo é a base da ciência da computação e da é necessário obedecermos a algumas premissas básicas
programação. Quando falamos em programar, no momento de sua construção:
falamos, basicamente, em construir um algoritmo.
• Definir ações simples e sem ambiguidade.
Todo programa de um computador é montado
por algoritmos que resolvem problemas matemáticos • Organizar as ações de forma ordenada.
lógicos com objetivos específicos.
• Estabelecer as ações dentro de uma
Logo, o primeiro passo para se aprender sequência finita de passos.
programação não envolve computador, envolve educar
a sua mente a explicar em detalhes os passos Os algoritmos são capazes de realizar tarefas como:
necessários para executar uma determinada tarefa. 1. Ler e escrever dados
Você deve aprender a modelar um roteiro que 2. Avaliar expressões algébricas, relacionais e
explica quando tomar decisões e quando realizar lógicas.
determinadas tarefas, esse roteiro é chamado de
"algoritmo". Você sabia que os primeiros 3. Tomar decisões com base nos resultados
processadores só sabiam realizar somas? A partir dessa das expressões avaliadas.
operação básica que o computador sabia fazer, você já 4. Repetir um conjunto de ações de acordo
imagina um algoritmo para fazer multiplicações? Talvez com uma condição.
você ainda não saiba exatamente como é esse
algoritmo, mas com certeza já imaginou que precisa Algoritmo Troca de pneu do carro:
fazer repetidas somas. Certo? É assim que nós
1: desligar o carro.
aprendemos fazer multiplicação na escola. E essa
também é uma forma de ensinar uma máquina a fazer 2: pegar as ferramentas (chave e macaco).
multiplicação.
3: pegar o estepe.
Um algoritmo não passa de passos sequenciais e
4: suspender o carro com o macaco.
lógicos que são organizados de forma a realizar a
conclusão de certo problema. Mas precisamos 5: desenroscar os 4 parafusos do pneu furado.
entender que existem dois tipos de algoritmos – os Não
Estruturados e os Estruturados. 6: colocar o estepe.
9: guardar as ferramentas.
13
O algoritmo exemplificado é um exemplo simples Para que um algoritmo em Português Estruturado
de algoritmo (sem condições ou repetições) para troca seja conciso, ele deve seguir alguns pontos:
de um pneu.
• Evitar comandos longos.
Em nossa rotina, executamos algoritmos sem
perceber. Quando você levanta pela manhã, quando • Evitar adjetivos e advérbios.
você sai de casa, quando almoça. Você está sempre • Ter comandos legíveis.
executando tarefas enquanto realiza análises de
decisões, análises de possibilidades, valida argumentos • Ter os comandos bem alinhados.
e diversos outros processos.
• Possuir comentários para o esclarecimento
Há muitos exemplos de algoritmos. Um deles são de comandos.
os manuais de instruções. Manuais de instruções
• Evitar ninhos de SE (muitas possibilidades
sempre contêm informações detalhadas sobre o que
desnecessárias para uma única situação.
fazer em cada situação e nos previnem de maiores
Ex.: se chover, eu pego o guarda-chuva; se
problemas.
não chover, eu não pego o guarda-chuva
Agora pense desde quando você acorda até ou se eu pegar o vermelho, ele combinará
quando você volta a dormir. Quantas tarefas com a roupa; se eu usar o roxo, não
necessitam de suas decisões? Com certeza muitas. combinará).
Lógico que não paramos para ver a vida
Além de ações simples, como fazer um bolo ou
detalhadamente, mas quando percebemos que o que
abrir uma página no navegador, os algoritmos são
fazemos faz parte de um grande algoritmo de decisões,
muito utilizados no mercado da tecnologia.
escolhas, entendemos como funciona um algoritmo
Atualmente possuímos máquinas que alimentam
computacional.
outras com informações e dados, conceito próximo
Os algoritmos são descritos em uma linguagem do machine learning. Com isso, são construídos
chamada pseudo-código. Este nome é uma alusão à algoritmos capazes de reter informações e transformá-
posterior implementação em uma linguagem de las em algo entendido pelos computadores para daí
programação, ou seja, quando formos programar em formar outro algoritmo.
uma linguagem, por exemplo Visual Basic, estaremos
A evolução humana nas últimas décadas está
gerando código em Visual Basic. Por isso os algoritmos
totalmente atrelada à ideia de algoritmos. Aparelhos
são independentes das linguagens de programação. Ao
como smartphones, computadores, smart TVs e tablets
contrário de uma linguagem de programação não
funcionam com sistemas baseados em algoritmos.
existe um formalismo rígido de como deve ser escrito o
algoritmo. Conforme novos comandos e possibilidades de uso
surgem, significa que mais aprimorados e complexos
O algoritmo deve ser fácil de se interpretar e fácil
estão os níveis de instrução de um algoritmo.
de codificar. Ou seja, ele deve ser o intermediário entre
a linguagem falada e a linguagem de programação.
3.3. Algoritmos no Facebook
3.2. Algoritmos estruturados Atualmente, diversas polêmicas estão relacionadas
a como as grandes empresas de tecnologia têm usado
São aqueles que buscam resolver problemas
os algoritmos para impactar a vida das pessoas.
através do uso de um computador. São criados com
base em uma linguagem de programação e podem ser Um dos casos mais famosos é o algoritmo do
escritos de diversas formas. Facebook, que define o que será exibido no feed de
notícias de cada usuário.
Um algoritmo pode ser representado pelo
chamado Português Estruturado, que é uma O Facebook foi a primeira rede social a usar
ferramenta que usa combinações de sequências, algoritmos para categorizar os posts e utilizar critérios
seleções e repetições. São evitados advérbios e para definir o que seria ou não exibido para cada
adjetivos, formas verbais diferentes da imperativa, usuário. O objetivo era mostrar os conteúdos mais
muita pontuação e descrição esparsa. relevantes de acordo com o comportamento,
preferências e engajamento do usuário.
14
Apesar das críticas à empresa, o excesso de priorizado ou não na rede, em especial,
publicações faz com que seja difícil uma pessoa considerando esse engajamento logo após
acompanhar tudo que acontece na rede. Dessa forma, a postagem.
alguns dos milhares de critérios usados pela rede social
• relacionamento: considera a proximidade
para definir a composição do feed são:
dos usuários por meio de engajamento,
• Postagens a serem mostradas. mensagens diretas etc.
• Nível de proximidade do usuário com Diante disso, verifica-se que os algoritmos usados
quem postou o conteúdo. tendem a ficar mais complexos, incluindo novas
variáveis, com o objetivo de torná-los mais certeiros.
• Engajamento de outros amigos com a
publicação.
3.6. Algoritmos no Spotify
• Potencial engajamento do usuário
Com mais de 40 milhões de usuários,
considerando o comportamento prévio.
o Spotify lança semanalmente a playlist “descobertas
Portanto, diversos elementos são considerados da semana”, que é personalizada para cada ouvinte e
pelo algoritmo antes de definir quais conteúdos serão contém 30 músicas. Algumas delas, provavelmente, o
exibidos no feed de notícias, buscando mais relevância usuário nunca ouviu, mas pode gostar, de acordo com
e engajamento do usuário no Facebook. o algoritmo.
15
3.7. Representações de um Algoritmo 3.7.2. Linguagem Natural
16
3.7.4. Pseudocódigo Os vocábulos desta metodologia são divididos em
duas categorias: de aplicação pré-determinada,
Pseudocódigo é uma forma de representação de
chamadas palavras reservadas e de definição
algoritmos, é praticamente um programa escrito em
customizada (durante criação do algoritmo), mas com
português que, depois, podemos passar para o
regras pré-estabelecidas. Palavras reservadas podem
computador. Para escrevermos códigos com
ser comandos ou elementos de estruturas. Os
pseudocódigo precisaremos conhecer alguns
comandos são invocações de tarefas específicas nos
comandos básicos.
algoritmos, por exemplo, um comando de impressão
• escreva (" ") = comando usado para deve imprimir uma mensagem de texto. A invocação de
imprimir uma mensagem na tela. um comando é conhecida como chamada do comando.
Os elementos de estruturas associam-se nas estruturas
• leia () = comando usado para ler valores
de controle para efetuar decisões ou repetições
digitados no teclado.
(dependendo do contexto).
• <- = comando de atribuição. As regras de sintaxe de um algoritmo tratam-se das
• inicio = palavra usada para iniciar o restrições pré-estabelecidas para possibilitar a criação
programa principal. de pseudocódigos. Neste texto são definidas várias
regras de sintaxe e mantidas até o final. É bom lembrar
• fimalgortimo = palavra usada para finalizar que tais regras não são universais, mas que em
o algoritmo. qualquer apresentação de metodologia algorítmica,
um conjunto de regras de sintaxe se mostrará
• var = palavra usada para declarar variáveis;
necessário para garantir concisão e clareza dos
• algoritmo = palavra usada para indicar o algoritmos.
início do programa.
Algoritmos em pseudocódigo apresentam-se como
Pseudocódigo, será a forma em que vamos um texto contendo diversas linhas de código. Uma
representar nos algoritmos praticamente o nosso curso mesma linha pode conter um ou mais comandos ou
inteiro. ainda estruturas de controle. Várias linhas de código
podem estar encapsuladas por um conceito lógico
Ela utiliza um conjunto restrito de palavras-chave,
denominado bloco. O código de um bloco possui dessa
em geral na língua nativa do programador, que tem
forma início e fim e representa um sub-processo do
equivalentes nas linguagens de programação. Além
processo geral de execução do algoritmo.
disso, o pseudocódigo não requer todo a rigidez
sintática necessária numa linguagem de programação,
permitindo que o aprendiz se detenha na lógica dos
3.8. VisuAlg
algoritmos e não no formalismo da sua representação. Para quem está começando a aprender sobre
Na medida em que se obtém mais familiaridade com os programação de softwares, interpretar e executar
algoritmos, então o pseudocódigo pode ser traduzido algoritmos pode ser um verdadeiro desafio. Foi
para uma linguagem de programação. pensando nestes programadores em início de carreira
Um pseudocódigo, não pode ser executado num que foi criado o software Visualizador de Algoritmos,
sistema real (computador), de outra forma deixaria de mais conhecido como VisuAlg.
ser pseudo, assim, o português Estruturado na verdade Foi criado pelo professor Cláudio Morgado de
é uma simplificação extrema da língua portuguesa, Souza da Apoio Informática, e teve a ajuda do professor
limitada a pouquíssimas palavras e estruturas que têm Antonio Carlos Nicolodi, que inicialmente contribuiu
significado pré-definido, pois se deve seguir um com a manutenção do programa e posteriormente
padrão. assumiu o desenvolvimento do mesmo a pedido do
No caso da língua portuguesa existam alguns professor Cláudio que, por motivos pessoais, teve que
interpretadores de pseudocódigo, nenhum tem a se afastar do projeto que já contava com milhares de
projecção das linguagens C, Pascal ou BASIC, que no usuários por todo o Brasil.
caso da língua inglesa se assemelham bastante a um É uma ferramenta na qual pode-se simular
pseudocódigo. pseudocódigos, podemos dizer que é a interpretação
de uma linguagem algorítmica, utilizando comandos e
17
instruções em Português para representar as ações dos Após a primeira tela de instalação do programa,
algoritmos, também conhecida como Portugol ou não existe nenhum mistério. Basta avançar deixando
Português Estruturado. todas as opções padrões marcadas até chegar à tela
final de instalação.
O Portugol é uma versão portuguesa dos
pseudocódigos que são realizados nos exemplos dos
livros de introdução à programação ou lógica.
18
• Inteiro – aceita somente valores que também podem ser utilizados através
numéricos que sejam inteiros (sem casas das teclas de atalho do teclado.
decimais).
• Editor de Texto: Espaço onde será digitado
• Real – aceita valores numéricos inteiros ou todo o pseudocódigo.
valores com casas decimais.
• Quadro de Variáveis: É formado por uma
• Caractere – aceita textos alfanuméricos grade onde é mostrado o escopo (se for do
(letras, números e símbolos). programa principal, será global; se for
local, será apresentado o nome do
• Lógico – aceita somente valores subprograma onde foi declarada), nome
booleanos: verdadeiro ou falso. (também com os índices, nos casos em que
Exemplos: sejam vetores), tipo ("I" para inteiro, "R"
para real, "C" para caractere e "L" para
Criar uma variável “nome” e “idade” em um lógico) e o valor de cada variável.
programa
• Simulador de Saída: Mostra como foi a
var nome : caractere última execução de código no programa.
var idade : inteiro • Barra de Status: Na barra de status o
criar uma variável "disponível" e "valor" em um usuário pode ver em qual linha e coluna o
programar cursor está posicionado, além de também
ser avisado caso o código tenha sido
var disponivel : logico alterado (o segundo painel da esquerda
var valor : real para a direita mostra a palavra
"Modificado" quando o código está com
• Leia - Recebe valores digitados pelos alterações).
usuários, atribuindo-os às variáveis cujos
nomes estão em <lista-de-variáveis> (é Agora que você já tem o Visualg, é hora de criar o
respeitada a ordem especificada nesta seu primeiro programa. O famoso "Hello World". Abra
lista). É análogo ao comando read do o visualg e escreva o algoritmo abaixo:
Pascal
A tela principal do VisuAlg é composta pela barra Para executar, clique no menu Algoritmo e depois
de tarefas no topo, o editor de texto que ocupa a maior clique em Executar.
parte da tela, o quadro de variáveis ao lado inferior
Vamos entender esse primeiro programa que você
esquerdo, o simulador de saída ao lado inferior direito
criou:
e a barra de status na parte inferior. Quando o usuário
abre o programa, já é carregado no editor um 1. Na primeira linha, nós colocamos o nome do
"esqueleto" de pseudocódigo, para dar menos trabalho algoritmo "BoasVindas".
e também mostrar o formato que deve ser seguido.
2. As quatro linhas seguintes são comentários, ou
• Barra de Tarefas: A barra de tarefas seja, é ignorado pelo compilador, não é um
contém os principais comandos do VisuAlg, comando de algoritmo. Toda linguagem de
19
programação tem alguma forma de fazer pasta a não ser aquela em que for instalado, e exige
comentários no código. No Visualg os cerca de 1 MB de espaço em disco. Pode ser executado
comentários começam com duas barras. sob Windows 95 ou posterior, e tem melhor aparência
Assim: // com resolução de vídeo de 800×600 ou maior.
Embora os comentários não sejam interpretados Em nosso curso vamos desenvolver nossos
como comandos na hora de executar o programa, eles programas usando o VisuAlg em praticamente toda as
são muito importantes quando se escreve software, aulas. A cada aula vamos implementar novos
pois através dos comentários a gente explica o que uma comandos, deixando nossos projetos cada vez mais
parte do código faz para um outro programador que funcional e complexos.
trabalhará neste mesmo código no futuro. Lembre-se:
este programador pode ser você! É uma boa prática 3.9. Exercício de Conteúdo
comentar códigos.
1. Este exercício é apenas um desafio de lógica.
3. Em seguida vemos as declarações de variáveis. Escreva um algoritmo que armazene o valor
Nós declaramos uma variável em uma variável A e outro valor em uma
chamada nome do tipo CARACTERE. variável B. A seguir (utilizando apenas
4. O programa começa de fato após a atribuições entre variáveis) troque os seus
cláusula inicio. Perceba que depois do início conteúdos fazendo com que o valor que está
tem outro comentário. em A passe para B e vice-versa. Ao final,
escrever os valores que ficaram
5. A primeira coisa que fazemos no programa é armazenados nas variáveis.
escrever na tela para o usuário: Olá! digite o
seu nome: Nós fizemos isso através da 2. Abra o programa VisuAlg em seu computador
função ESCREVA. Também falaremos sobre as e digite o nome do algoritmo assim como
funções mais pra frente neste curso, por hora, determine as variáveis e aplique o comentário.
pense que a função vai fazer alguma coisa pra
gente. No caso, escrever um texto na tela. 3. No campo Início, aplique o comentário
indicado assim como o comando necessário
6. Na linha seguinte, nós capturamos o que o
para que o usuário digite um valor para A e o
usuário digitou através da função LEIA. E
programa armazene este valor.
armazenamos o texto que o usuário digitou na
variável nome.
4. No campo Início, digite o comando solicitando
7. 7º Por fim, nós mostramos na tela (novamente que o usuário informe um valor para B e que
através da função ESCREVA): Seja bem vindo este valor seja armazenado.
(o valor da variável nome)!
5. Insira o comentário referente ao local e insira o
Note que nós juntamos ao texto Seja bem vindo o comando que determine o programa a mostrar
valor da variável nome. Se o usuário digitou José o na tela os valores de A e B que o usuário
programa vai exibir na tela: Seja bem vindo José! digitou.
Veja na imagem abaixo como acontece a execução
do programa que acabamos de criar. 6. Insira os comentários necessários que
exemplifiquem como será realizada a troca das
variáveis.
20
9. Teste o programa clicando no menu Algoritmos valor de uma compra e mostre o valor das
e depois em Executar. No caso de você digitar prestações.
os valores e o VisuAlg não quebrar as linhas, 5. Desenvolva um algoritmo que receba o preço
apenas acrescente a letra L minúscula ao lado de custo de um produto e mostre o valor de
de todos os escreva (ficará assim: “escreval”) e venda.
teste novamente o código. Sabe-se que o preço de custo receberá um
acréscimo de acordo com um percentual
3.10. Exercício de Fixação informado pelo usuário.
21
Aula
Lógica de Programação V.2
Tipos de Operadores. 04
4. Aula 4 – Operadores Um outro operador aritmético que existe em
algumas linguagens de programação é o ^ e executa a
Geralmente as primeiras palavras que ouvimos em operação de potência, mas geralmente essa operação
é realizada através de uma função chamada pow, bem
um curso de programação são: um programa é um
conjunto de instruções lógicas que, quando como a operação de radiciação (função sqrt).
executadas, produzem algum resultado. Com isso em Operadores aritméticos de radiciação também são
mente, ao começar a criar as primeiras linhas de fornecidos por algumas linguagens de programação,
código, logo você notará que é comum receber dados mas esses são bem mais raros. O Postgres por exemplo
do usuário, prover alguma lógica para processá-los e oferece os símbolos |/ e ||/ para operações de raiz
então apresentar o resultado desse processamento. quadrada e raiz cúbica, respectivamente.
Na construção de nossos algoritmos, utilizaremos 4.1.1. Precedência entre Operadores
com frequência operadores para realizar o trabalho de Aritméticos
entrada, processamento e saída de dados.
Da mesma forma que na matemática, os
Um operador, em termos gerais, simboliza uma operadores de multiplicação e divisão têm precedência
operação efetuada sobre variáveis e constantes, de execução em relação aos operadores de soma e
executando cálculos e manipulação sobre os dados. subtração. Aliás se tiver parênteses na expressão estes
têm precedência ainda maior. A sequência abaixo
Os operadores de atribuição, aritméticos,
indica a precedência dos operadores:
relacionais e lógicos são utilizados principalmente na
etapa de processamento para a construção da lógica 1ª Parênteses internos.
possibilitando realizar ações específicas sobre os
2ª Potência (^) e raiz (quando a linguagem oferece
dados. Adição, subtração, multiplicação, comparação
esses operadores).
são apenas alguns exemplos.
3ª * / div e mod
4.1. Operadores Aritméticos
4ª + e -
Todo mundo já usou operadores aritméticos na
Os operadores de mesma prioridade são
escola! Nos primeiros anos de estudo aprendemos a
interpretados da esquerda para a direita. Para
fazer continhas de soma, subtração, multiplicação e
exemplificar essa questão de precedência, observe a
divisão. Em algoritmos eles também são simples e têm
expressão:
a mesma simbologia em todas as linguagens de
programação ( +, -, * e / ). 5+3*(3–1)–2^5/4–1
Além desses mais simples, dois outros operadores O computador executa o cálculo na seguinte
aritméticos não recebem muita atenção e pode ser que sequência:
você não os conhece, eles são o div e o mod, que
5+3*2-2^5/4–1
resultam, respectivamente, o quociente (a 5 + 3 * 2 - 32 / 4 – 1
parte inteira do resultado da divisão) e o resto da 5 + 6 - 32 / 4 – 1
divisão. 5+6-8–1
O operador mod em muitas linguagens de 11 - 8 - 1
programação (java por exemplo) é representado pelo 3–1
2
símbolo “%“.
22
Os operadores aritméticos realmente todo mundo fique esperto quando for aprender alguma dessas
deve saber desde criança, mas para criarmos linguagens!
algoritmos é muito importante conhecermos mais
detalhes, como o operador mod ou a ordem de
precedência de cada um.
23
(VERDADEIRO ou FALSO). Em eletrônica, costuma-se x1 NOT x1
ensinar apresentando como exemplo uma lâmpada, 0 1
que pode estar acesa (verdadeiro) ou apagada (falso). 1 0
Isso é o básico. Na literatura você pode encontrar esses
4.3.5. Operador NÂO-E (NAND)
dados de diferentes formas, por exemplo:
verdadeiro/falso, aceso/apagado, 1/0, O Operador “NÃO-E” ou “NAND” é o contrário do
ligado/desligado, true/false, sim/não, etc…. operador E (AND), ou seja, resulta em VERDADEIRO, se
ao menos um dos dois valores for FALSO, na verdade
este é o operador E (AND) seguido do operador NÃO
(NOT). Abaixo a tabela-verdade da operação NÃO-E.
x1 x2 x1 NAND x2
0 0 1
0 1 1
1 0 1
1 1 0
As operações lógicas trabalham sobre valores
booleanos, tanto os valores de entrada como o de saída 4.3.6. Operador NÂO-OU (NOR)
são desse tipo. Os operadores lógicos são: E, OU, NÃO, O Operador “NÃO-OU” ou “NOR” é o contrário do
NÃO-E, NÃO-OU, OU-EXCLUSIVO E NÃO-OU- operador OU (OR), ou seja, resulta em VERDADEIRO, se
EXCLUSIVO. os dois valores forem FALSO, na verdade este é o
operador OU (OR) seguido do operador NÃO (NOT).
4.3.2. Operador E (AND) Abaixo a tabela-verdade da operação NÃO-OU.
O Operador “E” ou “AND” resulta em um valor
x1 x2 x1 XOR x2
VERDADEIRO se os dois valores de entrada da operação
0 0 1
forem VERDADEIROS, caso contrário o resultado é
0 1 0
FALSO. Abaixo a tabela-verdade da operação E.
1 0 0
x1 x2 x1 AND x2 1 1 0
0 0 0 4.3.7. Operador OU-EXCLUSIVO (XOR)
0 1 0
1 0 0 O Operador “OU-EXCLUSIVO” ou “XOR” é uma
1 1 1 variação interessante do operador OU (OR), ele resulta
em VERDADEIRO se apenas um dos valores de entrada
4.3.3. Operador OU (OR) for VERDADEIRO, ou seja, apenas se os valores de
O Operador “OU” ou “OR” resulta em um valor entrada forem DIFERENTES. Abaixo a tabela-
VERDADEIRO se ao menos UM dos dois valores de verdade da operação OU-EXCLUSIVO.
entrada da operação for VERDADEIRO, caso contrário o
x1 x2 x1 XOR x2
resultado é FALSO. Abaixo a tabela-verdade da
0 0 0
operação OU.
0 1 1
x1 x2 x1 OR x2 1 0 1
0 0 0 1 1 0
0 1 1 4.3.8. Operador NÂO-OU-EXCLUSIVO (XNOR)
1 0 1
1 1 1 O Operador “NÃO-OU-EXCLUSIVO” ou “XNOR” é o
contrário do operador OU-EXCLUSIVO (XOR), ou seja,
4.3.4. Operador NÂO (NOT) resulta VERDADEIRO se os valores de entrada forem
O Operador “NÃO” ou “NOT” é o único operador IGUAIS. Observe a tabela abaixo:
que recebe como entrada apenas um valor, e sua
x1 x2 x1 XOR x2
função é simplesmente inverter os valores. Ou seja, se
0 0 1
o valor de entrada for VERDADEIRO, o resultado será
0 1 0
FALSO e se o valor de entrada for FALSO, o resultado
1 0 0
será VERDADEIRO. Abaixo a tabela-verdade da 1 1 1
operação NÃO.
24
Cada linguagem de programação tem uma forma 5. Determine que o usuário escreva o terceiro
de representar os operadores lógicos. A simbologia valor no programa e que ele seja armazenado
mais encontrada são: pelo VisuAlg.
6. Determine que o usuário escreva o quarto
• AND, OR e NOT em linguagens como:
valor no programa e que ele seja armazenado
Pascal, Visual Basic e SQL.
pelo VisuAlg.
• &&, || e ! em linguagens como: Java e C# 7. Determine que o usuário escreva o quinto
valor no programa e que ele seja armazenado
Algumas linguagens oferecem operadores lógicos pelo VisuAlg.
para o nível de bit (também chamado de operadores 8. Insira o comentário referente a operação
bitwise). Ou seja, podemos fazer operações lógicas realizada e então aplique o comando que
com os bits de dois números. Em java, por exemplo deverá realizar o cálculo do valor da média.
esses operadores são & e |. 9. Insira o comentário referente a exibição do
Além dos operadores que estudamos nesta aula, resultado na tela, assim como o comando
existem também os operadores de incremento e de necessário para o procedimento.
decremento. 10. Realize alguns testes no programa, inserindo
valores aleatoriamente.
Neste primeiro momento, não vamos nos
aprofundar muito no estudo deles, basta 4.5. Exercício de Fixação
compreendermos que os operadores de incremento
(++) e de decremento (--) são operadores unários que 1. Desenvolva um algoritmo que leia um número
adicionam e subtraem uma unidade do conteúdo da e mostre o seu quadrado e o seu cubo.
variável respectiva: 2. Desenvolva um algoritmo que calcule e
apresente o valor do volume de uma lata de
Instrução Equivalência
var++ var = var + 1 óleo, utilizando a fórmula V = 3.14159 * R * R
++var var = var + 1 * A, em que R é o valor do raio e A da altura,
var-- var = var – 1 que são fornecidas pelo usuário.
--var var = var – 1
3. Desenvolva um algoritmo que receba o nome
O valor da variável será incrementado (ou e o ano de nascimento de uma pessoa e
decrementado) depois ou antes da execução da calcule a idade que a pessoa fez no ano
instrução de que ela faz parte. passado e a idade que terá daqui 10 anos.
Conhecer esses operadores é muito importante 4. Desenvolva um algoritmo que receba um
para qualquer área da tecnologia que você for número inteiro e mostre qual a unidade do
trabalhar. Em programação por exemplo, utilizamos número.
esses operadores praticamente o tempo todo, 5. Escreva um algoritmo que receba o valor de
principalmente para controle de fluxo de execução e um produto em reais e o desconto em
tomadas de decisão. porcentagem a ser oferecido na venda do
produto. Informe o valor do desconto e o
valor que o produto deverá ser vendido.
4.4. Exercício de Conteúdo
1. Abra o VisuAlg em seu computador e digite o
nome correspondente ao algoritmo a ser
confeccionado.
2. Insira os nomes das variáveis no programa e
determine que os valores usados serão do
tipo REAL.
3. Determine que o usuário escreva o primeiro
valor no programa e que ele seja armazenado
pelo VisuAlg.
4. Determine que o usuário escreva o segundo
valor no programa e que ele seja armazenado
pelo VisuAlg.
25
Aula
Lógica de Programação V.2
Estrutura de Decisão 1. 05
5. Aula 5 – Estrutura de Decisão 1 5.1. Estrutura de Decisão Simples
(Se...Então)
A maioria dos algoritmos precisam tomar decisões
ao longo de sua execução. Para isso existem as Nesta estrutura uma única condição (expressão
estruturas de decisão, e a mais utilizada é a lógica) é avaliada. Dependendo do resultado desta
estrutura SE-ENTÃO-SENÃO (Em inglês IF-THEN-ELSE). avaliação, um comando ou conjunto de comandos
O funcionamento é simples: com base no resultado de serão executados (se a avaliação for verdadeira) ou não
uma expressão booleana (VERDADEIRO ou FALSO), o serão executados (se a avaliação for falsa).
fluxo do algoritmo segue para um bloco de instruções
Há duas sintaxes possíveis para a estrutura de
ou não.
decisão simples:
Observe o esquema da estrutura SE-ENTÃO-
SENÃO:
SENÃO
FIM-SE
26
Exemplo de algoritmo que lê um número e escreve Nos casos em que a condição é avaliada como falsa,
se o mesmo é maior que 10: o comando_único_2 ou o conjunto de comandos
(comando_composto_2) delimitados pelas palavras-
reservadas início e fim serão executados. 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 o comando_único_2 ou a palavra-
reservada fim do comando_composto_2.
5.2. Estrutura de Decisão Composta Exemplo de algoritmo que lê um número e escreve
(Se...Então...Senão) se o mesmo é ou não maior que 100:
Nesta estrutura uma única condição (expressão
lógica) é avaliada. Se o resultado desta avaliação for
verdadeiro, um comando ou conjunto de comandos
serão executados. Caso contrário, ou seja, quando o
resultado da avaliação for falso, um outro comando ou
um outro conjunto de comandos serão executados. Há
duas sintaxes possíveis para a estrutura de decisão Nos algoritmos, a correta formulação de condições,
composta: isto é, expressões lógicas, é de fundamental
importância, visto que as estruturas de seleção são
baseadas nelas. As diversas formulações das condições
podem levar a algoritmos distintos.
Considerando o problema:
27
O algoritmo a seguir utiliza estruturas aninhadas ou 5. Insira o comando referente ao cálculo
encadeadas. necessário para descobrir a nota do aluno.
6. Insira a primeira condição SE, e caso de o
aluno ter obtido uma nota igual ou superior a
7.
7. Insira o comando, que retorna a média do
aluno em caso de ele estar aprovado.
8. Insira a segunda condição SE, e caso de o
aluno ter obtido uma nota igual ou inferior a
7.
9. Insira o comando que retorna apenas a
mensagem de que o aluno precisa
comparecer a coordenação do curso.
10. Teste o programa, usando nomes aleatórios,
As estruturas concatenadas tem a vantagem de assim como valores aleatórios para as notas
tornar o algoritmo mais legível, facilitando a correção do aluno.
do mesmo em caso de erros. As estruturas aninhadas
ou encadeadas têm a vantagem de tornar o algoritmo 5.4. Exercício de Fixação
mais rápido pois são efetuados menos testes e menos
comparações, o que resulta num menor número de 1. Desenvolva um algoritmo que receba uma
passos para chegar ao final do mesmo. medida em metros e converta em milímetros.
2. Desenvolva um algoritmo que leia dois valores
Normalmente se usa estruturas concatenadas nos inteiros e distintos e informe qual é o maior.
algoritmos devido à facilidade de entendimento das 3. Desenvolva um algoritmo que receba um
mesmas e estruturas aninhadas ou encadeadas número e diga se este número está no
somente nos casos em que seu uso é fundamental. intervalo entre 100 e 200.
4. Desenvolva um algoritmo que leia o nome e as
As Estruturas de Decisões são muito utilizadas no
três notas obtidas por um aluno durante o
dia-a-dia de nós programadores, ela vem nos auxiliar
semestre, calcule a média (aritmética) e
na tomada de decisões (por exemplo: Fazer login de
informe o nome e sua menção aprovado
usuário, se o login e senha estiverem corretos, é
(média >= 7), reprovado (média <= 5) ou em
liberado o acesso se não, é emitido uma mensagem de
recuperação (média entre 5,1 a 6,9).
erro). Por isso, é de extrema importância dominarmos
5. Desenvolva um algoritmo que receba um
este assunto.
número e mostre uma mensagem, caso este
número seja maior que 80, menor que 25 ou
5.3. Exercício de Conteúdo igual a 40.
1. Neste exercício, vamos desenvolver um
algoritmo que receba o nome do aluno, leia
duas notas e retorne a média em caso de o
aluno estar aprovado, caso contrário o aluno
deve comparecer na coordenação do seu
curso. Insira as variáveis dentro do programa
VisuAlg.
2. Insira o comando no VisuAlg que solicite o
nome do aluno e armazene este nome.
3. Insira o comando no VisuAlg que solicite o
valor da primeira nota do aluno e armazene
este valor.
4. Insira o comando no VisuAlg que solicite o
valor da segunda nota do aluno e armazene
este valor.
28
Aula
Lógica de Programação V.2
Estrutura de Decisão 2. 06
6. Aula 6 – Estrutura de Decisão 2 Assim, de forma resumida, o conteúdo da variável
é comparado à um valor v1 qualquer e, se forem iguais,
A última estrutura de decisão que temos à o bloco de ações 1 é executado. No caso de serem
diferentes, as outras condições serão testadas, até que
disposição é a estrutura de múltipla escolha, utilizada
quando precisamos selecionar as ações do algoritmo seja encontrada uma igualdade ou que terminem todos
os casos possíveis.
com base em diferentes valores de uma variável.
Também nomeado de “Estrutura de seleção
6.1. Escolha-Caso múltipla”, basicamente conseguimos ter várias
condições para dados diferentes, simplificando um uso
A estrutura ESCOLHA-CASO (em inglês SWITCH- muito grande do “se”. Exemplo: “Iremos pedir para o
CASE), é uma solução elegante quanto se tem usuário digitar um inteiro, caso o número seja 100,
várias estruturas de decisão (SE-ENTÃO-SENÃO) apareça a frase “número cem”; caso seja digitado 1,
aninhadas. Isto é, quando outras verificações são feitas apareça a mensagem “número um”, e para todos os
caso a anterior tenha falhado (ou seja, o fluxo do valores diferentes apareça uma mensagem diferente:
algoritmo entrou no bloco SENÃO). A proposta da “Números diferentes de um e cem”.
estrutura ESCOLHA-CASO é permitir ir direto no bloco
de código desejado, dependendo do valor de uma
variável de verificação.
29
Bem mais bonito! Agora a lógica tá mais visível e
elegante. O resultado dos dois algoritmos é o mesmo,
veja um exemplo de execução deste programa.
6.2. OUTROCASO
Existe uma opção a mais nessa estrutura,
justamente para tratar quando o valor da variável não
é equivalente a nenhum valor informado como opção
nos CASOs, ou seja, é um "OUTROCASO". No algoritmo
listado anteriormente, imagine se o usuário digitasse
um valor diferente de "+", "-", "*" e "/". Caso
quiséssemos apresentar uma mensagem para o
usuário informando que ele digitou uma opção
inválida, utilizaríamos esse recurso da estrutura
ESCOLHA-CASO. Veja.
Exemplo:
IDADE CATEGORIA:
De 05 a 10 Infantil
De 11 a 15 Juvenil
De 16 a 20 Junior
De 21 a 25 Profissional
30
Resolução: 6. Insira o comando responsável pelo quinto
caso.
31
Aula
Lógica de Programação V.2
Estrutura de Repetição 1. 07
7. Aula 7 – Estrutura de Repetição 1 Para entender na prática como usamos essa
estrutura de repetição, vejamos um exemplo de
Em todos os sistemas existirá sempre um momento algoritmo utilizando a estrutura:
em que uma determinada instrução deverá ser
executada um número repetido de vezes. Para que essa
repetição seja facilitada existem comandos que
formam a Estrutura de Repetição.
Independentemente da linguagem de
programação escolhida para o desenvolvimento do
sistema, existem três tipos básicos Estrutura de
Repetição: PARA-FAÇA, ENQUANTO-FAÇA e REPITA. A
questão básica para quem está iniciando no mundo da
programação de computadores é definir qual a
diferença entre elas e quando utilizá-las. Aqui segue
algumas dicas de quando e por que utilizar cada uma
delas.
Sempre vale lembrar a seguinte regra da lógica de Se não é possível determinar o número de
programação: “Sempre que uma condição é repetições e o bloco de comandos não tem
verdadeira, a linha de código imediatamente abaixo é obrigatoriedade de execução então a melhor Estrutura
executada”. Isso fará diferença na hora de decidir a de Repetição a ser utilizada é ENQUANTO-FAÇA. Essa
melhor Estrutura de Repetição. estrutura valida a condição antes da execução e, se for
verdadeira, executa o bloco de comandos em seu
Nesta aula, nosso foco ficará sobre a estrutura interior enquanto tal condição for verdadeira. Ao final
ENQUANTO. da execução do bloco o ponteiro de execução do fluxo
é colocado novamente no início do bloco e a condição
7.1. ENQUANTO-FAÇA é testada outra vez.
Em nossos algoritmos, hora ou outra precisamos É importante assegurar que a condição testada
executar alguns passos mais de uma vez. Ou mesmo possa ser modificada dentro bloco, passando de
executar repetidamente alguns passos até que alguma verdadeira para falsa, caso contrário o sistema entra
condição seja atendida. A partir dessa necessidade em LOOP infinito, “travando” seu sistema.
surgem as estruturas de repetição, também
conhecidas como LOOP. Nesta aula, vamos tratar de
forma especial a estrutura de
repetição ENQUANTO (em inglês, WHILE). Seu
funcionamento é tão simples quanto a estrutura de
decisão SE-ENTÃO. A diferença é que os passos dentro
deste bloco, são repetidos enquanto a expressão
booleana (VERDADEIRO ou FALSO) resultar
VERDADEIRO.
32
Esta estrutura de repetição é também chamada de O código anterior irá executar enquanto o usuário
loop pré-testado, pois a expressão booleana é digitar um número diferente de 0, ou seja, se ele digitar
verificada antes da primeira execução. Se inicialmente 0 a estrutura de repetição enquanto é encerrada.
ela já resultar em FALSO, as instruções que estão
dentro do bloco não são executadas nenhuma vez. 7.2. Exercício de Conteúdo
1. No VisuAlg, insira as variáveis do tipo inteiro.
2. Insira a variável do tipo real.
3. Aplique os comandos responsáveis por zerar
as variáveis.
4. Insira o comando ENQUANTO dentro do
algoritmo em desenvolvimento.
5. Determine que o usuário deva inserir um
número e então o VisuAlg deve armazenar
este número
6. Insira o comando que realiza a conta dos
valores.
7. Insira o comando que realiza a soma dos
números.
8. Determine que o VisuAlg armazene a média
na variável resul.
9. Determine que o VisuAlg retorne na tela o
As estruturas de repetição são muito utilizadas em valor da média dos números digitados
desenvolvimento de softwares. Entender como 10. Teste o programa, inserindo valores
funciona é muito importante para resolver problemas aleatórios.
que precisam executar tarefas repetidas vezes.
7.3. Exercício de Fixação
Podemos dizer que temos dois tipos de repetição
dentro de um programa, o primeiro seria a repetição 1 Desenvolva um algoritmo que apenas retorne
programada. A repetição programada seria quando o na tela os números de 1 a 10 em ordem
programador já sabe previamente quantas vezes o decrescente.
comando deve ser repetido, ou seja, você sabe quantas 2 Supondo que a população de um país A seja
vezes o programa deve executar determinada tarefa. da ordem de 90.000.000 habitantes com uma
taxa anual de crescimento de 3% e que a
Mas é quando não sabemos quantas vezes um
população de um país B seja
determinado comando deve ser repetido, ou quando aproximadamente de 200.000.000habitantes
queremos que um comando seja repetido até que um
com uma taxa anual de crescimento de 1,5%.
determinado número seja digitado ou quando temos Fazer um algoritmo que calcule e escreva o
alguma dessas duas ocorrências que devemos usar a
número de anos necessários para que a
estrutura de repetição enquanto.
população do país A ultrapasse ou iguale a
Resumindo, a sua sintaxe e universal, seria: população do país B, mantidas essas taxas de
crescimento.
3 Um determinado material radioativo perde
metade de sua massa a cada 50 segundos.
Dada amassa inicial, em gramas, fazer um
programa que determine o tempo necessário
para que essa massa se torne menor que 0,5
grama. Escreva a massa inicial, a massa final e
o tempo calculado em horas, minutos e
segundos.
4 Uma Universidade deseja fazer um
levantamento a respeito de seu concurso
33
vestibular. Para cada curso é fornecido o • Calcule e escreva o total de candidatos.
seguinte conjunto de valores: Um código do 5 Escreva um algoritmo que leia 10 valores
curso; inteiros e positivos e (Use a estrutura
• Número de vagas; enquanto faça):
• Número de candidatos do sexo masculino; a) Encontre o maior valor.
• Número de candidatos do sexo feminino. b) Encontre o menor valor.
Fazer um programa que: c) Calcule a média dos números inseridos.
• Calcule e escreva, para cada curso, o número
de candidatos por vaga e a percentagem de
candidatos do sexo feminino (escreva também
o código correspondente do curso);
• Determine o maior número de candidatos
por vaga e escreva esse número juntamente
com o código do curso correspondente (supor
que não haja empate);
34
Aula
Lógica de Programação V.2
Estrutura de Repetição 2. 08
8. Aula 8 – Estrutura de Repetição 2 Com o REPITA ATÉ o conjunto de instruções é
executado enquanto a condição testada retornar Falso.
Frequentemente precisamos implementar uma Sintaxe:
estrutura de repetição em nossos algoritmos para
resolver algum problema. Um recurso para fazer isso é
a estrutura ENQUANTO, foco da nossa aula anterior.
35
A seguir temos o fluxograma que mostra o vezes a leitura de dados do usuário, pois ela é pós-
funcionamento deste exemplo mostrado: testada. Observe a implementação daquele algoritmo
com REPITA-ATÉ.
8.2. PARA-FAÇA
Exemplo, um algoritmo que realiza a soma dos
números de 1 a 100, terá um número de iterações pré-
definido (100).
Veja que a leitura de dados é escrita duas vezes Podemos implementar esse LOOP com qualquer
neste algoritmo, o motivo para fazer isso é que a estrutura de repetição, mas para isso é necessário
estrutura ENQUANTO é pré-testada. Logo, não dá pra utilizar um contador, uma variável que será utilizada
testar se o usuário digitou o valor 0 se ele ainda não para contar quantas iterações foram executadas até o
tiver digitado valor nenhum. Com a estrutura de momento A estrutura de repetição PARA, implementa
repetição REPITA-ATÉ não é necessário escrever duas um contador implicitamente.
36
A estrutura de repetição PARA-FAÇA é usada
quando se sabe o número exato de vezes de repetição
do looping e esse número é um valor inteiro. Veja como
é o seu esquema:
37
8.3. Exercício de Conteúdo 8.4. Exercício de Fixação
1. No programa VisuAlg, determine as variáveis 1. Faça um programa em que o usuário digite
de do tipo inteiro. diversos números positivos. Se digitar um
2. Insira o comando necessário para que o número negativo o programa termina.
usuário digite o número inicial, assim como 2. Escreva um programa que lê o sexo de uma
para que o programa armazene este número. pessoa. O sexo deverá ser com o tipo de dado
3. Insira o comando necessário para que o caractere o programa deverá aceitar apenas
usuário digite o número final, assim como os valores “M” ou “F”.
para que o programa armazene este número. 3. Escrever um programa de computador que
4. Insira o comentário antes da próxima linha de leia 10 números inteiros e, ao final, apresente
comando. a soma de todos os números lidos.
5. Determine o primeiro teste lógico do nosso 4. Faça um programa em que o usuário digite 2
algoritmo. valores e se a soma deles for maior que 15 o
6. Insira a mensagem que o programa deve programa encerra, caso contrário, repete.
retornar, em caso de o usuário inserir um 5. Escreva um programa que leia dois valores
valor final, menor do que o inicial. reais. Ambos valores deverão ser lidos até que
7. Insira o segundo teste lógico do programa. o usuário digite um número no intervalo de 1
8. Insira o comentário referente a próxima linha a 100. Apresentar a soma dos dois valores
de comando. lidos.
9. Determine o último teste lógico do nosso 6. Faça um programa que escreva de 30 a 50
algoritmo. contando de 2 em 2.
10. Determine que o programa retorne na tela os 7. Faça um programa que escreva de 80 a 40, em
valores. ordem decrescente de 5 em 5.
11. Teste o algoritmo desenvolvido.
38
Aula
Lógica de Programação V.2
Manipulação de Vetores. 09
9. Aula 9 – Manipulação de O que isso significa? Que para cada dado a ser
usado num algoritmo foi declarada uma variável (ou
Vetores. uma constante) para armazenar a informação.
Vetores e Matrizes são estruturas de dados muito Essa ação é válida para problemas de pequeno
simples que podem nos ajudar muito quando temos porte, que envolvem poucas variáveis e constantes.
muitas variáveis do mesmo tipo em um Mas como lidar com um problema que precise
algoritmo. Imagine o seguinte problema: Você precisa manipular dezenas, centenas, milhares de variáveis?
criar um algoritmo que lê o nome e as 4 notas de 50 Declarar uma variável para cada dado seria muito
alunos, calcular a média de cada aluno e informar quais trabalhoso e seu controle no código do algoritmo ainda
foram aprovados e quais foram reprovados. mais. Uma das maiores dificuldades em escrever um
grande programa de computador não se resume em
Conseguiu imaginar quantas variáveis você vai apenas estabelecer suas metas, os retornos que deverá
precisar? Muitas né? Vamos fazer uma conta rápida: 50 apresentar, nem mesmo quais métodos serão usados
variáveis para armazenar os nomes dos alunos, (4 * 50 para que os objetivos sejam atingidos, mas sim em
= ) 200 variáveis para armazenar as 4 notas de cada como os dados serão organizados internamente e quais
aluno e por fim, 50 variáveis para armazenar as médias as estruturas de dados mais adequadas para serem
de cada aluno. 300 variáveis no total, sem contar a utilizadas.
quantidade de linhas de código que você vai precisar
para ler todos os dados do usuário, calcular as médias Em programação, as estruturas de dados são uma
e apresentar os resultados. Mas temos uma boa notícia forma coerente e racional de organizar os dados e
pra você. Nós não precisamos criar 300 variáveis! otimizar o seu uso. Um vetor unidimensional, ou um
Podemos utilizar Vetores e Matrizes (também array, é uma das estruturas de dados mais comuns a
conhecidos como ARRAYs)! serem aplicadas no desenvolvimento de um algoritmo
e pode ser considerado uma sequência de posições de
Nesta aula, nosso foco será na utilização dos memória que é usada para armazenar um conjunto de
Vetores. dados do mesmo tipo e usando o mesmo nome. Para
acessar cada informação armazenada, separadamente,
9.1. VETOR usa-se um índice que é representado por uma variável
inteira.
Vetor (array uni-dimensional) é uma variável que
armazena várias variáveis do mesmo tipo. No problema Essas informações são chamadas de elementos do
apresentado anteriormente, nós podemos utilizar vetor.
um vetor de 50 posições para armazenar os nomes dos
Considere uma sala de aula, onde há 10 alunos e
50 alunos.
queremos armazenar suas idades em variáveis, até
É um conjunto de variáveis do mesmo tipo então seria feito assim:
acessíveis com um único nome. Armazenadas de forma
Var
contínua e ocupando as posições de forma fixas. Pode-
se dizer por este motivo que vetor é uma matriz idade1, idade2, idade3, idade4, idade5, idade6,
unidimensional. idade7, idade8, idade9, idade10: INTEIRO.
Até agora você manipulou dados num algoritmo Como sabemos, podemos inicializar uma variável
usando variáveis e constantes simples. de duas formas:
39
idade1= 10, idade2 = 12, idade3 = 11 … idade10 =10 Usando a variável idade[3] onde i=3, poderemos
acessar a idade do 3 aluno, a variável idade[2] onde i=2,
Ou pedir que o usuário escreva usando o teclado:
acessará a idade do 2 alunos, e assim para todos os
Escreva (“Digite a idade do primeiro aluno”) outros, assim como já foi demostrado.
Leia (aluno1)
Leia (aluno2)
40
foram atribuídos, conterão valores 9.2. Exercício de Conteúdo
aleatórios que já estavam na memória do
computador. 1. No VisuAlg, crie um programa que solicite a
entrada de 10 números pelo usuário,
• O índice do primeiro elemento do vetor armazenando-os em um vetor, e então monte
pode ser “0” ou “1”, a depender da outro vetor com os valores do primeiro
linguagem de programação usada. multiplicados por 5. Exiba os valores dos dois
vetores na tela, simultaneamente, em duas
• Cada linguagem de programação trabalha
colunas (um em cada coluna), uma posição
de forma distinta com relação à atribuição
por linha. Comece inserindo as variáveis de
de dados, à declaração e ao
vetores.
dimensionamento do vetor.
2. Insira a varável cont determinando o tipo de
• É muito importante observar se a dado como inteiro.
manipulação do índice do vetor está 3. Insira primeiro laço PARA-FAÇA além de
correta, ou seja, se o elemento correto do determinar que o usuário insira um número e
vetor está sendo acessado. Esse tipo de que o sistema armazene este número.
erro não é detectável pelos compiladores 4. Determine os valores que a coluna 2 deverá
das linguagens de programação e são receber.
difíceis de identificar. 5. Conclua o primeiro comando.
6. Determine que o sistema retorne o resultado
• Ao declarar uma variável como vetor de X
na tela.
elementos de determinado tipo de dado, o
7. Insira o segundo laço e o teste lógico
compilador reservará espaço em memória
referente a este laço.
para o tipo de dado declarado. Ou seja, se
8. Conclua o programa.
forem X dados reais, haverá necessidade
9. Realize o teste do algoritmo criado.
de mais espaço em comparação com X
dados inteiros. Por isso é fundamental
declarar corretamente o tipo de dado e a
9.3. Exercício de Fixação
quantidade de elementos de um vetor. 1. Desenvolva um algoritmo que exibe os
Volte ao tema 3 para ver o espaço em números digitados em posições impares.
memória de que cada tipo de dado 2. Desenvolva um algoritmo que aceita 5 nomes
necessita. e exibe-os em ordem inversa.
A estrutura de repetição mais adequada para 3. Desenvolva um algoritmo que realiza 5
manipular dados de um vetor é o laço “para”. cadastros diferentes.
4. Construa um algoritmo que leia 50 valores
Array é uma das estruturas de dados mais simples inteiros e positivos e:
que existe e uma das mais utilizadas também. Em a) Encontre o maior valor
basicamente todas as linguagens de programação b) Encontre o menor valor
têm arrays, pelo menos ainda não conhecemos uma c) Calcule a média dos números lidos
linguagem que não tem. Porém, os índices podem 5. Utilizando vetores, desenvolva um algoritmo
mudar dependendo da linguagem, algumas começam que aceite e exiba:
os índices do array com 1 e outras com 0, essa é a controle de sorveteria com 10 tipos de
grande diferença que geralmente encontramos entre sorvetes:
linguagens. No caso das linguagens que começam os
arrays com o índice 0, o último elemento do array ordem | sabor | descrição
recebe o índice (<tamanho do array> - 1).
41
Aula
Lógica de Programação V.2
Manipulação de Matrizes. 10
10. Aula 10 – Manipulação de variável declarada como matriz seguida da posição que
ocupa no conjunto.
Matrizes.
A matriz apresentada na imagem anterior foi
Você estudou até o momento os arrays de uma declarada como “a” e cada elemento foi atribuído em
única dimensão, ou seja, vetores que são graficamente uma posição específica, que é identificada pela linha e
representados por uma linha ou uma coluna. Mas pela coluna da matriz. Essa posição é obtida por meio
também é possível trabalhar com arrays de duas ou de índices que auxiliam a manipular os dados da
mais dimensões. O array bidimensional, ou matriz, variável. Por exemplo, o elemento a[1,2] é o valor “9”,
é muito conhecido e utilizado em desenvolvimento de destacado em na representação da imagem.
algoritmos, sendo formado por linhas e colunas, como O primeiro índice indica a linha e o segundo, a
numa tabela. coluna, e essa ordem nunca se altera, ou seja, a linha
sempre deve ser indicada em primeiro lugar, e depois
10.1. Matriz se indica a coluna da matriz para manipular algum
dado. Você consegue identificar a posição ocupada
Assim como os vetores, as matrizes também são
pelo valor “2” em destaque na matriz da imagem
variáveis compostas homogêneas.
anterior? Está na linha “6” e na coluna “5”, então a
Composta por ser uma variável que contém um sintaxe correta para manipular esse dado é a[6,5] = 2.
número finito de dados e homogênea porque todos
Observe o código apresentado na tabela abaixo
estes são do mesmo tipo. Uma matriz é considerada
que mostra como declarar matriz “a” e como atribuir
quadrada quando possui o mesmo número de linhas e
seus valores.
de colunas.
42
Considere que “m” seja o número de elementos
nas linhas e “n” seja a dimensão da coluna. Nesse
exemplo “m=n=7”, uma matriz quadrada, com 7*7 = 49
posições. Então, tem-se que “a” é um vetor[1..m,
1..n] de inteiros. Outro aspecto bastante importante
que você deve observar é com relação à variação dos
índices da matriz.
43
resultante. Dessa forma, a quantidade de elementos na 3. Insira o comando para o início do primeiro laço
linha de A deve ser igual à quantidade de elementos na
coluna de B. E, para essa operação, é fundamental 4. Insira o comando para sequência do laço.
observar a correta variação dos índices das matrizes
para que os elementos certos sejam manipulados. 5. Determine que o usuário deva inserir um
Nesse exemplo, a matriz resultante (nesse caso, matriz número inteiro.
C) terá dimensão mxv, isto é, “m” linhas e “v” colunas.
6. Faça com que o VisuAlg armazene estes dados
As observações mais importantes que você precisa na matriz.
saber sobre matrizes:
• Num array, os elementos são armazenados 12. Determine que o algoritmo retorne o primeiro
em posições adjacentes de memória. valor.
• Da mesma forma como ocorre com um
13. Determine que o algoritmo retorne o segundo
array unidimensional, ao declarar uma
valor.
variável como uma matriz de X elementos
de determinado tipo de dado, o 14. Teste o algoritmo criado.
compilador reservará espaço em memória
para o tipo de dado declarado. Ou seja, se
10.3. Exercício de Fixação
forem X dados reais, haverá necessidade
de mais espaço se comparados com X 1. Ler uma matriz 5X5 e gerar outra em que cada
dados inteiros. Por isso é fundamental elemento é o cubo do elemento respectivo na
declarar corretamente o tipo de dado e a matriz original. Imprima depois o elemento do
quantidade de elementos de uma matriz. meio desta nova matriz.
Volte ao tema 3 para ver o espaço em
memória de que cada tipo de 2. Faça um algoritmo para ler uma matriz 2X3 real
dado necessita. e depois gerar e imprimir sua transposta
(matriz 3X2 equivalente).
• A estrutura de repetição mais adequada
para manipular dados de uma matriz é o
3. Crie uma matriz 7X8 onde cada elemento é a
uso de laços “para” aninhados.
soma dos índices de sua posição dentro da
matriz.
10.2. Exercício de Conteúdo
4. Ler uma matriz 4X3 real e imprimir a soma dos
1. No VisuAlg, faça um algoritmo para ler uma
elementos de uma linha L fornecida pelo
matriz de 3x4 de números reais e depois exibir
usuário.
o elemento do canto superior esquerdo e do
canto inferior direito. Insira a variável matriz.
5. Ler uma matriz 4X3 real. Depois, mostre qual é
o elemento armazenado em uma linha e
2. Insira as variáveis i e j de tipo de dados inteiro.
coluna C fornecidos pelo usuário.
44
Aula
Lógica de Programação V.2
Funções e Procedimentos. 11
11. Aula 11 – Programação Para começarmos a falar sobre procedimentos e
funções, vamos dar uma olhada no conceito
Estruturada. da máquina de von Neumann, onde os sistemas
computacionais são constituídos de:
Nesta aula vamos tratar de um assunto de extrema
importância na programação estruturada: ENTRADA -> PROCESSAMENTO -> SAÍDA
as Funções e Procedimentos. Sem eles, a programação Através desse conceito, podemos generalizar que
seria praticamente impossível de ser realizada à todo programa recebe uma entrada de Dados, realiza
medida que os programas crescessem em tamanho. seus cálculos no processamento e, como saída, temos
Além disso, seria praticamente impossível trabalhar em a Informação que é o dado processado. Da mesma
equipe, e a reutilização de código também seria forma, os procedimentos e funções recebem dados de
inimaginável, ou seja, toda vez que escrevêssemos entrada, processam-os e retornam algo para quem os
nossos programas, teríamos que fazer tudo a partir do chamou. Podemos começar diferenciando um
zero. procedimento de uma função pela maneira como é
A programação estruturada é uma forma de feito o retorno.
programação de computadores que estabelece uma
disciplina de desenvolvimento de algoritmos, 11.1. Funções
independentemente da sua complexidade e da
linguagem de programação na qual será codificado, As funções (functions), também conhecidas como
que facilita a compreensão da solução através de um sub-rotinas, são muito utilizadas em programação. Um
número restrito de mecanismos de codificação. dos grandes benefícios é não precisar copiar o código
todas as vezes que precisar executar aquela operação,
Me responda essa pergunta: Você saberia fazer um além de deixar a leitura do código mais intuitiva.
algoritmo para calcular a raiz quadrada de um número?
Reflita um pouquinho sobre a complexidade de tal Na Função, o valor de retorno é Explícito, de
algoritmo. E um algoritmo para gerar um número maneira simplificada, podemos dizer que uma função
aleatório, você faz ideia de como fazer? Bom, não são recebe de quem a chamou, em seus Parâmetros, os
algoritmos tão triviais para se implementar. Mas e se dados a serem processados.
você precisar descobrir a raiz quadrada de um número Já quando chamamos uma função,
ou mesmo gerar um número aleatório no seu passamos Argumentos para que ela execute o seu
algoritmo, o que fazer? processamento. Dessa forma, os Parâmetros são os
Existem algoritmos que executam essas operações. dados aguardados pela função, enquanto que
O que precisamos é apenas solicitar a execução desses os Argumentos são os dados que passamos à função.
algoritmos dentro do nosso. Esse tipo de algoritmo que Podemos dizer que as funções são pequenos
solicitamos a execução de dentro do nosso algoritmo programas. Ou seja, a partir de agora, podemos
são chamados de funções (ou procedimentos caso não “quebrar” o nosso programa em partes menores. Dessa
retornem um resultado). forma, podemos, dentre outras coisas, reutilizar
Veremos nesta aula como constitui-se uma funções já escritas em programas novos, dividir
função/procedimento, as diferenças de um para o trabalho entre uma equipe, onde cada um escreve um
outro, o que é um argumento e um parâmetro, trecho do código, ou seja, cada um escreve suas
diferenças entre um e outro, o que é um retorno. funções e depois junta-se em um único programa.
45
11.2. Procedimentos
Os procedimentos (procedures) diferem das
funções apenas por não retornarem resultado, imagine
um procedimento que envia e-mail. Precisa retornar
resultado?
Uma Variável Global é uma variável que pode ser O VisuAlg possui uma lista extensa de funções pré-
acessada, alterada, enfim, ela pode ser vista por todo o definidas em sua biblioteca:
programa. Como assim? As variáveis são todas globais
então? Bom, nos programas que fizemos até agora, 11.4.1. Funções Numéricas, Algébricas e
sim. A partir de agora, veremos que os procedimentos Trigonométricas
e funções também possuem suas próprias variáveis, Abs(expressão) - Retorna o valor absoluto de uma
que só são conhecidas dentro de seu escopo (dentro do expressão do tipo inteiro ou real. Equivale a |
procedimento ou função). Ou seja, uma Variável expressão | na álgebra.
Local é uma variável que só é conhecida por um trecho
do programa, não podendo ser acessada fora dele. ArcCos(expressão) - Retorna o ângulo (em
radianos) cujo co-seno é representado por expressão.
Por exemplo, declaramos uma variável
chamada X dentro de uma função. Se você mencioná- ArcSen(expressão) - Retorna o ângulo (em
la fora da função onde foi declarada, o compilador em radianos) cujo seno é representado por expressão
questão irá acusar um erro, dizendo que a variável não ArcTan(expressão) - Retorna o ângulo (em
foi declarada. Com isso, você pode perceber que radianos) cuja tangente é representada por expressão.
podemos ter variáveis de mesmo nome em nosso
programa, porém cada uma dentro de seu escopo, sem Cos(expressão) - Retorna o co-seno do ângulo (em
nenhuma ligação uma com a outra. radianos) representado por expressão.
Então vamos ver alguns exemplos de como fazê- CoTan(expressão) - Retorna a co-tangente do
los. ângulo (em radianos) representado por expressão.
Assinatura da função para cálculo da Raiz Int(expressão) - Retorna a parte inteira do valor
Quadrada: representado por expressão.
46
Log(expressão) - Retorna o logaritmo na base 10 Copia (c : caracter ; p, n : inteiro) : Retorna um
do valor representado por expressão. valor do tipo caracter contendo uma cópia parcial da
expressão, a partir do caracter p, contendo n
LogN(expressão) - Retorna o logaritmo neperiano
caracteres. Os caracteres são numerados da esquerda
(base e) do valor representado por expressão.
para a direita, começando de 1. Corresponde a Copy()
Pi - Retorna o valor 3.141592. do Delphi, Mid$() do Basic ou Substr() do Clipper.
Carac (c : inteiro) : Retorna o caracter cujo código Como exemplo, vamos criar um programa que lê
ASCII corresponde à expressão. dois números e os somam. Para isso iremos criar uma
função chamada somar, que receberá dois números
Caracpnum (c : caracter) : Retorna o inteiro ou real
inteiros como parâmetros e devolverá também um
representado pela expressão. Corresponde a StrToInt()
inteiro contendo o resultado da soma.
ou StrToFloat() do Delphi, Val() do Basic ou Clipper, etc.
47
Podemos perceber em nosso código que
declaramos algumas variáveis globais e locais. Nesse
caso, declaramos as variáveis globais: valor1, valor2 e
resultado, enquanto que declaramos as
variáveis locais: n1, n2 e resultado. Epa! Surgiram duas
dúvidas agora! Primeiro: n1 e n2 são parâmetros e não
variáveis locais, certo? Errado.
48
A substituição dos parâmetros formais pelos Funções e procedimentos são utilizados com
parâmetros reais no ato da invocação de um muita frequência em desenvolvimento de softwares.
subalgoritmo é denominada de passagem de São vários benefícios como: evita duplicação de código
parâmetros quando precisamos executar a mesma operação várias
vezes, deixa o entendimento do algoritmo mais
Pode se dar por dois mecanismos distintos:
intuitivo, pois tiramos a parte complexa do código do
• Passagem por valor (ou por cópia) fluxo principal do algoritmo, etc.
49
Aula
Lógica de Programação V.2
Modularização. 12
12. Aula 12 – Modularização autor, possa entender o algoritmo mais
rapidamente por tentar entender os seus
Os algoritmos que temos construído até então são módulos separadamente, pois como cada
módulo é menor e mais simples do que o
muito simples, pois resolvem problemas simples e
apresentam apenas os componentes mais elementares algoritmo monolítico correspondente,
entender cada um deles separadamente é
dos algoritmos: constantes, variáveis, expressões
condicionais e estruturas de controle. Entretanto, a menos complicado do que tentar entender
o algoritmo como um todo de uma só vez.
maioria dos algoritmos resolve problemas
complicados, cuja solução pode ser vista como formada • Eleva o nível de abstração. É possível
de várias subtarefas ou módulos, cada qual resolvendo entender o que um algoritmo faz por saber
uma parte específica do problema. apenas o que os seus módulos fazem, sem
Nesta aula, veremos como escrever um algoritmo que haja a necessidade de entender os
constituído de vários módulos e como estes módulos detalhes internos aos módulos. Além disso,
trabalham em conjunto para resolver um determinado se os detalhes nos interessam, sabemos
problema algorítmico. exatamente onde examiná-los.
50
iniciar a execução, recebem dados do módulo principal As diferenças entre as definições de função e
e, ao final da execução, devolvem o resultado de suas procedimento permitem determinar se um módulo
computações. para uma dada tarefa deve ser implementado como
uma função ou procedimento. Nas definições acima,
Os módulos que estudaremos daqui em diante
estamos considerando que a produção de um valor de
possuem dois componentes: corpo e interface. O corpo
saída por uma função é diferente da utilização de
de um módulo é o grupo de comandos que compõe o
parâmetros de saída ou de entrada e saída. Veremos
trecho de algoritmo correspondente ao módulo. Já a
mais adiante que os parâmetros de saída e de entrada
interface de um módulo pode ser vista como a
e saída modificam o valor de uma variável do algoritmo
descrição dos dados de entrada e de saída do módulo.
que a chamou, diferentemente do valor de saída
O conhecimento da interface de um módulo é tudo o
produzido por uma função que será um valor a ser
que é necessário para a utilização correta do módulo
usado em uma atribuição ou envolvido em alguma
em um algoritmo.
expressão.
A interface de um módulo é definida em termos de
Como exemplo da diferenciação do uso de funções
parâmetros. Um parâmetro é um tipo especial de
ou procedimentos, considere, por exemplo, que um
variável utilizado pelos módulos para receber ou
módulo para determinar o menor de dois números é
comunicar valores de dados a outras partes do
necessário. Neste caso, o módulo deve ser
algoritmo. Existem três categorias de parâmetros:
implementado como uma função, pois ele vai produzir
• Parâmetros de entrada, que permitem um valor de saída. Por outro lado, se um módulo para
que valores sejam passados para um determinar o maior e o menor valor de uma sequência
módulo a partir do algoritmo que solicitou de números é requerido, ele deverá produzir seus
sua execução. resultados via os parâmetros de saída e será
implementado como um procedimento, pois ele vai
• Parâmetros de saída, que permitem que produzir dois valores de saída.
valores sejam passados do módulo para o
algoritmo que solicitou sua execução. A fim de escrevermos uma função ou
procedimento, precisamos construir as seguintes
• Parâmetros de entrada e saída, que partes: interface e corpo. Como dito antes, a interface
permitem tanto a passagem de valores é uma descrição dos parâmetros do módulo, enquanto
para o módulo quanto a passagem de corpo é a sequência de instruções do módulo.
valores do módulo para o algoritmo que
solicitou sua execução. O corpo de uma função é uma sequência de
comandos que compõe a função e que sempre finaliza
Quando criamos um módulo, especificamos o com um comando especial denominado comando de
número e os tipos das variáveis correspondentes aos retorno.
parâmetros que ele necessita, isto determina a
interface do módulo. Qualquer algoritmo que use um O corpo de um procedimento é uma sequência de
módulo deve utilizar os parâmetros que são comandos que não possui comando de retorno, pois
especificados na interface do módulo para se apenas funções possuem tal tipo de comando. Para
comunicar com ele. delimitar os comandos que fazem parte do
procedimento, utilizamos fimprocedimento.
Em Portugol, temos duas formas de definir um
módulo e nós já estudamos eles na aula passada:
12.2. Escopo de Dados e Códigos
Função: uma função é um módulo que produz um
O escopo de um módulo (ou variável) de um
único valor de saída. Ela pode ser vista como uma
algoritmo é a parte ou partes do algoritmo em que o
expressão que é avaliada para um único valor, sua
módulo (ou variável) pode ser referenciado. Quando
saída, assim como uma função em Matemática.
iniciamos o estudo de modularização é natural nos
Procedimento: um procedimento é um tipo de perguntarmos qual é o escopo de um dado módulo e
módulo usado para várias tarefas, não produzindo das constantes ou variáveis nele presentes. Em
valores de saída. particular, o escopo de um módulo determina quais são
os demais módulos do algoritmo que podem chamar-
lhe e quais ele pode chamar.
51
Os módulos de um algoritmo são organizados por 12.3.2. Comando Aleatório
níveis. No primeiro nível, temos apenas o algoritmo
Muitas vezes a digitação de dados para o teste de
principal. Aqueles módulos que devem ser acessados
um programa torna-se uma tarefa entediante. Com o
pelo algoritmo principal devem ser escritos dentro dele
uso do comando aleatório do VisuAlg, sempre que um
e, nesta condição, são ditos pertencerem ao segundo
comando leia for encontrado, a digitação de valores
nível. Os módulos escritos dentro de módulos de
numéricos e/ou caracteres é substituída por uma
segundo nível são ditos módulos de terceiro nível. E
geração aleatória. Este comando não afeta a leitura de
assim sucessivamente.
variáveis lógicas: com certeza, uma coisa pouco usual
A regra para determinar o escopo de um módulo é em programação.
bastante simples: um módulo X escrito dentro de um
Este comando tem as seguintes sintaxes:
módulo A qualquer pode ser acessado apenas pelo
módulo A ou por qualquer módulo escrito dentro de A aleatorio [on]
ou descendente (direto ou não) de algum módulo
Ativa a geração de valores aleatórios que
dentro de A.
substituem a digitação de dados. A palavra-chave on é
Como exemplo, considere um algoritmo no qual o opcional. A faixa padrão de valores gerados é de 0 a 100
módulo principal contém outros quatro módulos, S1, inclusive. Para a geração de dados do tipo caractere,
S2, F1, F2. Por sua vez, S1 contém mais dois módulos, não há uma faixa préestabelecida: os dados gerados
S3 e F3; e F2 contém os módulos S4 e F4. De acordo serão sempre strings de 5 letras maiúsculas
com as regras de escopo descritas anteriormente, o
aleatorio [, ]
módulo F3 só pode ser chamado por S1 e S3, enquanto
o módulo F1 pode ser acessado por todos os módulos. Ativa a geração de dados numéricos aleatórios
estabelecendo uma faixa de valores mínimos e
12.3. Alguns comandos no VisuAlg máximos. Se apenas < valor1> for fornecido, a faixa
será de 0 a inclusive; caso contrário, a faixa será de a
Nas próximas duas aulas, o foco será no inclusive. Se for menor que, o VisuAlg os trocará para
desenvolvimento de dois projetos específicos e que a faixa fique correta. Importante: e devem ser
práticos, logo o conteúdo conceitual do curso, se constantes numéricas, e não expressões.
completa nesta aula.
aleatorio off
Para referendar esta aula, e lhe auxiliar com os
projetos a serem desenvolvidos nas duas aulas Desativa a geração de valores aleatórios. A palavra-
seguintes, vamos dar exemplos de alguns comandos chave off é obrigatória.
específicos no VisuAlg, para que você possa
12.3.3. Comando Arquivo
incrementar seus algoritmos:
Muitas vezes é necessário repetir os testes de um
12.3.1. Parâmetros Interrompa programa com uma série igual de dados. Para casos
Causa uma saída imediata do laço. Embora esta como este, o VisuAlg permite o armazenamento de
técnica esteja de certa forma em desacordo com os dados em um arquivo-texto, obtendo deles os dados ao
princípios da programação estruturada, o comando executar os comandos leia.
interrompa foi incluído no VisuAlg por ser encontrado Esta característica funciona da seguinte maneira:
na literatura de introdução à programação e mesmo
em linguagens como o Object Pascal (Delphi/Kylix), • Se não existir o arquivo com nome
Clipper, VB, etc. Seu uso é exemplificado a seguir: especificado, o VisuAlg fará uma leitura de
dados através da digitação, armazenando
os dados lidos neste arquivo, na ordem em
que forem fornecidos.
52
• Somente um comando arquivo pode ser 0 são corrigidos para 0, e maiores que 10000 para
empregado em cada pseudocódigo, e ele 10000.
deverá estar na seção de declarações
timer off
(dependendo do "sucesso" desta
característica, em futuras versões ela Desativa o timer.
poderá ser melhorada...).
Ao longo do pseudocódigo, pode haver vários
• Caso não seja fornecido um caminho, o comandos timer. Todos eles devem estar na seção de
VisuAlg irá procurar este arquivo na pasta comandos. Uma vez ativado, o atraso na execução dos
de trabalho corrente (geralmente, é a comandos será mantido até se chegar ao final do
pasta onde o programa VISUALG.EXE está). pseudocódigo ou até ser encontrado um comando
Este comando não prevê uma extensão timer off.
padrão; portanto, a especificação do nome
do arquivo deve ser completa, inclusive 12.4. Comandos de Depuração
com sua extensão (por exemplo, .txt, .dat,
etc.). Nenhum ambiente de desenvolvimento está
completo se não houver a possibilidade de se inserir
Exemplo: pontos de interrupção (breakpoints) no pseudocódigo
para fins de depuração. VisuAlg implementa dois
comandos que auxiliam a depuração ou análise de um
pseudocódigo: o comando pausa e o comando debug.
Pausa
53
VisuAlg, ou seja, na área à direita da parte inferior da numero digitado é par ou ímpar. No VisuAlg,
tela. Esta característica pode ser útil quando houver insira a variável, assim como determine que o
uma grande quantidade de dados de entrada, e se usuário insira um número inteiro.
deseja apenas analisar a saída produzida. Convém 2. Faça com que o programa armazene o número
utilizá-la também quando os dados de entrada provêm digitado e insira o comando responsável por
de um arquivo já conhecido. realizar o teste lógico.
3. Insira o comando responsável por retornar na
12.4.4. Comando Cronômetro tela o número caso ele seja par.
4. Insira o comando responsável por retornar na
Sua sintaxe é: tela o número caso ele seja ímpar.
cronometro on | off 5. Teste o algoritmo desenvolvido.
Este comando ativa (cronometro on) ou desativa
(cronometro off) o cronômetro interno do VisuAlg. 12.6. Exercício de Fixação
Quando o comando cronometro on é encontrado, o 1. Desenvolva um algoritmo que leia um número
VisuAlg imprime na saída-padrão a informação e retorne o seu quadrado e o seu cubo.
"Cronômetro iniciado.", e começa a contar o tempo em 2. Desenvolva um algoritmo em para ler o ano de
milissegundos. Quando o comando cronometro off é nascimento de uma pessoa, calcular e mostrar
encontrado, o VisuAlg imprime na saída-padrão a sua idade e, também, verificar e mostrar se ela
informação "Cronômetro terminado. Tempo já tem idade para votar (16 anos ou mais) e
decorrido: xx segundo(s) e xx ms". Este comando é útil para conseguir a Carteira de Habilitação (18
na análise de desempenho de algoritmos (ordenação, anos ou mais).
busca, etc.). 3. Desenvolva um algoritmo para criar um vetor
real de 20 posições: as 10 primeiras são
12.4.5. Comando LimpaTela informados pelo usuário, e as 10 seguintes são
os mesmos números em ordem inversa.
Sua sintaxe é:
4. Desenvolva um algoritmo que leia 5 valores
limpatela reais e armazenar em um vetor. Modifique o
Este comando simplesmente limpa a tela DOS do vetor de modo que os valores das posições
impares sejam aumentados em 5%, e os das
Visualg (a simulação da tela do computador). Ele não
posições pares sejam aumentados em 2%.
afeta a "tela" que existe na parte inferior direita da
Imprima depois o vetor resultante.
janela principal do Visualg.
54
Aula
Lógica de Programação V.2
Pratica 1. 13
13. Aula 13 – Praticando • Experiência anterior(S-sim/N-nao)
Calcule:
Nas ultimas duas aulas do curso de Lógica de
programação, nosso objetivo será praticar todo o • Quantidade de candidatos?
conteúdo visto no curso.
• Quantidade de candidatas?
Separamos três exercícios práticos para que você
• Média de idade dos homens com experiência?
possa realizar. Um deles será acompanhado com o
aluno, passo a passo, conforme ocorreu em todas as • Percentagem dos homens com mais de 45
aulas anteriores. anos?
Os outros dois exercícios, vão se localizar na área • Quantidade de mulheres com idade inferior a
de fixação, eles terão apenas o enunciado e o aluno 35 anos e com experiência?
deve desenvolver todo o projeto usando o
conhecimento adquirido nas aulas interativas e • Menor idade entre as mulheres que já tem
utilizando da sua apostila. experiência no serviço?
Nas aulas interativas, demos algumas dicas sobre A resolução deste algoritmo, seria a seguinte:
alguns dos códigos que utilizamos nos exercícios, com
o objetivo de dar um norte ao aluno.
Exemplo 1:
• Idade
• Sexo
55
13.1. Exercício de Conteúdo
1. Nosso objetivo é criar um algoritmo que acerte
o número que o usuário está pensando. No
VisuAlg Insira as variáveis de tipo inteiro.
2. Insira a variável de tipo caractere
3. Determine o primeiro bloco de comandos do
algoritmo, dando valores específicos as
variáveis.
4. Determine o valor que a variável palpite deve
receber neste momento do algoritmo.
5. Insira o comando responsável por questionar o
usuário referente ao seu número.
6. Faça com que o VisuAlg armazene o valor
digitado, e então aplique um comando SE, no
caso de o programa ter acertado o número.
7. Insira um comando senão, para o caso de o
usuário ter digitado “maior”.
8. Insira um comando senão, para o caso de o
usuário ter digitado “menor”.
Exemplo 2: 9. Insira um comando senão, para o caso de o
usuário ter digitado outra palavra qualquer.
Ler uma matriz de 3x3 e dizer a quantidade de
10. Determine uma mensagem que solicite ao
valores lidos, a quantidade números pares lidos e a
usuário que insira uma das palavras pré-
quantidade de números impares lidos:
determinadas
Resolução do algoritmo: 11. Complete os comandos SEs usados
anteriormente além de aplica o comando para
incrementar a variável tentativas.
12. Conclua mais um laço SE, e então insira o
comando necessário para encerrar o programa
no caso de o programa acertar o número, ou
ultrapassar o número de 10 tentativas.
13. Aplique mais um comando SE, no caso de o
programa ultrapassar 10 tentativas
14. Determine a mensagem que o algoritmo deve
retornar, ao ultrapassar mais de 10 tentativas.
15. Conclua mostrando na tela, o número de
tentativas.
16. Teste o algoritmo desenvolvido.
56
Aula
Lógica de Programação V.2
Pratica 2. 14
14. Aula 14 – Praticando
Nesta aula, damos continuidade ao
desenvolvimento de alguns algoritmos propostos, com
o objetivo de colocarmos em pratica todo o conteúdo
visto durante o curso.
57
14.1. Exercício de Conteúdo
1. Nosso objetivo é desenvolver um algoritmo
que calculo a hora final que o usuário levou
para finalizar um jogo de vide-game qualquer.
No VisuAlg insira as variáveis necessárias.
2. Insira a primeira parte dos comandos
solicitando ao usuário que determine a hora e
o minuto do início do jogo.
3. Insira o comando para o sistema determinar
que o usuário não posso inserir um número
superior a 23 para a hora inicial
4. Insira o início do próximo comando.
5. Conclua o comando que determina que o
usuário não possa inserir um número superior
a 59 para os minutos finais.
6. Insira o comando para o sistema determinar
que o usuário não posso inserir um número
superior a 23 para a hora final
7. Insira o comando para o sistema determinar
que o usuário não posso inserir um número
superior a 59 para os minutos finais.
8. Insira o comando que faça o primeiro teste
lógico.
9. Insira o comando responsável receber os dados
10. Insira o segundo teste lógico do algoritmo
assim como o cálculo necessário.
11. Insira o terceiro teste lógico do algoritmo assim
como o cálculo necessário.
12. Insira o quarto teste lógico do algoritmo assim
como o cálculo necessário.
13. Insira o quinto teste lógico do algoritmo assim
como o cálculo necessário.
58
14. Insira o comando SE que determine os
resultados que podem ser apresentados no
programa
15. Determine a mensagem que o sistema deve
retornar na tela, com o cálculo realizado.
16. Finalize os laços.
17. Teste o algoritmo.
59