Vous êtes sur la page 1sur 74

Apostila:

Algoritmos e Lgica de
Programao
Baseado no Scilab

Ivre Marjorie R. Machado


(ivre.marjorie@gmail.com)

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 1

Sumrio
Conceitos Iniciais .............................................................................................................................................. 3
Lgica ............................................................................................................................................................... 12
Scilab................................................................................................................................................................ 14
Estrutura Sequencial........................................................................................................................................ 18
Estrutura Condicional ...................................................................................................................................... 25
Estrutura de Repetio .................................................................................................................................... 37
Arranjo: Vetor .................................................................................................................................................. 48
Arranjo: Matriz ................................................................................................................................................ 63

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 2

Conceitos Iniciais

As etapas para o desenvolvimento de um programa so:

1- Anlise

Nesta etapa estuda-se o enunciado do problema para definir a


entrada de dados, o processamento e a sada de dados

2- Algoritmo

Ferramentas do tipo descrio narrativa, fluxograma ou


pseudocdigo so utilizadas para descrever o problema com suas
solues

3- Codificao

O algoritmo ento transformado em cdigos da linguagem de


programao escolhida para se trabalhar

O que Algoritmo:

uma sequncia de passos que visa atingir um objetivo bem definido;


descrio de uma sequncia de passos que deve ser seguida para a realizao de uma tarefa;
uma sequncia finita de instrues ou operaes cuja execuo, em tempo finito, resolve um
problema computacional, qualquer que seja sua instncia.

Exemplos de Algoritmos:
Algoritmo 1 - Somar trs nmeros
Passo 1 Receber trs nmeros
Passo 2 Somar os trs nmeros
Passo 3 Mostrar o resultado obtido

Algoritmo 2 - Fazer um sanduche


Passo 1 Pegar o po
Passo 2 Cortar o po no meio
Passo 3 Pegar a maionese
Passo 4 Passar a maionese no po
Passo 5 Pegar e cortar alface e tomate
Passo 6 Colocar alface e tomate no po
Passo 7 Pegar o hambrguer
Passo 8 Fritar o hambrguer
Passo 9 Colocar o hambrguer no po

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 3

Algoritmo 3 Ir para a Escola


Passo 1 Acordar cedo
Passo 2 Ir ao banheiro
Passo 3 Abrir o armrio e escolher uma roupa
Passo 4 Se o tempo estiver quente, pegar uma
camiseta e uma cala jeans; caso contrrio,

pegar um agasalho e uma cala jeans


Passo 5 Vestir a roupa escolhida
Passo 6 Tomar caf
Passo 7 Pegar uma conduo
Passo 8 Descer prximo escola

Algoritmo 4 - Sacar dinheiro no Banco 24 horas


Passo 1 Ir at um Banco 24 horas
Passo 2 Colocar o carto
Passo 3 Digitar a senha
Passo 4 Retirar o carto
Passo 5 - Escolher a opo de saque
Passo 6 Solicitar a quantia desejada

Passo 7 Se o saldo for maior ou igual a quantia


desejada, sacar; caso contrrio, mostrar mensagem
de impossibilidade de saque
Passo 8 Sair do Banco 24 horas

Passos para a construo de Algoritmos:


a) Compreender completamente o problema a ser resolvido;
b) Definir os dados de entrada, ou seja, quais dados sero fornecidos (geralmente, pelo usurio);
c) Definir o processamento, ou seja, quais clculos sero efetuados e quais restries para esses
clculos;
d) Definir os dados de sada (resultados gerados pelo processamento)
e) Construir o algoritmo utilizando um dos tipos descritos a seguir
f) Testar o algoritmo realizando simulaes (chinesinho)

Exemplo:

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 4

Tipos de Algoritmos:
Os tipos mais utilizados so:

Descrio Narrativa
Fluxograma
Pseudocdigo (ou Portugol)

1- Descrio Narrativa:

Consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem natural


(por exemplo, portugus), os passos a serem seguidos para sua resoluo
Vantagem: no necessrio aprender nenhum conceito novo, pois uma linguagem
natural, neste ponto, j bem conhecida
Desvantagem: a lngua natural abre espao para vrias interpretaes, o que
posteriormente dificultar a transcrio desse algoritmo para programa

2- Fluxograma:

Consiste em analisar o enunciado do problema e escrever, utilizando smbolos grficos


predefinidos, os passos a serem seguidos para sua resoluo
Vantagem: o entendimento de elementos grficos mais simples que o
entendimento de textos
Desvantagem: necessrios aprender a simbologia dos fluxogramas e , alm disso,
o algoritmo resultante no apresenta muitos detalhes, dificultando sua transcrio
para um programa

Fluxograma mnimo: no executa absolutamente nada, mas possui um incio e um fim.

incio

fim

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 5

Smbolos usados para construir fluxogramas:


Simbolo

Descrio
Smbolo utilizado para indicar o incio e o fim do algoritmo
Permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar
os smbolos ou blocos existentes.
Smbolo utilizado para indicar clculos e atribuies de valores (processamento)
Smbolo utilizado para representar a entrada de dados
Smbolo utilizado para representar a sada de dados
Smbolo utilizado para indicar que deve ser tomada uma deciso, apontando a
possibilidade de desvios

3- Pseudocdigo (Portugol):

Consiste em analisar o enunciado do problema e escrever por meio de regras predefinidas, os


passos a serem seguidos para sua resoluo
Vantagem: a passagem do algoritmo para qualquer linguagem de programao
quase imediata, bastando conhecer as palavras reservadas dessa linguagem que sero
utilizadas
Desvantagem: necessrio aprender as regras do pseudocdigo, que sero
apresentadas nas prximas sees

Exemplo1:
Faa um algoritmo para mostrar o resultado da multiplicao de dois nmeros

Pensando...
Entrada (o que o usurio dever digitar?): nmero 1 e nmero 2
Processamento (qual clculo dever ser feito?): a multiplicao, ou seja, nmero 1 * nmero 2
Sada (o que o usurio espera como resultado?): o resultado da multiplicao dos dois nmeros

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 6

Resoluo...
Descrio narrativa:
Passo 1 - Receber os dois nmeros que sero multiplicados
Passo 2 - Multiplicar os nmeros
Passo 3 - Mostrar o resultado obtido na multiplicao
Fluxograma:

Incio

Pseudocdigo:

n1, n2

result = n1 * n2

result

Fim

ALGORITMO
DECLARE n1, n2, result NUMRICO
ESCREVA Digite um nmero
LEIA n1
ESCREVA Digite outro nmero
LEIA n2
result n1 * n2
ESCREVA Multiplicao = , result
FIM_ALGORITMO

Exemplo2:
Faa um algoritmo para mostrar o resultado da diviso de dois nmeros

Pensando...
Entrada (o que o usurio dever digitar?): nmero 1 e nmero 2
Processamento (qual clculo dever ser feito?): a diviso, ou seja, nmero 1/ nmero 2
Sada (o que o usurio espera como resultado?): o resultado da diviso dos dois nmeros
Resoluo...
Descrio narrativa:
Passo 1 - Receber os dois nmeros que sero divididos
Passo 2 - Se o segundo nmero for igual a zero, no poder ser feita a diviso, pois no
existe diviso por zero; caso contrrio, dividir os nmeros e mostrar o resultado da diviso

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 7

Fluxograma:
Incio

N1, N2

NO

N2 == 0

SIM

D = N1/N2

Impossvel
dividir

Fim

Pseudocdigo:
ALGORITMO
DECLARE N1, N2, D NUMRICO
ESCREVA Digite dois nmeros
LEIA N1, N2
SE N2 == 0
ENTO ESCREVA Impossvel dividir
SENO
INCIO
D N1 /N2
ESCREVA Diviso = , D
FIM
FIM_ALGORITMO

O que Varivel?
Observe as duas crianas que esto conversando e desejam realizar uma conta.
Vamos
somar dois
nmeros?

Vamos sim!

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 8

O segundo
nmero 3

Guardei
tambm em
outra
posio

Qual o
resultado da
soma?

O resultado
8

Voc sabe de onde o menino resgatou o resultado?

Ele resgata os valores armazenados na memria,


realiza a conta e responde dizendo que o resultado 8.

Um programa recebe dados, que precisam ser armazenados no computador para serem
utilizados no processamento;
Todos os computadores trabalham com sistema numrico binrio (0 e 1);
Cada dgito binrio (0 e 1) ocupa pores de memria chamadas bytes (8 bits), e cada byte
identificado e acessado.

Desta maneira, uma varivel representa uma posio de memria, possui nome e tipo e seu
contedo pode variar ao longo do tempo, durante a execuo do programa. Embora, uma varivel
possa assumir diferentes valores, ela s pode armazenar um valor a cada instante

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 9

Memria

num1

Tipos de dados:
Os tipos mais utilizados so:

Numricos
Lgicos
Literais ou caracteres

1- Numrico:

Dividem-se em: inteiros e reais


Os nmeros inteiros podem ser positivos ou negativos e no possuem parte fracionria

Exemplos:
-23
98
0
-357
237
2

Os nmeros reais podem ser positivos ou negativos e possuem parte fracionria


Exemplos:
-23.0
98.54
0.00
-357.01
237.3
2.10

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 10

2- Lgicos

So tambm chamados dados booleanos (por causa da lgebra de Boole);


Podem assumir os valores verdadeiro ou falso.

3- Caracteres:

