Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
APOSTILA DE INFORMTICA II
Engenharia Civil
Professor: Jlio Csar Dillinger Conway, DSc
Agosto/2015
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
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:
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));
Muda o Diretrio
de trabalho.
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?
Faa um programa em SciLab que receba 4 notas e seus respectivos pesos e calcule a
mdia ponderada
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:
Para cada questo, faa um programa em Scilab, para resolver os problemas abaixo.
1.
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:
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
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.
Pgina 7
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
Pgina 8
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) );
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.
Pgina 10
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
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
Pgina 12
Pgina 13
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 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:
Pgina 15
Pgina 16
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.
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 );
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.
Pgina 20
Sada do Programa:
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]
-->vet=[5,1.3,-21]
vet =
5.
1.3 - 21.
Usando-se espao em branco como separador dos elementos:
7.2 - 11.
6. 7. 8. 9.
Pgina 22
Atribuindo valores
Vet(0) = 10
Vet(2) = 34
vet
10
0
34
2
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:
Exerccio 4: Faa um programa que leia a nota de 15 alunos e armazene em um vetor. Calcular
e exibir:
Exerccio 5: Faa um programa que leia 15 nmeros, armazene em um vetor. Calcular e exibir
qual os dois maiores nmeros armazenados no vetor.
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.
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:
Pgina 26
Exerccios
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> )
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.
Pgina 29
3) Para test-la, chame a funo, inserindo entre parnteses, os valores dos dois
nmeros para calculo da mdia.
Pgina 30
Exerccios
Pgina 31