Sei sulla pagina 1di 31

Pontifcia Universidade Catlica de Minas Gerais

Campus Belo Horizonte Ncleo Universitrio So Gabriel


Curso: Engenharia Civil
Disciplina: Informtica II

APOSTILA DE INFORMTICA II
Engenharia Civil
Professor: Jlio Csar Dillinger Conway, DSc
Agosto/2015

UNIDADE 1 Introduo ao Scilab


O Matlab um programa voltado para a rea cientfica, sendo completo e com suporte
para praticamente todas as reas cientficas. um programa pago (e caro). Em geral
somente grandes empresas e instituies educacionais possuem cpias autnticas.
Assim, seria difcil para os alunos praticarem em casa, o que fundamental para o
aprendizado. Felizmente existe uma verso mais simples do Matlab, conhecida com
Scilab, e que pode ser obtida livremente na Internet.
Assim, vamos nos familiarizar com o Scilab para poder utiliz-lo em casa e
posteriormente usaremos o Matlab no laboratrio. Como uma verso paga, o Matlab
mais complexo, entretanto, tudo o que for feito no Scilab, certamente poder ser feito
no Matlab, com alteraes mnimas.
Regras para nomes das variveis em SciLab:
- No pode ter espaos
- Sempre comea com uma letra
- Pode conter nmeros, com exceo do primeiro caractere, e tambm alguns caracteres
especiais (_, #, $, ! e ?)
- Caractere minsculo ou maisculo diferenciado
- So considerados os primeiros 24 caracteres
- Palavras-chave no podem representar nomes de variveis
Atribuio de valores
Armazena informao dentro da varivel, ou seja, na rea de memria associada a ela.
A varivel assume o tipo da informao atribuda.
- Em algoritmo:
declare idade numrico;
declare nome literal;
declare sexo literal;

idade 80;
nome Pedro;
sexo M;

- Em SciLab:
idade = 80;
nome = Pedro;
sexo = M;
O sinal = utilizado para atribuio de valores.
O sinal = = utilizado para comparar se um contedo igual a outro.
Entrada de Dados
Armazena os dados informados pelo usurio atravs de um dispositivo de entrada
(teclado).
Em SciLab utilizado o comando input.
Sada de Dados
Exibe os dados no dispositivo de sada (tela).
Em SciLab utilizado o comando disp.
Informtica II - Prof. Jlio Conway

Pgina 2

Antes de executar o primeiro programa, abra o SciLab.

A seguinte tela (do prompt) dever aparecer:

Nesta tela temos o modo comando. Neste curso vamos nos ater ao modo programao.
Para tanto, clique no primeiro cone, para abrir o editor de textos:

A tela de edio aparece, conforme mostra a figura abaixo.

Informtica II - Prof. Jlio Conway

Pgina 3

Agora se pode editar o primeiro programa exemplo, conforme abaixo. Para tanto,
sugere-se que se abram as duas telas, a de edio e a de compilao, uma ao lado da
outra, conforme a figura abaixo. Alm disso, crie um diretrio na sua rea de usurio,
para salvar seus programas. Sempre salve este diretrio, pois se costuma limpar esta
rea freqentemente. O comando pwd no prompt mostra o diretrio atual.
Exemplo:
clc;
num1 = input ("Informe primeiro numero: ");
num2 = input ("Informe segundo numero: ");
num3 = input ("Informe terceiro numero: ");
result = num1 * num2 * num3;
disp ("Resultado multiplicacao = " + string(result));

Aps editar o programa, salve-o e execute-o. No se esquea de sair da tela de edio


e ir para a tela de execuo (do prompt).

Muda o Diretrio
de trabalho.

Informtica II - Prof. Jlio Conway

Executa o
Programa
.

Pgina 4

Teste 1: Faa um programa em SciLab para receber 4 notas de um aluno e calcular sua
mdia aritmtica. Em seguida execute-o e verifique o resultado.
Teste 2: Alcebades participou de um concurso, onde foram realizadas provas de
Portugus, Matemtica, Biologia e Histria. Essas provas tinham peso 3, 3, 2 e 2,
respectivamente. Sabendo que Alcebades tirou 8,0 em Portugus, 7,5 em
Matemtica, 5,0 em Biologia e 4,0 em Histria, qual foi a mdia que ele obteve?

Portanto a mdia de Alcebades foi de 6,45.

Faa um programa em SciLab que receba 4 notas e seus respectivos pesos e calcule a
mdia ponderada

. Verifique a mdia do Alcebades.

Informtica II - Prof. Jlio Conway

Pgina 5

Exerccios
Estes exerccios devero ser feitos em sala de aula. Caso no d tempo,
resolver em casa e trazer pronto na prxima aula.
Dicas:

Operaes bsicas disponveis no Scilab:


+ Adio
- Subtrao
* Multiplicao
^ Potncia
' Transposio (por exemplo, se A uma matriz, ento A' sua
transposta)
/ Diviso