Ou Literais, so dados formados por um nico caractere ou por uma cadeia de caracteres;
Podem ser letras maisculas, minsculas, nmeros (no podem ser usados para clculos) e
os caracteres especiais (&, #, @, ?, +).

Exemplos:

aluno

Ivre

Formao de Identificadores:

Identificadores so os nomes das variveis, dos programas, das constantes, das rotinas, das
unidades etc;
Os identificadores possuem regras bsicas para sua formao.

Regras para formao de identificadores:


1. Os caracteres que podem ser utilizados so: os nmeros, as letras (maisculas e minsculas)
e o caractere sublinhado (underline);
2. O primeiro caractere deve ser sempre uma letra ou caractere sublinhado (underline);
3. No so permitidos espaos em branco e caracteres especiais (@, $, %, &, !, ?);
4. No podem ser usadas palavras reservadas nos identificadores, ou seja, palavras que
pertenam a uma linguagem de programao.
Identificadores vlidos:
Salario
email
num1
salarioatual ou
_soma
xyz

salrio_atual

Identificadores invlidos:
Salrio
@email
1num
salario atual
input

Exerccio
1- Faa um algoritmo para calcular a mdia aritmtica entre trs notas de um aluno. Faa o
algoritmo usando descrio narrativa, fluxograma e pseudocdigo.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 11

Lgica
Noes de Lgica
O que lgica?
Uso corriqueiro da palavra lgica normalmente relacionado coerncia e racionalidade
Pode-se relacionar a lgica com a correo do pensamento, pois uma de suas preocupaes
determinar quais operaes so vlidas e quais no so, fazendo anlises das formas e leis
do pensamento
O que lgica?
Arte de bem pensar;
Cincia das formas do pensamento;
Correo do raciocnio;
Ordem da razo;
A nossa razo pode funcionar desordenadamente, por isso, a lgica estuda e ensina a colocar
ordem no pensamento.
Exemplos:
a) Todo mamfero um animal.
Todo cavalo um mamfero.
Portanto, todo cavalo um animal.
b) A gaveta est fechada.
A caneta est dentro da gaveta.
Precisamos primeiro abrir a gaveta para depois pegar a caneta.
c) Anacleto mais velho que Felisberto.
Felisberto mais velho que Marivaldo.
Portanto, Anacleto mais velho que Marivaldo.
E a lgica de programao?
O principal objetivo do estudo da Lgica de Programao a construo de algoritmos
coerentes e vlidos
Um algoritmo uma sequncia de passos que visam atingir um objetivo bem definido
Na medida em que precisamos especificar uma sequncia de passos, necessrio utilizar
ordem, ou seja pensar com ordem, portanto precisamos utilizar lgica.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 12

Exerccios
1- Trs senhoras dona Branca, dona Rosa e dona violeta passeavam pelo parque quando dona
Rosa disse:
- No curioso que estejamos vestidas de cores branca, rosa e violeta, embora nenhuma de ns
esteja usando um vestido de cor igual ao prprio nome?
- Uma simples coincidncia respondeu a senhora com o vestido violeta.
Qual a cor do vestido de cada senhora?
2- Elabore um algoritmo que mova 3 discos de uma Torre de Hani, que consiste em trs hastes (a
- b - c), uma das quais serve de suporte para 3 discos de tamanhos diferentes (1 - 2 - 3), os menores
sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja
colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste.

1
2
3

3- Crie uma sequncia lgica para tomar banho.


