Você está na página 1de 284

ESCOLA POLITCNICA DA UNIVERSIDADE DE PERNAMBUCO

Introduo Programao

Prof Gilka Rocha Barbosa

CCMP0016 Introduo Programao


Carga Horria Semestral: 60 horas
Nmero de Crditos:

Tericos: 3
Prticos: 1
Pr-Requisitos: No h

Ementa
Noes bsicas de computao.

Algoritmos: projeto e anlise.


Programao: noes de tipos e estruturas
elementares de dados, operadores, funes
embutidas e expresses, instrues condicionais,
incondicionais e de repetio, tipos definidos pelo
programador e tipos abstratos de dados.
Estruturas compostas de dados: vetores, matrizes
e registros. Noes de estruturas dinmicas de
dados. Noes de funes e procedimentos.
Recurso. Noes de arquivos em programao.
Aplicaes utilizando linguagem de programao
estruturada.

Objetivos de aprendizagem
Apresentar ao aluno os conceitos de
programao estruturada atravs do uso de
linguagens de alto nvel.
Ao final do semestre, o aluno estar apto a:
Ter uma formao bsica em computadores
e seus perifricos.
Estruturar em nvel de pseudocdigo um
problema.
Definir estruturas elementares bsicas para
resoluo de um problema.
Desenvolver programao estruturada em
uma linguagem de alto nvel.
4

Contedo programtico
PRIMEIRA UNIDADE

Contedo programtico
SEGUNDA UNIDADE

Metodologia
Aulas tericas expositivas.
Trabalhos individuais.

Trabalhos de grupos.
Uso intensivo de computador e de

linguagem de programao

Bibliografia
Bsica:
ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da
Programao de Computadores. Prentice Hall, 2005.
BROOKSHEAR, J. G. Cincia da Computao: Uma
Viso Abrangente. So Paulo, Bookman, 1999.

Complementar:
FARRER, H. Algoritmos Estruturados. 3 ed., LTC,
1999.
FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lgica de
Programao;. 2a. ed., Makron Books, 2006.
MIZHARI, V. V. Matlab 6: Mdulo 1, So Paulo.
Makron Books, 1994.
SALIBA, W. L. C. Tcnicas de Programao: Uma
Abordagem Estruturada. Makron, McGraw-Hill, 1992.
8

Consenso
Uso de computadores apenas quando permitido
No permitido o uso de celulares
No permitido gravar nem fotografar a aula
No permitido o consume de alimentos e
bebidas no laboratrio
Evitar conversas em paralelo
Pontualidade
Frequncia de acordo com as Normas da
Universidade
Providenciar material para estudo
9

Agenda
Aula
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Dia
02/03
05/03
09/03
12/03
16/03
19/03
23/03
26/03
30/03
02/04
06/04
09/04
13/04
13/04
16/04
16/04
20/04
23/04
27/04

seg
qui
seg
qui
seg
qui
seg
qui
seg
qui
seg
qui
seg
qui
seg
qui
seg
qui
seg

Contedo
Apresentao da disciplina
Histrico
Aniversrio da Poli
Arquitetura
Arquitetura
Algoritimo
Algoritimo
Algoritimo
Algoritmo
Semana Santa
Atividade extra classe
Algoritmo
Algoritmo
Aula extra
Algoritmo
Aula extra
Algoritmo
1 EE
Correo e devoluo em sala

Aula
19
20
21
22
23
24

25
26
27
28
29
30
31
32
33
34
35
36

Dia
30/04 qui
04/05 seg
07/05 qui
11/05 seg
14/05 qui
18/05 seg
21/05 qui
25/05 seg
28/05 qui
01/06 seg
04/06 qui
08/06 seg
11/06 qui
15/06 seg
18/06 qui

22/06

seg

Contedo

SCILAB
SCILAB
SCILAB
SCILAB
SCILAB
SCILAB
Corpus Christi
SCILAB
SCILAB
Atividade extra classe
Atividade extra classe
SCILAB
2EE (K - Z)
2EE (A - J)
2 Chamada
Atividade extraclasse maro
Atividade extraclasse abril
Atividade extraclasse maio
Atividade extraclasse junho
Prova final

10

Conceitos
O que um COMPUTADOR?

Mquina que recebe dados (entrada),


processa conforme programado, e
fornece dados (sada).
11

Estrutura geral de um sistema de computao


Sistemas de Informao

Aplicativos

SGBD

Word

Sistema

Windows

CAD

Operacional

DOS
Linux

Interface de

Componentes

hardware

Fsicos
Componentes Bsicos
Perifricos

Monitor
Teclado
Processador

Componentes Multimdia
Componentes de rede

12

A evoluo dos sistemas de computador

Primeira gerao (aproximadamente entre 1951 e 1959)


Tecnologia de vlvulas.

Tem como marco inicial o UNIVAC, construdo em 1951.

Segunda gerao(aproximadamente entre 1955 e 1965)


Caracterizada pelos computadores transistorizados.
Tem como marco o TRADIC, construdo em 1955, alm da criao
das linguagens FORTRAN e COBOL,

Terceira gerao (aproximadamente entre 1965 e 1975)


Circuitos Integrados, os Chips. Fios, transistores e outros
componentes em um nico chip.

Quarta gerao(aproximadamente a partiir de 1975)


Microcomputadores
Tem como marco inicial o chip 8080 da Intel (1974),

Quinta gerao ....


Atual gerao dos computadores, notebooks, palmtops e telefonia
mvel, multimdias, computadores inteligentes e a realidade virtual.
13

Primeira gerao
Mark I - 1944

Universidade de Harvard e a IBM


Ocupava 120 m2

Tinha milhares de rels e fazia um


barulho infernal.
Uma multiplicao de nmeros de 10
dgitos levava 3 segundos para ser
efetuada.

ENIAC:

Eletronic Numeric Integrator And Calculator

1946
18.000 vlvulas,
conseguia fazer 500 multiplicaes
por segundo

14

Primeira gerao

http://www.tecmundo.com.br/infografico/9421-a-evolucao-dos-computadores.htm
15

Segunda gerao

16

Terceira gerao

17

Quarta gerao

18

Quinta gerao

19

Primeiro HD

Criado pela IBM em 1956


Capacidade: 4,7 MB

Peso: 1 tonelada
Preo: mais de US$ 1.000.000,00
20

Interfaces

21

Interfaces

22

Geraes

Memria
RAM
At 768 GB

23
23

Celular.......

Ericson MTA - 1956

Motorola Dynatac 8000X 1973


25 cm de comprimento
7 cm de largura,
1 kg
Bateria 20 minutos.

24

Tipos de computadores
Mainframe: grande capacidade de memria e
velocidade de processamento
Microcomputador: utilizado em aplicaes pessoais
e domsticas ou como terminais de sistemas
multiusurio
Supercomputador: voltado resoluo de
problemas que exigem grande capacidade de
processamento em termos de velocidade e preciso
de resultados
Cluster de computador: conjunto de sistemas de
computadores independentes e ligados em rede,
mas que podem ser configurados para realizarem
em conjunto um determinado trabalho de
processamento.
25

Estrutura geral de um sistema de computao


Software

Sistemas de Informao

Aplicativos

SGBD
Word

Sistema

Windows

CAD

Operacional

DOS
Linux

Interface de

Componentes
Componentes Bsicos

hardware

Fsicos

Perifricos
Componentes Multimdia
Componentes de rede

Hardware
26

Tecnologias de hardware
Arquitetura bsica de um sistema de computador

Unidade de
entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

27

Unidade de entrada

Unidade de
entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

Formada pelos equipamentos que permitem a


incluso de dados a serem processados pelo
sistema de computador.
A evoluo das tecnologias de entrada de dados
busca mtodos, tcnicas e ferramentas cada
vez mais fceis de utilizar
Teclados
Dispositivos indicadores
Dispositivos de leitura magntica
Dispositivo de leitura tica
Dispositivos de captura de imagens
Dispositivos de captura de udio
Dispositivos de captura de sinais
28

Unidade de memria principal

Unidade de
entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

Formada pelos dispositivos que armazenam os


dados e as instrues em processamento pela
Unidade Central de Processamento (UCP/CPU).
Os dados e os programas so armazenados na
memria principal durante o processamento.
Posteriormente, os resultados so liberados
para o armazenamento em memria secundria
ou para a unidade de sada.
A memria principal constituda por diferentes
componentes eletrnicos fabricados com
material semicondutor e denominados chips.
Entre os chips de memria, destacam-se:
RAM (Random Access Memory).
ROM (Read Only Memory).
29

Unidade de memria secundria

Unidade de
entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

Utilizada em virtude da limitao da memria principal.

Dispositivos de armazenamento mais baratos que a


memria principal e viabilizam o armazenamento de
grandes volumes de dados por perodos prolongados.
apresenta como desvantagem uma menor velocidade de
acesso em virtude de empregarem mecanismos
eletromecnicos para leitura e gravao dos dados.
meios de armazenamento

Meio magntico
Fitas magnticas.
Discos magnticos

Meio tico
CD (compact disk).
DVD (Digital Video Disk).
30

Unidade de

Memria

entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

1 Byte

20

8 bits

1 Kilobyte (KB)

210

1024 bytes

1 Megabyte (MB)

220

1024 kilobytes

1 Gigabyte (GB)

230

1024 megabytes

1 Terabyte (TB)

240

1024 gigabytes

1 Petabyte (PB)

250

1024 terabytes

1 Exabyte (EB)

260

1024 petabytes

1 Zettabyte (ZB)

270

1024 exabytes

1 Yottabyte (YB)

280

1024 zettabytes

31

Tabela ASCII
American Standard Code for Information Interchange

32

Unidade Central de
Processamento

Unidade de
entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

Pastilha de silcio composta por duas unidades:


Unidade de controle.
Comanda todo o sistema de processamento atravs de
cdigos especiais (instrues), que indicam ao computador
as operaes que ele deve realizar e quais os dados a que
elas se referem

Unidade de aritmtica e lgica


Formada pelos componentes que realizam clculos
matemticos e comparaes lgicas.
Registradores.
Armazenam as instrues e dados em processamento
33

Unidade de sada

Unidade de
entrada

Unidade
central de
processamento

Unidade de
sada

Unidade de
memria

Formada pelos equipamentos que permitem


apresentao de resultados processados pelos
sistemas.
As tecnologias de sadas de dados tm evoludo
no sentido de proporcionar resultados mais
atraentes e fceis de utilizar
Dispositivos de sada em vdeo
Dispositivos de sada impressa
Dispositivos de sada sonora
34

Software
Instruo um comando que pode ser decodificado
e executado

Algoritmo expressa formalmente uma soluo para


um problema atravs de um conjunto finito de
passos, que, ao ser executado, opera certas
estruturas de dados, produz resultados e cumpre
determinado objetivo
Programa um algoritmo expresso em linguagem
de um sistema de computador capaz de executar
Software o conjunto de programas que um
equipamento capaz de executar, uma soluo
para determinado problema
35

Software

Usurio

Software

Hardware

Software

Bsico

Exemplo
Sistemas Operacionais
Loader
Compiladores
Link-editores

Suporte

Gerenciador de rede
Controle de espao
Segurana

Aplicativo

Processador de texto
Planilha eletrnica
Edio grfica

Aplicativo
especfico

Sistema de contabilidade
Clculos de estruturas
Folha de pagamento