Scilab distingue entre letras maisculas e minsculas.

O comando clear sozinho remove todas as variveis no permanentes.

Outras variveis permanentes so:


%pi
inf
NaN
iej
realmin
realmax

razo entre o permetro da circunferncia e seu dimetro.


infinito, por exemplo, 1/0
No-numrico, por exemplo, 0/0
i=j=sqrt(-1) (raiz quadrada de 1)
menor nmero real positivo utilizvel
maior nmero real positivo utilizvel

Para cada questo, faa um programa em Scilab, para resolver os problemas abaixo.
1.

Ler um valor, calcular e exibir:


a. O triplo do valor lido;
b. O quadrado do valor lido (para calcular 2 x faa 2^x);
c. A raiz quadrada do valor lido (para calcular 2 faa sqrt(2));
d. A raiz cbica do valor lido.

2.

Ler dois valores diferentes, correspondentes aos lados de um retngulo, calcular e exibir sua
rea e seu permetro. Deve-se assumir que os valores informados no so iguais.

3.

Ler um valor correspondente ao lado de um quadrado, calcular e exibir sua rea e seu permetro.

4.

Ler dois valores diferentes correspondentes a base e a altura de um tringulo. Calcular sua rea.

5.

Ler um valor correspondente ao raio de um crculo, calcular e exibir sua rea e seu permetro.

6.

Ler valores (x1, x2, y1 e y2) que correspondem a posio de dois pontos no plano cartesiano.
Calcular e exibir a distncia entre os pontos.
D2 = (x1 x2)2 + (y1 y2)2

7.

Faa um programa que receba o ano de nascimento de uma pessoa e o ano atual, calcule e
mostre.: (No coloque apenas o resultado. Mostre um texto, por exemplo: Voc tem 34 anos.)
a) A idade dessa pessoa em anos;
b) Quantos anos ela ter em 2050;

8.

Faa um programa que receba a idade de uma pessoa. Calcule e mostre quantos dias, minutos e
segundos esta pessoa j viveu. Mostre conforme o exemplo a seguir, tendo o usurio digitado 10
anos:

Informtica II - Prof. Jlio Conway

Pgina 6

Voc j viveu 3650 dias, 87600 horas, 5256000 minutos e 315360000 segundos.
9.

Faa um programa que leia o custo de um espetculo teatral e o preo do convite desse
espetculo. Esse programa dever calcular e mostrar a quantidade de convites que devem ser
vendidos para que pelo menos o custo do espetculo seja alcanado.

10. Em Matlab ou Scilab, podemos definir um conjunto de valores da seguinte maneira, por
exemplo, uma varivel x que assume os valores de 1 a 10, de 1 em 1. Assim o comando
x=1:1:10 <ENTER> no Scilab produz a seguinte sada:
x = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Podemos por exemplo definir uma funo f(x) qualquer, por exemplo, f(x) = y =(x)2. No Scilab
seria:
y=x^2, o que produz, ao se digitar <ENTER>:
y

= 1. 4. 9. 16. 25. 36. 49. 64. 81. 100.

Podemos facilmente traar o grfico de y=(x)2, utilizando o comando plot: Em Scilab ficaria
assim:
plot(x,y) e teramos o seguinte grfico:

Obs: Todos estes comandos podem ser dados na linha de comando. Mas vamos fazer um programa.
Assim, aseado no exemplo acima faa um programa para construir os grficos das seguintes funes,
para x de 1 a 10 de 1 em 1 (letras a, b e c):
a.
b.
c.
d.

y = x3
y=10x + 25 (para multiplicar, utilize *)
y=log(x)
Faa x variar de 0 a 1000, de 5 em 5. Imprima o grfico de y=x.

Informtica II - Prof. Jlio Conway

Pgina 7

UNIDADE 2 Estruturas Condicionais


Na estrutura se (if), mostrada abaixo, as instrues 1 e 2 sero executadas apenas
quando a condio expressa frente de se resultar em verdadeiro:
Se ( valor_booleano )
ento
incio
instruo 1;
instruo 2;
fim
Fimse

Codificao de uma Estrutura de Seleo em Scilab:


if ( valor_booleano )
instruo 1;
instruo 2;
end

Quando for necessrio definir instrues para serem executadas quando a o resultado da
expresso for falso, deve-se utilizar a estrutura de seleo, aps o seno.
No exemplo abaixo, as instrues 1 e 2 devem ser executadas quando o valor booleano
for verdadeiro, e as instrues 3 e 4 quando falso.
Se ( valor_booleano)
ento
incio
instruo 1;
instruo 2;
fim
seno
incio
instruo 3;
instruo 4;
fim
fimse;