4- Faa um algoritmo para somar 2 nmeros quaisquer e multiplicar o resultado pelo primeiro
nmero.
5- Faa o teste de QI do Einsten no site (http://rachacuca.com.br/teste-de-einstein/)

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 13

Scilab
O Scilab um software cientfico para computao numrica, semelhante ao Matlab ,pois fornece
um poderoso ambiente computacional para aplicaes cientficas. Foi desenvolvido
desde 1990 pelos pesquisadores do INRIA (Institut National de Recherche en Informatique et en
Automatique) e do ENPC (cole Nationale des Ponts et Chausses), e agora mantido e
desenvolvido pelo Scilab Enterprises desde Julho de 2012.
distribudo gratuitamente via Internet desde 1994 e atualmente, usado em diversos ambientes
industriais e educacionais pelo mundo. Pode ser executado em ambiente Windows, Macintosh e
Linux. Pode ser encontrado para download em (www.scilab.org).

Conhecendo a ferramenta
A tela inicial do Scilab 5.4.1 a apresentada na Figura 1:

Figura 1 - Tela inicial Scilab

Observe que nessa tela temos algumas partes interessantes e que vamos us-las:

Uma parte que usaremos muito o que chamamos de Console, que a parte central
apresentada na figura acima. No console, podemos executar os comandos, alm de testar os
programas implementados. Lembre-se o console a tela que ser apresentada ao nosso usurio.

Ao lado direito, temos o Navegador de Variveis que apresentar todas as variveis criadas no
programa, ou seja, os espaos reservados na memria para armazenar valores. Para verificar o

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 14

valor atual armazenado em determinada varivel, basta clicar duas vezes em cima do nome da
varivel desejada.

Ainda do lado direito, temos o Histrico de Comandos, que apresentar todos os comandos
executados no console, juntamente com a data da execuo.

Na parte superior, temos o que chamamos de barra de ferramenta. nessa barra de ferramentas
que encontramos o Boto para o SciNotes
. O SciNotes o local no qual iremos digitar
nossos programas, alm de executar e salvar. Usaremos muito o SciNotes, pois no faz sentido
fazermos um programa e no salvar, para usarmos em outro momento.

Escrevendo o primeiro Programa


A seguir apresentado um passo a passo para criar o primeiro programa.
Passo 1 Abra o Scilab, e em seguida o SciNotes (Figura 2).

Figura 2 - SciNotes

Passo 2 Escreva no SciNotes o programa abaixo:


clear;
clc;
mprintf("Entre com dois numeros \n");
num1 = input("Primeiro numero: ");
num2 = input("Segundo numero: ");
multiplica = num1 * num2;
mprintf("O resultado da multiplicao %d",multiplica);
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 15

Observe que ao digitar o programa acima no SciNotes algumas palavras ficaro de cores diferentes.
Isso normal, e facilita a programao, j que com o tempo, acostumamos com essas cores. Assim,
o que funo fica de determinada cor, o texto que ser mostrado na tela, fica de outra cor, etc.
Passo 3 O programa acima, j um programa completo que solicita ao usurio dois nmeros e
mostra como resultado, a multiplicao entre os dois nmeros. Mas para execut-lo e testar ser
necessrio salvar e mandar executar. Portanto, voc poder usar o Boto
ferramentas do SciNotes, ou usar o atalho que a tecla F5 do teclado.

na barra de

Passo 4 Observe que abrir a tela abaixo (Figura 3) para voc escolher um nome para o seu
programa, alm de local onde ir salvar. Fique atento neste momento, pois muito importante,
saber onde voc salvou o seu programa para recuper-lo posteriormente.

Figura 3 Tela para Salvar o Programa

Veja que irei salvar na rea de trabalho e o nome dado ser Exemplo1 (Figura 4):

Figura 4 Tela para Salvar o Programa (Local e Nome do arquivo)

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 16

Os programas em Scilab sero sempre do tipo SCE, portanto, no precisa preocupar em mudar o
tipo. Ento aps colocar o nome do programa e escolher o local para salvar, aperte o boto
SALVAR.
Passo 5 Depois de salvar o programa, volte na tela do Console para verificar a execuo do
programa como mostrado na Figura 5.

Figura 5 Execuo do programa na tela do Console

Passo 6 Para testar o programa, basta que voc leia atentamente o que aparece no Console e digite
o que for solicitado. Para o nosso programa, vamos digitar um primeiro valor e apertar a tecla
ENTER, em seguida, digitar um segundo valor e apertar a tecla ENTER. E com isso, aparecer o
valor do resultado da multiplicao, como apresentado na Figura 6.

Figura 6 Resultado da Execuo do programa na tela do Console

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 17

Estrutura Sequencial
1- Estrutura Sequencial em Pseudocdigo
ALGORITMO
DECLARE
Bloco de Comandos
FIM_ALGORITMO
A declarao de variveis em pseudocdigo feita atravs do comando DECLARE. Alm do
declare necessrio identificar o tipo de dados que ser armazenado no varivel no momento em
que ela ser declarada, ou seja, criada.
Observe o exemplo abaixo:

ALGORITMO
DECLARE
X NUMERICO
Y, Z LITERAL
Teste LOGICO
Bloco de Comandos
FIM_ALGORITMO
1.1- Comando de atribuio em Pseudocdigo:
Para atribuir valores para uma determinada varivel, o operador que dever ser utilizado o smbolo
, como apresentado abaixo:

Exemplos:
X4
XX+2
Teste falso

1.2- Entrada de dados em Pseudocdigo:


Utilizado para receber dados digitados pelo usurio. Os dados recebidos so armazenados em
variveis. Esse comando representado pela palavra LEIA.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 18

Exemplo:
LEIA X

Um valor digitado pelo usurio ser


armazenado na varivel X

1.3- Sada de dados em Pseudocdigo:


Utilizado para mostrar dados na tela ou na impressora. Esse comando representado pela palavra
ESCREVA e os dados podem ser contedos de variveis ou mensagens.

Exemplo:
ESCREVA X

Mostra na tela o valor armazenado na


varivel X

Exemplo: Pseudocdigo para calcular a rea de um tringulo


ALGORITMO
DECLARE base, altura, area NUMRICO
ESCREVA "Digite o valor da base do tringulo: "
LEIA base
ESCREVA "Digite o valor da altura do tringulo: "
LEIA altura
area <- (base * altura)/2
ESCREVA "A area do tringulo e: ", area
FIM_ALGORITMO

Em fluxograma:

Incio

base,
altura

area = (base * altura) / 2

area

Fim

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 19

Exerccios
1- Faa um algoritmo (pseudocdigo e fluxograma) para somar dois nmeros e multiplicar o
resultado pelo primeiro nmero (agora usando os comandos apresentados).
2- Faa um algoritmo (pseudocdigo e fluxograma) receber valor de duas notas de provas, somar
os dois valores e mostrar na tela.

2- Estrutura Sequencial no Scilab

Observe como ser a estrutura usando o Scilab:

clear;
clc;
bloco de comandos;

Os comandos clear; e clc; devem ser sempre usados para limpar a memria do sistema e para
limpar a tela do console do Scilab;
Todos os comandos devem, obrigatoriamente, ser escritos com letras minsculas;
Os comandos devero ser finalizados com ponto e vrgula (;);
A linguagem do Scilab sensvel a letras maisculas e minsculas, ou seja, considera que
letras maisculas so diferentes de minsculas (por exemplo, a diferente de A);
No Scilab no existe necessidade de declarao de varivel como em Pseudocdigo, basta dar
um nome para a varivel e us-la que o sistema j ir reconhecer a necessidade de reservar um
espao na memria.

2.1- Comando de atribuio em Scilab:


Para atribuir valores para uma determinada varivel, o operador que dever ser utilizado = (sinal de
igualdade), como apresentado abaixo:

Exemplos:
x = 4;
x = x + 2;
letra = 'a';

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 20

2.2- Entrada de dados em Scilab:


A funo input interrompe a execuo do programa para que o usurio possa digitar o valor pelo
teclado. A leitura finalizada quando o usurio pressiona a tecla <ENTER>. Ao final da leitura, a
funo input () retorna o valor lido.

<varivel> = input (mensagem);

No exemplo, o valor retornado pela funo input armazenado em uma varivel cujo nome
num1. Observe que possvel mostrar na tela uma mensagem indicando a informao (entrada)
esperada.

Exemplos:
num1 = input();
num1 = input("Primeiro numero: ");
2.3- Sada de dados em Scilab:
O Scilab prov diversas funes para escrever valores na tela. Uma delas a funo disp(). E a
outra que vamos usar mprintf().
A funo disp deve ser usada como abaixo:

disp(mensagem);
Ou
disp(varivel)
Alm disso, a funo disp pode concatenar strings diferentes (mensagem/texto) com o operador +
(sinal de soma):

disp(string1 + string2);
disp tambm pode concatenar texto com o valor de uma varivel atravs do operador + (sinal de
soma). Mas importante ressaltar que apesar de disp exibir valores de variveis numricas, uma
vez que uma string (texto) for fornecida, todos os parmetros devero ser do tipo string, por isso,
necessrio converter o valor da varivel usando a funo string():
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 21

disp(mensagem + string(varivel) );
No exemplo, as mensagens do tipo texto, aparecem entre aspas duplas, e o que no vem entre
aspas, nome de varivel. Portanto, o que est entre aspas duplas aparece no Console da mesma
forma que estiver escrita. J quando varivel o que ser mostrado na tela o valor armazenado na
varivel.

Exemplos:
disp("idade =");
disp(soma);
disp("idade ="+string(soma));
A funo mprintf deve ser usada como abaixo:

mprintf(mensagem);
Ou
mprintf(varivel)
Alm disso, a funo mprintf pode concatenar mensagem (texto) com o valor da varivel. Essa
funo permite que o valor da varivel aparea em qualquer parte do texto, para isso, devemos usar
o smbolo de % e o tipo de formatao da varivel, seja ela, float, decimal, ou outra. Alm disso, a
mensagem (texto) dever vir entre aspas duplas e separada da varivel por vrgula.

mprintf(mensagem, varivel);

Observe o exemplo:

mprintf("O resultado da multiplicao de %d e %d %d:",num1,num2,multiplica);


Para o exemplo acima, foram usados trs %d, isso significa, que trs valores de variveis sero
mostrados na tela, justamente na sequncia que aparece depois da mensagem. Observe que cada
varivel depois da mensagem deve vir separa por vrgula.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 22

Tipos de Formatos:
Especificador
%d
%f
%e
%g
%c
%s

Sada
Inteiro
Real
Exponencial
Menor formato possvel
Caractere
String

Expresses aritmticas:
Operao

Operador

Exemplo

Adio

a+b

Subtrao

ab

Multiplicao

a*b

Diviso

a/b

Potenciao

a^b

Funes aritmticas:
Funes aritmticas, so implementadas pelo Scilab e podem ser utilizadas pelos usurios no
Console ou em programas. Alguns exemplos de funes so apresentadas:
modulo( <dividendo>, <divisor> ) : Calcula o resto da diviso inteira
cos( <valor> ) : Calcula o coseno
sen( <valor> ) : Calcula o seno
tan( <valor> ) : Calcula a tangente
cotg( <valor> ) : Calcula a cotangente
sqrt( <valor> ) : Calcula a raiz quadrada
log( <valor> ) : Calcula logaritmo neperiano

2.4- Comentrios no Scilab


Comentrios so textos que podem ser inseridos em programa com o objetivo de document-lo. Os
comentrios no so analisados pelo compilador. No Scilab a regio de comentrios aberta com
os smbolos // e encerrada automaticamente ao final da linha

multiplica = num1 * num2; //multiplica os valores

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 23

//Programador: Ivre
//Data: 13/02/2014
clear;
clc;
mprintf("Entre com dois numeros \n");
Exerccios
1- O programa abaixo calcula a hipotenusa de um tringulo retngulo, dados os seus catetos, pelo
Teorema de Pitgoras:

//Programador:<Nome>
//Data: <data>
//O programa calcula a hipotenusa de um triangulo retngulo a partir dos
catetos.
b = input("Digite o cateto: ");
c = input("Digite o outro cateto: ");
a = sqrt ((b^2) + (c^2)) ;
mprintf("\nO valor da hipotenusa desse triangulo e %f",a);
Digite e compile o cdigo do exemplo acima. Observe o uso dos operadores e funes aritmticas
usadas no exemplo.
2- Faa um programa para ler trs nmeros do teclado. A sada na tela deve ser o dobro do primeiro,
o triplo do segundo e o qudruplo do terceiro nmero.
3- Faa um programa para somar dois nmeros e multiplicar o resultado pelo primeiro nmero.
Dever ser impresso na tela o resultado final das operaes.
4- Faa um programa que receba trs notas, calcule a mdia aritmtica das notas e mostre na tela o
resultado.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 24

Estrutura Condicional
O mundo no perfeito para usarmos apenas a estrutura sequencial, necessrio colocarmos
condies em nossos algoritmos e programas. A estrutura condicional permite que condies
sejam testadas e se forem verdadeiras determinados comandos sero executados e se no forem
verdadeiras, outros comandos sero executados ou no.
1- Estrutura Condicional em Fluxograma
Em fluxograma, representamos uma estrutura condicional com o smbolo de tomada de deciso. A
estrutura bsica para estrutura condicional :

Sim / Verdade/ True

Tomada de
deciso

Condio

...

No/ Falso/ False

....

Os fluxos de dados que saem do smbolo de tomada de deciso devem ter a indicao de Sim ou
Verdade ou True para o fluxo no qual dever ser seguido caso a condio seja verdadeira ou
No ou Falso ou False para o fluxo no qual dever ser seguido caso a condio seja falsa.
Observe que em vez de sim, tambm possvel indicar com a palavra verdadeira ou verdade ou
em ingls true. Observe que em vez de no, tambm possvel indicar com a palavra falso ou
verdade ou em ingls false.
Caso existam outras condies na estrutura que ser representada com fluxograma, ser necessrio
indicar com outros smbolos de tomada de deciso.
2- Estrutura Condicional em Pseudocdigo
2.1- Estrutura Condicional Simples

SE (condio) ENTO
Comando
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 25

O comando s ser executado se a condio for verdadeira. Uma condio uma comparao que
possui dois valores possveis, verdadeiro ou falso.
Caso existam mais comandos (comando1, comando2 e comando3) que devero ser executados
caso a condio seja verdadeira, necessrio indicar com INCIO e FIM, como mostrado a seguir:

SE (condio) ENTO
INCIO
comando1
comando2
comando3
FIM
2.2- Estrutura Condicional Composta

SE (condio) ENTO
Comando1
SENO
Comando2
Se a condio for verdadeira, ser executado o comando1, caso contrrio, se a condio for falsa,
ser executado o comando2.
Caso existam mais condies que devero ser testadas antes do Seno, dever se adicionadas
atravs da unio dos comandos Seno e Se, como a seguir:

SE (condio) ENTO
Comando1
SENO SE (condio) ENTO
Comando2
SENO
Comando3
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 26

Exemplos:
Faa um algoritmo (pseudocdigo e fluxograma) que receba um nmero como entrada. Verifique
se o nmero maior ou igual a 2 e mostre na tela uma mensagem.

Pseudocdigo

Pseudocdigo

Estrutura simples

Estrutura composta

ALGORITMO
DECLARE num NUMERICO
ESCREVA "Digite um numero: "
LEIA num
SE (num >= 2) ENTO
ESCREVA "O numero maior ou igual a 2"
SE (num < 2) ENTO
ESCREVA "O numero menor que 2"
FIM_ALGORITMO

ALGORITMO
DECLARE num NUMERICO
ESCREVA "Digite um numero: "
LEIA num
SE (num >= 2) ENTO
ESCREVA "O numero maior ou igual a 2"
SENO
ESCREVA "O numero menor que 2"
FIM_ALGORITMO

Fluxograma

Incio

num

Sim

num >=2

O nmero
digitado maior
ou igual a 2

No

O nmero
digitado menor
que 2

fim

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 27

Faa um algoritmo (pseudocdigo e fluxograma) que receba dois nmeros como entrada e mostre
na tela o maior.
Pseudocdigo

Pseudocdigo

Estrutura simples

Estrutura composta

ALGORITMO
DECLARE num1, num2 NUMERICO
ESCREVA "Digite o primeiro numero"
LEIA num1
ESCREVA "Digite o segundo numero"
LEIA num2
SE (num1 > num2) ENTO
ESCREVA "O maior numero " , num1
SE (num2 > num1) ENTO
ESCREVA "O maior numero " , num2
SE (num2 == num1) ENTO
ESCREVA "Os nmeros so iguais !"
FIM_ALGORITMO

ALGORITMO
DECLARE num1, num2 NUMERICO
ESCREVA "Digite o primeiro numero"
LEIA num1
ESCREVA "Digite o segundo numero"
LEIA num2
SE (num1 > num2) ENTO
ESCREVA "O maior numero " , num1
SENO SE (num2 > num1) ENTO
ESCREVA "O maior numero " , num2
SENO
ESCREVA "Os nmeros so iguais !"
FIM_ALGORITMO

Fluxograma

Observe que nesse exemplo, foram usadas duas tomadas de deciso, ou seja, duas
condies foram testadas.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 28

Incio

Tomada de
deciso

Tomada de
deciso

num1,
num2

No

num1 >
num2

Sim

num2 >
num1

O maior numero
num2

Sim
No
O maior numero
num1

Os nmeros so
iguais

Fim

3- Estrutura Condicional em Scilab

3.1- Estrutura Condicional Simples


Em Scilab, a estrutura condicional simples deve ser escrita da seguinte maneira:

if (condio) then
comando;
end
O comando s ser executado se a condio for verdadeira. Uma condio uma comparao que
possui dois valores possveis: verdadeiro ou falso. As condies devem estar entre parnteses ( ).
Alm disso, no Scilab a palavra end indica onde termina uma determinada estrutura condicional.

Exemplo:
num=input("Digite um numero:");
if (num>2) then
mprintf("O nmero maior que dois");
end

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 29

Alm disso, podem existir outros comandos (linhas de comandos) que sero executados caso a
condio do if seja verdadeira, como mostrado a seguir:

if (condio) then
comando1;
comando2;
end
No exemplo a seguir dois comandos para imprimir textos na tela devero ser executados caso a
condio (num > 2) seja verdadeira. No entanto, se a condio for falsa, no ser executado
nenhum comando, apenas o programa ser finalizado.

Exemplo:
num=input("Digite um numero:");
if (num>2) then
mprintf("\n O nmero maior que dois");
mprintf("\n Fim do programa");
end
A estrutura condicional simples no Scilab usa apenas o comando if. possvel usar quantos if
forem necessrios. Observe que para cada if dever ser usado um end para finaliz-lo.

Exemplo:
num=input("Digite um numero:");
if (num>2) then
mprintf("\n O nmero maior que dois");
mprintf("\n Fim do programa1");
end
if (num<2) then
mprintf("\n O nmero menor dois");
mprintf("\n Fim do programa2");
end
if (num==2) then
mprintf("\n O nmero igual a dois");
mprintf("\n Fim do programa3");
end

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 30

No exemplo, foram usadas trs condies (num >2), (num < 2) e (num == 2), portanto, trs if.
Dependendo do nmero que o usurio digitar uma das trs condies ser verdadeira, no entanto, na
estrutura condicional SIMPLES, sempre todas as condies sero testadas e caso mais de uma
condio seja verdadeira, os comandos delas podero ser executados, mas esse no o caso desse
exemplo.
3.2- Estrutura Condicional Composta
Em Scilab, a estrutura condicional composta deve ser escrita da seguinte maneira:

if (condio) then
comando1;
else
comando2;
end
Na estrutura composta, alm do comando if ser usado o comando else. Sendo assim, caso a
condio do if seja verdadeira, apenas o comando1 ser executado. No entanto, se a condio for
falsa o comando2 ser executado. Na estrutura condicional composta, possvel estruturar de tal
forma que sempre um comando seja executado.

Exemplo:
num=input("Digite um numero:");
if (num>2) then
mprintf("\n O nmero maior que dois");
else
mprintf("\n O nmero no maior que dois");
end
No exemplo, se o nmero digitado for maior que dois, ser apresentada na tela a seguinte
mensagem O nmero maior que dois. No entanto, se o nmero digitado no for maior que dois,
ou seja, a condio for falsa, a mensagem que ser apresentada na tela ser O nmero no maior
que dois, portanto, o comando que est no else.
Caso existam mais condies que devero ser testadas antes do else acontecer, as condies devero
se adicionadas atravs da unio dos comandos else e if (elseif), como a seguir:

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 31

if (condio) then
comando1;
elseif (condio) then
comando2;
else
comando3;
end
Ainda sim, apenas um dos comandos (comando1, comando2 ou comando3) devero ser
executados. Essa uma diferena importante entre a estrutura condicional simples e composta. Na
estrutura composta, se uma condio for verdadeira e seus comandos executados, a estrutura
condicional como um todo finalizada. Alm disso, o comando pertencente ao else, no exemplo, o
comando3 s ser executado se todas as condies anteriores forem falsas.
Observe o exemplo que havia sido feito com estrutura simples, ficar da seguinte forma em
estrutura composta:

Exemplo:
num=input("Digite um numero:");
if (num>2) then
mprintf("\n O nmero maior que dois");
mprintf("\n Fim do programa1");
elseif (num<2) then
mprintf("\n O nmero menor dois");
mprintf("\n Fim do programa2");
else
mprintf("\n O nmero igual a dois");
mprintf("\n Fim do programa3");
end

Observe que apenas um end dever ser colocado na estrutura condicional composta.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 32

Exemplo:
Faa um programa em Scilab que receba dois nmeros como entrada e mostre na tela o maior.

Estrutura simples

clear;
clc;
num1=input("Digite o primeiro numero:");
num2=input("Digite o segundo numero:");
if (num1>num2) then
mprintf("\n Maior numero %.2f",num1);
end
if (num2>num1) then
mprintf("\n Maior numero %.2f",num2);
end
if (num1==num2) then
mprintf("\n Os numeros so iguais");
end
Estrutura composta

clear;
clc;
num1=input("Digite o primeiro numero:");
num2=input("Digite o segundo numero:");
if (num1>num2) then
mprintf("\n Maior numero %.2f",num1);
elseif (num2>num1) then
mprintf("\n Maior numero %.2f",num2);
else
mprintf("\n Os numeros so iguais");
end

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 33

3.3- Operadores Relacionais


Os operadores relacionais sero muito usados nas estruturas condicionais, nas quais necessrio
realizar comparao entre valores e/ou variveis.

Operador

Exemplo

Comentrio

==

X == Y

O contedo de X igual ao contedo de Y

< > ou ~ =

X ~= Y

O contedo de X diferente do contedo de Y

<=

X <= Y

O contedo de X menor ou igual ao contedo de Y

>=

X >= Y

O contedo de X maior ou igual ao contedo de Y

<

X<Y

O contedo de X menor que o contedo de Y

>

X>Y

O contedo de X maior que o contedo de Y

Esses operadores tambm sero usados em estruturas de repetio.

Exemplos:
if(num1 == num2)
mprintf("\nNumeros iguais");
elseif(num1 ~= num2)
mprintf("\nNumeros diferentes");
end
3.4- Operadores Lgicos
Tabela Verdade
Operador

Notao Scilab

E (AND)

&

&

NO (~)

OU (OR)

NO (NOT)

VeV=V
VeF=F
FeV=F
FeF=F

V ou V = V
V ou F = V
F ou V = V
F ou F = F

No V = F
No F = V

Para ajudar a entender os operadores lgicos, observe a tabela verdade para cada um dos
operadores. O que est marcado de laranja o que devemos lembrar do operador E (&) e do
operador OU ( | ). Ao usar o operador &, a condio somente ser verdadeira, se todas as condies
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 34

includas forem verdadeiras. Ao usar o operador | , a condio somente ser falsa, se todas as
condies includas forem falsas.

Exemplo 1:
if(num>=0 & num<5) then
mprintf("\nNumero entre ZERO e CINCO");
end
No exemplo 1, a condio (num >= 0 & num < 5) s ser VERDADEIRA se o num digitado for
0, 1, 2, 3 ou 4, ou seja, o nmero dever ser MAIOR OU IGUAL a zero E MENOR que 5. Isso
acontece porque foi usado o operador & (E).

Exemplo 2:
if(num < 0 | num > 5) then
mprintf("\nO numero maior que CINCO
OU menor que ZERO");
end
No exemplo 2, a condio (num < 0 | num > 5) s ser FALSA se o num digitado for 0, 1, 2, 3 ou
4. Nesse exemplo, para a condio ser VERDADEIRA basta atender apenas uma das condies:
OU o nmero deve ser menor que ZERO OU maior que CINCO. Isso acontece porque foi usado o
operador | (OU).

Exerccios
1- Faa um algoritmo (pseudocdigo e fluxograma), em seguida, um programa em Scilab que leia
dois valores (base/altura) e identificar se correspondem aos lados de um quadrado ou retngulo.
2- Faa um algoritmo (pseudocdigo e fluxograma), em seguida, um programa em Scilab que
recebe o ano de nascimento de uma pessoa e mostre a mensagem se a pessoa possui maioridade ou
no.
3- Faa um algoritmo (pseudocdigo e fluxograma), em seguida, um programa em Scilab que
solicite a entrada de dois nmeros, em seguida imprime na tela o quadrado do menor nmero e a
raiz quadrada do maior nmero, se for possvel.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 35

4- O custo ao consumidor de um carro novo a soma do custo de fbrica com a porcentagem do


distribuidor e com os impostos, ambos aplicados ao custo de fbrica. Sabe-se que as porcentagens
so as mesmas que esto na tabela a seguir. Faa um programa em Scilab que receba o custo de
fbrica de um carro e mostre o custo ao consumidor. Use os valores da tabela a seguir:
Custo de Fbrica

% do Distribuidor % dos Impostos

At R$ 28.000,00

Isento

Entre R$ 28.000,01 e R$ 45.000,00

10

15

Acima de R$ 45.000,00

15

20

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 36

Estrutura de Repetio
Como imprimir os 1000 primeiros nmeros, a partir do nmero 1? Cada nmero em uma linha?
Uma soluo nada prtica apresentada a seguir:

mprintf("\n 1");
mprintf("\n 2");
mprintf("\n 3");
mprintf("\n 4");
....
mprintf("\n 999");
mprintf("\n 1000");
Mas como permitir que o programa abaixo repita um nmero de vezes? No seria timo que a cada
vez que o programa repetir, ele permita que o usurio faa uma escolha do menu?

num=input("Digite um numero: ");


mprintf("\nMenu:");
mprintf("\n1-Raiz quadrada de um nmero \n2-Nmero ao quadrado");
opcao=input("Digite sua escolha: ");
if(opcao == 1)then
raiz=sqrt(num);
mprintf("\nA raiz : %f", raiz);
elseif(opcao == 2)then
potencia=num^2;
mprintf("\n O nmero ao quadrado: %f", potencia);
end
Para resolver esse problema, necessrio o uso de estrutura de repetio.
1- Estrutura de Repetio em Fluxograma
No fluxograma a repetio representada com o retorno do fluxo para um determinado ponto, alm
da condio, que sempre testada!

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 37

Exemplo 1 Faa um fluxograma que mostre na tela os nmeros de 1 a 10 usando estrutura de


repetio.

inicio

i=1

Sim
i < = 10

i=i+1

No

fim

2- Estrutura de Repetio PARA/ for


2.1- Pseudocdigo: estrutura de repetio PARA
A estrutura de repetio PARA, geralmente, usada quando temos o nmero de vezes a repetio
do algoritmo dever ocorrer previamente. Por exemplo, faa um algoritmo que receba 20 notas do
usurio. A seguir apresentada a estrutura bsica para a estrutura de repetio PARA:

PARA i valor inicial at valor final Passo n FAA

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 38

i varivel para controlar a repetio


i valor inicial valor de inicializao para a varivel i
at valor final a repetio vai de um valor inicial at um valor final (incluindo o valor final da
varivel i )
Passo n = incremento (quantas unidades so somadas ) ou decremento (quantas unidades so
subtradas) da varivel i

se o incremento for de 1 em 1, geralmente, Passo n no aparece na estrutura de repetio


do pseudocdigo, fica apenas subentendido

PARA i valor inicial at valor final FAA


comando1
comando2
....
FIM _PARA

Na estrutura de repetio PARA, o comando1 e o comando2 sero executados utilizando a


varivel i como controle. O contedo de i vai variar do valor inicial at o valor final, sendo que a
cada passagem pela estrutura PARA, a varivel i incrementa em uma unidade, que o padro de
incremento da estrutura.
Exemplo1:
ALGORITMO
DECLARE i NUMRICO
PARA i 1 at 6 FAA
ESCREVA o valor de i : , i
FIM_PARA
FIM_ALGORITMO

Chinesinho:
var

Tela

O valor de var : 1

O valor de var : 2

O valor de var : 3

O valor de var : 4

O valor de var : 5

O valor de var : 6

No exemplo1, a estrutura de repetio PARA vai repetir o comando ESCREVA seis vezes (ou seja,
de 1 a 6).
Chinesinho
Um mtodo para testarmos um programa e um algoritmo com o uso do chinesinho, tambm
chamado teste de mesa. Para fazer o chinesinho, basta colocar o nome de todas as variveis na
primeira linha da tabela. Nas outras linhas colocamos os valores que a varivel ir assumir.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 39

Lembrando que a varivel um espao na memria (caixinha). Sendo assim, aps executar uma
repetio, ao final a varivel estar apenas com o ltimo valor que ela assumiu. No caso do
chinesinho o ltimo valor (linha) de cada varivel (coluna).

2.2- Scilab: estrutura de repetio for


A estrutura for a traduo da estrutura PARA, portanto, sua forma de executar similar. A seguir
apresentada a estrutura bsica para a estrutura de repetio for:

for i = valor inicial : valor final

i varivel para controlar a repetio


i = valor inicial valor de inicializao para a varivel i
: (dois pontos) representa o at do pseudocdigo
valor final a repetio vai de um valor inicial at um valor final (incluindo o valor final da
varivel i )
o padro de incremento do for em scilab de um em um
Incremento / decremento incremento (quantas unidades so somadas a varivel i) e decremento
(quantas unidades so subtradas varivel i)

Em Scilab, a estrutura de repetio for usa uma varivel que inicializada com um valor e ser
incrementada at chegar ao valor final. O padro do incremento no Scilab de um em um. Para
mudar a forma de incremento, necessrio acrescentar um valor na estrutura, como apresentado a
seguir:

for i = valor inicial : valor incremento : valor final

Observe que o valor do incremento dever ser colocado no meio e separado, tanto do valor inicial
como do valor final, com dois pontos (:).

for i = valor inicial : valor final


comando1;
comando2;
end
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 40

A estrutura de repetio for em Scilab tambm termina com a palavra end. Sendo assim, os
comandos (comando1 e comando2) que estiverem entre a estrutura for e a palavra end iro repetir o
nmero de vezes especificado atravs do valor inicial e valor final da varivel de controle do for, no
caso acima, a varivel i.
O exemplo a seguir mostra o texto Alo alo Terezinha na tela dez vezes. Alm disso, mostrado
na tela o valor da varivel var que controla a repetio. Como o incremento usado foi o padro, a
varivel comea com o valor 1, depois incrementa um e passa a valer 2 e assim por diante at 10.

Exemplo1:
clear;
clc;
for var = 1:10
mprintf("\n %d- Alo alo Terezinha", var);
end
Tela do Console, ao executar o programa...

J o exemplo a seguir, tambm mostra o texto Alo alo Terezinha, no entanto, como a varivel var
incrementa de 3 em 3, a repetio acontecer menos vezes. Observe o valor da varivel var
mostrado na tela.

Exemplo2:
clear;
clc;
for var = 1: 3 :10
mprintf("\n %d- Alo alo Terezinha", var);
end
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 41

Tela do Console, ao executar o programa...

O exemplo a seguir mostra como fazer para usar decremento na estrutura for. Decremento
subtrair um determinado valor de uma varivel. No caso da estrutura for, faz sentido usar o
decremento, se o valor inicial da varivel for maior que o valor final da varivel.

Exemplo3:
clear;
clc;
for var=10:-1:1
mprintf("\n %d- Alo alo Terezinha", var);
end
Tela do Console, ao executar o programa...

A varivel var
comea com o
valor 10 e vai
perdendo uma
unidade a cada
repetio da
estrutura for

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 42

3- Estrutura de Repetio ENQUANTO/ while


3.1- Pseudocdigo: estrutura de repetio ENQUANTO
A estrutura de repetio ENQUANTO, geralmente, usada quando no temos o nmero de vezes
que a repetio do algoritmo dever ocorrer. Por exemplo, faa um algoritmo que receba vrias
notas do usurio. A seguir apresentada a estrutura bsica para a estrutura de repetio
ENQUANTO:

ENQUANTO (condio)
comandos
FIM_ENQUANTO

Teste Condicional
INCIO

A estrutura acima repete ENQUANTO a (condio) for verdadeira, portanto, no momento em que
ela se tornar falsa a repetio ir parar. Nessa estrutura o teste condicional feito no INCIO.
Exemplo1:
ALGORITMO
DECLARE X, Y NUMRICO
X1
Y5
ENQUANTO X < Y FAA
X X+2
Y Y+1
FIM_ENQUANTO
FIM_ALGORITMO

Chinesinho:
X

No exemplo acima, ENQUANTO a varivel X for menor que a varivel Y, os clculos ( X X+2
e X X+2) repetem.
3.2- Scilab: estrutura de repetio while
A estrutura while a traduo da estrutura ENQUANTO, portanto, sua forma de executar similar.
A seguir apresentada a estrutura bsica para a estrutura de repetio while:
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 43

A estrutura de repetio while em Scilab tambm termina com a palavra end. Sendo assim, os
comandos que estiverem entre a estrutura while e a palavra end iro repetir enquanto a condio
for verdadeira. No momento que ela se tornar falsa a repetio ir parar.
Um erro muito comum o loop infinito, ou seja, a condio NUNCA se torna falsa e a repetio
nunca ir parar e os comandos iro repetir infinitamente. Como no existe uma receita de bolo para
criar a condio a ser testada no while, muitas vezes, ela usada de forma errada e com isso, erros
como o loop infinito ou a no repetio ocorrem.
Sendo assim, um cuidado que devemos tomar ao desenvolver um programa de test-lo e verificar
se a repetio em um primeiro momento que verdadeira e se no momento que o usurio desejar
sair, a condio se torna fala.
Exemplo Faa um programa em Scilab que calcule a soma de vrios salrios digitados pelo
usurio. Para terminar a digitao de salrios o usurio dever digitar o valor -1.

Exemplo1:
clear;
clc;
soma= 0;
salario = 0;
while (salario ~= -1)
salario = input("Digite um salrio - Para sair digite -1:");
if(salario>0) then
soma = soma + salario;
end
end
mprintf("\n A soma dos salrios : %.2f", soma);

Observe o exemplo apresentado acima. A condio de parada da repetio digitar -1 (menos um)
para o salrio. Como a condio do while ~ = (diferente), enquanto o usurio digitar valores
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 44

diferentes de -1 a repetio ir acontecer. A varivel soma uma varivel que acumula a soma dos
salrios digitados. Esse tipo de varivel, que acumula algum valor, muito usada em programas que
usam estruturas de repetio.

Exemplo2:
clear;
clc;
cont = 0 ;
soma = 0;
qtde=input("Digite quantos nmeros deseja digitar: ");
while(cont<qtde)
num = input("Digite um nmero: ");
soma=soma+num;
cont = cont + 1;
end
media = soma/qtde;
mprintf("\n A mdia dos nmeros digitados : %f",media);
A estrutura de repetio while tambm pode ser usada quando sabemos o nmero de vezes uma
repetio deve ocorrer. Para isso, ser necessrio usar um contador, no exemplo, a varivel cont
que comea com o valor zero e a cada repetio incrementa uma unidade. Contadores tambm so
muito usados em programas que usam estrutura de repetio.
Uma informao importante com relao ao fluxograma. O fluxograma, tanto para a estrutura
PARA/for, como para a estrutura ENQUANTO/while usar os mesmos smbolos e o fluxo
retornando. Observe os exemplos acima feitos em fluxograma:
Exemplo1:
soma = 0
salario = 0

incio

soma

No

Sim

salario ~= -1

salario

fim
salario >= 0

Si
m

soma = soma + salario

No

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 45

Exemplo 2:

Observe que nos fluxogramas dos exemplos 1 e 2, o que muda apenas a condio dentro do
smbolo de tomada de deciso.

Exerccios
1- Faa um algoritmo (pseudocdigo) e, em seguida, um programa para somar 10 notas e
apresentar a mdia aritmtica das notas na tela. Use estrutura de repetio.
2- Faa um programa para receber 15 nmeros digitados por um usurio, identificar o maior e o
menor nmero digitado. Mostre na tela o maior e o menor nmero.
3- Foi feita uma estatstica em cinco cidades brasileiras para coletar dados sobre acidentes de
trnsito. Foram obtidos os seguintes dados:
a) Cdigo da cidade;
b) Nmero de veculos (em 2010);
c) Nmero de acidentes de trnsito com vtimas (em 2010).
Deseja-se saber:
a) O maior e o menor ndice de acidentes de trnsito e a que cidades pertencem;
b) A mdia de veculos nas cinco cidades juntas;
c)A mdia de acidentes de trnsito nas cidades com menos de 2000 veculos.
4- Faa um programa que receba uma seqncia de nmeros e retorne o maior nmero e o menor
nmero da seqncia digitada. A quantidade de nmeros n fornecida pelo usurio. Use a estrutura
WHILE.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 46