Software
aplicativo /
suporte
Software
bsico
Hardware

36

Software de suporte
Ferramentas de desenvolvimento de software
empregadas para o desenvolvimento de outro
software.

Gereciadores de Banco de Dados


Gerenciadores de rede
Linguagens de programao.
Tradutores de linguagens de programao.
....

37

Linguagem de programao
Conjunto de termos (vocabulrio) e
de regras (sintaxe) que permitem a
formulao de instrues a um
computador.
1 Gerao: Linguagens Binrias
2 Gerao: Linguagens Assembly

3 Gerao: Linguagens Alto-Nvel


4 Gerao: Linguagens Consulta

5 Gerao: Linguagens Naturais

38

Linguagens de Programao
Nvel de

Abstrao
Facilidade
de
Programao

2
3
4
5

Consumo de
Recursos

de
Mquina

39

Linguagens de Programao
Trecho de cdigo em C

a=5;
b=10;
c=a+b;
Cdigo em Assembly (MIPS)

ADDi $t0,$zero,5 //Adiciona-se ao registrador t0 o valor 5


ADDi $t1,$zero,10 //Adiciona-se ao registrador t1 o valor 10

ADD $t2,$t0,$t1 //Soma-se os valores contidos nos

registradores t0 (5) e t1 (10) e atribui o


resultado ao registrador t2

40

Conceitos bsicos - Dados


Os dados so representaes de abstraes
acerca do mundo.
So classificados em tipos.
Tipos podem ser primitivos ou construdos
Tipos primitivos so os tipos fornecidos
pela linguagem de programao de
forma intrnseca.
Inteiros, reais, caracteres, lgico
So a base para a construo de novos
tipos

41

Tipos de Dados
Numrico
Nmeros
Inteiros
Reais

Caractere
Smbolos da tabela ASCII

Literal
Agregado de caracteres

Lgico
verdadeiro / falso
42

Tipos de Dados
Constante
Determinado valor que no se modifica
durante a execuo de um programa.
Pode ser numrica, lgica e literal.
Pode ou no receber um identificador.
Pode aparecer dentro de expresses.
Ex: num + 2 - 5/val

43

Tipos de Dados
Variveis
reas reservadas na memria do
computador para armazenar um tipo de
dado determinado.
So posies de memria, s quais devese associar nomes (identificadores) e um
tipo de dado.
O contedo pode ser alterado durante a
execuo do programa
S podem armazenar um valor a cada
instante
44

Tipos de Dados
Variveis x Constantes

b+5

a, b e 5 so variveis ou constantes?

45

Atributos das variveis

Toda varivel tem


um nome (identificador)
um tipo de dado
um valor
Memria

val1

val2

inteiro

real

46

Nomes ou identificadores
Regras para definir o nome ou identificador
(nome das variveis, constantes, programas...):

S podem conter letras e dgitos;


Primeiro caractere deve ser uma letra;
Letras maisculas e minsculas podem ser
consideradas caracteres diferentes;
O nico caractere especial aceito o
underline;
Palavras reservadas no podem ser
Memria
usadas.
a
x
val1
inteiro

val2
real
47

Exemplo de identificadores
Identificadores
vlidos

Identificadores
invlidos

A
a
nota
Nota
NOTA
a32
nota_1

5b
e 12
x-y
SAT
case
prova 2n

48

Tipos das variveis


Numrico
Inteiros
-28, 156
Reais
23.45, -9.36

Lgico ou Booleano

Memria

val1

val2

inteiro

real

Falso
Verdadeiro

Caractere
a, b

Literal
aluno, 1 + 2, ou aluno, 1 + 2
49

Valor das variveis


Valor: a varivel contm um valor quando est
sendo usada
Memria

val1

val2

inteiro

inteiro

Ateno! Uma varivel sem inicializao poder conter


um valor qualquer e imprevisvel.
Costuma-se dizer que contm lixo.
50

Variveis compostas homogneas


Identificadas por um mesmo nome, individualizadas
por ndices, cujo contedo do mesmo tipo.
Exemplo 1: Notas de 10 alunos (Vetor): N1
6,0

7,0

9,0

6,0

5,5

9,1

10,0

4,7

7,4

8,6

10

N1[3] referencia o terceiro elemento, cujo contedo 9,0


Exemplo 2: Notas de 10 alunos em dois semestres (Matriz): N2
1

6,0

7,0

9,0

6,0

5,5

9,1

10,0

4,7

7,4

8,6

10,0

8,0

1,0

0,0

8,0

7,0

10,0

4,0

3,9

2,7

10

N2[2,3] referencia o terceiro elemento da segunda linha, cujo


contedo 1,0
51

Atribuies
Armazena um valor em uma varivel.
ex:
X 5;
Nome fulano;
Z X + 9 * 15;
Y 12 - x + 5;
Qual o resultado de

A 4
B5
A B
BA

??

52

Operaes
Conjunto de aes a serem
executadas sobre um conjunto de
objetos
Meio pelo qual incrementamos,
decrementamos, comparamos e
avaliamos dados no computador.
Tipos
Monodicas (-x)
Didicas (a+b)

53

Operaes
Expresses
Combinaes de variveis, constantes e
operadores em uma nica sentena, que tm
como finalidade a obteno de um resultado.
As expresses mais comuns so as aritmticas.

Operadores
Smbolos que representam as operaes
Tipos bsicos: aritmticos, relacionais, lgicos e
atribuio

54

Linearizao de expresso

Tradicional

Computacional

((2/3-(5-3))+1)*5

55

Operadores Aritmticos
Utilizados para obter resultados numricos.
Operao
Exponenciao
Radiciao

Operador
** , ^
raiz

Multiplicao

Diviso

Diviso inteira

Resto da diviso

div, quociente

resto

Adio

Subtrao

56

Operadores Relacionais
Implementam comparaes entre os dados
Operao
Igual a
Maior que
Menor que
Maior ou igual a
Menor ou igual a
Diferente de

Operador
=
>
<
>=
<=
<>

57

Operadores Lgicos
Utilizam a lgica booleana para a construo de
expresses condicionais

Operao
Disjuno
Conjuno
Negao

Operador
OU
E
NO

58
58

Tabela Verdade
Negao
A no A
F
V
V
F

V
V
F
F

V
F
V
F

Disjuno
A ou B
V
V
V
F

Conjuno
AeB
V
F
F
F

59
59

Prioridade das operaes


1: parnteses
2: funes

3: unrio
4: ** ^
5: * e /

6: + e
7: relacionais
8: NO
9: E

10: OU

Funes
sen(x), cos(x),
abs(x), int(x),
log(x), raiz(x)
60

Operadores lgicos - exemplo


Variveis
A

16 "MIRIAN" "ADVOGADO"

64 "PEDRO"

2.5

NOME

"ANA"

PROFISSAO

Relaes
A + 1 >=
RAIZ(B)

NOME <>
"ANA"

PROFISSAO
= "MDICO"

"MDICO"
"PROFESSOR"

61

Operadores lgicos - exerccio


Variveis

Relaes

X Y Z

COR

NOME

1 2 5

"AZUL"

"PAULO"

4 3 1

"VERDE"

"JOS"

X^2 + Y > COR = NOME <>


Z
"AZUL" "JOS"

1 1 2 "BRANCO" "PEDRO"

1 2 1

"AZUL"

"JOS"
62

Operadores lgicos - exerccio


Varivel
X
Y
Z
NOME
SIM

Tipo
numrica
numrica
numrica
literal
lgica

Contedo
2
5
9
"MARIA"
FALSO

a) X + Y > Z e NOME = MARIA


2 + 5 > 9 e MARIA= MARIA
falso e verdadeiro
falso
b) SIM ou Y >= X
falso ou 5 >= 2
falso ou verdadeiro
verdadeiro
63

Operadores lgicos - exerccio


Varivel
X
Y
Z
NOME
SIM

Tipo
numrica
numrica
numrica
literal
lgica

Contedo
2
5
9
"MARIA"
FALSO

c) no SIM e quociente(Z,Y) + 1 = X
no falso e quociente (9,5) + 1 = 2
no falso e verdadeiro
verdadeiro

d) ) X2 < Z + 10 ou NOME = JORGE e SIM


4 < 19 ou MARIA = JORGE e SIM
4 < 19 ou falso e falso
verdadeiro ou falso
verdadeiro
64

Exerccios

4. Se x possui o valor inicial 15 e se forem


executadas as seguintes atribuies na ordem em
que aparecem, qual o valor final de x?

xx+2
xx-6
x x/2
x2+3*x
5. Qual a sequncia de operaes necessrias
para trocar os valores das variveis x, y e z de
modo que x fique com o valor de y, y fique com
o valor de z e z fique com o valor de x?
65

Operaes com variveis


Variveis devem ser declaradas
Exemplo: <varivel>: <tipo>;

As variveis so modificadas atravs de um


comando de atribuio (=, , , := ) ou de leitura
Exemplo: Ler <varivel>;
a 3;
a a + 2;
As variveis podem ser impressas
Exemplo: Escrever (a);
Existem condies
para testar se a operao pode ser executada
para verificar o resultado (falso/verdadeiro)
66

Atribuio
Atribui valores ou operaes a variveis.
:= =

<identificador> <expresso | identificador>


ex:
X 4;
X x + 1;
y aula;
teste falso;

67

Introduo
Programao
Algoritmos

Algoritmo
Um algoritmo formalmente uma
sequncia finita de passos que levam a
execuo de uma tarefa.
Estas tarefas no podem ser
redundantes nem subjetivas na sua
definio, devem ser claras e precisas.

69

Exemplo de Algoritmo
Sacar dinheiro num banco 24 horas

Passo
Passo
Passo
Passo

1:
2:
3:
4:

Ir at um banco 24 horas.
Colocar o carto.
Solicitar a quantia desejada.
Se o saldo for maior ou igual
quantia desejada, sacar;
caso contrrio,
escolher outro valor e
refazer o Passo 2 .
Passo 5: Retirar o carto.
Passo 6: Sair do banco 24 horas.
70

Representao de Algoritmos
Propriedades de um algoritmo:

a descrio deve ser finita;


Ser objetivo nas instrues;
Usar somente um verbo por frase;
Escrever textos simples, para leigos;
Usar frases curtas e simples;
Usar palavras que no tenham sentido dbio.

Teste de mesa
Testes de verificao da corretude de um
algoritmo de forma simples e interativa.

71

Algoritmo - exemplos
1. Somar trs nmeros

2. Fazer um sanduche
3. Trocar uma lmpada
4. Ir para a escola

72

Mtodo para construo de algoritmos


a) Ler atentamente o enunciado, destacando os
pontos mais importantes;
b) Definir os dados de sada
Quais dados sero gerados

a) Definir os dados de entrada


Quais dados sero recebidos

d) Definir o processamento
Quais clculos sero efetuados e quais as restries
para esses clculos.

e) Construir o algoritmo utilizando uma


representao escolhida;
f) Testar o algoritmo realizando simulaes.
73

Representao de algoritmos
Descrio narrativa
Analisar o enunciado do problema e escrever os
passos a serem seguidos para resoluo do
problema utilizando uma linguagem natural.
Vantagem
No necessrio aprender nenhum novo
conceito.

Desvantagem
a linguagem natural abre espao para vrias
interpretaes, o que posteriormente dificultar
a transcrio desse algoritmo para programa.

74