Em Scilab, tem-se:
Para o caso de prever instrues a serem executadas quando o valor booleano for falso:
if ( valor_booleano )
instruo 1;
instruo 2;
else
instruo 3;
instruo 4;
end

Informtica II - Prof. Jlio Conway

Pgina 8

O Scilab no requer um comando ento. Ele se torna implcito por estar


imediatamente aps ao if.
Exemplo: identificar o maior entre dois valores lidos.
Algoritmo
Declare A, B, MAIOR : real;
Leia (A, B);
Se ( A > B)
ento
MAIOR A;
seno
MAIOR B;
Fimse;
Escreva ( MAIOR );
Fim.

Codificao em Scilab:
A = input('Digite o primeiro valor: ');
B = input('Digite o segundo valor: ');
if (A>B)
MAIOR = A;
else
MAIOR = B;
end
disp('O Maior valor digitado = ' + string(MAIOR) );

Agora execute este cdigo no Scilab.


Operadores booleanos
Usados quando necessrio avaliar mais que um valor booleano.
E (conjuno)..............AND.......... & (em Scilab)
OU (disjuno)..............OR........... | (em Scilab)
NO (negao)............NOT......... ~ (em Scilab)
possvel definir variveis booleanas, como abaixo:
X 5;
Z (X > 2) & (X < 5) // Z uma varivel booleana e armazenar falso
AND: resulta em verdade apenas quando ambos os operandos so verdadeiros.
OR: Resulta em verdade quando pelo menos um dos operandos for verdadeiro.
NOT: inverte o valor booleano. Por exemplo, NOT false resulta em verdadeiro.

Informtica II - Prof. Jlio Conway

Pgina 9

Exerccios
1. Fazer um programa que identifica se trs valores lidos correspondem a um tringulo
ou no, baseado no algoritmo abaixo. Lembrar que, em todo tringulo, cada lado
menor que a soma dos outros dois.
Algoritmo
Declare A, B, C : real;
Leia (A, B, C);
Se ( (A < B+C) AND (B < A+C) AND (C < A+B) )
ento
Escreva ( um tringulo);
seno
Escreva (No um tringulo);
Fimse;
Fim.

2. Crie uma nova verso para o programa anterior de forma que, aps validar o
tringulo, identifique se ele um tringulo eqiltero, escaleno ou issceles.
3. Faa um programa em Scilab, que recebe um nmero inteiro, verifica e exibe
mensagem se o nmero par ou mpar.
4. Faa um programa em Scilab, que recebe dois nmeros e um operador (caractere).
Faa o calculo definido com os dois valores e exiba o resultado.
5. Faa um programa em Scilab, que recebe dois nmeros e verifica se o primeiro
nmero ou no divisvel pelo segundo nmero.
6. Faa um programa em Scilab, que recebe trs notas de um aluno, calcula sua mdia
aritmtica e exibe mensagem conforme abaixo:
Mdia < 60 Reprovado
Mdia >= 60 e <=70 Aprovado conceito D
Mdia > 70 e <=80 Aprovado conceito C
Mdia > 80 e <=90 Aprovado conceito B
Mdia > 90 Aprovado conceito A
7. Escreva um programa em linguagem SciLab que recebe 3 nmeros informados pelo
usurio. A seguir calcular e exibir na tela:
a quantidade de nmeros que so divisveis por 3;
a quantidade de nmeros que so divisveis por 5;
a quantidade de nmeros que so divisveis por 3 e por 5 ao mesmo tempo.
8. Escreva um programa em linguagem SciLab que recebe duas datas informadas pelo
usurio. Cada data composta por trs valores inteiros, para dia, ms e ano. O
programa deve determinar qual data cronologicamente maior e imprimir: a maior
data : dd/mm/aaaa.

Informtica II - Prof. Jlio Conway

Pgina 10

UNIDADE 3 Estrutura de Seleo Encadeada Select Case


As vezes ocorrem situaes onde existem muitas estruturas if..else..if..else...... Nestes casos
existe uma alternativa mais elegante e menos confusa, que o comando comando select/case.
O comando select/case permite selecionar uma entre vrias aes alternativas. O comando
select/case tem um formato limpo e claro.
A instruo select/case consiste em:
- palavra-chave select seguida do nome de uma varivel ou de um nmero constante entre
parnteses
- o corpo do comando select composto de vrios casos case rotulados por uma constante e
opcionalmente um caso default else
A expresso entre parnteses aps a palavra-chave select determina para qual caso ser
desviado o controle do programa.
O corpo de cada caso composto por qualquer nmero de instrues.
Sintaxe:
select <expressao>
case <expressao 1> then
<comandos 1>
case <expressao 2> then
<comandos 2>
case <expressao 3> then
<comandos 3>
. . .
case <expressao n> then
<comandos n>
else <comandos e>
end