5- Faa um programa que deve solicitar nmeros inteiros positivos para o usurio. Caso o usurio
digite -1 o programa termina e imprime a mdia de todos os nmeros digitados. Para qualquer valor
inteiro positivo, o programa guarda o valor para calcular a mdia e solicita o prximo nmero e
assim sucessivamente. Caso o usurio digite algum valor negativo, esse valor no dever ser usado
para calcular a mdia.
6- Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou no de um
novo produto lanado no mercado. Para isso, forneceu o sexo do entrevistado e sua resposta (sim ou
no). Considere que no se sabe o nmero de pessoas que foram entrevistadas, faa um programa
que calcule e escreva:
a) o nmero de pessoas que responderam sim;
b) o nmero de pessoas que responderam no;
c) a porcentagem de pessoas do sexo feminino que responderam sim;
d) a porcentagem de pessoas do sexo masculino que responderam no.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 47

Arranjo: Vetor
Relembrando...

No seria bom se esse espao (nota ou sexo ou num1) fosse capaz de armazenar mais de um valor?
Esse o objetivo do vetor:

conseguir armazenar mais de um valor em um espao na memria;


Podemos fazer uma analogia com as divisrias que colocamos em uma gaveta para
organiz-la.

Vetor: varivel composta homognea unidimensional