Representao de algoritmos
Fluxograma
Analisar o enunciado do problema e escrever os
passos a serem seguidos para resoluo do
problema utilizando smbolos grficos
predefinidos.
Vantagem
O entendimento de elemento grfico mais fcil
que o entendimento de textos.
Desvantagem
necessrio aprender a simbologia dos
fluxogramas e o algoritmo resultante no
apresenta muitos detalhes dificultando sua
transcrio para um programa.
75

Representao de algoritmos
Fluxograma
Conjunto de smbolos utilizados no fluxograma
Incio e fim do algoritmo
Indica o sentido do fluxo de dados, serve
exclusivamente para conectar os smbolos
existentes
Clculos e atribuies de valores
Entrada de dados
Sada de dados

Tomada de deciso, indicando a possibilidade se


desvios
76

Representao de algoritmos
Pseudocdigo, Portugol ou Portugus estruturado
Analisar o enunciado do problema e escrever os
passos a serem seguidos para resoluo do problema
por meio de regras predefinidas.
Vantagem
a passagem do algoritmo para qualquer linguagem de
programao quase imediata, bastando conhecer as
palavras reservadas da linguagem de programao.

Desvantagem
necessrio aprender as regras do pseudocdigo

77

Exemplo de algoritmo
Mostrar o resultado da soma de dois nmeros
a) Descrio narrativa
Passo 1: Receber os dois nmeros que sero somados.
Passo 2: Somar nmeros.
Passo 3: Mostrar o resultado obtido.
b) Fluxograma
Incio

N1, N2
S = N1 + N2
S
Fim

c) Pseudocdigo
ALGORITMO soma
DECLARE N1, N2, S : NUMRICO
INICIO
LEIA (Digite dois nmeros, N1, N2)
S N1 + N2
ESCREVA (Soma = , S)
FIM
78

Exerccios -

Usando pseudocdigo

1. Faa um algoritmo para mostrar o resultado da


diviso de dois nmeros;

2. Faa um algoritmo para calcular a mdia


aritmtica entre duas notas de um aluno e
para mostrar a situao desse aluno, que pode
ser aprovado (mdia maior ou igual a 7,0) ou
reprovado;
3. Faa um algoritmo para calcular o novo salrio
de um funcionrio. Sabe-se que os
funcionrios que possuem salrio atual at R$
500,00 tero aumento de 20%, os demais
tero aumento de 10%.

79

Estrutura de um algoritmo
Dados de
entrada

Processamento

Dados de
sada

Algoritmo
<declarao de variveis>
Incio
<comandos>
Fim.
80

Estrutura de um algoritmo
Algoritmo soma
declare A, B, C : numrico;
Incio
leia (Informe dois nmero, A, B);
C A + B;
escreva(O valor da soma :, C);
Fim.

81

Operaes com variveis


Variveis devem ser declaradas
Exemplo: <varivel>: <tipo>;

As variveis so modificadas atravs de um


comando de atribuio (=, , , := ) ou de leitura
Exemplo: Ler <varivel>;
a 3;
a a + 2;
As variveis podem ser impressas
Exemplo: Escrever (a);
Existem condies
para testar se a operao pode ser executada
para verificar o resultado (falso/verdadeiro)
82

Atribuio
Atribui valores ou operaes a variveis.
:= =

<identificador> <expresso | identificador>


ex:
X 4;
X x + 1;
y aula;
teste falso;

83

Comando de entrada
Palavrachave

Nome das variveis


nas quais sero
armazenados o
valores provenientes
do meio de entrada

leia (<identificador> [,<identificador> [ ... ] ] );


Captura valores do dispositivo de entrada
especificado (Padro = teclado).
Os dados recebidos so armazenados em
variveis.
Pode conter mensagens.

leia (a)
leia (g, r, b)
leia (Digite seu nome: , nome)
84

Comando de sada
Palavrachave

Contedo que ser


mostrado atravs de
um meio de sada.

escreva ( <expresso> );

Envia a expresso para o dispositivo de sada


especificado (Padro = tela).
Expresso pode ser uma combinao de
variveis, constantes e mensagens separadas
por vrgulas.
escreva (x)
escreva (Contedo de Y = , y)
escreva(O fatorial de, N, " ", fat);
85

Faa um Teste de Mesa do algoritmo PRIME.


algoritmo PRIME
declare MA, AA, MES, ANO, A, R, T, CONT : numrico
incio
leia (Informe o ms e o ano atuais, MA, AA)
leia (Informe o ms e o ano do seu nascimento, MES, ANO)
se MES <= MA
A AA - ANO
R MA - MES
seno
A AA ANO 1
R 12 MES + MA
fim-se
CONT 0
T 12 - MA
enquanto T > 0
CONT CONT + 1
TT-1
fim-enquanto
escreva (Tenho, A , anos e, R, meses)
escreva (Faltam , CONT, meses para as frias)
fim

86

Estrutura de um algoritmo
Algoritmo <nome do algoritmo>;
declarao de variveis;
incio
comando 1;
comando 2;
....
comando n;

fim.

90

Exerccio
6. Dados trs valores positivos, a, b e c,
determine a sua mdia aritmtica,
harmnica, geomtrica e ponderada com
pesos de 1, 2 e 3 respectivamente.

91

Exerccio
7. Foram digitadas informaes sobre
trs alunos. Cada uma delas contm
o nome e a nota de um aluno.
a) Escrever o(s) comando(s) de entrada
que leiam estas informaes e
armazene(m) os valores na memria
b) Escrever o(s) comando(s) de sada que
mostrem o contedo das posies de
memria da questo anterior.

92

Identao
So espaos utilizados nas linhas de
comandos de forma a refletir o alinhamento;
Facilitam a identificao das estruturas;
Facilitam a identificao dos comandos que
pertencem a uma estrutura;

...<nvel 1>
.......<nvel 2>
Comandos do nvel 2
.......<fim - nvel 2>

...<fim - nvel 1>

93

Estruturas

Estrutura sequencial;
Estrutura condicional;
Estrutura de repetio;

94

Estrutura Sequencial
Os comandos so executados na ordem
em que aparecem, de cima para baixo.
Algoritmo SEQUNCIA;
declare <lista de variveis>;
incio
Os comandos sero
<comando 1>
executados na ordem
<comando 2>
em que aparecem.
...
<comando n>
fim.
95