Se o rtulo de um caso case for igual ao valor da expresso do select, a execuo comea nele.
Se nenhum caso for satisfeito executada a opo else. No pode haver casos com rtulos
iguais.
Exemplo Programa para ler uma opo

clc;
clear;
opcao = input ("Informe a opcao desejada:");
select (opcao)
case 1 then
disp("Escolheu opcao 1");
case 2 then
disp("Escolheu opcao 2");
else
disp("Informou opcao invalida");
end

Informtica II - Prof. Jlio Conway

Pgina 11

Exerccios
Exerccio 1 Refaa o programa do laboratrio anterior que receba dois nmeros e um
operador ( +, -, *, / ), onde deve-se realizar a operao determinada pelo operador com os dois
nmeros recebidos. Acrescente os operadores ^ (exponenciao) e % (mdulo). Utilize select.
Exerccio 2 Faa um programa que receba um nmero. Se o nmero estiver entre 1 e 12,
imprima o ms correspondente. Caso contrrio imprima O nmero no corresponde a nenhum
ms.. Utilize select.
Exerccio 3 Faa um programa para construir um menu de opes. Quando digitada uma
opo, o programa mostra qual foi a opo digitada e depois termina. Depois incluiremos um
comando while. O menu tem 6 opes. Assim, se for digitado 1, imprima Opo 1; se for
digitado 2, imprima Opo 2, e assim por diante. Se for digitado um nmero que no est no
menu, deve-se imprimir: Opo Invlida. Utilize select. Veja abaixo:
Menu de Opes
[1] Opo 1
[2] Opo 2
[3] Opo 3
[4] Opo 4
[5] Opo 5
[6] Sair
Exerccio 4 Desafio: Sabendo que a estrutura do comando while em Scilab como mostrado
abaixo, coloque o menu de opes acima dentro de um while. O programa fica em loop at ser
digitada a opo 6.

while (valor_booleano)
...
end

Informtica II - Prof. Jlio Conway

Pgina 12

UNIDADE 4 Estruturas de Repetio - While


Estruturas de Repetio
As estruturas de repetio proveem mecanismos para que uma ou mais instrues sejam
executadas em mais que uma iterao.
Uma estrutura de repetio tambm denominada lao, ou loop. As instrues que
compem o corpo do lao podem no serem executadas, executadas uma ou diversas
vezes. Por isto necessrio um mecanismo que assegure um momento em que a
repetio finalizada, dando continuidade ao algoritmo.
A linguagem de programao para o Scilab prov, a princpio, duas diferentes maneiras
de construir laos:
1. Estrutura de repetio controlada por valor booleano (lgico);
2. Estrutura de repetio por varivel de controle.

Estrutura de Repetio controlada por valor booleano


Um lao controlado por valor booleano deve conter, em seu incio, algum mecanismo
que resulte em um valor lgico (verdadeiro ou falso). O corpo do lao (as instrues
descritas entre o incio e o trmino da estrutura de repetio) dever ser executado
enquanto a condio for verdadeira.
Ao escrever algoritmos, este mecanismo pode ser descrito como abaixo:
...
Enquanto (valor_booleano)
...
fimenquanto;
...
As instrues entre Enquanto e fimenquanto podem no ser executadas, isso ocorre
quando o valor_booleano for falso logo na primeira vez. Neste caso, a execuo
desviada para a primeira instruo aps fimenquanto.
As instrues entre Enquanto e fimenquanto sero repetidas enquanto o valor
booleano for verdadeiro. Quando falso, a execuo sair do lao.
Esta estrutura se parece com a estrutura de seleo Se, pois as instrues so
executadas apenas se o valor booleano for verdadeiro. Entretanto, um retorno ao incio
da estrutura Enquanto sempre requerido, a fim de decidir se uma nova iterao
dever ocorrer ou no.

Em Scilab, este lao deve ser codificado da seguinte maneira:


...
while (valor_booleano)
...
end
...
Informtica II - Prof. Jlio Conway

Pgina 13

Exemplo: O programa abaixo calcula a soma de 5 valores lidos (informados pelo


usurio):
cont=1;
SOMA=0;
while( cont <= 5)
num = input("Digite o " + string(cont) + ".o nmero: " );
SOMA = SOMA+num;
cont = cont + 1;
end
disp("Soma= " + string(SOMA) );
Em algoritmo:
Algoritmo
Declare cont, SOMA: inteiro;
cont 1;
SOMA 0;
Enquanto (cont <=5)
Escreva Digite um nmero: ;
Leia num;
SOMA = SOMA + num;
Fimenquanto
Fim

Informtica II - Prof. Jlio Conway

Pgina 14