Composta: capaz de armazenar mais de um valor


Homognea: apenas um tipo (numrico ou caracter/literal)
Unidimensional: apenas uma dimenso (linha ou coluna)

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 48

Memria RAM
nota
Com o vetor: possvel
armazenar um valor
em cada uma das
posies na varivel

sexo

num1

Mas necessrio conseguir acessar cada uma das posies do vetor, para isso, so usados os
ndices, que comeam em UM e terminam no tamanho do vetor.
Memria RAM
nota

ndice

sexo

num1

5 posies

1- Vetor em Pseudocdigo

Em pseudocdigo necessrio declarar todas as variveis. Sendo assim, necessrio declarar as


variveis que so vetores tambm, indicando o tamanho do vetor, como apresentado a seguir:
DECLARE nome (tamanho_do_vetor) Tipo

tipo: indica o tipo de cada elemento do vetor (numrico ou caracter/literal)


nome: indica o nome da coleo de variveis (segue as mesmas regras de nome de
variveis)
tamanho_do_vetor: indica o tamanho do vetor de elementos, onde o menor valor 1.

Exemplo:
DECLARE nota[4] NUMRICO
ndice

valor
nota[1]

nota[2]

nota[3]

nota[4]

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 49

As atribuies em vetor exigem que seja informada em qual de suas posies o valor ficar
armazenado:
Atribui o valor 3 (trs) na posio de indice 1 do vetor nota: nota(1) 3
Atribui o valor 0 (zero) na posio de indice 4 do vetor vet: vet(4) 0
Preencher um vetor significa atribuir valores a todas as suas posies. Assim deve-se implementar
um mecanismo que controle o valor do ndice. Uma forma mais simples de preencher todas as
posies de um vetor e controlar o ndice usando uma estrutura de repetio. A estrutura de
repetio mais usada a estrutura PARA (em pseudocdigo).
Para preencher um vetor qualquer ser usada a seguinte estrutura:
PARA i 1 AT tamanho do vetor FAA
LEIA vetor(i)
FIM_PARA
A estrutura de repetio PARA utilizada para garantir que a varivel i assuma todos os valores
possveis para o ndice do vetor. Assim, para cada execuo da repetio, ser armazenado (LEIA)
um valor em uma posio diferente do vetor.
Exemplo:
PARA i 1 AT 4 FAA
ESCREVA "Digite uma nota: "
LEIA nota(i)
FIM_PARA
Mostrar todos os valores contidos em um vetor tambm implica na utilizao de uma estrutura de
repetio e do ndice. Observe que agora dever ser usado o comando ESCREVA dentro da
estrutura de repetio.
PARA i 1 AT tamanho do vetor FAA
ESCREVA vetor(i)
FIM_PARA
A estrutura de repetio PARA foi utilizada para garantir que a varivel i assuma todos os valores
possveis para o ndice do vetor. Assim, para cada execuo da repetio, ser utilizada uma posio
diferente, e dessa forma, todos os valores do vetor sero mostrados (ESCREVA).

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 50

