Escolar Documentos
Profissional Documentos
Cultura Documentos
Elaborada por:
Daniel Leite Mesquita da Silva
Enzio Dias Carvalho
Gilmar Henrique Barbosa Carvalho
João Paulo Soares Cangussu
Nícollas Priosy Oliveira
Sérgio Vinicius Macedo Resende
Orientador:
Saulo Fernando dos Santos Vidal
Montes Claros
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA
Elaborada por:
Daniel Leite Mesquita da Silva
Enzio Dias Carvalho
Gilmar Henrique Barbosa Carvalho
Apostila da Disciplina de Programação para En-
João Paulo Soares Cangussu genharia Química do curso de Engenharia Quí-
Nícollas Priosy Oliveira mica do IFNMG - Campus Montes Claros.
Montes Claros
Sumário
2 PROGRAMAÇÃO ESTRUTURADA I . . . . . . . . . . . . . . . . . . . . . 11
2.1 Estruturas de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1 Expressões Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Variáveis Booleanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.3 Tipos de dados primitivos . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.4 Ordem de avaliação entre os operadores . . . . . . . . . . . . . . . . . . . 15
2.1.5 A estrutura de seleção simples if-end . . . . . . . . . . . . . . . . . . . . . 16
2.1.6 A estrutura de seleção multidirecional if-elseif-else-end . . . . . . . . . . . . 17
2.2 EXERCÍCIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5 PROGRAMAÇÃO ESTRUTURADA – IV . . . . . . . . . . . . . . . . . . . 34
5.1 Criação de listas com while . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.1 Contador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.2 Acumulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.1.3 Valor Sentinela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.4 Estruturas dentro do while . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6 PROGRAMAÇÃO ESTRUTURADA – V . . . . . . . . . . . . . . . . . . . . 38
6.1 O comando for como estrutura de repetição . . . . . . . . . . . . . . . . 38
6.2 Comparação entre as estruturas de repetição . . . . . . . . . . . . . . . 40
6.2.1 Repetições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.2.2 Contador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.2.3 Listas infinitas com valor de sentinela . . . . . . . . . . . . . . . . . . . . . 41
6.2.4 Proteções. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.3 EXERCÍCIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7 VETORES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.1 Tipos de Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.2 Operações com Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.2.1 Soma e Subtração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.2.2 Multiplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.2.2.1 Vetor e Escalar . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.2.2.2 Vetor e Vetor . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.3 Funções Vetoriais . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.3.1 Funções Padrões . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.3.2 Transposição de um vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.3.3 Concatenação / Encadeamento de vetores . . . . . . . . . . . . . . . . . . 47
7.3.4 Dimensionamento de vetores . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.3.5 Somatório dos valores de um vetor . . . . . . . . . . . . . . . . . . . . . . 48
7.4 Operações com o índice . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.5 Criação de vetor a partir de condições pré-postas sobre o vetor . . . . . 50
7.6 Condição sobre os elementos do vetor . . . . . . . . . . . . . . . . . . . 53
7.7 Troca de elementos de um vetor . . . . . . . . . . . . . . . . . . . . . . . 54
7.8 EXERCÍCIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8 MATRIZES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.1 Construção de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
8.2 Aplicação de Funções em Matrizes . . . . . . . . . . . . . . . . . . . . . 57
8.3 Transposição de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.4 Concatenação de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.5 Seccionamento de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.6 O Operador $ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.7 Atribuição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
8.8 Dimensão de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.9 Operações Escalar-Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . 65
8.10 Operações Matriz-Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.11 Solução de Sistemas de Equações Lineares . . . . . . . . . . . . . . . . 71
8.12 Transposta de Matrizes Complexas . . . . . . . . . . . . . . . . . . . . . 72
8.13 Matrizes de Zeros e Um . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.14 EXERCÍCIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9 POLINÔMIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
9.1 Como construir um polinômio: . . . . . . . . . . . . . . . . . . . . . . . 77
9.2 Funções Importantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.3 Operações Polinomiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9.4 Exercícios resolvidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
9.5 EXERCÍCIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . 84
10 FUNÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.1 EXERCÍCIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . 93
11 GRÁFICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.1 Alguns comandos importantes . . . . . . . . . . . . . . . . . . . . . . . 95
11.1.1 Função deff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.1.2 Função eval3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
11.2 Gráficos em 2 dimensões . . . . . . . . . . . . . . . . . . . . . . . . . . 96
11.2.1 Função plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
11.2.2 Função fplot2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
11.2.3 Função contour2d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11.3 Gráficos Tridimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.3.1 Função meshgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.3.2 Função plot3d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
11.3.3 Função mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
11.3.4 Função surf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
11.4 Trabalhando com Janelas Gráficas . . . . . . . . . . . . . . . . . . . . . 106
11.5 EXERCÍCIOS DE FIXAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . 109
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4
Os nomes que podem ser usados para serem variáveis tem algumas regras específicas:
É importante citar também a função do comando ponto e vírgula (“ ; “). Ele faz com que o
resultado da operação realizada não seja apresentado no prompt, ou seja, seja suprimido.
Ex.:
Além dos operadores, existem algumas funções matemáticas que são comuns que possuem
comandos específicos.
Exemplos:
• round(a)→ arredonda o valor da variável “a” para o inteiro mais próximo (Ex.: round(2.7)=3)
(Obs.: No caso de ser um valor exatamente na metade, como 4.5, este comando arredonda
para o inteiro para “cima”.);
• ceil(a)→ arredonda o valor da variável “a” para o inteiro para “cima” (Ex.: ceil(1.3)=2);
• floor(a)→ arredonda o valor da variável “a” para o inteiro para “baixo” (Ex.: floor(8.6)=8);
• modulo(a,b)→ faz a divisão entre “a” e “b” e retorna o resto da divisão entre os dois
(Atenção: O único valor que vai ser exibido é o RESTO da divisão).
1.4 Strings
String são usados para qualquer tipo de representação. Qualquer caractere pode ser usado e
na prática representam um texto. Para transformar uma variável em string, usa-se aspas simples
ou duplas.
–>a = "abcd"
a = abcd
–>b = ’efgh’
b = efgh
–>c = ’10’
c = 10
É importante mostrar que a variável “c” agora não é número e sim texto. Se fizermos
operações com ela, o programa irá considerá-lo um texto.
Ex.: –>A = a+c
A = abcd10
Capítulo 1. Comandos Básicos do Scilab 7
• % pi → representa o número π;
Ex.:
X = input (“Digite um número ”)
Digite um número 10
X = 10
Ex.:
X = input(“Digite algo”,”s”)
Digite algo —> Oi
X = Oi
disp(<string ou número>)
Ex.:
–> nome = “Valentina”
–> disp(“Seu nome é ” + nome)
Seu nome é Valentina
Para voltar uma resposta do programa de forma mais flexível pode-se utilizar a função printf().
printf(<formato>,<lista de dados>)
O <formato> é um string contendo o texto ou a forma que terá a resposta. Dentro do formato
os dados são substituídos por %g (dado numérico) ou %s (dado em string). Pode-se usar “\n”
para pular de uma linha para outra.
Ex.:
–>nome = "Joao";
–>altura = 1.65;
–>printf("A altura de %s é %g",nome, altura); A altura de Joao é 1.65
2. Faça um programa que receba dois números e informe a parte inteira da raiz quadrada do
produto entre eles.
3. Escreva um algoritmo que calcule a diferença entre dois números e a diferença dos
quadrados desses números.
(nn ∗ πn) + 2e
+ 5n3
90n2 + 36 + cos(n)
8. Uma empresa paga R$ 25,00 por hora de serviço. Sabendo que no final é descontado 2%
do valor bruto, escreva um algoritmo que, a partir da entrada de um valor qualquer de
horas trabalhadas por certo trabalhador, retorne o valor líquido recebido.
2 PROGRAMAÇÃO ESTRUTURADA I
• Se estiver chovendo retire as roupas do varal, caso contrário, deixe elas secando.
• Se eu não consigo entender a matéria vou estudar, caso contrário resolverei exercícios.
• Se um aluno estiver com nota abaixo de 40 está reprovado, acima de 60, aprovado e entre
40 e 60 fará prova final
Conforme exemplificado acima, essas estruturas de seleção servirão para escolher alguma
das diversas possibilidades abordadas.
As estruturas de repetição/sequência servem para repetir a execução de uma sequência de
comandos. Por exemplo:
Essas estruturas servem para resumir um programa que inicialmente seria extenso, ou seja,
otimizá-lo ou realizar operações dada uma condição.
Os três tipos de estruturas citados são conhecidos como estruturas de controle. As mais
utilizadas são IF (seleção), FOR (sequência) e WHILE (repetição), com elas pode-se construir
qualquer programa de computador.
Esse material tratará das estruturas de seleção bem como dos itens necessários para executá-lo,
como as expressões booleanas.
Operadores Relacionais
Operador Descrição
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
== Igual a
<> ou ∼= Diferente de
Fonte: Lacerda (2015)
Ex.:
Inicialmente foi definido para o x um valor, nesse caso x=5, em seguida pediu-se para
verificar se x é maior que 0, como essa afirmação é verdadeira, o programa retornou T de ‘true’
(verdadeiro em inglês), em seguida pediu-se para verificar se o produto de 2 por 3, que nesse
caso é 6 corresponde ao x, como essa afirmação é falsa o programa retornou F de ‘false’ (falso
em inglês).
As expressões booleanas podem ser combinadas utilizando operadores booleanos, são eles:
O quadro 3, a seguir, define os operadores e as prioridades quando combinados:
Ex.: Considerando a=2, b=5, c=3 e d=9 têm-se:
A primeira expressão compara se a variável a é maior que a variável b ou se a variável c é
menor que a c, comparando a expressão booleana com os valores predefinidos observa-se que
Capítulo 2. PROGRAMAÇÃO ESTRUTURADA I 13
Operadores Booleanos
Operador Descrição
& E (Conjunção)
| Ou (Disjunção não exclusiva)
∼ Não (Negação)
Fonte: Lacerda (2015)
A B A&B A|B ∼A
Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso
Verdadeiro Falso Falso Verdadeiro Falso
Falso Verdadeiro Falso Verdadeiro Verdadeiro
Falso Falso Falso Falso Verdadeiro
Fonte: Lacerda (2015)
a primeira parte da expressão é falsa, porém a segunda parte é verdadeira. Como a expressão
considera um ou outro o resultado verdadeiro prevalecerá conforme ilustrado no quadro 3.
A segunda expressão compara se uma expressão aritmética corresponde à outra. Como em
ambos os lados o resultado será 14, o resultado dessa expressão lógica será verdadeiro, ou seja, o
programa retornará T.
A terceira expressão é semelhante à segunda e compara se 27 é igual a 9, como o resultado
das expressões foram diferentes o programa retornará F de ‘false’.
OBS.: Cabe ressaltar que o operador ‘Igual a’ (==) é diferente do operador de atribuição (=).
Este é utilizado para atribuir algo para uma variável enquanto aquele é utilizado em expressões
booleanas para comparações.
Capítulo 2. PROGRAMAÇÃO ESTRUTURADA I 14
Primeiro atribuiu-se um valor verdadeiro para a variável a e um valor falso para a variável b,
ao definir a variável c como a e b, ela receberá o valor falso conforme demonstrado no quadro 3.
Nessa situação como o último valor atribuído foi um valor booleano, a variável a será do tipo
booleano. Observa-se que inicialmente a variável a era do tipo numérica, em seguida do tipo
string e, por fim, booleano.
A B A&B A|B ∼A
Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso
Verdadeiro Falso Falso Verdadeiro Falso
Falso Verdadeiro Falso Verdadeiro Verdadeiro
Falso Falso Falso Falso Verdadeiro
Fonte: Lacerda (2015)
Ex.:
∼ (2 < 5) | 40/5 == 10 & 6 + 2 > 5
∼ %t | 40/5 == 10 & 6 + 2 > 5
%f | 40/5 == 10 & 6 + 2 > 5
%f | 8 == 10 & 6 + 2 > 5
%f | 8 == 10 & 8 > 5
%f | 8 == 10 & %t
%f | %f & %t
%f | %f
F
Capítulo 2. PROGRAMAÇÃO ESTRUTURADA I 16
Onde, na terceira captura de tela, o programa não executou o comando da linha 6 pois a
condição descrita pela expressão booleana não foi verdadeira.
Capítulo 2. PROGRAMAÇÃO ESTRUTURADA I 17
√
y = 2x + x, se x ≥ 0
x
y = 3x , se x < 0
2
5. Faça um algoritmo que receba o nome de um aluno e sua nota (entre 0 e 100) e se sua nota
for igual ou maior que 60 retorne “O aluno (nome do aluno) foi aprovado”, caso contrário
retorne “O aluno (nome do aluno) foi reprovado”.
6. Analise os programas a seguir (sem executá-los no computador) e após informe qual seria
sua saída:
a) Primeiro programa;
clear
clc
a=30
b=10
c=15
if a>b then
b=a+b
end
if b>c then
c=c+b
printf("%g",c)
else
c=c-b
printf("%g",c)
end
Capítulo 2. PROGRAMAÇÃO ESTRUTURADA I 20
b) Segundo programa;
clear
clc
a=1
b=2
c=3
if b>a & b<c then
a=b*c
elseif b>c
b=a+c
else
disp(a)
end
e=2*a+c*a
printf("%g",e)
7. Numa empresa são dadas notas para cada funcionário, como forma de avaliá-lo. As
notas podem ir de 1 até 10 pontos e são avaliados produtividade, comunicação, inovação,
comprometimento e potencial. Faça um programa que receba o nome e a nota de cada um
dos pontos avaliados em um funcionário, calcule a média das notas e se a média for maior
ou igual a 9 volte: “Parabéns (nome do funcionário), você foi promovido.”, ou se a nota
estiver entre 4 e 9, volte: “(nome do funcionário) trabalhe mais e logo será promovido”,
caso contrário volte: “(nome do funcionário) você está demitido”.
8. Um casal está em uma sorveteria e quer comprar sorvete no quilo. Porém, eles tinham
somente 20 reais e o seu cartão de crédito. Escreva um algoritmo que receba a quantidade
de gramas de sorvete que eles compraram e diga se eles vão usar o cartão ou dinheiro
(preço do quilo: R$ 49,90).
21
3 PROGRAMAÇÃO ESTRUTURADA – II :
ANINHAMENTO DE SELETORES
• Caso chova, eu não lavarei o carro, mas, se a chuva for muito forte eu tiro o carro de
debaixo da árvore, se a chuva for amena, deixo ele lá.
• Se eu acordar depois das 8, penso se vejo o programa de culinária e faço almoço ou se vejo
o programa esportivo e compre almoço pronto. Caso eu acorde antes das 8, vou à escola.
Em ambos os casos acima, uma certa condição (chover; acordar em determinado horário)
resultam em ações diferentes. Essas ações também possuem condições (chover forte ou não; ver
o programa de culinária ou esportivo), contudo, estas condições estão relacionadas às primeiras
condições de tal forma que só ocorrerão caso a primeira condição de cada afirmação (chover e
acordar em determinado horário) ocorram.
Exemplo Resolvido 1
Escreva um programa que receba 3 notas de um aluno. Seu programa deve calcular a média
dessas notas e:
• Retornar “Aprovado com média _”, caso a média seja superior ou igual a 7
• Caso a média esteja entre 4 e 7, seu programa deve solicitar a nota da prova de recuperação,
calcular a nova média e, caso esta nova média seja superior ou igual a 8, retornar “Aprovado
com nota _”. Se for menor que 8, retornar “Reprovado com nota _”;
• Caso a primeira média for menor que 4, retornar “Reprovado com média _”.
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 22
A primeira condição que é imposta é a de que caso a média das 3 primeiras notas seja maior
ou igual a 7, o programa mostra que o aluno foi aprovado e encerra.
A segunda condição é a de que a nota esteja entre 4 e 7, duas outras condições acontecerão.
O programa apenas solicitará ao usuário a nota da prova de recuperação, calculará uma nova
média (variável nm) e avaliará o valor desta nova variável caso a condição de que a primeira
média calculada (variável m1) esteja entre 4 e 7, assim, todo o trecho do programa entre as linhas
11 e 19 está condicionado ao fato de a variável m1 estar entre dois valores. Sobre a variável nm
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 23
incidem as condições de o aluno ser aprovado caso esta seja superior ou igual a 8 e reprovado
nos outros casos.
Ainda sobre a primeira média, recai a condição de o aluno ser reprovado caso seu valor
resulte em qualquer valor inferior a 4.
Lembrando que o end fecha os if, assim, para uma quantidade n de comandos if utilizados, é
necessária uma quantidade n de comandos end para que o programa esteja correto.
Exemplo Resolvido 2
Escreva um programa que receba os três lados de um triângulo, avalie se aquelas medidas
podem formar um triângulo, e, caso seja possível, classifique o triângulo. Caso não seja possível,
retorne uma mensagem de erro.
Obs: para que um triângulo exista, é necessário que qualquer lado seja menor que a soma
dos outros dois. Um triângulo é chamado equilátero se todos os lados forem iguais, isósceles
caso dois lados sejam iguais e escaleno se dois quaisquer lados não possuem medidas iguais.
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 24
O if da linha 6 avalia a primeira condição de ser ou não um triângulo válido. Logo abaixo
dele, aninhado, o if da linha 7 começa a avaliar qual tipo de triângulo os lados inseridos formam.
Devido à aninhação, os comandos entre as linhas 7 e 13 apenas serão executados caso seja
verdadeira a condição avaliada pelo if da linha 6. Daí a ideia de “if dentro de if ”.
Caso o comando da linha 6 seja executado, novas condições serão avaliadas, aquelas que
indicam qual tipo de triângulo é formado pelos lados inseridos. Caso o comando da linha 6 não
seja executado, o programa pula direto para a linha 14, executando o else e finalizando. O end da
linha 13 encerra o if da linha 7, enquanto o end da última linha encerra o primeiro if inserido.
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 25
Os dois exemplos acima são simples e usados apenas para apresentar as ideias e conceitos do
aninhamento de seletores. Além das construções mostradas acima, infinitas outras podem ser
montadas a partir do problema que se deseja solucionar, com este conhecimento podendo ser
usado juntamente com os outros conteúdos que serão estudados mais à frente.
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 26
1. Faça um programa que receba duas cores da paleta abaixo e indique o resultado das
combinações dessas cores entre si. Cores na paleta: Azul, Vermelho, Amarelo.
2. Faça um programa que receba dois números naturais, x e y. Caso o primeiro seja maior,
verifique se ele é divisível pelo segundo. Se sim, seu programa deve informar que são
múltiplos, em caso negativo informe que não são múltiplos. Caso o segundo seja maior
que o primeiro retorne o valor da seguinte expressão:
4. Faça um programa que receba dois números, x e y, e indique se o logx y cumpre as condições
de existência de um logaritmo, caso exista, informe o valor desse logaritmo e em caso
contrário informe que não existe.
Condição de Existência de um Logaritmo:
loga b = c
b>0
a>0
a 6= 1
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 27
5. Em uma entrevista, os entrevistados estão sendo classificados de acordo com seu desempe-
nho social e conhecimento técnico. Para isso foram criados os seguintes códigos:
• Serão contratadas as pessoas que obtiveram uma soma de códigos menor ou igual a 4
e cuja média dos códigos seja menor ou igual a 1,5;
• Quem obteve uma média superior a 1,5 informe que ficou na lista de espera;
• O restante está dispensado.
6. Alunos do IFNMG campus Montes Claros estão realizando uma pesquisa para saber
quais famílias devem receber e a quantidade que receberão do álcool 70% produzido na
instituição.
Sua missão é criar um programa que solicite ao usuário a renda familiar per capita e se for
menor que R$500,00 solicite ao usuário quantas pessoas moram na casa e se morarem
até 2 pessoas na casa retorne “Você recebera 1 pote de álcool 70”, se morarem de 2 até
5 pessoas na casa retorne “Você recebera 2 potes de álcool 70”,se morarem mais de 5
pessoas na casa retorne “Você recebera 3 potes de álcool 70”, caso a renda familiar per
capita e seja maior que R$500,00, retorne “Você não recebera nenhum pote de álcool 70”.
8. O programa de televisão chamado Ultracheff está em busca do cheff de cozinha que faz
os pratos mais perfeitos, para isso eles realizam uma competição que avaliam três pratos
entre “perfeito”, “bom” ou “ruim”. Seu programa deve receber essa avaliação (em forma
de string) do primeiro prato e se o primeiro for perfeito seu programa deve receber essa
avaliação (em forma de string) do segundo e se o segundo for perfeito seu programa
Capítulo 3. PROGRAMAÇÃO ESTRUTURADA – II : ANINHAMENTO DE SELETORES 28
deve receber essa avaliação (em forma de string) do terceiro. Se o terceiro for perfeito
parabenize o usuário e diga que ele ganhou a competição. Caso o primeiro seja bom ou
ruim volte “Você saiu da competição na primeira rodada”; caso o segundo seja bom ou
ruim, volte “Você saiu da competição na segunda rodada”; e caso o terceiro seja bom ou
ruim volte “Você saiu da competição na rodada final”.
9. Crie um programa que solicite ao usuário sua média (em porcentagem) nas provas do
primeiro período de um curso. Se for mais que 60% solicite as notas do segundo período,e,
se esta for mais que 60% novamente, calcule seu coeficiente de rendimento, mostre ao
usuário e o parabenize por isso. Se não conseguir 60% no primeiro período, retorne “Você
não passou no primeiro período” . Se não conseguir 60% no segundo período, volte “Você
não passou no segundo período”.
10. Escreva um programa que leia três números e escreva o menor deles.
11. Uma concessionária vende carros de diferentes faixas de preço e com diferentes condições,
segundo a seguinte tabela:
Seu programa deve receber o preço do carro desejado e a opção de pagamento. Seu
programa deve retornar o valor da entrada e os valores da prestação que deverão ser pagos.
12. Num campeonato, os critérios de desempate entre dois times são, por ordem de prioridade,
pontos, vitórias, saldo de gols e confronto direto. Seu programa deve receber estes quatro
critérios para 2 times e retornar qual ficou a frente.
Estrutura de uso:
while x>=0.5
x=x/5
end
Neste exemplo acima, temos dois tipos de expressões utilizadas: uma expressão booleana
(x>=0.5) e um conjunto de comandos (x=x/5). O conjunto de comandos será executado enquanto
a expressão booleana for verdadeira. Ou seja, inicialmente este comando verificará se um X
previamente digitado será maior que 0,5. Se for maior que 0,5, ele vai dividir o X por cinco. Em
seguida, ele verificará se o novo X definido atende novamente a condição de ser maior que 0,5.
Se for verdade, ele dividirá o número por cinco novamente.
Essa lógica segue até que a condição estabelecida pela expressão booleana não seja atendida.
Assim que isso ocorrer, o conjunto de comandos não é mais executado e o X que está salvo é o
último definido pelo programa.
Exemplo Resolvido 1
Faça um programa que receba um número e o divida por 4 até que ele tenha uma parte
fracionária.
Resposta:
Capítulo 4. PROGRAMAÇÃO ESTRUTURADA – III 30
Neste exemplo, precisamos dividir o número digitado até que ele tenha uma parte fracionária.
Portanto, é esta a condição que o problema indicou para que dividíssemos o número. Ou seja,
enquanto ele não tiver uma parte fracionária, devemos dividi-lo. É isso que a nossa expressão
booleana (x==int(x)) faz, estabelece a condição para que a repetição dos comandos seja feita.
Vamos supor que digitemos o número 32 neste programa. Quando o programa lê a linha
4, ele vê que a parte inteira de X (32) é igual a X (32). Assim, ele executa os comandos (no
caso, dividir X por 4). Agora temos um novo X que passará pela expressão booleana, que é X=8.
Assim sucessivamente vai sendo feito, até que depois de 2 iterações X assume o valor de 0,5.
Esse valor de X torna a expressão booleana falsa, pois X (0,5) é diferente da parte inteira de X
(0). Com isso, os comandos não são executados e o programa passa a ler a próxima linha (no
caso, “dispando” o valor de X, que é 0,5).
i=0
x=2
while i<>5
x=x*3
i=i+1
end
disp(x)
–>486
*Está em negrito a utilização do contador.
Capítulo 4. PROGRAMAÇÃO ESTRUTURADA – III 31
Exemplo Resolvido 2
Faça um programa que leia três notas de um aluno e depois mostre sua média, o programa
deve repetir a tarefa 3 vezes. Por fim, mostre “Fim do programa”.
Resposta:
Scinotes:
Exemplo Resolvido 3
Faça um programa que receba um número inteiro e de quatro dígitos e o divida por 500.
Resposta:
Neste problema, foram impostas 2 condições para que o programa divida o número digitado
por 500: que ele seja inteiro e que ele tenha 4 dígitos.
No while digitado, temos três expressões booleanas que expressam as condições para que o
comando input da linha 5 seja repetido. A primeira faz a restrição em relação ao número ser
inteiro. Se a parte inteira de X for diferente de X, a expressão será verdadeira e os comandos se
repetirão. A segunda e a terceira servem para garantir que o número tenha 4 dígitos. Se o número
for menor que 1000 e maior que 9999, ele não terá 4 dígitos, tornando a expressão booleana
verdadeira e repetindo os comandos de dentro do while.
Vale ressaltar que deve ser usado o “ou” (|) em vez do “e” (&), pois estas condições não
precisam todas serem atendidas ao mesmo tempo, ou seja, sendo somente uma atendida, deve-se
repetir o comando de input.
O valor de y encontrado deve ser negativo. Enquanto não for, novos valores de x devem ser
solicitados.
Capítulo 4. PROGRAMAÇÃO ESTRUTURADA – III 33
2. Faça um programa que receba um número que seja um quadrado perfeito e informe sua
raiz quadrada. OBS.: Um número quadrado perfeito pode ser escrito da seguinte forma:
N = x^2
Em que:
N = Número quadrado perfeito
x = Número inteiro positivo
3. Faça um programa que receba um número inteiro, maior do que um, e informe todos os
números ímpares de 1 até ele.
4. Faça um programa que receba dois números naturais maiores do que um e retorne quantas
vezes o primeiro pode ser dividido pelo segundo (sem que deixe de ser um número natural).
5. Escreva um algoritmo que receba somente valores ímpares. Seu programa deve retornar o
valor da expressão:
4, 5x + x3 (4.2)
6. Faça um programa que receba um número natural e par. Seu programa deve retornar a
soma desse número com seu número antecessor.
7. Faça um programa que receba um número e conte todos os múltiplos de cinco até ele,
exibindo todos esses os valores no console. OBS.: sem usar a função if.
5 PROGRAMAÇÃO ESTRUTURADA – IV
5.1.1 Contador
O while, quando associado a um contador, permite que sejam criadas listas da seguinte forma:
Observe que o programa à esquerda pede o número de elementos que essa lista pode possuir,
em seguida utiliza-se o contador, c, para que sempre que ele seja menor que o valor inicialmente
colocado o programa peça um número para adicionar à lista. Por fim utiliza-se a estrutura c=c+1
como forma de incrementar o valor de c em 1 unidade e que dessa forma seja possível que em
um determinado momento o valor de c seja maior que x e o programa encerre a sua lista.
5.1.2 Acumulador
Existem várias funcionalidades nessas listas, dentre elas, armazenar valores e realizar somas.
Observe a seguinte lista, ela receberá 5 números e retornará a média entre eles:
Capítulo 5. PROGRAMAÇÃO ESTRUTURADA – IV 35
Observe que dessa vez foi criada uma nova variável, s, chamada de acumulador, armazenará
a soma dos valores digitados, uma vez que sempre que o processo for executado novamente
dentro do while a variável x receberá um novo valor. Assim que o processo encerrar, ou seja,
quando o contador for maior do que 5, a variável s estará com a soma total dos valores digitados
e quando dividido por 5 fornecerá o valor da média desses valores.
Utilizando essas duas estruturas (1ª – Pedir ao usuário o número de elementos de uma lista e
2ª – Realizar a soma dos valores digitados) pode-se construir um programa mais complexo, por
exemplo, um programa que peça ao usuário a quantidade de elementos de sua lista e retorne a
média desses valores, observe como seria possível executar esse programa:
Dessa vez o usuário determinou o tamanho da lista, porém ainda foi possível realizar o cálculo
da média visto que se comparado ao programa anterior em que o número de elementos já era
determinado (5 números), nesse, o valor ficou armazenado na variável x.
Exemplo resolvido 1
Capítulo 5. PROGRAMAÇÃO ESTRUTURADA – IV 36
Nesse programa foi adicionado a estrutura if, input e printf dentro do while, assim foi possível
calcular e informar qual número da lista criada é ímpar ou par.
Também é possível combinar a estrutura de condição (if ), o valor sentinela e o contador
dentro do while da forma mais conveniente para a construção de algoritmos. Observe o exemplo
a seguir:
Capítulo 5. PROGRAMAÇÃO ESTRUTURADA – IV 37
Esse programa receberá o preço de uma quantidade indefinida de produtos e informará qual o
mais caro, qual o mais barato e a quantidade de produtos que foram digitados. Observe o valor
sentinela, uma vez que for digitado um valor negativo para o preço o programa encerrará, outro
ponto interessante é o uso do aninhamento de seletores para contar os produtos e separá-los em
máximo e mínimo.
Os exercícios deste Capítulo estão juntos com os exercícios do Capítulo 6 na Seção 6.3.
38
6 PROGRAMAÇÃO ESTRUTURADA – V
• a variável de controle pode ter os mesmos nomes que as variáveis que víamos antes, com
as mesmas restrições;
• o valor inicial do controle será decidido a partir do problema que se deseja solucionar, não
possuindo um valor pré-determinado. Pode ser uma variável;
• o valor final da variável será determinado a partir do que o problema solicitará, podendo,
também, ser uma variável.
Assim como o while, o que estiver dentro do corpo do for será repetido até que o contador
chegue ao seu valor final. É necessário usar um end ao final do corpo do contador.
Exemplo resolvido 1: Escreva um programa que mostre todos os valores pares de 2 até 50.
Capítulo 6. PROGRAMAÇÃO ESTRUTURADA – V 39
Começamos o programa com clear e clc, assim como vínhamos fazendo. Na linha 3 iniciamos
o for, com variável de controle com nome i, valor inicial igual a 2, passo também igual a 2 e
valor final igual a 50. Isso significa que a nossa variável i começará com valor 2, sendo mostrado
no console uma mensagem igual àquela que está dentro do printf da linha 4. Na linha 5 usamos
o end que fecha o comando for, mostrando onde o corpo do laço se encerra, que caracteriza o
comando que será repetido.
Na segunda vez que o programa é executado, a variável i assume valor 4, devido a seu passo
ser incrementado de 2 em 2, e assim por diante, até o momento em que i assumirá valor 50, o
programa será executado novamente e, então, será encerrado.
O que veremos após a execução do programa no console será:
Exemplo resolvido 2: Faça um programa que receba um valor n, natural, e calcule seu
fatorial, sabendo que:
n! = 1 ∗ 2 ∗ 3 ∗ ... ∗ (n − 1) ∗ n
Capítulo 6. PROGRAMAÇÃO ESTRUTURADA – V 40
Começamos o programa com o habitual clear, clc. Pedimos a variável n como entrada e
usamos, entre a linha 4 e 6, uma estrutura de proteção com o comando while. Todos os comandos
que aprendemos até aqui podem ser usados juntos, quantas vezes forem necessários, desde que o
uso de cada um deles esteja correto.
Na linha 7 é criada a variável fat, que armazenará o valor final do fatorial do número
inserido. Seu valor inicia em 1 pois, como esta funcionará como variável de armazenamento de
multiplicações, devemos escolher o valor neutro a fim de evitar confusões.
Na linha 8 tem início o for, com variável de controle i, iniciando em 1 e indo até o valor de
entrada, n. Contudo, vale observar que o passo do contador foi omitido, desta forma, ele se torna
1. No corpo do laço, temos a multiplicação que efetivamente calcula o fatorial, processo que se
repetirá até que a variável de controle se iguale à variável de entrada, quando será calculado o
último termo da multiplicação.
Após a última iteração (repetição) do programa, é retornado no printf o valor do fatorial e o
número de entrada. Após a execução, ficará da forma:
6.2.1 Repetições
A principal diferença entre as estruturas é a sua forma de repetição. O while se repete
indeterminadas vezes até que a expressão booleana utilizada em sua estrutura se torne falsa. Já o
for se repete até que atinja o valor final da sua variável de controle, que deve ser pré-determinado,
seja pelo usuário ou pelo próprio programa.
6.2.2 Contador
Outra diferença clara entre as estruturas é que o for já contém um contador embutido em
sua estrutura, enquanto o while utiliza de expressões booleanas verdadeiras para continuar se
Capítulo 6. PROGRAMAÇÃO ESTRUTURADA – V 41
repetindo. Com isso, situações onde se há um valor finito e definido de repetições o comando for
se torna o mais apropriado.
Exemplo resolvido 3: Faça um programa que retorne a soma de 5 valores digitados pelo
usuário usando o for e o while.
Como é possível ver, a estrutura do comando for é mais simples de usar e mais compacta.
6.2.4 Proteções
Uma vez que não é possível alterar os valores da variável de controle do for depois de ter
iniciado seu conjunto de comandos, também se torna impossível fazer a utilização do comando
como proteção de entrada de valores, devendo novamente ser utilizado o comando while.
2. Faça um programa que receba dois valores positivos e calcule a média entre eles. Enquanto
a média não for maior que 18, deve receber mais um valor e calcular a média novamente e
verificar se é maior que 18.
4. Crie um programa que leia três notas de um aluno, calcule a média delas e se for maior que
60 pontos voltem “Você passou”, caso contrário volte “Você não passou”. Seu programa
deve ser repetido para 8 alunos, calcular a média das médias de cada um e voltá-la.
5. Faça um programa que receba um número positivo e se ele for par, calcule quantas vezes
ele pode ser dividido por dois e volte essa quantidade. Caso contrário volte “Não é par”.
6. Faça um programa que receba 50 números positivos. Some todos os números inteiros e
multiplique todos que não forem.
8. Utilizando o comando for, faça um programa que receba 10 números inteiros e devolva
para o usuário quantos foram positivos.
9. Faça um programa que receba um número natural, informe se ele é primo ou composto e
imprima seus divisores usando a função for.
10. Faça um programa que receba um número, o some com os 100 primeiros números maiores
que ele e volte essa soma. Faça isso sem usar while.
43
7 Vetores
Deixando de lado o seu significado físico, os vetores, em programação, podem ser usados
como uma alternativa para armazenar diversos valores em uma única variável. Vetores podem
ser construídos usando os colchetes [ e ]. Os elementos estão entre os colchetes e separados por
espaços (ou vírgula).
Exemplo
Observe que a variável “altura” recebeu 5 valores que correspondem à altura de 5 pessoas
diferentes.
Obs.: Também é possível criar vetores com a utilização dos dois pontos como operador,
exemplo a seguir.
Esse novo tipo de variável (vetor) também permite que esses valores sejam isolados separada-
mente sendo possível realizar operações somente com alguns dos seus elementos, como, por
exemplo:
Capítulo 7. Vetores 44
Nesse exemplo foram feitos 3 tipos de operações diferentes com alguns elementos dos
vetores. Para acessar um elemento do vetor é necessário usar o nome da variável com a posição
do elemento entre parênteses, ( ), essa posição é chamada de índice ou subscrito e permite
individualizar os elementos de um vetor, conforme mostrado no exemplo acima. Para acessar o
último elemento do vetor é possível utilizar $ como indicador de posição, ao invés de um número,
entre os parênteses.
As operações com os elementos dos vetores seguem o padrão geral, (+ corresponde a soma,
- a subtração, * multiplicação e / divisão).
Para construir um vetor de string é necessário usar os colchetes: [ e ] bem como inserir o
string entre aspas separando cada elemento com um espaço ou vírgula. Também é possível
acessar um elemento desse vetor usando a sua posição (índice) conforme visto no exemplo.
Observe os vetores ‘a’ e ‘b’, ambos possuem 1 linha e 3 colunas, assim é possível realizar a
soma e a subtração entre esses vetores.
A soma e a subtração entre vetores acontecem da seguinte forma: o primeiro elemento do
vetor ‘a’ é somado ou subtraído pelo primeiro elemento do vetor ‘b’, o segundo elemento do
vetor ‘a’ é somado ou subtraído pelo segundo elemento do vetor ‘b’, para o terceiro elemento
esse procedimento se repete. O exemplo acima ilustra as duas operações entre eles.
7.2.2 Multiplicação
7.2.2.1 Vetor e Escalar
Quando um número escalar, nesse caso o número 3, multiplica um vetor, ele multiplicará
cada elemento desse vetor conforme demonstrado acima para o vetor a.
Capítulo 7. Vetores 46
Para multiplicação entre vetores eles devem possuir dimensões opostas, ou seja, se um vetor
a possui 1 linha e 3 colunas, ela só pode ser multiplicada por um vetor com 3 linhas e 1 coluna.
O resultado dessa operação será um número. Observe o exemplo a seguir:
Como o vetor a possui 1 linha e 3 colunas, foi necessário construir um vetor c com 3 linhas e
1 coluna, para isso foi utilizado o operador ; para separar as 3 linhas e ser possível realizar a
multiplicação.
Essa operação foi feita da seguinte forma: o primeiro elemento do vetor a foi multiplicado
com o primeiro elemento do vetor c, o segundo elemento do vetor a foi multiplicado com o
segundo elemento do vetor c e o mesmo procedimento será feito para o terceiro elemento. Após
esse processo, foram somados todos esses valores resultando em 32.
Exemplo resolvido 1: Escreva um programa que crie um vetor com tamanho solicitado pelo
usuário. Seu programa deve retornar o produto entre o penúltimo elemento do vetor e próprio
vetor.
Começamos com clear, clc, seguido da entrada do tamanho do vetor, desconhecido até então.
Em seguida, usamos o for para iniciar a estrutura de repetição que criará o vetor “v”. Ao sairmos
do laço da estrutura de repetição, temos, na linha 7, a criação de “b”. Este vetor é o produto
entre o penúltimo termo de “v” e o próprio “v”. Contudo, como não sabemos o tamanho de “v”,
usamos o operador “$”, que pega o último termo do vetor. Este nosso operador, subtraído 1,
resulta no penúltimo termo. O mesmo resultado seria obtido se usássemos o comando length e
subtraíssemos 1.
Capítulo 7. Vetores 50
Exemplo resolvido 2: Escreva um programa que receba 2 vetores, “a” e “b”, com 5 elementos
cada um. Seu programa deve construir um vetor “c”, onde cada elemento de índice ímpar de “c”
é igual ao respectivo elemento de “a”; e cada elemento de índice par de “c” é igual ao respectivo
elemento de “b”.
Capítulo 7. Vetores 51
Começamos o programa com clear e clc, padrão que estamos seguindo até o momento. Na
linha 3, tem início o laço do for, que será usado para criarmos nossos dois vetores “a” e “b”. Na
linha 7 abrimos o if, que analisa se a variável de controle do for, que usamos como índice dos
vetores “a” e “b”, é par ou ímpar. Segundo o enunciado, esta classificação é importante.
Nas linhas 8 e 10, temos a criação do vetor “c”, após cada avaliação do índice, controlada
pelo if e pelo else. Ao final, dois end, um para fechar o for e um para fechar o if, seguido da
estrutura para retornar o vetor.
Neste exercício temos um problema que não tivemos no anterior, que é saber a quantidade de
elementos que os vetores “X” e “Y” possuirão. Existem algumas formas de resolver este impasse,
abordaremos duas delas aqui: com um contador e com o encadeamento de vetores.
Para isso, criamos o vetor “Y” na linha 3 e a variável “c” na linha 4. O vetor “Y” criado,
vazio, passará pelo encadeamento, como veremos em breve. A variável “c” será uma variável de
armazenamento de soma, que utilizaremos como índice do vetor “X”.
Nas linhas 5 e 6 iniciamos o programa com o for, para recebermos as entradas do sistema.
Na linha 7, temos a avaliação da primeira condição, se o termo do vetor “A” inserido é ou não
Capítulo 7. Vetores 52
maior que 5. Caso este o seja, a variável “c” sofrerá atualização, e, como dito, funcionará como
índice do vetor “X”. Caso o termo inserido não seja maior que 5, nada ocorre neste trecho e o
programa vai para a linha 11. Nesta linha é criada a variável “d”, também acumuladora, que
contará o número de divisores que o termo inserido possui, processo que ocorre entre as linhas
12 e 16. Na linha 17, ocorre a avaliação da quantidade de divisores, caso este seja 2, o número é
primo, e o vetor “Y” se torna o encadeamento entre o vetor “Y” anterior e o termo do vetor “A”
que está sendo avaliado. Desta forma, ocorre uma espécie de “união” entre o vetor “Y” e o valor
de “A” em análise. Se o número não for primo, nada ocorre, e o programa volta ao for inicial,
solicitando nova entrada e o processo se repete.
Ao final, uma estrutura com disp para organização dos resultados no console.
Capítulo 7. Vetores 53
Começamos o programa com clear, clc e já abrimos o for para receber o vetor. Dentro da
estrutura de repetição, temos o while funcionando como estrutura de proteção para que só sejam
inseridos números naturais. Na linha 9, tem início o laço de for que realmente efetivará a troca.
A variável de controle começa em um e possui passo 2, assim, ela só assumirá valores ímpares.
Na linha 10 é criada a variável “a”, uma variável intermediária que guarda o valor do elemento na
posição subsequente ao valor de i. Isto ocorre pois, como a questão pede, os elementos de índice
ímpar, representados por i, dever ser substituídos pelos elementos das posições imediatamente
superiores, i+1. Na linha 11, ocorre a troca de valores entre “v(i+1)” e “v(i)”, onde o valor que
originalmente estava na posição 2, i+1 quando i vale 1, assume o valor do elemento na primeira
posição do vetor. Na linha 12, o elemento “v(i)” assume o valor original de “v(i+1)”, armazenado
na variável “a”.
Após o end da linha 13, o programa volta a executar o for da linha 9, repetindo o passo-a-passo
descrito acima, realizando as trocas correspondentes até o final do programa. Na última linha, é
“dispado” o vetor “v” transposto, para que este apareça em forma de vetor linha no console.
2. Faça um programa que receba um vetor com 10 elementos e retorne um vetor contendo o
maior e o menor elemento.
3. Faça um programa que receba um vetor com 20 números naturais maiores que 1 e substitua
os números primos por 0
4. Faça um programa que receba dois vetores de tamanho determinado pelo usuário e retorne
um vetor contendo somente os positivos dos dois vetores.
5. Faça um programa que receba um vetor de 10 elementos. Se ele tiver mais números
positivos ou zero do que negativos, retorne ele como um vetor linha. Caso contrário,
retorne como um vetor coluna.
6. Faça um programa que receba um vetor de 10 valores e eleve os valores pares ao quadrado
e os impares ao cubo.
7. Faça um programa que construa um vetor para escrever o preço de cada produto de uma
lista de compras. O número de elementos será inserido pelo usuário. Volte o vetor e sua
soma.
9. Escreva um algoritmo que receba um vetor de “n” elementos e retorne o produto destes
valores.
57
8 Matrizes
O programa lê com os dois pontos depois da vírgula que o usuário quer todas as colunas da
matriz, na linha especificada.
Ex. 2: Retirar a 1ª coluna da matriz A.
Capítulo 8. Matrizes 60
O programa lê com os dois pontos antes da vírgula que o usuário quer todas as linhas da
matriz na coluna especificada.
Ex. 3: Retirar a submatriz que vai da linha 1 até a linha 3 e da coluna 2 até a coluna 3.
Aqui o programa retirou as linhas equivalentes aos elementos presentes no vetor v, ou seja,
as linhas 1 e 2.
Também podemos transformar uma matriz em um vetor coluna.
Ex.:
8.6 O Operador $
O cifrão serve para indicar que o usuário quer se referir ao último elemento de um vetor ou
matriz.
Ex.:
8.7 Atribuição
Podemos atribuir valores para elementos, linhas e colunas de uma matriz.
Ex.:
Ex. 2:
A matriz A tem 3 linhas e 3 colunas e a matriz B tem 3 linhas e 2 colunas, como está nos
vetores fornecidos pela função size.
Maneira 2: pode usar uma função com duas saídas, que resultará em variáveis separadas.
Ex.:
Capítulo 8. Matrizes 65
Lembrando que a ordem em que as variáveis sairão sempre é essa. Portanto, para facilitar,
sempre coloquem “l” e “c” no vetor de saída, para que não se confundam.
Multiplicação:
Divisão:
Expressões:
Capítulo 8. Matrizes 67
Além disso, existe também a potenciação elemento a elemento que também utiliza-se o
ponto (.^):
Capítulo 8. Matrizes 71
Assim:
Se você quer criar uma matriz na qual todos os elementos sejam zero, utilize a função zeros().
Capítulo 8. Matrizes 75
8.14 EXERCÍCIOS
1. Faça um programa que receba uma matriz 3x3 e retorne duas matrizes diferentes, a primeira
deve conter os números pares e substituir os números ímpares por zero e a segunda deve
conter os números ímpares, substituindo os pares por zero.
2. Faça um programa que receba uma matriz 3x3 e retorne uma matriz 3x4 em que a quarta
coluna será a soma dos valores de cada linha.
Exemplo: Seu programa receberá a seguinte matriz:
1 2 3
4 5 6
7 8 9
E retornará:
Capítulo 8. Matrizes 76
1 2 3 6
4 5 6 15
7 8 9 24
3. Faça um programa que receba uma matriz de tamanho determinado pelo usuário e retorne
duas matrizes. A primeira com os elementos da diagonal principal e secundária igual a
0, e a segunda, somente com os elementos da diagonal principal e secundária inserida,
substituindo os demais valores por 0.
4. Faça um programa que receba uma matriz de tamanho determinado pelo usuário, e retorne
o produto dos valores dos “cantos” e a soma dos demais.
Exemplo:
1 2 3
4 5 6
7 8 9
5. Escreva um programa que receba 3 vetores de tamanho “n” decidido pelo usuário. Seu
programa deve retornar uma matriz com ‘n’ linhas e 3 colunas, onde a primeira coluna é o
primeiro vetor, a segunda coluna o segundo vetor e a terceira coluna, o terceiro vetor.
6. Faça um algoritmo que receba um tamanho para matriz quadrada. Seu programa deve
retornar uma matriz em que cada elemento seja dado pela lei:
4i + 3j
Elemento(i,j) = (8.1)
2j 2
7. Escreva um programa que receba uma matriz de tamanho determinado pelo usuário (tanto
a quantidade de linhas quanto de colunas). Se o número de linhas for maior que o número
de colunas, retorne o produto entre todos os valores digitados. Se o número de colunas for
superior, retorne um vetor com os valores pares da matriz. Caso seja uma matriz quadrada,
retorne o determinante da matriz.
77
9 POLINÔMIOS
Os polinômios são expressões algébricas que surgem a partir da adição de monômios e são
constituídos por uma parte conhecida, denominada coeficiente e uma parte desconhecida.
Exemplos:
Polinômio: 2x4 + 7x3 − 9x + 5 Polinômio: x2 + 3x − 2
Monômios: 2x4 ; 7x3 ; 9x; 5 Monômios: x2 ; 3x; −2
Observe que foi inserido no primeiro termo o vetor [1,2,3], o segundo termo informa que o
nome da parte desconhecida será x e o último termo informa que o vetor contém os coeficientes
do polinômio.
OBS: Atente-se que o primeiro termo da função poly, quando informa os coeficientes, segue
uma ordem padrão, de maneira que o primeiro elemento do seu vetor será o termo independente
e o último elemento será o coeficiente do elemento de maior grau de seu polinômio.
Capítulo 9. POLINÔMIOS 78
Ex.2:
Nesses dois casos o primeiro termo da função poly corresponde às raízes do polinômio, assim,
o Scilab retornará um polinômio cujas raízes serão os valores contidos nesse vetor.
OBS: Observe que quando não é inserido o terceiro termo da função poly o Scilab considera
o primeiro termo como as raízes do seu polinômio.
Existe uma outra forma de inserir um polinômio no Scilab, para isso observe o exemplo a
seguir:
Ex.3:
Na primeira parte foi criado um polinômio cuja raiz é igual a zero e o nome da parte
desconhecida é y, assim, a variável y recebeu o polinômio y. Na segunda parte foi construída
uma expressão contendo a variável y, assim, a variável p receberá o resultado do produto entre o
polinômio contido em y e os escalares, tornando-se o polinômio p acima.
OBS: Se o primeiro passo do Exemplo 3 fosse omitido seu programa não seria executado,
uma vez que o Scilab consideraria a variável y como inexistente, portanto, caso opte por utilizar
essa forma não se esqueça de definir sua variável como um polinômio.
Existe uma terceira forma de construir um polinômio no Scilab, para isso será utilizado a
variável polinomial predefinida %s ou %z, observe o exemplo a seguir:
Capítulo 9. POLINÔMIOS 79
Esse caso segue o mesmo padrão da segunda forma, porém não há necessidade de criar um
polinômio com a função poly, basta utilizar essas variáveis predefinidas %s ou %z, seguindo o
padrão da segunda forma.
Ex.:
Ex.:
Capítulo 9. POLINÔMIOS 80
Ex.:
Ex.:
Capítulo 9. POLINÔMIOS 81
Ex.:
Capítulo 9. POLINÔMIOS 82
Ex.:
Onde, nas linhas 3 a 10, encontram-se as estruturas padrão para a criação de vetores estudadas
anteriormente. Nas linhas 11 e 12 encontra-se a criação dos polinômios a e b com a função poly,
utilizando os vetores previamente criados. Na linha seguinte há a soma dos polinômios em uma
resultante c, em seguida, com a função horner, calculou-se os valores pedidos pela questão. Por
fim, apresentou-se os resultados com um printf.
Ex.2: Crie um programa que receba um polinômio de 3 termos digitado pelo usuário e
diga se há raízes imaginárias ou não. Obs.: A função isreal(x) verifica se a variável x é real ou
imaginária, tendo como resultado %t se for rela e %f se for imaginária.
Capítulo 9. POLINÔMIOS 84
Até a linha 7 segue o padrão já comentado na questão anterior. A linha 8 contém a função
roots criando um vetor b com as raízes do polinômio digitado. A linha 9 cria um contador para
as raízes imaginárias. As linhas 10 a 14 contém uma estrutura para verificar se há algum número
imaginário em b, onde inicia-se com um for que contará de 1 ao tamanho do vetor de raízes
(quantidade de raízes) e, como dito anteriormente, a função isreal verifica se algum número é
real, mas como queremos verificar se é imaginário, utilizamos o prefixo booleano de negação
“∼”, adicionando 1 a cada valor imaginário contado. Por fim, da linha 15 em diante é apenas
uma verificação no valor de c, onde, caso este seja maior que 0, há alguma raiz imaginária no
polinômio digitado.
2. Faça um programa em que o usuário insira um vetor de tamanho 3. O usuário deve escolher
se este vetor inserido será o coeficiente de um polinômio ou as raízes. Retorne o polinômio.
1
S = S0 + V0 t + at2 (9.2)
2
Faça um programa que receba a velocidade inicial, posição inicial e aceleração e retorne
a posição final do corpo nos tempos 10s, 20s e 30s, usando as funções do Scilab para
polinômios.
5. Faça um programa que receba dois polinômios (para isso, o usuário irá colocar o grau do
polinômio e os vetores de coeficientes). O seu programa deve retornar a soma, a subtração
e a multiplicação dos polinômios.
6. Faça um programa que receba um vetor de tamanho indeterminado (valor sentinela igual
a zero). Seu programa deve retornar o cujas raízes são os valores do vetor inserido pelo
usuário
Faça um programa que retorne o quociente e o resto da divisão de p(x) por q(x).
Capítulo 9. POLINÔMIOS 85
8. Faça um programa que receba 6 números e crie dois polinômios (A e B), sendo os primeiros
3 números os coeficientes de A e o t números restantes, os coeficientes de B. Subtraia A
por B e volte as raízes do resultado.
9. Faça um programa que peça um vetor com três raízes e crie um polinômio correspondente.
Assim, com o polinômio criado, calcule resposta para x = 4, x = 10 e x = 12.
86
10 FUNÇÕES
Até agora no nosso curso, vimos e utilizamos diversas funções no SciLab, como sin que
calcula o seno de um ângulo, sum que efetua a soma dos elementos de um vetor, dentre outras.
Vamos aprender, nesta semana, sobre como criar nossas próprias funções.
Criar nossas próprias funções é útil em casos onde escrevemos programas muito extensos
com certos trechos que se repetem, sendo mais simples criar uma função que pode ser aplicada
sempre que necessário ao invés de ter que escrever todas as linhas de código que efetuariam
aquela ação.
Para efetivamente criarmos funções, usaremos o comando function, da seguinte forma:
Em que:
function: nome do comando que cria a função;
saída: variável ou variáveis que armazenará(ão) o(s) valor(es) calculado(s) pela função, por
exemplo, na função sum, padrão do SciLab, a saída é a soma dos valores do vetor utilizado como
argumento de sum. Caso sua função tenha mais do que uma saída, a sintaxe será mostrada mais à
frente;
nome da função: como a função é chamada. É o nome que será escrito no SciNotes ou
Console quando se for utilizar a função. Por exemplo, a função que calcula a soma dos elementos
de um vetor tem o nome sum;
entradas da função: pode ser entendido como “em que a função calcula”. Por exemplo a
função modulo, que possui duas entradas, dividendo e divisor, separadas por vírgula;
corpo da função: linhas de código que efetivamente realizam o que se deseja;
endfunction: sinal para o SciLab de que o corpo da função foi encerrado, similar ao end que
utilizamos depois dos if, for, while.
Quando criamos nossa função em um SciNotes em branco, devemos salvá-la antes de
executá-la, assim como sempre fizemos. No entanto, arquivos de funções possuem extensão ‘.sci’
(uma extensão própria do SciLab), diferente de arquivos de comandos como os que vínhamos
fazendo até então, que possuem extensão ‘.sce’. Por este motivo, abas do SciNotes em que
criamos funções não executam programas comuns, como os que vínhamos fazendo, é necessário
abrir uma nova aba em branco do SciNotes. Para mais detalhes, assista a gravação da aula do dia
03/07 no classroom.
Capítulo 10. FUNÇÕES 87
Exemplo 01: crie uma função que calcule a média de um vetor e escreva um programa
aplicando sua função.
Comecemos criando a função. Para isso, peguemos um arquivo em branco do SciNotes e
façamos como explicado acima.
Neste exemplo, nossa saída atende pela variável ‘y’. Assim, ao final do corpo do programa,
a saída, ‘y’ neste caso, deve possuir o valor para o qual se aplica a função. Demos o nome de
“media” para nossa função, respeitando as regras para nomenclatura de variáveis vistas antes.
Como entrada, valor dentro dos parênteses em frente ao nome da função, temos ‘v’. O uso da
letra v não é nada de especial, apenas indica que será uma variável numérica e não variável de
texto (para estes casos, usar aspas). Na linha 2, há o corpo do texto, que neste caso calcula a
média simples, divisão da soma dos elementos pela quantidade de elementos. Como pode se
observar, pode-se usar funções já padrão no SciLab dentro da nossa própria função, respeitando
as regras de cada uma delas. Na linha 3, o endfunction encerra nossa criação de programa.
Para usar a função, criamos um novo documento em branco para escrever um programa e a
aplicar.
Um programa simples, que não começa com clear (motivo será explicado mais à frente), clc,
cria-se o vetor ‘a’ de forma simples e, à variável ‘m’, atribui-se o valor da média de ‘a’, usando a
função ‘media’ que criamos. Do jeito que está escrito, o que é retornado no Console é:
Ele está em branco por que, por padrão, uma função não mostra automaticamente seu valor.
Como pode ser visto no Navegador de Variáveis, tanto ‘a’, quanto ‘m’, existem, mas não foi
solicitado que eles fossem mostrados, por isso, usamos disp ou printf quando queremos retornar
valores no Console. Fazendo esta alteração no programa, vemos que funciona.
Capítulo 10. FUNÇÕES 88
Há alguns pontos que devemos nos atentar ao trabalharmos com a criação de funções:
• O número de saídas não tem relação com o número de entradas. Funções podem ter duas
ou mais saídas e somente uma entrada, vide a exemplo a função size, que possui como
única entrada uma matriz,e como duas saídas o número de linhas e de colunas que a matriz
utilizada como entrada possui. Da mesma forma que podem ter somente uma saída e
diversas entradas, assim como a função modulo, que possui como saída o resto da divisão
dos dois valores utilizados como entrada. A exemplo, imaginemos uma situação onde
queremos criar uma função com duas saídas, sendo uma delas o resultado da soma entre
dois vetores e a outra o produto, termo a termo, entre eles. Podemos fazer isso da seguinte
forma:
As saídas da função somaeproduto são as variáveis numéricas ‘a’ e ‘b’, separadas por
vírgula e colocadas dentro de colchetes. Como entradas, utilizamos ‘v’ e ‘j’. Vale ressaltar,
mais uma vez, que as variáveis utilizadas no processo de criação da função em nada tem
relação com as variáveis utilizadas no programa onde a função será aplicada, ou seja, seus
vetores de entradas podem possuir qualquer nome, não somente ‘v’ ou ‘j’.
Em um programa simples, a função criada poderia ser usada da seguinte forma:
Capítulo 10. FUNÇÕES 89
Começamos com clc para os resultados aparecerem mais destacados. Criamos ‘vetor1’
e ‘vetor2’ de forma simples somente para efeito de teste, note que ambos devem possuir
mesmo tamanho. Às variáveis ‘rsoma’ e ‘rproduto’ atribuímos os valores, respectivamente,
da soma e do produto entre os vetores. Como nossa função possui duas saídas, a forma
de usá-la, assim como qualquer outra função com mais de uma saída, é: usa-se colchetes
antes do sinal de igual para atribuir os valores das saídas, separados por vírgula, seguido
pelo comando propriamente dito, nossa função somaeproduto neste caso, seguido pelas
entradas entre parênteses e separadas por vírgulas.
Os dois disp tornam possível que visualizemos as respostas no Console após a execução
do programa.
• Por padrão, a saída não é mostrada automaticamente no Console. Caso seja requerido
que a função criada, por padrão, já retorne o valor calculado, deixamos o espaço de saída
do programa vazio, visto que o comando disp, por padrão do software, não possui saída.
Como exemplo:
Na criação de nossa função media, o espaço onde colocamos a saída anteriormente está
vazio, indicado pelos colchetes sem nada dentro. No final do corpo da função, usamos o
Capítulo 10. FUNÇÕES 90
No SciNotes, não usamos um disp em ‘m’, já que a própria função media faz isso.
• Diferentemente de como fizemos até agora no curso, não começaremos os programas com
clear e clc. Ao executarmos uma função no SciNotes, ela fica salva no workspace do
programa, sendo apagada caso utilizemos clear ou saiamos do SciLab. Ainda podemos
utilizar clc para limparmos o Console. Caso a função criada seja utilizada sem que esteja
no workspace (entenda como sem que a função tenha sido executada, carregada), o SciLab
apresentará uma mensagem de erro.
• Caso você use um nome na sua função que já exista como padrão no SciLab, a sua função
sobrescreverá a função anteriormente padrão até que você apague sua função (por meio de
clear ou fechando e abrindo o software).
Por padrão, cos calcula o cosseno dos valores utilizados como seu argumento. Uma vez
que nossa função de calcular média está, agora, nomeada assim, se utilizarmos cos em algum
programa, calcularemos o valor da média daquele vetor.
Ao se apagar a função criada por nós mesmos, a função volta ao seu padrão.
Capítulo 10. FUNÇÕES 91
Exemplo 02: crie uma função que calcule o menor elemento de um vetor.
A partir do enunciado da questão, sabemos que precisamos criar uma função. Comecemos
por esta parte.
Chamemos nossa função de menor, cuja entrada é apenas uma variável numérica, assim como
a saída. Em seu corpo, associamos à variável ‘a’ o valor infinito, para servir como comparação
aos valores do vetor inserido. Abrimos, então, um for que varrerá elemento a elemento do
vetor utilizado como argumento, avaliando, logo em seguida, quais valores são menores que ‘a’.
Quando este if resolver como verdadeiro, ‘a’ se torna ‘x(i)’, menor elemento até então.
Os dois end em sequência fazem o programa voltar ao for, atualizando o valor de ‘i’, repetindo
o processo. Na linha 8, endfunction encerra o processo de criação de nossa função.
Como a questão só pedia para criarmos a função, está resolvido. Mas é sempre bom testá-la
em um programa, algo simples. Apenas não podemos esquecer de executar a função antes de
testarmos, para que ela esteja carregada no SciLab, e de não começarmos o programa com clear.
Um programa simples para testar nossa função seria:
Capítulo 10. FUNÇÕES 92
Começamos com clc para trabalharmos com Console limpo. Usamos uma estrutura com for
para receber o vetor ‘v’. À variável ‘r’ atribuímos o valor resultante da aplicação de nossa função
menor, voltando ‘r’ ao final.
Exemplo 03: crie uma função que receba um polinômio f (x) e calcule seu valor em
x = [1, 3, 5, 7, 9].
Comecemos escrevendo nossa própria função.
De forma simples, criamos calc, que recebe um polinômio como entrada e apresenta um
vetor como saída. Na linha 2, criamos o vetor ‘c’, vetor com valores os quais queremos saber
o resultado de ‘f’ inserido, utilizando o comando horner aprendido em aulas passadas. O
endfunction encerra nossa criação.
Para testarmos, apliquemos calc no seguinte programa:
Capítulo 10. FUNÇÕES 93
Na linha 2 criamos o polinômio ‘p’, sobre o qual aplicaremos a função que criamos. Criamos
a variável ‘r’ como sendo o vetor com os resultados após a execução. Exibimos o resultado com
disp, uma vez que nossa função não foi programada para fazê-lo automaticamente.
Exemplo 04: crie uma função que, dado um volume de água em mililitros, e uma massa
de cloreto de sódio em gramas, calcule a concentração de uma solução, em mol.L−1 , feita a
partir dos dados fornecidos anteriormente. Sua função deve voltar o resultado automaticamente.
Utilize 58,45g como massa molar do NaCl.
Como nos habituamos a fazer, comecemos pelo processo de criação da nossa função:
Nossa função, chamada con, calcula a concentração. É importante notar a ordem dos
argumentos ‘a’ e ‘b’ para nossa função. Do jeito que ela foi escrita, ‘a’ deve ser a massa de NaCl
inserida pelo usuário e ‘b’ o volume de água. A constante 17.10863 é utilizada como fator de
conversão, uma vez que a massa molar do soluto é constante.
Visto que a questão solicitou que a nossa função voltasse automaticamente o resultado, ‘c’
neste caso, nossa função não possui saída, apresentando um disp para voltar a função.
Teste a função no seu próprio software para ver se ela está correta, aproveite e já comece a
resolver os exercícios abaixo.
2. Faça uma função que dê o valor da soma da diagonal principal de uma matriz.
3. Faça uma função que transforme todos os números negativos de uma matriz em 1.
Capítulo 10. FUNÇÕES 94
4. Faça uma função que verifique se um número é primo, retornando em booleano (%t ou
%f).
5. Crie uma função que receba um vetor e retorne 2 polinômios, sendo que para o primeiro
polinômio o vetor informado seja os coeficientes desse polinômio e para o segundo, o vetor
informado seja as raízes.
7. Faça uma função que receba um número e se ele for ímpar volte o seu quadrado e não for
volte sua raiz quadrada.
8. Faça uma função que crie uma matriz quadrada que possua somente um número. Sua
função deve receber o tamanho da matriz e o número que irá compor todos os elementos
da matriz. Exemplo:
95
11 Gráficos
O Scilab nos permite imprimir (plotar) diversos tipos de gráficos, desde os bidimensionais
até os tridimensionais. Aqui vamos apresentar alguns dos comandos usados para conseguirmos
fazer estes gráficos.
deff(’y=teste(a,b)’,’y=a.^b’)
Sendo a primeira entrada como a variável de saída, com o nome da função e suas entradas,
tudo entre aspas (’y=teste(a,b)); e a segunda entrada o que a função executará com as entradas,
também entre aspas (’y=a.^b’).
Neste exemplo, a função definida foi a função teste, sendo a saída a variável y e tendo como
entradas as variáveis a e b. Esta função elevará, elemento a elemento, o (os) valor (es) de a a b.
eval3d(<função>,<vetor1>,<vetor2>)
Exemplo:
x=[1:5]
y=x
z=eval3d(teste, x, y)
z=
Capítulo 11. Gráficos 96
1. 1. 1. 1. 1.
2. 4. 8. 16. 32.
3. 9. 27. 81. 243.
4. 16. 64. 256. 1024.
5. 25. 125. 625. 3125.
Neste caso, utilizamos a função previamente definida com a função deff. Aqui, o comando
criou uma matriz Z elevando os valores do vetor X e do vetor Y.
plot(<abscissas>,<ordenadas>,<LineSpec>)
Além disso, podemos colocar títulos para o gráfico e para os eixos, usando a função xtitle,
que possui a seguinte sintaxe:
Exemplo:
Além disso, podemos colocar títulos para o gráfico e para os eixos, usando a função xtitle,
que possui a seguinte sintaxe:
Exemplo:
Neste exemplo, foram colocados os nomes ‘Gráfico Seno’ para o título do gráfico, ‘Eixo X’
para o título do eixo das abscissas e ‘Eixo Y’ para o título do eixo das ordenadas.
fplot2d(<abscissas>,<função>)
Capítulo 11. Gráficos 98
Exemplo
x=-1:0.1:1
deff(’z=cubo(a)’,’z=a.^3’)
fplot2d(x,cubo)
Neste exemplo, definimos a função cubo e utilizamos ela na função fplot2d, resultando no
gráfico mostrado na Figura.
contour2d(<abscissas>,<ordenadas>,<altura>,<número de curvas>)
Exemplo:
Plote as curvas de nível da função z = x2 + y 2 .
x=-1:0.1:1
y=x
deff(’a=f(b,c)’,’a=b.^2+c.^2’)
z=eval3d(f,x,y)
contour(x,y,z,6)
Capítulo 11. Gráficos 99
Neste exemplo, foram plotadas as curvas de nível da função dada, usando a função eval3d
para relacionar os vetores de abscissas e ordenadas, isso com 6 curvas.
plot3d(X,Y,Z,<argumentos>)
Sendo,
X, Y e Z = Matrizes que indicarão as coordenadas tridimensionais. <argumentos> =
Conjunto opcional que irá definir o estilo do gráfico.
Os <argumentos> variam entre alpha, teta, leg, flag e ebox. Sendo no formato <opção_1> =
<valor_1>, . . . , <opção_n> = <valor_n>.
alpha e teta = Ângulos dados em graus, as coordenadas esféricas de observação do ponto.
flag = um vetor real de tamanho três. flag=[mode,type,box].
leg = string definindo os rótulos para cada eixo com @ como um separador de campos, por
exemplo "X@Y@Z".
ebox = especifica as fronteiras do esboço através do vetor [xmin, xmax, ymin, ymax, zmin,
zmax]. Este argumento é utilizado junto com type em flag, se este for ajustado para 1, 3 ou 5
(volte acima para ver o comportamento correspondente).
Exemplos:
Vamos criar um gráfico da função f (x) = sen(x)cos(y)2 nos intervalos de −3 > x >
3e − 2 > y > 2.
Para isso criamos o seguinte programa:
Capítulo 11. Gráficos 102
Como não foi colocado nem alpha nem theta, são inseridos os valores padrões alpha = 35 e
theta = 45. Vamos utilizar agora o alpha = 30 e o theta = 60.
Podemos adicionar legendas a este gráfico com a função leg, dessa forma:
Por fim, vamos adicionar um modo = 0, tipo = 2 e caixa = 3 pela função flag.
Produzindo o gráfico:
Capítulo 11. Gráficos 104
Gráfico gerado:
Capítulo 11. Gráficos 107
É possível utilizar o comando scf() para abrir e indicar as janelas gráficas. Veja o exemplo
agora:
Perceba que o programa agora abriu duas janelas gráficas, a Janela gráfica 1 e a Janela gráfica
número 2. Esse números foram identificados ao utilizar o comando scf(1) ou scf(2), antes de
cada plot. Por padrão, ao não utilizar o comando scf(), ao utilizar o comando plot, abre-se uma
janela gráfica número 0.
É possível ainda, numa mesma janela gráfica, plotar mais de uma figura, utilizando o comando
subplot(x,y,z). Veja o exemplo:
Capítulo 11. Gráficos 108
Neste caso, na mesma janela gráfica (número 0), foram plotados dois gráficos. Os dois
primeiros argumentos do comando subplot indicam em quantas linhas e colunas será dividida a
janela gráfica. O terceiro comando indica a posição de cada gráfico. Veja mais um exemplo:
Capítulo 11. Gráficos 109
x
y = 3x + 2e( x−1 ) (11.1)
y = |x| (11.2)
4. Plote, em um mesmo gráfico, os gráficos de sen(x) e de cos(x), com x sendo um vetor tal:
x=[0:0.1:2*%pi].
y = x2π (11.3)
y = πx2 (11.4)
6. Plote o gráfico da função abaixo de modo que a curva seja da cor azul e tenha formato de
quadrados. Tome x=[1:0.1:10].
√ π
y = ( 3x − 2)x− 2 (11.5)
7. Faça um programa que plote os gráficos de y = ex e y = ln(x) numa mesma janela gráfica,
com cores diferentes. Com x variando de 0 a 5.
1
z= (11.6)
log(x2 + 1) + log(y 2 + 1)
112
Referências