Exerccios
Exerccio 1: Construa um programa em Scilab que escreva na tela os termos de uma
P.A. (progresso aritmtica), de acordo com o algoritmo abaixo. O primeiro termo(t), a
razo(r) e o nmero de termos(n) devero ser informados pelo usurio. Teste o
programa.
Algoritmo
Declare T, R : real;
cont, N : inteiro;
Leia ( T, R, N );
cont 1;
Enquanto (cont N)
Escreva ( T );
cont cont + 1;
T T + R;
fimenquanto;
Fim.

Exerccio 2: Deve-se ler um nmero indeterminado de valores reais at que o valor


zero seja fornecido. Ao final, dever ser informada a soma dos valores lidos.

Exerccio 3: Fazer um programa que receba nmeros inteiros. Ao receber um nmero,


o programa deve calcular e imprimir o seu fatorial. Para sair do programa, o usurio
deve digitar -1.

Exerccio 4: Fazer um programa para imprimir os 20 primeiros termos da srie de


Fibonacci:
1 1 2 3 5 8 13 21 ...

Exerccio 5: Faa um programa em C++ que receba notas de alunos de uma classe. O
nmero de alunos indeterminado. Para parar, deve haver uma mensagem Deseja
continuar (Sim/No). Cada aluno possui duas notas. Calcule e mostre:
a) A mdia aritmtica das duas notas de cada aluno;
b) A mensagem que est na tabela a seguir:

Informtica II - Prof. Jlio Conway

Pgina 15

c) O total de alunos aprovados;


d) O total de alunos de exame;
e) O total de alunos reprovados;
f) A mdia da classe.
Exerccio 6: Faa um programa para simular uma calculadora, atravs de um menu de
opes. Cada opo uma operao matemtica da calculadora com um ou dois
nmeros. Caso seja digitada a ltima opo, o programa termina. Caso contrrio,
mostra o resultado da operao e fica aguardando ENTER. Aps o ENTER, o
programa volta a mostrar o menu e aguarda nova opo. Se for digitado um nmero que
no est no menu, deve-se imprimir: Opo Invlida. Utilize os comandos while e
select.
Exemplo da Calculadora (pode colocar do jeito que est abaixo)
Menu de Opes
[1] X +Y
[2] X - Y
[3] X * Y
[4] X / Y
[5] X % Y
[6] X
[7] X2
[8] X3
[8] XY
[9] 1/X
[10] log10(X)
[11] TERMINA

Informtica II - Prof. Jlio Conway

Pgina 16

UNIDADE 5 Estrutura de Repetio com varivel de controle


Esta estrutura prov uma maneira simples e eficiente para construir laos quando as
iteraes puderem ser controladas por uma varivel com as seguintes caractersticas:
1) Possuir um limite inferior bem definido;
2) Possuir um limite superior bem definido;
3) Possuir um valor de incremento ou decremento (a cada iterao) bem definido. O
valor a ser incrementado ou decrementado da varivel a cada iterao
denominado passo.
Em algoritmo:
Para <varivel> de <limite_inferior> at <limite_superior> passo <valor> faa
...
fimpara;

Estrutura de repetio com varivel de controle usada quando se sabe o nmero exato
de iteraes que devem ocorrer. Quantas vezes as instrues sero executadas.

Codificao em Scilab
O comando for utilizado para estabelecer uma estrutura de repetio com varivel de
controle. O comando end encerra o lao.
...
for varivel = valor_inicial : incremento : valor_final
corpo do lao (instrues)
end
...
frente do for deve ser utilizada uma varivel de controle, estabelecendo seu limite
inferior (valor inicial) e limite superior (valor final).
Exemplo: O programa abaixo calcula a soma de 5 valores lidos (informados pelo
usurio):
clc;
SOMA=0;
for cont = 1 : 5
num = input("Digite o " + string(cont) + ".o nmero: " );
SOMA = SOMA+num;
end
Note que neste formato o passo (incremento) foi omitido. O passo determina o valor
que dever ser incrementado na varivel de controle a cada iterao.
Ao ser omitido o passo, assume-se ser este igual a 1. Quando diferente, o passo deve
ser informado entre o valor inicial e o valor final da varivel de controle.
Observe o exemplo abaixo, onde so exibidos os nmeros pares entre 10 e 20.
Informtica II - Prof. Jlio Conway

Pgina 17

for num = 10 : 2 : 20
disp( num );
end
Neste formato, o comando for deve ser lido da seguinte maneira:
Para num variando de 10, em passo 2, at 20.
Veja o programa rodando:

Obs: para sair de um comando de repetio (for, while) utiliza-se o comando break. Ao
ser executado, o fluxo do programa vai para o comando aps o end do for ou while.

Informtica II - Prof. Jlio Conway

Pgina 18

Exerccios
1) Dentre um conjunto de 10 nmeros reais lidos, faa um programa para calcular e
escreve a quantidade de nmeros POSITIVOS e a quantidade de nmeros
NEGATIVOS.
2) Faa um programa e Scilab para calcular:

3) Faa um programa e Scilab para mostrar que a soma dos n primeiros nmeros
mpares igual ao quadrado de n, fornecido pelo usurio.
4) Dentre um conjunto de 30 nmeros reais lidos, faa um programa para mostrar o
maior, o menor e a mdia dos 30 nmeros.
5) Identifique os valores que sero escritos na tela aps a execuo de cada cdigo
abaixo.
1.a)
A=5;
B=3;
for i = 0 : 3
disp(A);
A = A + B;
B = B + 1;
end
disp(string(A) + ', ' + string(B) + ', ' + string(i));
1.b)
X=4;
Y=2;
while( X < 10 )
disp(X);
X = X + Y;
Y = Y + 2;
end
disp(string(X) + ', ' + string(Y));
1.c)
S = 0;
for X = 100 : 5 : 150
disp(string(X) + ', ');
S = S + X;
end
disp( S );

Informtica II - Prof. Jlio Conway

Pgina 19

1.d) Escreva 3 programas em Scilab para implementar as opes 1.a, 1.b e 1.c e
confira suas
respostas.

Laos encadeados
Uma estrutura de repetio descreve um lao (loop). O conjunto de instrues que
devero ser repetidas denominado corpo do lao.
O corpo de um lao deve ser executado enquanto a condio que autoriza uma nova
iterao for verdadeira.
O corpo de um lao pode conter outro lao. Neste caso, para cada iterao do lao
mais externo devero ocorrer todas as iteraes do lao mais interno.
Exerccios
1. Identifique os valores que sero exibidos na tela aps a execuo de cada cdigo
do programa abaixo.
1.a)
for i = 0 : 1
disp(i);
for j = 5 : 2 : 9
disp(j);
end
end
1.b)
for i = 0 : 1
for j = 5 : 2 : 9
disp(string(i) + ', ' + string(j));
end
end
1.c) Escreva dois programas em Scilab para implementar as opes 1.a e 1.b e
confira suas respostas.

Informtica II - Prof. Jlio Conway

Pgina 20

Construindo Grficos: Parte 2


J desenhamos um grfico bsico. Agora vamos acrescentar ttulos e cores aos nossos
grficos. Veja o programa abaixo, que gera a funo sen(x):
clc;
clear;
// gera o eixo x: vai de 0 a 4pi com intervalo de 0.1
x = 0 : .1 : 4*(%pi);
// f(x) = y que o seno(x) com valores para todos os valores de x
y = sin(x);
figure(1);

// indica uma figura nica

// title: ttulo do grfico


// xlabel: ttulo do eixo x
// ylabel: ttulo do eixo y
// fontsize (tamenaho da fonte): Seu valor deve ser um inteiro entre 0 e 5 que significa
8pt, 10pt, // 12pt, 14pt, 18pt e 24pt.
// color: cor do texto
title('Grfico do Seno','color','blue','fontsize',5)
xlabel('x','color','magenta','fontsize',6)
ylabel('seno(x)','color','magenta','fontsize',6)
// desenha a funo sen(x). O r significa que a cor da curva 'vermelho'
plot(x,y,'r')

Sada do Programa:

Exerccio: Baseado no exemplo acima, escreva um programa que reproduza o grfico


abaixo:

Informtica II - Prof. Jlio Conway

Pgina 21

UNIDADE 6 Vetores/Arranjos
Vetor/Arranjo:
conjunto de variveis homogneas (contedo do mesmo tipo);
identificado por um mesmo nome (o nome do vetor) sendo diferenciado apenas por um
ndice
Em Matlab/Scilab vetor pode ser definido das seguintes formas:
elemento por elemento;
por intermdio de expresso;
usando-se funo linspace;
Definio de Vetor elemento por elemento
<vetor> = [ e1, e2, ... en]

Usando-se virgula como separador dos elementos. Tente na janela de comandos do


Matlab todos os comandos abaixo.

-->vet=[5,1.3,-21]
vet =
5.

1.3 - 21.
Usando-se espao em branco como separador dos elementos:

-->vet1=[3 7.2 -11]


vet1 =
3.

7.2 - 11.

Definio de Vetor por intermdio de expresso


Usado quando os valores do vetor forem igualmente espaados.
<vetor> = <valor inicial> : <incremento> : <valor final>
Ex.: vetor com primeiro elemento igual a 10, segundo 15, terceiro 20 at que o ltimo seja igual
a 40:
-->vet = 10:5:40
vet =
10.

15. 20. 25. 30. 35. 40.

Se o incremento desejado for igual a 1 ele pode ser omitido.


-->vet2=5:9
vet2 =
5.

6. 7. 8. 9.

Informtica II - Prof. Jlio Conway

Pgina 22

Definio de Vetor atravs da funo linspace