Exemplo:
PARA i 1 AT 4 FAA
ESCREVA "A nota ", i , " : "
ESCREVA nota(i)
FIM_PARA
Exemplo Faa um algoritmo (pseudocdigo) para armazenar 10 notas em um vetor, em seguida,
mostre todas as notas maiores que 10.
Tamanho do vetor (qtde de divisrias)

ALGORITMO
DECLARE nota(10), i NUMRICO
PARA i 1 at 10 FAA
ESCREVA "Digite uma nota: "
LEIA nota(i)
FIM_PARA
ESCREVA "As notas maiores que 10 foram: "
PARA i1 at 10 FAA
SE(nota(i) > 10) ENTO
ESCREVA nota(i)
FIM_SE
FIM_PARA
FIM_ALGORITMO

2- Vetor em Scilab
Em Scilab no necessrio declarar um vetor, assim como no necessrio declarar outros tipos de
variveis. No entanto, necessrio preench-lo e mostr-lo e para isso, ser usada estrutura de
repetio como apresentado para pseudocdigo.
2.1- Definio de um vetor
Em Scilab, um vetor pode ser definido das seguintes formas:
elemento por elemento;
por intermdio de expresso;
usando-se funo linspace.
2.1.1- Elemento por elemento
A atribuio dos primeiros valores para um vetor se d pela mera atribuio de um conjunto de
valores, separados por espaos em branco (OU VRGULAS) e delimitados por colchetes. No
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 51

exemplo abaixo, o vetor Temperatura inicializado com os valores de cinco temperaturas, logo,
ser criado um arranjo de tamanho igual a 5:

Exemplo:
Temperatura = [37.5 40.1 20.0 23.2 40.7];
Ou
Temperatura = [37.5, 40.1, 20.0, 23.2, 40.7];
2.1.2- Por intermdio de expresso
A definio de um vetor por intermdio de expresso deve ser usada quando os valores do vetor
forem igualmente espaados. O valor inicial, incremento e valor final so separados por dois
pontos (:). Observe como dever ser feita a definio da expresso:

Nome_vetor = <valor inicial> : <incremento> : <valor final> ;


No exemplo a seguir, a expresso da linha 3 cria o vetor e define ele com valores de 10 a 30, sendo
o incremento entre os valores de 5 em 5. Definir um vetor com uma expresso funciona muito
parecido com a expresso usada na estrutura de repetio for.

Exemplo:

Tela do Console, ao executar o programa...

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 52

No entanto, se o incremento for de 1 em 1, poder ser omitido como na estrutura de repetio for.
Observe o exemplo a seguir que define um vetor com valores 0,1, 2, 3, 4, 5 (ou seja, de 0 a 5). Nos
dois exemplos, a funo disp() foi usada com o intuito de mostrar na tela todos os valores definidos
no vetor.

Exemplo:

Tela do Console, ao executar o programa...

2.1.3- Usando-se a funo linspace


possvel construir um vetor linearmente espaado, usando a funo linspace(). Na funo
linspace() necessrio passar os seguintes parmetros separados por vrgula: valor inicial, valor
final e a quantidade de valores que deseja definir entre o incio e fim. Dessa forma, ele far a
diviso e identificao dos valores que sero armazenados no vetor, respeitando a quantidade de
elementos. O padro para a Qtde de elemento 100, ento caso no seja colocado esse valor ser
considerado o valor padro.

Nome_vetor = linspace(<valor inicial> , <valor final > , <Qtde de elemento>);

Observe os exemplos a seguir. No exemplo 1, foi definido o valor inicial 100 e o valor final 120 e a
quantidade de elementos desejado entre o valor inicial e final foi 5. Sendo assim, foram
armazenados no vet cinco valores (100, 105, 110, 115 e 120).

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 53

Exemplo 1:
vet = linspace (100,120,5);
disp("Valores do vetor: ");
disp(vet);
Tela do Console, ao executar o programa...

J no exemplo 2, os valores inicial e final foram os mesmos do exemplo 1, alterando apenas a


quantidade de elementos, que agora de 10. Sendo assim, no exemplo 2 foram armazenados dez
valores (100, 102.22222, 104.44444, 106.66667, 108.88889, 111.11111, 113.33333, 115.55556,
117.77778 e 120). Como no exemplo 2, a diviso no exata, ou seja, no existem 10 elementos
inteiros linearmente espaados, foram armazenados valores fracionados.

Tela do Console, ao executar o programa...

Exemplo 2:
vet = linspace (100,120,10);
disp("Valores do vetor: ");
disp(vet);

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 54

2.2- Identificao de valores em um vetor


Em Scilab, a primeira posio de um arranjo igual a 1; a segunda posio igual a 2; e assim por
diante. Logo, para o exemplo acima, o arranjo TEMPERATURA, de tamanho igual a cinco, contm
cinco elementos, identificados de 1 a 5. A indicao da posio de um elemento do vetor em Scilab
deve ser expressa entre parnteses. Logo, a instruo: Temperatura(2), recuperar o valor do
segundo elemento do arranjo, no exemplo, 40.1.
Observe o exemplo a seguir. Ele inicializa o vetor (vet), em seguida, mostra a posio 3 do vetor na
tela:

vet o nome do vetor e poderia ser outro nome qualquer. O nome de um vetor segue as
mesmas regras de nomes de variveis, ou seja, no podem ter caracteres especiais, no
podem ter espaos, letras maisculas e minsculas so consideradas distintas, entre outras
regras.

Exemplo:
clear;
clc;
vet=[5,1,-21];
mprintf("\nA terceira posio do vetor : %.2f", vet(3));
Tela do Console, ao executar o programa...

possvel tambm atribuir um valor para uma determinada posio do vetor. Por exemplo, vamos
supor que agora o vetor (vet) ter na sua 3 posio o valor 80, em vez de 21. Para isso, necessrio
atribuir o novo valor para a posio 3, como a seguir:

Atribuio de
novo valor para
o vetor.

Exemplo:
clear;
clc;
vet=[5,1,-21];
mprintf("\nA terceira posio (ANTES): %.1f", vet(3));
vet(3)=80;
mprintf("\nA terceira posio (DEPOIS): %.1f", vet(3));

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 55

Nesse exemplo, ideal mostrarmos o antes e o depois da nova atribuio. Por isso, foi usado dois
mprintf(), observe a tela do console apresentada a seguir:

Tela do Console, ao executar o programa...

2.3- Preencher um vetor


Muitas vezes necessrio armazenar valor em todas as posies do vetor, isso, o que chamamos
de preencher o vetor. Para preencher o vetor, podemos usar a seguinte estrutura:

for x=1:QtdeNumeros
vet(x)=input("Informe um numero: ");
end
Para preencher um vetor sempre necessrio o uso de estrutura de repetio. A estrutura for deve
ser usada quando sabemos o tamanho do vetor e com isso, sabemos previamente o nmero de vezes
a repetio dever acontecer.
No exemplo, QtdeNumeros ter o mesmo valor do tamanho do vetor, ou seja, o nmero mximo
de valores armazenados no vetor.
2.4- Mostrar um vetor
Para mostrar todos os valores de um vetor, a estrutura ser muito parecida com a anterior. Observe
que foi usada uma estrutura de repetio (for) e dentro, em vez, de usar o input(), foi usado o
mprintf().

for x=1:QtdeNumeros
mprintf("\n Posio %d do vetor: %.1f ",x,vet(x));
end
Observe o exemplo 1, que usa uma estrutura de repetio for para armazenar um valor em cada
posio do vetor notas. Em seguida, usa outra estrutura de repetio for para mostrar todos os
valores armazenados no vetor notas.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 56

Exemplo 1:

Tela do Console, ao executar o


programa...

clear;
clc;
for i=1:5
notas(i) = input("digite uma nota:");
end
for i=1:5
mprintf("\nA nota e %.2f", notas(i));
end

Outra forma usando a funo disp(), dentro dela o nome do vetor. Essa funo ir mostrar cada
um dos valores armazenados no vetor (cada valor em uma linha, como mostra o exemplo 2).

Exemplo 2:
clear;
clc;
for x=1:5
vet(x)=input("Informe um numero: ");
end
Usando disp()
disp(vet);
para mostrar o

Tela do Console, ao executar o


programa...

vetor todo.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 57

Exemplo 3:
clear;
clc;
for i=1:5
notas(i) = input("digite uma nota:");
end
soma = 0;
for i=1:5
soma = soma + notas(i);
end
media = soma/5;
mprintf("\nA soma das notas e:%.2f", soma);
mprintf("\nA media das notas e:%.2f", media);

Tela do Console, ao executar o programa...

2.5- Grfico 2D em Scilab


Em Scilab possvel construir facilmente grficos 2D, usando a funo plot2d(). Ento
considerando a funo do 1 Grau (f(x) = 2x) e os seguintes valores de x: 10, 20, 30, 40 e 50. Para
desenharmos o grfico, poderamos armazenar os valores de x e f(x) em dois vetores e desenhar o
grfico com a funo plot2d(). Observe o exemplo a seguir:
x
10
20
30
40
50

f(x)
2 * 10 = 20
2 * 20 = 40
2 * 30 = 60
2 * 40 = 80
2 * 50 = 100

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 58

Exemplo:

Tela do Console, ao executar o programa...

x=linspace (10,50,5);
for i=1:5
fx(i)=2*x(i);
end
disp("Valores do vetor x: ");
disp(x);
disp("Valores do vetor fx: ");
disp(fx);
plot2d(x,fx);

Grfico...

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 59

Considere o novo exemplo, agora com uma equao do 2 Grau

Exemplo:

Tela do Console, ao executar o programa...

clear;
clc;
x=[-3,-2,-1,-0.5,0,1,2];
for i=1:7
fx(i)=(x(i)^2)+x(i);
end
disp("Valores do vetor x: ");
disp(x);
disp("Valores do vetor fx: ");
disp(fx);
plot2d(x,fx);

Grfico...
X

f(x)

-3
-2
-1
-0,5
0
1
2

6
2
0
-0,25
0
2
6

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 60

A funo plot2d() espera dois valores como parmetros separados por vrgula. O primeiro valor
equivale ao eixo x e o segundo valor equivale ao eixo y.
plot2d([x],y);

3- Vetor em Fluxograma
Em fluxograma, no existe nenhuma alterao para representar um vetor. Um vetor uma varivel
ento ser representado usando os mesmos smbolos vistos anteriormente. Observe o exemplo a
seguir:
i=1
soma = 0

incio

Sim

No

media = soma/5

soma, media

i <=5

fim

nota(i)

soma = soma + nota(i)


i=i+1

Exerccios
1- Uma turma tem 40 alunos. Faa um programa para ler a idade de todos os alunos e logo em
seguida imprimir:
a) Total de alunos com idade menor ou igual a 16 anos
b) Mdia das idades
c) Idade do aluno mais novo
2- Faa um programa que carregue um vetor com dez nmeros reais, calcule e mostre na tela a
quantidade de nmeros negativos e a soma dos nmeros positivos desse vetor.
3- Faa um programa que l N nmeros informados pelo usurio e armazena em um vetor. O valor
de N informado pelo usurio, ao final exibir o contedo armazenado no vetor, a quantidade de
nmeros pares e a quantidade de nmeros mpares.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 61

4- Faa um programa que carregue um vetor com 10 nmeros inteiros. Em seguida, mostre um
vetor resultante ordenado de maneira decrescente.

5- Faa um programa para ler um vetor A de 10 elementos, em seguida, crie um vetor B que dever
armazenar uma cpia invertida de A.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 62

Arranjo: Matriz
Um vetor pode ser considerado como sendo uma matriz de apenas UMA dimenso. Fazemos a
distino de nomes para evitar confuses. Sendo assim, uma matriz uma varivel
multidimensional.
Matriz: varivel composta homognea multidimensional

Composta: capaz de armazenar mais de um valor


Homognea: apenas um tipo (numrico ou caracter/literal)
Multidimensional: mais de uma dimenso (linha e coluna, no caso de duas dimenses)

Memria RAM
Com a matriz:
possvel armazenar
um valor em cada
linha e coluna da
varivel.
Observe que
possvel armazenar
mais valores.

nota

sexo

num1
Assim, como no vetor (que considerado uma matriz de apenas UMA dimenso), necessrio
conseguir acessar cada uma das posies da matriz, para isso, so usados ndices. No caso da
matriz teremos um ndice para cada dimenso

Um ndice para as linhas: comea em UM e vai at a quantidade de linhas da matriz;


Um ndice para as colunas: comea em UM e vai at a quantidade de colunas da matriz.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 63

Memria RAM

ndice das
colunas

nota

1
sexo

2
ndice das
linhas

num1

2 linhas X 5 colunas
Total 2 x 5 = 10 elementos

1- Matriz em Pseudocdigo
Em pseudocdigo necessrio declarar todas as variveis. Sendo assim, necessrio declarar as
variveis que so vetores e que so matrizes tambm, indicando a quantidade de linhas e de colunas
da matriz, como apresentado a seguir:
DECLARE nome_Matriz (qtde_Linhas, qtde_Colunas) Tipo

tipo: indica o tipo de cada elemento do vetor (numrico ou caracter/literal)


nome_Matriz: indica o nome da coleo de variveis (segue as mesmas regras de nome de
variveis)
qtde_Linhas: indica a quantidade de linhas que a matriz dever ter
qtde_Colunas: indica a quantidade de colunas que a matriz dever ter

Exemplo:
DECLARE matrizX( 3, 5) NUMRICO
Coluna
Linha
ndice

1
2
3

As atribuies em matriz exigem que seja informada em qual de suas posies o valor ficar
armazenado, portanto, em qual linha e em qual coluna:

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 64

Atribui o valor 3 (trs) na linha 1 e coluna 1 da matriz, ou seja, primeira posio da matriz
nota: nota(1,1) 3
Atribui o valor 10 (dez) na linha 3 e coluna 4 da matriz, ou seja, primeira posio da matriz
nota: nota(3,4) 10

Observe como ficaria o exemplo, aps as atribuies:

Exemplo:
ndice

2
3

10

Preencher uma matriz significa atribuir valores para todas as suas posies, portanto, todas as
linhas e colunas. Assim deve-se implementar um mecanismo que controle o valor do ndice da linha
e outro que controle o valor do ndice da coluna. Uma forma mais simples de preencher todas as
posies de uma matriz e controlar os ndices usando duas estruturas de repetio. A estrutura de
repetio mais usada a estrutura PARA (em pseudocdigo). Sendo assim, teremos uma estrutura
PARA dentro da outra, uma controlando as linhas e outra controlando as colunas.
Para preencher uma matriz qualquer, ser usada a seguinte estrutura:

Controla as
colunas

PARA lin 1 AT qtde de linhas FAA


PARA col 1 AT qtde de colunas FAA
LEIA matriz(lin ,col)
FIM_PARA
FIM_PARA

Controla
as linhas