Estrutura Sequencial
Ex.:
Algoritmo Mdia
declare Nome : literal
Nota1, Nota2, media : real
incio
leia (Digite o nome do aluno:, nome )
leia (Digite a primeira nota: , Nota1)
leia (Digite a segunda nota: , Nota2)
media ( Nota1 + Nota2 ) / 2
escreva (A mdia de , nome,` : , media )
fim
Exerccio:
Faa um Teste de Mesa do algoritmo Mdia para 3 alunos.
96

Exerccios
8. Dados dois nmeros inteiros A e B, calcular e
exibir: C=A+B+7, D=AB-A, E=A2, F=2A-5B,
G=5A/B-7A, H=5A/(B-7A), J=(A3-senB)/7.
9. Dado o raio de uma circunferncia, calcular sua
rea e seu permetro

10. Dado um nmero real x, calcular e exibir as


imagens de f(x)=5x4-x3 e de g(x)=5senx-2cosx
11. Ler dois nmeros inteiros e positivos X e Y e
efetuar as operaes de adio, subtrao,
multiplicao, diviso de X por Y e a raiz
quadrada do produto de X por Y.
97

Exerccios
12. Dada a temperatura de um corpo, em graus
Fahrenheit, calcular e exibir o valor da referida
temperatura em graus Celsius e em Kelvin.
13. Um aluno comprou trs itens em uma
papelaria. Para cada item so conhecidos:
nome, preo e percentual de desconto. Mostrar
o nome do item, o preo do item, o preo do
item com desconto e o total a pagar
14. Dado um nmero inteiro de segundos,
determinar o seu valor equivalente em horas,
minutos e segundos. Testar para 16723.

98

Estrutura de Controle Condicional


Estrutura de Desvio Condicional,

Controle Condicional,
Deciso ou
Seleo
Permite a escolha entre blocos de
comandos alternativos.

99

A tomada de deciso
Em muitas situaes, necessrio executar
um grupo de aes dependendo do
resultado de certas avaliaes.

Imagine o caso de identificar se um aluno


foi ou no aprovado. O resultado depende
da avaliao da mdia obtida pelo aluno.
Usamos o desvio condicional para executar
um grupo de comandos dependendo do
resultado de uma expresso lgica.
100

Desvio condicional simples

Condio

Verdadeira

comandos

Falsa

Se a condio for verdadeira, provocar um


desvio e executar o bloco de comandos.
101

Desvio condicional simples


...
se <condio>
[ento]
<instruo para condio verdadeira>
fim-se
...
Condio uma expresso lgica.
Se o resultado da condio for verdadeiro, ser
executado o comando aps a palavra ento.
Caso a condio resulte em falso, ou aps a
execuo da instruo, o programa continua
executando os comandos aps o fim-se.
102

Desvio condicional simples


Algoritmo Condicional_Simples;
declare N1, N2, Media : numrico
Inicio

leia (Digite a primeira nota: , N1)


leia (Digite a segunda nota: , N2)
Media (N1 + N2)/2
escreva (Mdia = , Media)
se Media < 7,0
escreva (Deve fazer o Exame Final)
fim-se
fim.
103

Desvio condicional composto

Comandos B

Falsa

Condio

Verdadeira

Comandos A

Se a condio for verdadeira, executar


o bloco de comandos A, caso contrrio,
executar o bloco B. Nunca os dois.

104

Desvio condicional composto


...
se <condio>
[ento ]
<instruo para condio verdadeira>
seno
<instruo para condio falsa>
fim-se
...
Se o resultado da condio for verdadeiro, ser
executado o comando aps a palavra ento,
caso contrrio, ser executado a instruo aps
a palavra seno.
Somente uma das duas ser executada. Aps,
o programa continua...
105

Desvio condicional composto


Algoritmo Condicional_Composto
declare N1, N2, Media : real
Incio
leia (Digite a primeira nota: , N1)
leia (Digite a segunda nota: , N2)
Media (N1 + N2)/2
se Media < 7.0
escreva (Aluno Reprovado!!!)
seno
escreva (Aluno Aprovado!!!)
fim-se
escreva (Mdia = , Media)
fim
106

Bloco de Comandos
Pode-se utilizar um grupo de
comandos ao invs de uma nica
instruo.
se Media < 7,0
leia (Digite NotaFinal:, NotaFinal)
MediaFinal (Media+NotaFinal) / 2
seno
escreva(Aprovado.)
fim-se
107

Aninhamento de Estruturas
Uma estrutura pode conter outras
estruturas em sua definio.
No h limites para a quantidade de
nveis de aninhamento.

108

Desvio condicional aninhado


Algoritmo Condicional_Aninhado
declare N1, N2, Media : real
incio
escreva ( Digite duas notas:, N1, N2)
Media (N1 + N2)/2
se Media < 7,0
se Media < 3
escreva(Aluno Reprovado!!!)
seno
escreva (Aluno em final)
fim-se
seno
escreva(Aluno Aprovado!!!)
fim-se
escreva(Mdia = , Media)
fim
109

Exerccios
15. Considerando A=3, B=2, C=5 e D=7,
qual o valor de X?

a) se no (D > C)
ento X (A + B) * D
seno X (A - B) / C;
b) se (A > 2) e (B > 7)
ento X (A + 2) * (B - 2)
seno X (A + B) / C * (C + D);
c) se (A > 2) ou (B > 7)
ento X (A + 2) * (B - 2)
seno X (A + B) / D * (C + D);
110

Exerccios
16. Ler trs valores inteiros e distintos (A, B e C)
e apresentar o maior valor.

17. Dados dois valores reais, apresentar a


diferena do maior pelo menor.
18. Dado um nmero inteiro positivo, informar se
o nmero lido par ou mpar.
19. Faa um algoritmo que para calcular as razes
reais de uma funo quadrtica, dados os
valores de a, b e c.
f x ax 2 bx c

111

Exerccios
20. Construa um algoritmo que receba 2 nmeros
e, se o primeiro nmero for maior que zero e
menor que 10, mostre a soma destes nmeros;
caso contrrio, mostre a multiplicao deles.

21. Construa um algoritmo que receba cinco grupos


de 2 nmeros e mostre a soma destes
nmeros;
22. Faa um algoritmo que receba dois nmeros e
mostre o maior deles;
23. Faa um algoritmo que receba trs nmeros e
mostre-os em ordem crescente.
112

Estruturas de Repetio
Permitem a execuo de comandos
repetidas vezes.
Repetio condicional
A repetio acontecer com base em
uma condio.
Condio no incio
Condio no final
Repetio com varivel de controle
A repetio ser controlada por uma
varivel (contador)
113

Condio no incio

condio

Verdadeira

comandos

Falsa

Se a condio for verdadeira, os


comandos sero executados e o processo
reinicia; caso contrrio, a repetio no
acontecer

114

Interrupo no incio
Sintaxe

enquanto <condio> [faa]


[incio]
<comandos>
fim-enquanto

Exemplo 1
leia (Digite um nmero: , Y)
X0

enquanto X<Y
escreva ( X )
XX+1
fim-enquanto
115

Exemplo: Calcular a mdia de vrias notas. A nota = -1


indica que j foram informadas todas as notas (flag).

leia(Nota)
Total 0
N0
enquanto Nota<>-1
Total Total + Nota
NN+1
leia (Nota)
fim-enquanto
se N > 0
Media Total / N
escreva ( Media )
seno
escreva ( Notas no informadas)
fim-se
116

Exerccios
24. Escrever um programa que l dois nmeros
inteiros: inicial e final, e mostra os nmeros
inteiros existentes entre o nmero inicial e o
final (inclusive). Crtica: o nmero final deve
ser maior do que o inicial.
25. Implemente um programa que calcula a soma
dos nmeros pares entre dois nmeros lidos
(inclusive).
26. Escrever programa para calcular, para N
(inteiro) lido, o valor de S, dado por
1
2
3
N 1 N
S

...

N N 1 N 2
2
1
117

Varivel de Controle
Repeties que possuem um nmero finito de
execues (conhecido) podem ser processadas
atravs de uma repetio controlada por uma
varivel de controle do tipo contador;
Podem ser crescentes ou decrescentes;
A execuo dos comandos deve acontecer para
cada valor de um determinado conjunto de
valores. Em cada repetio, a varivel de
controle assume um dos valores do conjunto.
Quando a varivel tiver assumido uma vez
cada valor, ento a repetio termina.
121

Varivel de controle
Sintaxe
para <VarControle> <ValorIni> at
<ValorFim> [de <Incremento>] [faa]
[incio]
<comandos>
fim-para
A varivel de controle (VarControle) assumir cada
elemento entre o ValorIni e o ValorFim;
Na primeira vez, a varivel de controle assume o
ValorIni e executa os comandos uma vez. Ao terminar
a execuo, assume o sucessor de ValorIni e executa
novamente. Ao assumir o ValorFim e executar os
comandos, a repetio interrompida;

Algumas linguagens aceitam definir o tamanho do


incremento.
122

Varivel de Controle
Exemplo 1
para X 1 at 10 faa
escreva ( X )
fim-para
Exemplo 2
z0
para X 1 at 5
leia ( Y )
zz+Y
fim-para
x z/X
Escreva (x)
123

Acompanhe a execuo dos algoritmo Primo para


N = 4 e 5 e informe o resultado da varivel P.
ALGORITMO Primo
declare N, Max, Aux, Resto, k : inteiro
declare P : lgico
incio
leia (Digite um nmero, N)
Aux 1
P VERDADE
Max N / 2
k 2
enquanto (P = VERDADE) e (k Max)
Resto N (N/k * k)
se Resto = 0
P FALSO
fim-se
k k + 1
fim-enquanto
se P = VERDADE
escreva (N, primo)
fim-se
fim
124

Exerccios
27. Construa um algoritmo que receba um valor N inteiro e
positivo, calcule e mostre o fatorial de N (N!).
28. Construa um algoritmo que leia dez conjuntos de dois
valores, o primeiro valor corresponde ao nmero do
aluno, o segundo valor corresponde sua altura em
centmetros. Encontre e mostre o nmero e a altura do
aluno mais baixo e do aluno mais alto.

29.Faa um algoritmo que leia cinco pares de valores (a,b),


todos inteiros, positivos, um de cada vez. Mostre os
nmeros inteiros pares de a at b (inclusive).
30.Faa um algoritmo que leia o nmero de termos e um
valor positivo para x, calcule e mostre o valor da srie:

x 2 x3 x 4 x5 x6 x7
s ...
1! 2! 3! 4! 5! 6!
125

Vetores
Vetor uma varivel composta homogenia
unidimensional formada por uma seqncia
de variveis do mesmo tipo, com o mesmo
identificador e alocadas sequencialmente na
memria.
As variveis so distinguidas por ndices
0

Nome:

Declarao

declare nome[tamanho] : tipo


126

Vetores
Representao
declare v[8] : inteiro

2
3
4
5 6
7
8
elemento 1
varivel V[1] V[2] V[3] V[4] V[5] V[6] V[7] V[8]
valor

56

30

50

17

87

127

Exemplo
* declarar
declare v[5] : numrico
* Atribuir valor
v[1] 45
v[4] 0
* Carregar
para i 1 at 5
escreva (Digite o , i, elemento)
leia v[i]
fim-para
* Mostrar
para i 1 at 5
escreva (Este o , i, elemento do vetor: , v[i])
fim-para
128

Exemplo - Calcular a mdia geral de uma


turma de 10 alunos.
declare MD1, MD2, MD3, MD4, MD5, MD6, MD7,
MD8, MD9, MD10, SOMA, MEDIA : real
inicio
SOMA 0
leia (MD1, MD2, MD3, MD4, MD5, MD6, MD7,
MD8, MD9, MD10)
SOMA MD1 + MD2 + MD3 + MD4 + MD5 +
MD6 + MD7 + MD8 + MD9 + MD10
MEDIA SOMA / 15
escreva ( Media =, MEDIA)
fim
129

Exemplo - Calcular a mdia geral de uma


turma de 10 alunos.
declare I : inteiro;
MD[10], SOMA, MEDIA : real
incio
SOMA 0
para I 1 at 10
leia MD[ I ]
SOMA SOMA + MD[ I ]
fim-para
MEDIA SOMA / 10
escreva ( Media =, MEDIA)
fim
130

Matrizes
Varivel composta homogenia bidimensional
formada por uma seqncia de variveis do
mesmo tipo, com o mesmo identificador e
alocadas seqencialmente na memria.
As variveis so distinguidas por ndices
As variveis so compostas por linhas e colunas
coluna
1

...

1
linha

2
...

varivel
Declarao
declare nome[linha, coluna] : tipo

131

Matrizes
Representao
declare m[4,4] : inteiro
1

linha

coluna
2

v[1,1] v[1,2] v[1,3] v[1,4]

v[2,1] V[2,2] V[2,3] V[2,4]

3
4

V[4,1] V[4,2] V[4,3] V[4,4]

varivel
132

Exemplo
* declarar
declare m[3,2] : numrico
* Atribuir valor
m[1,2] 45
m[3,2] 0
* Carregar
para i 1 at 3
para J 1 at 2
escreva (Digite o contedo da linha , i, e coluna , j)
leia m[i,j]
fim-para
fim-para
* Mostrar
para i 1 at 3
para J 1 at 2
escreva (Linha , i, e coluna , j, : , m[i,j])
fim-para
fim-para
133

Exerccios
31. Sabe-se que:
1 p = 12 polegadas

1 jarda = 3 ps
1 milha = 1.760 jardas
Faa um algoritmo que receba uma medida em ps, faa as
converses a seguir e mostre os resultados em Polegadas,
Jardas e Milhas.
32. Faa um algoritmo que receba o ano de nascimento de uma
pessoa e o ano atual, calcule e mostre:
a)A idade dessa pessoa;
b)Quantos anos essa pessoa ter em 2017
33. Construa um algoritmo que receba cinco grupos de 2
nmeros pelo teclado e mostre a soma destes nmeros;

34. Altere o algoritmo acima para ler um nmero qualquer de


pares.
134

Linguagens de Programao (LP)


As linguagens de programao permitem ao
usurio especificar um programa de uma forma
semelhante ao algoritmo.
Um compilador/interpretador da linguagem
dever fazer a traduo das instrues de alto
nvel para as de nvel mquina (por exemplo,
manter os endereos de memria onde esto
guardadas as variveis).

LDA 11A810A0
C =A+ B

LDB 22345A91
ADD A,B

STA 1234FE88
135

Exemplo 1: Asembly
Trecho de cdigo em C
a=5;
b=10;
c=a+b;
Cdigo em Assembly (MIPS)
ADDi $t0,$zero,5 //Adiciona-se ao registrador t0 o valor 5
ADDi $t1,$zero,10 //Adiciona-se ao registrador t1 o valor 10
ADD $t2,$t0,$t1 //Soma-se os valores contidos nos
registradores t0 (5) e t1 (10) e atribui o
resultado ao registrador t2

136

Linguagens de Programao (LP)


Existem vrios tipos de LP baseadas em diferentes
paradigmas (estilos) de programao.
Linguagens imperativas:
Fortran, Pascal, C, MATLAB, SCILAB
Controle explcito da execuo
Linguagens Orientadas a Objetos:
Smalltalk, C++, Java
Controle implcito na manipulao dos dados
Linguagens Funcionais:
LISP, Scheme
Baseadas na especificao de funes
Linguagens Lgicas:
Prolog
Implementando a Lgica de Predicados
137

Linguagens de Programao (LP)

Java
C
C
C++
Objective-C
PHP
Visual Basic
Python
Perl
JavaScript

Delphi / Object Pascal


Ruby
Lisp
Transact-SQL
Pascal
Visual Basic .NET
PL/SQL
Logo
Ada
R
138

Introduo ao Scilab

Parte 1

Introduo ao Scilab

Prof Gilka Rocha Barbosa


140

Introduco ao Scilab
Apresentar comandos bsicos necessrios

introduo programao e
desenvolvimento de programas simples.
Ambiente
Elementos bsicos
Nmeros, Vetores e Matrizes
Variveis

Operadores
Funes elementares
Carga e gravao
141

Scilab
Criado em 1989 por um grupo de pesquisadores da INRIA

e da ENPC.
Disponvel como software livre desde 1994 pelo site
http://www.scilab.org

Consrcio Scilab desde 2003 mantido por diversas empre-

sas.
Objetivos do consrcio:
organizar cooperao entre os desenvolvedores
obter recursos para manuteno da equipe
garantir suporte aos usurios

Sistemas Operacionais:

Linux
Windows
Solaris
Unix
142

Scilab
Software livre para clculo numrico e simu-

lao de sistemas fsicos. Usado nas reas:

Fsica
Sistemas complexos
Processamento de imagens
Controle e processamento de sinais
Automao industrial
Controle de processos
Computao grfica
Matemtica
Modelagem biolgica
...
143

Scilab
Ambiente utilizado no desenvolvimento de
software para resoluo de problemas numricos
Gratuito, software free
A ltima verso est sempre disponvel,
geralmente via Internet
O software pode ser legalmente utilizado,
copiado, distribudo, modificado
Distribudo com cdigo fonte
Sintaxe semelhante ao Matlab
Permite interface com rotinas escritas em outras
linguagens como C
Suporta o desenvolvimento de conjuntos de
funes voltadas para aplicaes especificas
(toolboxes).
144

Scilab
Ambiente

interpreta comandos
oferece um editor para a construo de programas
(SciPad / Scinotes)
emite mensagens de erros relativos aderncia
sintaxe da linguagem e a problemas na execuo de
um programa
Linguagem

une riqueza de expresso a detalhes sintticos


exige uma postura paciente em seu aprendizado
envolve uma taxa inicial de memorizao
a fluncia vem com a prtica
145

Scilab
Ambiente para desenvolvimento ou

prototipao de software numrico de


propsito geral.
Gratuito
Open Source
http://www.scilab.org/

146

A linguagem Scilab
Como qualquer linguagem natural, a

linguagem Scilab:

Une riqueza de expresso a detalhes


sintticos;
Exige uma postura paciente em seu
aprendizado, pois envolve uma taxa inicial de
memorizao;
A fluncia vem com a prtica.

147

O ambiente Scilab
Interpreta comandos e programas atravs

de uma console para a interao com o


usurio;

Oferece um editor para a construo de

programas (SciNotes);

Emite mensagens de erros relativos

obedincia da sintaxe da linguagem e a


problemas na execuo de um programa
(como diviso por zero).
148

O ambiente Scilab
Janela Console do Scilab:
Barra de Menus
Barra de Ferramentas

Prompt de Comandos

149

Scilab
Crie uma pasta

Mude a pasta para seus arquivos

150

Teste!!!!!!!!
// Programa para calcular a media de duas notas
clear
clc
nota1 = input ('Digite a primeira nota: ');
nota2 = input ('Digite a segunda nota: ');
media = (nota1 + nota2)/ 2;
if media >= 7
resultado = ' aprovado.';
Salve com o nome
else
Media
resultado = ' reprovado. ';
end
printf ( "\n A mdia entre %1.2f e %1.2f %1.2f e o
aluno est %s \n\n", nota1, nota2, media, resultado)
151

Teste!!!!!!!!!!

execute
Media

152

Programando com o Scilab


Caractersticas do Scilab

Interpretador de comandos e por isso


o cdigo gerado no precisa ser
compilado.
Facilidade e simplicidade da linguagem
estruturada.
No h necessidade de declarao
prvia das variveis.

153

scripts
Scripts so arquivos de texto que contm

comandos que seriam usados em um


prompt do Scilab.
Por conveno estes arquivos possuem
extenso .sce ou .sci
Programas em Scilab so arquivos ASCII
(caracteres sem formatao)
Um programa construdo usando o editor
SciNotes / SciPad
Os arquivos so executados com o comando
exec
154

scripts

Abre um programa
preexistente
Abre o programa editor
de textos SciNotes

155

Programa da mdia

Clc limpa
a tela

// indica que o restante da linha um comentrio


clear limpa a memria
Dilogo com o usurio

156

Gravando (salvando) o programa

157

Gravando (salvando) o programa

158

Executando o programa
Executar.
.

media

159

Funes de entrada - input


input( )
possibilita a interao entre o usurio e o programa
Exemplo:
Receber um dado numrico
nu = input( Digite um numero qualquer: )
varivel

comando de
atribuio

solicita ao usurio que


fornea algum dado de
entrada

string

Receber um dado texto


tx = input( Digite a resposta: ,s )
160

Funes de Sada - printf

printf (formato, dado)


exibe valores e texto e permite a formatao
Formatao

%d , %i ou %g
%f ou %x.yf ou %g

%s

Exibe

Valor inteiro
Valor em ponto flutuante

Valor de um literal

Exemplo:

printf(\n s = %s \n g = %g , "Valor de PI: ",%pi)

printf(\n d = %d \n i = %i , %pi, %pi)


printf(\n f = %f \n f0 = %.f \n f2 = %.2f , %pi, %pi, %pi)
\n -Muda de linha
161

Funes de Sada - disp


disp(varivel) ou disp(texto)
exibe na tela o valor da varivel ou string colocado entre
aspas.
Exemplo:
disp(Media Geral ) // exibe a frase Media Geral
i=4
disp(i) // exibe o valor armazenado na varivel i (4)
nome = "maria";
disp ("Seu nome " + nome) // concatena os strings

v=10
disp ("A velocidade final " + string(v))
// converte numero em string e concatena
162

Exemplo
Calcular a distncia entre dois pontos (x1; y1) e (x2; y2) no
plano cartesiano. Os pontos so digitados pelo usurio. A
distncia entre dois pontos dada por:

// Programa exerccio : O que faz?


clear, clc
x1 = input("Digite X1 da primeira coordenada: ");
y1 = input("Digite Y1 da primeira coordenada: ");
x2 = input("Digite X2 da segunda coordenada: ");
y2 = input("Digite Y1 da segunda coordenada: ");
dx = x1 - x2; dy = y1 - y2;
d = sqrt(dx^2 + dy*dy);
printf("A distncia %g\n", d)
163

Mdia de duas notas


// Programa para calcular a media de duas notas
clear
clc
nota1 = input ('Digite a primeira nota: ');
nota2 = input ('Digite a segunda nota: ');
media = (nota1 + nota2)/ 2;
if media >= 7
resultado = ' aprovado.';
else
resultado = ' reprovado. ';
end
printf ( "\n A mdia entre %1.2f e %1.2f %1.2f e o
aluno est %s \n\n", nota1, nota2, media, resultado)
164

Mdia...
Quem est aprovado?

165

Comandos de controle de fluxo - if


if condio
comandos;
end
if condio
comandos1;
else
comandos
end

if condio1
comandos1;
else
if condio2
comandos2;
else
comandos3;
end
end

166

Operadores Relacionais
Operador

Resultado

==

igual a

~= , <>

diferente de

>

maior do que

<

menor do que

>=

maior ou igual a

<=

menor ou igual a

= usado para atribuio e no para comparao


167

Operadores Lgicos
Operador

Descrio

&

ou

no

Tabela Verdade dos operadores &, | e ~


A

A&B

A|B

~A

~B

F
168

Operaes lgicas
-->v = %t, f = %f
v =
T
f =
F
-->~v
ans =
F

-->v | f
ans =
T

-->v & f
ans =
F
-->a = 7; b = 8; x = a > b
x =
F
169

Exemplo do comando if
// Clculo da Mdia
// Autor: Gilka
clear, clc
nome = input("Nome = ", "s");
n1 = input("Nota 1 = ");
n2 = input("Nota 2 = ");
m = (n1 * 2 + n2 * 3)/5;
if m >= 7 then
printf("\n %s Aprovado - Mdia %.1f", nome, m)

else
if m >= 3 then

printf("\n %s Final - Mdia %.1f", nome, m)


else

printf("\n %s Reprovado - Mdia %.1f", nome, m)


end

end
170

Execuo do programa

171

Mdia...
E se a nota estiver errada?

.....15, por exemplo

172

Comandos de controle de fluxo - while

Formato:
while condio
comandos;
end

173

O que faz?
// Programa exerccio : Oque faz?

clear, clc
a = input("Informe um nmero: ");
b = input("Infrme outro numero: ");
r = 1;
while r <> 0
r = modulo(a,b);
a = b;
b = r;
end
printf("\nResultado = %g\n", a)
174

Exemplo do comando while


// Clculo da Mdia

// Autor: Gilka
clear, clc

nome = input("Nome = ", "s");


n1 = input("Nota 1 = ");

while n1 < 0 | n1 > 10 then


printf("\n Nota 1 Invlida %.1f",n1)

n1 = input("Nota 1 = ");
end

n2 = input("Nota 2 = ");
while n2 < 0 | n2 > 10 then

printf("\n Nota 1 Invlida %.1f",n1)


n2 = input("Nota 1 = ");

end
175

Exemplo do comando while


m = (n1 * 2 + n2 * 3)/5;

if m >= 7 then
printf("\n %s Aprovado - Mdia %.1f", nome, m)

else
if m >= 3 then

printf("\n %s Final - Mdia %.1f", nome, m)


else

printf("\n %s Reprovado - Mdia %.1f", nome, m)


end

end

176

Mdia...
E se houver mis de um aluno?

177

Mdias....
// Clculo da Mdia

Autor: Gilka

clear, clc

n = input("Para iniciar, Digite 0 : ");


while n == 0

nome = input("Nome = ", "s");


n1 = input("Nota 1 = ");

while n1 < 0 | n1 > 10 then


printf("\n Nota 1 Invlida %.1f",n1)

n1 = input("Nota 1 = ");
end

n2 = input("Nota 2 = ");
while n2 < 0 | n2 > 10 then

printf("\n Nota 1 Invlida %.1f",n1)


n2 = input("Nota 1 = ");

end
178

Mdias....
m = (n1 * 2 + n2 * 3)/5;

if m >= 7 then
printf("\n %s Aprovado - Mdia %.1f", nome, m)

else

if m >= 3 then
printf("\n %s Final - Mdia %.1f", nome, m)
else
printf("\n %s Reprovado - Mdia %.1f", nome, m)
end
end

n = input("Para continuar, Digite 0 : ");


end

179

Calculando a mdia geral...


// Programa para calcular a media de duas notas
clear
clc
qa = 0; tm = 0;
cont = input ('Para iniciar, digite 0: ');
while cont == 0
nota1 = input ('Digite a primeira nota: ');
while nota1 < 0 | nota1 > 10
printf ("\n %.2f - nota invlida", nota1)
nota1 = input ('Digite a primeira nota: ');
end
180

Calculando a mdia geral...


nota2 = input ('Digite a segunda nota: ');
while nota2 < 0 | nota2 > 10
printf ("\n %.2f - nota invlida", nota2)
nota2 = input ('Digite a segunda nota: ');
end
media = (nota1 + nota2)/ 2;
qa = qa + 1;
tm = tm + media;

181

Calculando a mdia geral...


if media >= 7 then
result = "Aprovado";
else
if media < 3 then
result = "Reprovado";
else
result = "em Final";
end
end

182

Calculando a mdia geral...


printf ("\n Mdia = %.2f - Aluno %s \n", media, result)
cont = input ('Para continuar, Digite 0: ');
end
tg = tm / qa;
printf ("\n Mdia Geral = %.2f ", tg)

183

Para pensar...

Quando terminam esses comandos?


1)

n = 4;
while n <= 4
printf ("\n x = %g", n);
n = n 1;
end

2)

n = 1;
while n <= 4
printf ("\n x = %g", n);
end
184

Exemplo
Ler um conjunto de valores inteiros e positivos,

ao final, digitar -1, e determine o maior valor


deste entre os nmeros lidos.

185

Comandos de controle de fluxo - for

Formato:
for var = inicio : fim
comandos;
end

for var = inicio : passo : fim


comandos;
end
186

Exemplo do comando for


for i = 1:4
printf ("\n x = %g", n);
end

for i = 4: -1 :1
printf ("\n x = %g", n);
end

187

Exemplo do comando for

n = input (Informe um nmero);


f = 1;
for n = 1 : n
f = f * i;
printf(\n %g , i)
end
printf("\n Fatorial de %g = %g , n, f);

188

Exemplo do comando for


n=3;
m=2;
printf("\n Matriz A:a(i,j)=i+j\n");
for i=1:m
for j=1:n
a(i,j)=i+j;
end
end
disp(a)

189

Exemplo
Elaborar um programa para escrever a tabuada

de multiplicar 1 at 10.

190

191

Exerccios faa programas para:


1. Dado o raio de uma circunferncia, calcular sua
rea e seu permetro
2. Dado um nmero real x, calcular e exibir as
imagens de f(x)=5x4-x3 e de g(x)=5senx-2cosx
3. Ler dois nmeros inteiros e positivos X e Y e
efetuar as operaes de adio, subtrao,
multiplicao, diviso de X por Y e a raiz
quadrada do produto de X por Y.
4. Dada a temperatura de um corpo, em graus
Fahrenheit, calcular e exibir o valor da referida
temperatura em graus Celsius e em Kelvin.
192

Exerccios
5. Um aluno comprou trs itens em uma
papelaria. Para cada item so conhecidos:
nome, preo e percentual de desconto.
Mostrar o nome do item, o preo do item, o
preo do item com desconto e o total a pagar
6. Ler trs valores inteiros e distintos (A, B e C)
e apresentar o maior valor.
7. Dados dois valores reais, apresentar a
diferena do maior pelo menor.

8. Dado um nmero inteiro positivo, informar se


o nmero lido par ou mpar.
193

Exerccios
9. Calcular as razes reais de uma funo
quadrtica, dados os valores de a, b e c.

f x ax 2 bx c
10. Receba 2 nmeros e, se o primeiro nmero for
maior que zero e menor que 10, mostre a soma
destes nmeros; caso contrrio, mostre a
multiplicao deles.
11. Receba cinco grupos de 2 nmeros e mostre a
soma destes nmeros;

12. Receba dois nmeros e mostre o maior deles;


13. Receba trs nmeros e mostre-os em ordem
crescente.
194

Exerccios
14. Escrever um programa que l dois nmeros
inteiros: inicial e final, e mostra os nmeros
inteiros existentes entre o nmero inicial e o
final (inclusive). Crtica: o nmero final deve
ser maior do que o inicial.
15. Implemente um programa que calcula a soma
dos nmeros pares entre dois nmeros lidos
(inclusive).
16. Escrever programa para calcular, para N
(inteiro) lido, o valor de S, dado por
1
2
3
N 1 N
S

...

N N 1 N 2
2
1
195

Exerccios
17. Receba um valor N inteiro e positivo, calcule e mostre o
fatorial de N (N!).
18. Leia dez conjuntos de dois valores, o primeiro valor
corresponde ao nmero do aluno, o segundo valor
corresponde sua altura em centmetros. Encontre e
mostre o nmero e a altura do aluno mais baixo e do
aluno mais alto.

19.Leia cinco pares de valores (a,b), todos inteiros,


positivos, um de cada vez. Mostre os nmeros inteiros
pares de a at b (inclusive).
20.Leia o nmero de termos e um valor positivo para x,
calcule e mostre o valor da srie:

x 2 x3 x 4 x5 x6 x7
s ...
1! 2! 3! 4! 5! 6!
196

Introduo ao Scilab

Parte 2

Introduo ao Scilab

Prof Gilka Rocha Barbosa


198

Introduco ao Scilab
Apresentar comandos bsicos necessrios

introduo programao e
desenvolvimento de programas simples.
Ambiente
Elementos bsicos
Nmeros, Vetores e Matrizes
Variveis

Operadores
Funes elementares
Carga e gravao
199

Scilab
Criado em 1989 por um grupo de pesquisadores da INRIA

e da ENPC.
Disponvel como software livre desde 1994 pelo site
http://www.scilab.org

Consrcio Scilab desde 2003 mantido por diversas empre-

sas.
Objetivos do consrcio:
organizar cooperao entre os desenvolvedores
obter recursos para manuteno da equipe
garantir suporte aos usurios

Sistemas Operacionais:

Linux
Windows
Solaris
Unix
200

Scilab
Software livre para clculo numrico e simu-

lao de sistemas fsicos. Usado nas reas:

Fsica
Sistemas complexos
Processamento de imagens
Controle e processamento de sinais
Automao industrial
Controle de processos
Computao grfica
Matemtica
Modelagem biolgica
...
201

Scilab
Ambiente utilizado no desenvolvimento de
software para resoluo de problemas numricos
Gratuito, software free
A ltima verso est sempre disponvel,
geralmente via Internet
O software pode ser legalmente utilizado,
copiado, distribudo, modificado
Distribudo com cdigo fonte
Sintaxe semelhante ao Matlab
Permite interface com rotinas escritas em outras
linguagens como C
Suporta o desenvolvimento de conjuntos de
funes voltadas para aplicaes especificas
(toolboxes).
202

Scilab
Ambiente

interpreta comandos
oferece um editor para a construo de programas
(SciPad / Scinotes)
emite mensagens de erros relativos aderncia
sintaxe da linguagem e a problemas na execuo de
um programa
Linguagem

une riqueza de expresso a detalhes sintticos


exige uma postura paciente em seu aprendizado
envolve uma taxa inicial de memorizao
a fluncia vem com a prtica
203

Scilab
Ambiente para desenvolvimento ou

prototipao de software numrico de


propsito geral.
Gratuito
Open Source
http://www.scilab.org/

204

A linguagem Scilab
Como qualquer linguagem natural, a

linguagem Scilab:

Une riqueza de expresso a detalhes


sintticos;
Exige uma postura paciente em seu
aprendizado, pois envolve uma taxa inicial de
memorizao;
A fluncia vem com a prtica.

205

O ambiente Scilab
Interpreta comandos e programas atravs

de uma console para a interao com o


usurio;

Oferece um editor para a construo de

programas (SciNotes);

Emite mensagens de erros relativos

obedincia da sintaxe da linguagem e a


problemas na execuo de um programa
(como diviso por zero).
206

O ambiente Scilab
Janela Console do Scilab:
Barra de Menus
Barra de Ferramentas

Prompt de Comandos

207

Scilab
Crie uma pasta

Mude a pasta para seus arquivos

208

Utilizao bsica
-->help // ou f1

209

Utilizao bsica
who: lista as variveis
whos (): lista e dimensiona as variveis
clear: remove todas as variveis do espao de

trabalho

Help ou F1 : informa sobre os comandos e

funes

Ex.: help, help inv, help help


pwd: Mostra o diretrio atual.
sci: Mostra o diretrio onde o Scilab foi

instalado.

ls: Lista os arquivos do diretrio.


210

Utilizao bsica
chdir(dir): Muda de diretrio.
mkdir(dir): Cria um diretrio.
rmdir(dir, s): Remove um diretrio.
quit ou exit: sai do Scilab
clear: elimina todas variveis desprotegidas

clear a: elimina a varivel a


clc ou F2: limpa a tela
quit ou exit sai do Scilab

211

Algumas funes elementares


abs(x): Retorna o valor absoluto, se x real, e o mdulo se

x complexo

acos(x), asin(x), atan(x): Retorna o ngulo (em radianos)

cos(x), sin(x), tan(x), Retorna cosseno, seno ou tangente

de x (x deve estar em radianos)

ceil(x): Arredonda para o maior inteiro


exp(x): Exponencial (e) de um valor x

factorial(x): Fatorial (e) de um valor x


floor(x): Arredonda para o menor inteiro

imag(x): Mostra a parte imaginria de um complexo


log(x), log10(x), log2(x): Log natural, base 10 e base 2
modulo(x,y): Mostra o resto da diviso de x por y
real(x): Mostra a parte real de um complexo
round(x): Arredonda x para o inteiro mais prximo
212

Exemplos de Funes de Arredondamento

213

Variveis
Variveis correspondem a nomes para

espaos de memria que so gerenciados


pelo Scilab;

O programador no precisa ter qualquer

ideia de como tal gerncia realizada;

214

Variveis
Os nomes das variveis so escolhidos pelo

programador, respeitando as regras:

O primeiro caractere do nome deve ser uma letra ou


qualquer caractere dentre '%' , '_' , '#' , '$' e '?';
Os outros caracteres podem ser letras ou dgitos ou
qualquer caractere dentre '_' , '#' , '!' , '$' e '?';
Caracteres acentuados no so permitidos;
Nomes de variveis so sensveis a maisculas e
minsculas (CASE SENSITIVE).
CASA diferente das variveis Casa e casa.

Palavras Reservadas devem ser evitadas


215

Variveis
Escolha de nomes significativos para as

variveis, isso ajuda a entender o que o


programa faz e a prevenir erros;

Nomes vlidos:

a , A , Jose , total_de_alunos , #funcionarios.


Nomes invlidos:

1A
total de alunos
funcionrios
216

Utilizao bsica
Exemplos de atribuio:

217

Utilizao bsica
Comando de atribuio Sintaxe:

<varivel alvo> = <expresso>


<varivel alvo>, se no existia, passa a

existir;

Se existia, o valor anterior perdido;


Na execuo do comando, a <expresso>

calculada e o resultado atribudo


<varivel alvo>.

218

Utilizao bsica
Caracteres

x= a
x= a
Strings

mg1='Ali';
mg2=SCILAB DEMOS

219

Funes de Manipulao de String

220

Utilizao bsica
... continua uma expresso em outra linha
-->s = 1-1/2+1/3-1/4+1/5-1/6+1/7...
-->-1/8+1/9-1/10;
s =
0.6456349
; ao final de uma expresso, o clculo feito
mas o resultado no apresentado
-- > A=1 // Atribui o valor 1 a A
-- > b=2; // Atribui o valor 2 a b
-- > A + b; // soma de A e b
221

Operadores aritmticos

Operador

Notao

Soma

Subtrao

Multiplicao

Diviso

Menos Unrio

Exponenciao (potenciao)

^ ou **

222

Algumas funes
Funo

Notao

Exemplo

Resultado

Resto da Diviso

modulo

modulo(8, 3)

Raiz Quadrada
Raiz Ensima
Valor Absoluto
Coseno
Tangente
Seno

sqrt
^(1/n)
abs
cos
tan
sin

sqrt(32)
8^(1/3)
abs(-8)
cos(30)
tan(7.3456)
sin(%pi)

5.6568542
2
8
0.1542514
1.7945721
1.225D-16

Notao Scilab (e Fortran, e C,


e Java, e ...) para: 1,225 x 1016

OBS: Nas funes trigonomtricas os ngulos devem ser usados em radianos.


223

Valores pr-definidos
Varivel

Valor

%pi

nmero .

%inf

innito .

%i
%e

1
A base do logaritmo natural.

%t ou %T

Representa o valor booleano verdadeiro.

%f ou %F

Representa o valor booleano falso.

224

Precedncia de operadores
Associatividade a regra usada quando os

operadores tm a mesma prioridade;

Por exemplo, para as operaes de adio e

subtrao (que possuem mesma prioridade)


a regra de associatividade diz que a
operao mais a esquerda avaliada
primeiro:
A-B+C+D A-B avaliada primeiro, pois
est mais esquerda;

225

Precedncia de operadores
O mesmo vale para multiplicao e diviso;

Mas, para potenciao, a regra da

associatividade diz que a operao mais a


direita deve ser avaliada primeiro:
A^B^C^D C^D avaliada primeiro, pois
est mais direita.

226

Precedncia de operadores
A ordem de prioridade pode ser alterada

pelo uso do parnteses:


(A+4)/3

A+4 avaliada primeiro;

(A-B)/(C+D) A-B avaliada primeiro,


depois a soma
e por ltimo a diviso;

R*3+B^(3/2)+1 3/2 avaliada primeiro.

227

Utilizao bsica
Qual o valor de x e y aps os comandos?
x = 8^1*3

y = 2*x*3
Prioridade*

Operao

Associatividade

Potenciao

da direita para a esquerda

Multiplicao
Diviso

da esquerda para a direita

Adio
Subtrao

da esquerda para a direita

* Parnteses podem alterar prioridades


2+10/5

10/5 avaliada primeiro;

A+B/C+D

B/C avaliada primeiro;

R*3+B^3/2+1

B^3 avaliada primeiro.


228

Utilizao bsica
-->a = 2^3*4
a =
32.
-->b = 2^(3*4)
b =
4096.
-->c = 2^3^4
c =
2.418D+24
-->d = (2^3)^4
d =
4096
229

Utilizao bsica
-->a = 2^3*4
a =
32.
-->b = 2^(3*4)
b =
4096.
-->c = 2^3^4
c =
2.418D+24
-->d = (2^3)^4
d =
4096

Notao Scilab (Java, C, ...)


24
para 2,418 x 10

230

Elementos bsicos
Nmeros, Vetores e Matrizes
Uma matriz pode ser
Um escalar (nmero): matriz com dimenso
1x1
Um vetor linha: matriz 1 x n
Um vetor coluna: matriz n x1
Uma matriz bidimensional: matriz n x m
Uma matriz multidimensional: matriz com
dimenso n1 x n2 x n3 x ... nm

231

Nmeros, Vetores e Matrizes

O Scilab reconhece vrios tipos de nmeros:


Real: 4.607, - 199.34,
Complexo: 2 + 3i (i = sqrt(-1))
Literal: nome
Lgico: T/F

232

Exemplo
Calcular a equao do segundo grau: ax2 + bx + c.
As razes da equao so dadas por:

b b 2 4ac
x1 , x2
2a
Resolvendo a equao: x2 + 4 x + 13 = 0
-- > a = 1, b = 4 , c = 13
-- > x1 = (-b + sqrt (b^2 4 * a * c)) / (2 * a)

-- > x2 = (-b - sqrt (b^2 4 * a * c)) / (2 * a)


x1 = -2.00 + 3.000i
x2 = -2.000 3.000i
233

Exerccios
1. O que so variveis?
2. Quais os tipos primitivos de informao
manipuladas pelo Scilab?

3. Assinale os identificadores (nomes de variveis)


vlidos e identifique o que causa o erros nos
identificadores no vlidos
a. (x)
b. Nota_1 c. Ah!
d. Nota1
e. 1Nota f. Nota1 g. A(4)
h. a&b
i. a+b
j. I00001 k. nota 1 l. nota-1

234

Exerccios
4. Escreva as declaraes aritmticas para o clculo
das seguintes frmulas:

235

Exerccios
4. Para u = 1 e v = 3, avalie as expresses
a) 4u
b) _2v-2___
c) v3___
d)
3v
(u + v)2
v3 u3

4_v
3

5. Considere as variveis A = 11, B = 5, C = -4 e


D = 2. Calcule as expresses:

236

Exerccios
6. Qual a primeira operao a ser

executada em cada um dos comandos:


a. R + S W

b. X + Y + C * D
c. W1 + W2 / C ^2
d. A + D + B ^ 2 + E * 3
e. NOTA + MEDIA / 3
f. A * B / C * D
237

Exemplo
-->g
!--error 4
undefined variable : g

-->g = 1:5
g =
1. 2. 3.

4.

5.

-->g*g
!--error 10
inconsistent multiplication
238

Vetores e matrizes

As grandezas vetoriais podem ser criadas


colocando-se seus componentes entre
colchetes [ ]

Os componentes de um vetor podem ser


separados por vrgula, espao ou por
ponto-e-vrgula.

239

Vetores
Declarao de vetores:

X = [ x1 x2 x3 ...] vetor linha


X = [x1;x2;x3;...] vetor coluna

Transposio de vetores: X

240

Vetores
Exerccios:

1. Verifique a diferena entre:


a) x = [1 2 3]
b) y = [1,2,3]

d) xt = x

e) yt = y

c) z = [1;2;3]
f) zt = z

2. Dados k = [1,2,3,4,5] e w = [2,4,6,8,10], calcule:

a) i = k + w
b) J = k*w
c) Transpostas de i e j

d) m = i*j
e) n = i*j
f) Verifique se m = n

241

Vetores
V = Valor_inicial : incremento : Valor_final
Exemplos:
A1 = 1:10
B1 = 1:2:10
C1 = 1:0.2:10
D1 = 10:-1:1
E1 = 1:%pi:20
F1 = 0:log(%e):20
G1 = 20:-2*%pi:-10

242

Exemplo de funo com vetor


1. Desenhe a funo f(k) = sen(k) no intervalo
0k10.
--> k=0:0.1:10;
--> plot (k,sin(k))
1

0.8
0.6
0.4
0.2

-0.2
-0.4
-0.6
-0.8
-1

10

2. Desenhe a funo g(k) = cos(k) no intervalo


0k10.
--> z=cos(k);
--> plot (k,z)
1

0.8
0.6
0.4
0.2

-0.2
-0.4
-0.6
-0.8

-1

10

3. Desenhe a funo h(k) = tan(k) no intervalo


0k10.
243

Vetores
V2 = linspace (Valor_inicial, Valor_final,

quantidade de elementos):
Exemplos:
A2 = linspace (1 ,10,15)
B2 = linspace ( 1,2,10)
C2 = linspace ( 1,0.2,10)
D2 = linspace ( 10,-1,1)
E2 = linspace ( 1,%pi,20)
F2 = linspace ( 0,log(%e),20)
G2 = linspace ( 20,-2*%pi,10)
244

Exerccios
4. Desenhe a funo f(x) = 2e-0,2x para o 50 pontos
entre - e 2

-->x = linspace (-%pi, 2*%pi , 50);


-->y = 2 * %e ^ (-0.2*x);
-->plot(x,y)

5. Desenhe a funo g(x) = sen(x)cos(x) em 50


pontos entre - e 2
245

Operadores especiais
Operador

(usado com outros operadores para


operaes elemento a elemento)

Exemplo:
A = [1 2 3; 3 4 6; 7 8 9]
B = [2 4 6;8 10 12; 14 16 18]

-->A.*B
ans =
2.
8.
18.
24. 40.
72.
98. 128. 162.

-->A./B
ans =
0.5
0.5 0.5
0.375 0.4 0.5
0.5
0.5 0.5

246

Matriz
Uma matriz geral consiste em m*n nmeros

dispostos em m linhas e n colunas:

247

Matriz

A
No Scilab:
-->A = [1 2 3; 4 5 6; 7 8 9]
A =
1.
4.
7.

2.
5.
8.

3.
6.
9.

248

Operaes com vetores


Sejam M a matriz, L a linha e C a coluna
Acessa elementos entre o i e o j elementos: M(i:j)
Acessa ltimo elemento: M($)
Acesso ltima coluna: M(:,$)

Acesso ultima linha: M($,:)


Acesso coluna C: M(:,C)
Acesso linha L: M(L,:)
Agrupa dois vetores: MA = [M M]

Apaga a coluna C: M(:,C) = []

249

Operaes com vetores


Dimenso: length(M)

Nmero de linhas e colunas: [nl , nc] = size(M)


Valor mximo e posio relativa: [V,P] = max(M)
Valor mnimo posio relativa: [V,P] = min(M)

Mdia aritmtica: MedA = mean(M)


Determinante: Dt = det(M)
Diagonal: Dg = diag(M)
Encontra um elemento: find(M operador elemento)

Soma dos elementos: sA = sum(M)


Multiplicao dos elementos: prod(M)
250

Operaes com vetores


Multiplicao elemento: Mn = A*num
Ordenao dos elementos: Ms = gsort(M)

Elementos iguais a 1: U = ones(L,C)


Matriz identidade: MId = eye(L,L)
Matriz transposta: Mt = M
Matriz com nmeros aleatrios/randmicos:

Ma = rand(L,C)

251

Exemplo
Dada a matriz A
Acessar elementos entre 2 e 5 elementos: A(2:5)
Acessar ltimo elemento: A($)

Acessar a ltima coluna: A(:,$)


Acessar a ultima linha: A($,:)
Acessar a coluna 2: A(:,2)
Acessar a linha 3: A(3,:)

Agrupar/unir dois vetores: C = [A A] ou C = [A;A]


Apagar a 2 coluna: C(:,2) = []
Inserir coluna no final: Ac = [A [6; 7; 8]]

Inserir linha no final: Al = [A ; 6 7 8]


252

Exemplo
Dimenso: length(A)

Nmero de linhas e colunas: [nl , nc] = size(A)


Valor mximo e posio relativa: [V,P] = max(A)
Valor mnimo posio relativa: [V,P] = min(A)

Mdia aritmtica: MedA = mean(A)


Determinante: Dt = det(A)
Diagonal: Dg = diag(A)
Encontra elemento < 4: find(A < 4)

Soma dos elementos: sA = sum(A)


Multiplicao dos elementos: prod(A)
253

Exemplo
Multiplicao elemento: A2 = A*2
Multiplicar a 2 coluna por 3: A3(:,2) = A3(:,2)*3

Ordenao dos elementos: As = gsort(A)


Matriz unitria com dimenso 5x2: U = ones(5,2)
Matriz identidade: AId = eye(5,5)
Matriz transposta: At = A

Matriz com nmeros aleatrios 3x4: Aa = rand(3,4)

254

Exerccios
1. Crie:
a) Um vetor unitrio com 10 elementos
b) Um vetor nulo com 5 elementos
c) Um vetor com 10 elementos aleatrios
d) Verifique suas dimenses

2. Dado o vetor X = [1 2 3 4 5];


a) Insira o valor 10 no final
b) Apague o quinto elemento do vetor
c) Atribua valor zero aos elementos entre 2 e 4
3. Dados os vetores

X = [ , e , sin() , log(10)]
Y = [10.3 1 1 -2 2]
crie um vetor Z que seja dado pela unio de X e Y.
255

Exerccios
4. Desenhe a funo f(x) = |sin(t)| para o

intervalo -2t2.

5. Dadas as matrizes A = [1 2 3;4 5 6] e

B = [7;8;9], Determine:
a.
b.
c.
d.
e.

AB
BA
A x identidade(A)
A*ones(A)
A*ones(A) + identidade(A)

256

Exerccios
6. Dada a matriz A = [2 4 6;8 10 12; 1 2 3]
a) Atribua valor zero linha 3;
b) Multiplique a linha 2 por 10;
c) Remova a ltima linha
d) Insira o vetor B = [1 2 3] na ltima linha de A

9. Crie uma matriz 5X5 de nmeros aleatrios.


a) Atribua valor 0 coluna 2.
b) Multiplique os elementos de 2 a 4 da coluna 3
por 10.
c) Divida os elementos de 1 a 3 da coluna 5 por 5.
d) Remova a coluna 3.
e) Remova a linha 2.
257

Exerccios
10. Dadas as matrizes

A=

B=

134689
234913
333653
887992
982341
113879

222345
900123
012378
192356
890123
423455

Calcule:

a) C = A + B
b) C = A*B
c) C = 10*A + 5*B
d) C = A + B*%i

e) C = A + rand(B)
f) Determinante de A
g) Determinante de B

h) Diagonal de A
258

Matrizes: operadores especiais


Operador \: diviso esquerda.
Seja Ax=b um sistema de equaes lineares escrito na
forma matricial, sendo A a matriz de coeficientes, x
o vetor da incgnitas e b o vetor dos termos
independetes:

259

Matrizes: operadores especiais


Soluo do sistema:
x=A-1b (inversa de A multiplicada pelo vetor b)

1x + 3y = 5
3x + 4y = 2
--> A=[1 3;3 4]

--> b=[5;2]
--> x=inv(A)*b
--> w = A\b
--> y = A^(-1)*b

--> bc = A*x
260

Exerccio
1. Resolva o sistema linear.

2X
2
X + 3y + 3z = 2
4x + 3y+ 2z = 1
3x + 7y + 9z = 5
Substitua as solues na equao para
confirmar a soluo.

261

Sistemas lineares
x1 + 2x2 + x3 = 5
-x1 +5x2 - 3x3 = 0
4x1 - 2x2 + x3 =3

1 2 0
-1 5 -3
4 -2 1
A

x1
x2
x3
*

5
0
3

= B

Soluo : X = A-1. B
-->
-->
-->
-->

A=[1 2 0;-1 5 -3;4 -2 1]


B=[5; 0; 3]
X=A\B
Y= A*X

262

Exerccio
Resolver o sistema linear
-x1 + x2 + 2x3 = 2
3x1+ x3 = 6
-x1 + 3x2 + 4x3 = 4

263

Exerccio
Resolver o sistema linear
-x1 + x2 + 2x3 = 2
3x1+ x3 = 6
-x1 + 3x2 + 4x3 = 4 --> A = [-1 1 2; 3 1 1; -1 3 4]
A=
-1
3
-1
--> b =
b=
2
6
4
--> x =
x=
1.
-1.
2.

1
2
-1
1
3
4
[2; 6; 4]

A\b

264

Exerccio
Resolva o sistema linear

265

Polinmios

Funo poly(a, x, flag)

a: matriz de nmero reais


x: smbolo da varivel

flag: string ("roots", "coeff"), por default seu


valor "roots".

266

Polinmios
Dado p1 =
-- > p1 = poly([1, -6, -72, -27], "x", "coeff")
p1 =
2
3
1 - 6x - 72x - 27x

-- > r = roots(p1) // obtendo as razes do polinmio


r =
0.0824886
- 0.1743828
- 2.5747724
-->p2 = poly (r, "x", "roots") // definindo pelas razes
p2 =
2
3
- 0.0370370 + 0.2222222x + 2.6666667x + x
267

Polinmios
Polinmio definido pelas suas razes
-->p = poly([1 2], "s, roots)
p=

2
2 - 3s + s
-->

Com a funo roots, comprova-se que as razes


de p so, realmente, 1 e 2,
-->r = roots(p)
r=
1.
2.
268

Polinmios
Polinmio criado a partir dos seus coeficientes.
Ex.: criar o polinmio q = 2s + 1

-->q = poly([1 2], "s", "coeff")


q=
1 + 2s
-->r = roots(q)
r=
- 0.5

269

Polinmios

Soma, Subtrao, Multiplicao, Diviso

-->s = p + q // Adio
s=
2
3-s+s
-->sb = p - q // Subtrao

sb =
2
1 - 5s + s

-->m = p * q // Multiplicao
m=
2
3
2 + s - 5s + 2s
270

Polinmios

Soma, Subtrao, Multiplicao, Diviso

-->d = p / q // Diviso
d=
2
2 - 3s + s
----------1 + 2s
-->[r, c] = pdiv(p,q) // c=quociente, r=resto
c=
- 1.75 + 0.5s
r=
3.75
271

Polinmios
-->p = poly ([5, -3, 1], x, c)
p=
2
5 - 3x + x

-->h = horner(h, 2)

// definindo o polinmio

// polinmio em x = 2

h=
3.

272

Polinmios
Exemplo
--> y = poly([1 2 3], x, c)
ou
--> x = poly(0,x)
--> z = 1+2*x + 3*x^2
Exerccio:
Dados os polinmios:
y = 6x3 + 5x2 + 4x + 1
z =7x4 + 5x3 +3x

Calcule:
a) y + z
d) y*z

b) y2 + 3z
e) z/y

c) z*y/(z3)
273

Polinmios
roots(z): calcula as razes de um polinmio
[r,q] = pdiv(y,z): efetua a diviso e calcula
quociente e resto
coeff(y): retorna os coeficientes do polinmio.

Exerccio:
Dados os polinmios:
y = 6 x5 + 10x4 + 8x3 + 10x2 + 3x + 5
z = 5x5+ 4x4 + 3x3 + 2x
Calcule:
a) suas razes
b) os coeficientes
c) o resto e o quociente das divises:
y/z e z/y
274

Matrizes de polinmios
Os elementos da matriz podem ser polinmios:
Exemplo:
--> s = poly(0, s);
--> A = [1-2*s+s^3 3*s+4*s^2; s 2*s]

Exerccio:
Dadas as matrizes de polinmios:
A = [2*x^2 + 3*x x ; 1 x^3+2];
B = [3*x^4 + x^2 x^5 ; 8*x + 1 5];
Calcule:
A*B
A/B
Determinantes de A e B

275

Matrizes de polinmios
Se A uma matriz de polinmios:
A = A(num): retorna apenas os numeradores
A = A(den): retorna apenas os denominadores

Exemplo:
s = poly(0, s)
A = [(1+2*s+3*s^3)/(s+2) 3*s+1/(2*s+1);
s^4/(s^2+2) 3*s^2+4*s^3]
N = A(num)
D = A(den)

276

Exerccios
1. Desenvolva uma soluo em SCILAB para
encontrar as razes da equao
y= 2x2 - 3x + 1
2. Apresente o grfico da equao com 30
pontos entre 0 e 5

277

Exerccios
1. Resolva o sistema linear
2x + 2y + 2z = 20
2x 2y + 2z = 8
2x 2y 2z = 0

2. Calcule o seno, o coseno, a tangente, a raz


quadrada e a raiz cbica de x/2.
3. Calcule o logaritmo e a raiz quadrada de -1.
4. Calcule o valor da funo ex em 100 pontos do
intervalo ]-1 . . . 1[ e apresente o grfico da
funo

278

Exerccios
5. Calcule o valor da funo
sin(x+pi/10)cos(x) entre -pi e pi,
considerando um incremento de 0.1 entre os
pontos e apresente o grfico da funo
6. Calcule o produto dos polinmios
x6 + 10 e x2 - 2x + 3.
7. Obtenha o polinmio cujas razes so os
nmeros 1, 2 e 3.

8. Calcule os zeros do polinmio


p(x) = x6 + 4x2 - 3x + 1.
279

Derivadas
Derivada o coeficiente angular da reta tangente ao grfico de
uma funo f(x), no ponto x0

Clculo da derivada: derivat(p)


onde p o polinmio.

Avaliao da derivada em um ponto: horner(d,x)


onde d a derivada do polinmio p e x o valor da varivel.
Exemplo:
Dada a funo 0.5x5 + 3x2 + 2x + 10, determine:
a) o valor da funo para x = 2.5
b) a derivada de f(x)
c) o valor da derivada para x = 2.5.
280

Derivadas - Exemplo
Dada a funo 0.5x5 + 3x2 + 2x + 10, determine:
a) o valor da funo para x = 2.5
b) a derivada de f(x)
c) o valor da derivada para x = 2.5.

-->p = poly ([10 2 3 0 0 -0.5], "x", "coef")


p =
2
5
10 + 2x + 3x - 0.5x
-->pt = horner (p, 2.5)
pt =
- 15.078125
-->d = derivat(p)
d =
4
2 + 6x - 2.5x
-->ptd = horner (d, 2.5)
ptd =
- 80.65625
281

Exerccio
1. Calcule a derivada de

x6 + 10
------------x2 - 2x + 3.

282

Integrais
A integral de uma funo f(x) outra funo,
I(x), tal que a sua derivada, I(x), igual
funo f(x)

Integral definida aquela restrita a um


determinado intervalo de x, x0 x x1

Clculo da integral: integrate(expr, v, x0 ,x1 )


onde x0 o limite inferior e x1 o limite
superior.
283

Integrais
Clculo da integral: integrate(expr, v, x0 ,x1 )
onde x0 o limite inferior e x1 o limite
superior.
Ex.: Dada a funo f(x) = sin(x), determine I(x),
entre 0 e 1, onde :

--> v = integrate('sin(x)','x',0,1)
v =
0.4596977
284

Grficos
Grficos bidimensionais:
plot2d (x,y,style,xtitle,rect,frameflag,nax,axesflag,logflag,leg)

opcionais

Exemplo:
x = [-2*%pi:0.1:2*%pi];
y = sin(x);
plot2d(x,y);
plot2d(x,y,-1);
Exerccio
Detalhe cada elemento opcional do comando plot2d
285

Grficos Comandos bsicos


clf: limpa a tela, evitando que o prximo grfico
se sobreponha ao anterior
xbasc ou xbasc( ): limpa o ambiente grfico e
apaga os grficos a ele associados
xtitle (titulo): apresenta o ttulo do grfico
legend(legenda1, legenda2,)

286

Grficos Comandos bsicos

Exemplo:
t = 0:0.1:10;

S = 5 + 10*t + 0.5*2*t.*t;
V = 10 + 2*t;
plot2d(t,S,-2);
plot2d(t,V,-4);
xtitle(Cinematica);
legend(Posio, Velocidade);
287

Grficos
Grficos tridimensionais:
plot3d (x,y, z, theta, alpha, leg, flag, ebox)
opcionais

Exemplo:

Construa o grfico, considerando as varivies:


x = 2 : 0.1 : 2
y = 2 : 0.1 : 2
z = (x2) y3
Exerccio
Detalhe cada elemento opcional do comando plot3d
288

Grficos
Outros grficos:
bar (x,width,color,style) ou bar (x,y,width,color,style)

barh (x,width,color,style) ou barh (x,y,width,color,style)


pie (x,[sp],[txt])
Exemplo:
-->x = [1, 2, 3, 4, 5]; y = [5, 3, 1,-1, 1];
-->bar(x);
-->barh(x,y,'red')
-->pie(x)
-->pie(x,[0,1,0,0,1], ['um','dois','tres','quatro','cinco'])
Exerccio
Detalhe cada elemento opcional dos comandos bar, bar e pie
289

Grficos Comandos bsicos


subplot: divide um janela de um grfico em
sub-graficos

Exemplo:
subplot(221)
plot2d(x,sin(x))
subplot(222)
plot2d(x,cos(x))
subplot(223)
plot2d(x,tan(x))
subplot(224)
plot2d(x,sin(x).*cos(x))
290