Para construir um vetor definindo o nmero desejado de elementos.
<vetor> = linspace( <valor inicial>, <valor final>, <numero de elementos>
Ex.: vetor com primeiro elemento 10, ltimo elemento 40 exibindo 7 elementos:
-->vetl = linspace(10,40,7)
vetl =
10.

15. 20. 25. 30. 35. 40.

Alterando a quantidade de elementos:


-->vetl = linspace(10,40,4)
vetl =
10.

20. 30. 40.

Atribuindo valores
Vet(0) = 10
Vet(2) = 34
vet
10
0

34
2

Informtica II - Prof. Jlio Conway

Pgina 23

Exerccios
Exerccio 1: Faa um programa que leia 5 nmeros, armazene em um vetor. Calcular e exibir a
soma dos nmeros armazenados.
Exerccio 2: Faa um programa que leia 6 nmeros, armazene em um vetor. Calcular e exibir
qual o maior nmero armazenado.
Exerccio 3: Faa um programa que leia 20 nmeros, armazene em um vetor. Calcular e exibir:

A quantidade de nmeros mltiplos de 2;


A quantidade de nmeros mltiplos de 3;
A quantidade de nmeros NO mltiplos de 2 ou 5;

Exerccio 4: Faa um programa que leia a nota de 15 alunos e armazene em um vetor. Calcular
e exibir:

A menor nota e a posio do vetor em que est armazenada;


A maior nota e a posio do vetor em que est armazenada;
A mdia das notas da turma;

Exerccio 5: Faa um programa que leia 15 nmeros, armazene em um vetor. Calcular e exibir
qual os dois maiores nmeros armazenados no vetor.

Informtica II - Prof. Jlio Conway

Pgina 24

UNIDADE 7 Matrizes
Definio
Varivel composta homognea bidimensional formada por variveis, do mesmo tipo, com o
mesmo identificador (nome).
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.
Criao de Matriz (execute os seguintes comandos na tela de execuo)
Nome = [val1 val2 ; val3 val4]
Nome = [val1,val2;val3,val4]
-->mat = [1 2 3 ; 4 5 6]
mat =
1.
4.

2. 3.
5. 6.

-->mat1 = [10,11,12;13,14,15]
mat1 =
10.
13.

11. 12.
14. 15.

Atribuio de valores
Nome (lin,col) = valor
-->mat(1,1)=57
mat =
57. 2. 3.
4. 5. 6.
Ao atribuir valor a um elemento no existente, o Scilab aumenta a matriz automaticamente,
preenchendo-a com elementos nulos.
-->mat(4,4)=23
mat =
57. 2. 3. 0.
4. 5. 6. 0.
0. 0. 0. 0.
0. 0. 0. 23.
Acessando e modificando os elementos da matriz
-->mat(2,3)*2
ans =
12.
Os elementos tambm podem ser acessados em conjunto
-->mat([1,2],2)
ans =
2.
5.

Informtica II - Prof. Jlio Conway

Pgina 25

-->mat2 = mat([1:2],[1:4])
mat2 =
57. 2. 3. 0.
4. 5. 6. 0.

Podemos gerar uma matriz de nmeros aleatrios utilizando o comando rand. Por exemplo:

a. rand(m1,m2) : uma matriz randmica de dimenso m1 por m2.


b. rand(): sem argumentos, fornece um escalar cujo valor muda a cada vez que
referenciado.
c. rand('uniform'): o gerador corrente acertado como gerador randmico
uniforme. Nmeros aleatrios so distribuidos uniformemente e pertencem ao
intervalo (0,1).
Por exemplo, para gerarmos uma matriz randmica de 3x3, pode-se fazer como na Figura
abaixo (execute os comandos):

Informtica II - Prof. Jlio Conway

Pgina 26

Exerccios

Exerccio1: Faa um programa que l os elementos informados pelo usurio e armazena em


uma matriz com 3 linhas e 4 colunas. Depois o contedo da matriz deve ser exibido na tela.
Exerccio 2: Faa um programa que l nmeros informados pelo usurio e armazena em uma
matriz com 2 linhas e 3 colunas. Exibir a matriz preenchida e a soma de todos os valores
armazenados.
Exerccio 3: Faa um programa que l nmeros informados pelo usurio e armazena em uma
matriz de tamanho 3 por 4, imprima quantidade de nmeros pares e mpares.
Exerccio 4: Faa um programa que l nmeros informados pelo usurio e armazena em uma
matriz de tamanho 5 por 5. Em seguida faa:

a. Imprima os elementos da diagonal principal da matriz;


b. Imprima a soma dos elementos abaixo da diagonal principal da matriz;
c. Imprima a media dos elementos acima da diagonal principal da matriz;
Exerccio 5: Faa um programa que l nmeros informados pelo usurio e armazena em uma
matriz de tamanho 4 por 3. Em seguida imprima a sua matriz transposta.
Exerccio 6: Escrever um procedimento que gera uma matriz randmica A (12,13) e divide todos os 13
elementos de cada uma das 12 linhas de A pelo valor do maior elemento em mdulo daquela linha,
armazenando o novo valor em outra matriz (matriz A modificada). Escrever outro procedimento que
imprime a matriz A lida e a matriz A modificada. Faa um programa que use os procedimentos anteriores.

Informtica II - Prof. Jlio Conway

Pgina 27

UNIDADE 8 Funes
Funes so sub-rotinas que geram um valor aps sua execuo.
Exemplo: o resultado de um clculo.
O tipo de uma funo corresponde ao tipo do dado por ela retornado.
Procedimentos so funes que no geram um valor a ser retornado.
As sub-rotinas aumentam o grau de reusabilidade de uma soluo. O cdigo escrito
pode ser reutilizado em outros problemas.
Funes em Scilab
Uma funo em Scilab pode gerar mais que um valor, retornando um conjunto de
valores.
Os argumentos de uma funo so valores que a funo precisa receber no momento
em que for chamada.
Uma funo definida pelos parmetros de entrada, valores que ela recebe e pelos
parmetros de sada, valores que ela gera.
Exemplo: funo que calcula a soma de dois numeros.
Dois parmetros de entrada (os dois operandos)
Um parmetro de sada (o resultado da adio dos dois valores recebidos).
Exemplos de funes providas pelo Scilab:
Para calcular o resto da diviso inteira
modulo( <dividendo>, <divisor> )
Para calcular o seno:
sen( <valor> )
Para calcular a raiz quadrada:
sqrt( <valor> )

Scilab prov a possibilidade do usurio implementar novas funes: funes definidas


pelo usurio.
Forma para implementar funes:
function [p1, p2, p3, ..., pn] = nome_da_funo(a1, a2, a3, ..., an)
corpo da funo
endfunction
[p1, p2, p3, ..., pn] corresponde aos parmetros de sada
(a1, a2, a3, ..., an) corresponde aos parmetros de entrada (argumentos).
Informtica II - Prof. Jlio Conway

Pgina 28

Geralmente as funes retornam um nico valor. Neste caso, os colchetes podem ser
omitidos, como abaixo:
function p = nome_da_funo(a1, a2, a3, ..., an)
corpo da funo
endfunction
p a nica varivel a receber o valor de retorno
Exemplo: funo para calcular a mdia entre dois valores.

function total=Media(val1, val2)


soma = val1+val2;
total = soma/2;
endfunction
O valor gerado pela funo atribudo varivel p ( parmetro de sada).

Tipos de arquivo de funo em Scilab:


a) Arquivos de comandos: extenso .SCE. So executados atravs do comando exec.
b) Arquivos de funes: extenso .SCI. Carregado com o comando getf ou com o
comando exec.
Exemplo: Funo que calcula a mdia entre dois valores
1) Digite a funo pelo editor de textos do Scilab. Salvar o arquivo alterando o tipo
SCI.