A primeira estrutura de repetio PARA utilizada para garantir que a varivel lin assuma todos os
valores possveis para o ndice de linhas da matriz. J a segunda estrutura de repetio PARA
utilizada para garantir que a varivel col assuma todos os valores possveis para o ndice de colunas
da matriz Assim, para cada execuo da repetio, ser armazenado (LEIA) um valor em uma
posio diferente da matriz. Como uma estrutura est dentro d outra, como se em um dado
momento o ndice de linhas pare em uma linha e ir passar por todas as colunas. Observe o exemplo
e em seguida o chinesinho.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 65

Exemplo:
PARA lin 1 AT 3 FAA
PARA col 1 AT 4 FAA
ESCREVA "Digite uma nota: "
LEIA nota(lin , col)
FIM_PARA
FIM_PARA

lin

col

nota

20

10

11

10

15

11.5

12.6

20

Observe como a matriz nota ser preenchida:

1
20

2
10

3
0

4
11

10

15

11.5

12.6

20

Mostrar todos os valores contidos em uma matriz tambm implica na utilizao de duas estruturas
de repetio e de dois ndices. Observe que agora dever ser usado o comando ESCREVA dentro
das estruturas de repetio.

Controla as
colunas

PARA lin 1 AT qtde de linhas FAA


PARA col 1 AT qtde de colunas FAA
ESCREVA matriz(lin ,col)

Controla
as linhas

FIM_PARA
FIM_PARA
A primeira estrutura de repetio PARA utilizada para garantir que a varivel lin assuma todos os
valores possveis para o ndice de linhas da matriz. J a segunda estrutura de repetio PARA
utilizada para garantir que a varivel col assuma todos os valores possveis para o ndice de colunas
da matriz Assim, para cada execuo da repetio, ser mostrado (ESCREVA) na tela um valor
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 66

em uma posio diferente da matriz. Como uma estrutura est dentro d outra, como se em um
dado momento o ndice de linhas pare em uma linha e ir passar por todas as colunas.
Exemplo:

Na tela vai ser mostrado da seguinte


forma:

PARA lin 1 AT 3 FAA


PARA col 1 AT 4 FAA
ESCREVA "A nota do aluno", lin , " : "
ESCREVA nota(lin, col)
FIM_PARA

A nota do aluno 1 : 20
A nota do aluno 1 : 10
A nota do aluno 1 : 0
A nota do aluno 1 : 11
A nota do aluno 2 : 10
A nota do aluno 2 : 15
A nota do aluno 2 : 11.5
A nota do aluno 2 : 6
A nota do aluno 3 : 0
A nota do aluno 3 : 2
A nota do aluno 3 : 12.6
A nota do aluno 3 : 20

Observe que foram mostradas quatro notas para cada um dos trs alunos.
Exemplo Faa um algoritmo (pseudocdigo) para armazenar preencher uma matriz com 3 linhas
e duas colunas, em seguida, apresente na tela os nmeros positivos.
ALGORITMO
DECLARE num(3,2), lin, col NUMRICO
PARA lin 1 at 3 FAA
PARA col 1 at 2 FAA
ESCREVA "Digite um numero: "
LEIA num(lin , col)
FIM_PARA
FIM_PARA
ESCREVA "As nmeros positivos so: "
PARA lin 1 at 3 FAA
PARA col 1 at 2 FAA
SE(num(lin, col) > 0) ENTO
ESCREVA num(lin , col)
FIM_SE
FIM_PARA
FIM_PARA
FIM_ALGORITMO
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 67

2- Matriz em Scilab
Em Scilab no necessrio declarar uma matriz, assim como no necessrio declarar outros tipos
de variveis. No entanto, necessrio preench-lo e mostr-lo e para isso, ser usada estrutura de
repetio como apresentado para pseudocdigo.
2.1- Definio de uma matriz
Similar aos vetores, para criar uma matriz os elementos de uma linha devem estar separados por
espao em branco ou vrgula, j as linhas separadas por ponto e vrgula.
Ponto e
vrgula

Exemplo:
Temperatura = [37.5 40.1 20.0; 23.2 40.7 23.0];
Ou
Temperatura = [37.5, 40.1, 20.0; 23.2, 40.7 23.0];

Para o exemplo apresentado, a matriz que foi criada possui duas linhas e trs colunas.
Observe como a matriz Temperatura ser preenchida:
1

37.5

40.1

20.0

23.2

40.7

23.0

Tambm possvel atribuir um valor para uma determinada posio na matriz. Para isso,
necessrio identificar a linha e a coluna no qual ser atribudo um valor. Suponha que para a matriz
Temperatura do exemplo acima, dois valores tivessem que ser substitudos. Sendo assim,
poderamos atribuir os valores conforme a seguir:

Temperatura(1,1) = 32.3 ;
o atribui o valor 32.3 na linha 1 e coluna 1 da matriz, ou seja, primeira posio da
matriz Temperatura.

Temperatura(2,3) = 23.8 ;
o atribui o valor 23.8 na linha 2 e coluna 3 da matriz, ou seja, segunda linha, terceira
coluna da matriz Temperatura.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 68

Observe como a matriz Temperatura ficar depois de ter


dois novos valores atribudos:
1

32.3

40.1

20.0

23.2

40.7

23.8

Como a matriz no Scilab no declarada, ela criada a partir do momento que usada e com isso,
com a quantidade de linhas e colunas necessrias. Alm disso, ao atribuir um valor a um elemento
NO existente, o Scilab aumenta a matriz automaticamente, preenchendo-a com elementos nulos
(Zero). Observe o exemplo a seguir.
Temperatura(4,3) = 18.0;
Observe como a matriz Temperatura ficar depois de ter um valor atribudo em
uma posio que no existia:
1

32.3

40.1

20.0

23.2

40.7

23.8

18.0

Legenda:
Elementos com valor nulo

2.2- Preenchendo uma matriz


Muitas vezes necessrio armazenar valor em todas as posies da matriz (LINHAS e
COLUNAS), isso vale tambm para o Scilab. Assim deve-se implementar um mecanismo que
controle o valor do ndice da linha e outro que controle o valor do ndice da coluna. Uma forma
mais simples de preencher todas as posies de uma matriz e controlar os ndices usando duas
estruturas de repetio. A estrutura de repetio mais simples a estrutura for. Sendo assim,
teremos uma estrutura for dentro da outra, uma controlando as linhas e outra controlando as
colunas.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 69

Controla as linhas

Controla as colunas

for li=1:Qtde_linhas
for co=1:Qtde_colunas
mat(li,co) = input("Informe um numero:");
end
end

Para preencher uma matriz sempre necessrio o uso de duas estruturas de repetio. A estrutura
for deve ser usada quando sabemos a quantidade de linhas e a quantidade de colunas, com isso,
sabemos previamente o nmero de vezes a repetio dever acontecer.
No exemplo, QtdeNumeros ter o mesmo valor do tamanho do vetor, ou seja, o nmero mximo
de valores armazenados no vetor.

2.4- Mostrando uma matriz


Para mostrar todos os valores de uma matriz vetor, a estrutura ser muito parecida com a anterior.
Observe que foram usadas duas estruturas de repetio (for) e dentro, em vez, de usar o input(), foi
usado o mprintf(). Com o mprintf possvel mostrar na tela o valor da linha e da coluna da matriz,
alm do valor armazenado.

for li=1:Qtde_linhas
for co=1:Qtde_colunas
mprintf("Linha %d Coluna %d = %.2f", li, co mat(li,co));
end
end

Observe o exemplo 1, que usa duas estruturas de repetio for para armazenar um valor em cada
posio da matriz notas. Em seguida, usa outras duas estruturas de repetio for para mostrar todos
os valores armazenados na matriz notas.

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 70

Exemplo 1:

clear;
clc;
for li=1:3
for co=1:4
notas(li,co) = input("Informe uma nota:");
end
end
for li=1:3
mprintf("\n Aluno %d: ", li);
for co=1:4
mprintf("Nota %d: %.2f", co,notas(li,co));
end
end
Tela do Console, ao executar o programa...

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 71

Outra forma de mostrar os valores armazenados em uma matriz usando a funo disp(), dentro
dela o nome da matriz. Essa funo ir mostrar cada um dos valores armazenados na matriz (como
mostra o exemplo 2).

Exemplo 2:

Tela do Console, ao executar o


programa...

clear;
clc;
for linha=1:3
for coluna=1:4
mat(linha,coluna) = input("Informe um
numero:");
end
end
disp("Valores da Matriz: ");
disp(mat);

Exerccios
1- Faa um programa que preencha uma matriz 2 x 4 com nmeros inteiros, calcule e mostre na
tela:

a quantidade de elementos entre 12 e 20 em cada linha;


a mdia dos elementos pares da matriz.

2- Faa um programa que preencha uma matriz de tamanho 10 x 10, considere que cada posio i, j
dever conter o valor (i * j). Logo em seguida imprima o contedo da matriz.
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 72

3- Observe o cdigo abaixo. Quais so os valores da matriz que sero impressos na tela? Faa o
chinesinho para esse programa.

clear;
clc;
cont=1;
for i=1:3
for j=1:4
mtrx(i,j)=cont+2;
cont=cont+1;
end
end
mprintf("\n %.2f",mtrx(1,1));
mprintf("\n %.2f",mtrx(1,2));
mprintf("\n %.2f",mtrx(2,3));
4- Faa um programa que preencha uma matriz 8 x 6 com nmeros. Em seguida, calcule e mostre a
mdia dos elementos das linhas da matriz.
5- Faa um programa que receba o estoque atual de trs produtos, armazenados em quatro armazns
e coloque esses dados em uma matriz 4 x 3. Em seguida, o programa dever calcular e mostrar:
a) a quantidade de itens armazenados em cada armazm
b) qual armazm possui maior estoque do produto 2
c) qual armazm possui menor estoque do produto 1

Produto 1

Produto 2

Produto 3

Armazm 1
Armazm 2
Armazm 3
Armazm 4

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 73

Encontrou algum erro, ficou com alguma dvida???


Entre em contato:
Email: ivre.marjorie@gmail.com
Mais informaes: www.professoresalgoritmos.com
Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Mais informaes: www.professoresalgoritmos.com


Curta nossa pgina no Facebook: www.facebook.com/professoresalgoritmos

Pgina 74