2) No ambiente de prompt do Scilab, utilize o comando getf ou exec seguido do nome


do arquivo. Todas as funes construdas ficam disponveis para o uso.

Informtica II - Prof. Jlio Conway

Pgina 29

3) Para test-la, chame a funo, inserindo entre parnteses, os valores dos dois
nmeros para calculo da mdia.

4) Para chamar a funo dentro de um programa, basta colocar os dois arquivos (a


funo e o seu programa) no mesmo diretrio, ativar a funo com exec
nomeDaFuno e cham-la dentro do programa.

Informtica II - Prof. Jlio Conway

Pgina 30

Exerccios

1) Exerccios: Implemente cada funo e faa um programa que a utilize.


a) Construa uma funo que calcule a soma de dois nmeros.
b) Construa uma funo que calcule o maior entre dois valores reais. Teste-a.
c) Construa uma funo que calcule a quantidade de nmeros negativos em um
conjunto de 5 nmeros reais. Teste-a.
d) Crie uma funo que retorna o maior entre 10 nmeros, armazenados em um vetor.
Para tanto crie a funo. Dentro do programa, crie um vetor de 10 elementos e
simplesmente passe o nome do vetor para a funo, e logicamente deve existir no
programa principal uma varivel para guardar o retorno da funo.
e) Crie uma Funo que retorna o menor entre X nmeros, onde X a quantidade
informada pelo usurio.
f) Implemente uma funo que calcula a soma de todos os nmeros de uma matriz. A
funo deve receber como parmetros a matriz preenchida e seu tamanho
(linhas/colunas). No programa principal deve-se solicitar ao usurio que informe o
tamanho da matriz e informe os nmeros para preencher a matriz.

Informtica II - Prof. Jlio Conway

Pgina 31

Potrebbero piacerti anche