instituto federal de educaÇÃo, ciÊncia e tecnologia...

80
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE – CÂMPUS LUZERNA. APOSTILA DE PROGRAMAÇÃO EM OCTAVE

Upload: others

Post on 07-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA

CATARINENSE – CÂMPUS LUZERNA.

APOSTILA DE PROGRAMAÇÃO EM OCTAVE

Page 2: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

SUMÁRIO

1. Constantes,VariáveiseTiposdeDADOS.......................................................51.1. Constantes........................................................................................................51.2. Variáveis...........................................................................................................51.3. Nomedasvariáveis...........................................................................................61.4. VariavéisnoOctave..........................................................................................61.5. VARIÁVEISPRÉ-DEFINIDAS................................................................................71.6. TiposdeVariáveis.............................................................................................8

1.6.1. Inteiros.............................................................................................................81.6.2. Pontoflutuante................................................................................................91.6.3. String................................................................................................................91.6.4. Tiposdevariáveisdinâmicos..........................................................................10

1.7. LendoeimprimindovaloresnoOCTAVE..........................................................101.7.1. Imprimindovalores........................................................................................101.7.2. Lendoumvalor...............................................................................................12

1.8. Exemplo01–Lendodoisvaloreseapresentandoasoma................................121.9. EXERCÍCIOS.....................................................................................................131.10. ExercíciosProgramação................................................................................13

2. Sistemasdenumeração..............................................................................152.1. Sistemadenumeraçãodecimal.......................................................................152.2. Sistemadenumeraçãobinário........................................................................15

2.2.1. Convertendodedecimalparabinário............................................................162.3. Sistemadenumeraçãooctal...........................................................................16

2.3.1. Conversãodeoctalparadecimal...................................................................172.3.2. Conversãodedecimalparaoctal...................................................................172.3.3. Convertendodebinárioparaoctal.................................................................172.3.4. Conversãodeoctalparabinário.....................................................................18

2.4. Sistemadenumeraçãohexadecimal...............................................................182.4.1. Conversãodehexadecimalparadecimal.......................................................192.4.2. Conversãodedecimalparahexadecimal.......................................................192.4.3. Conversãodehexadecimalparabinário........................................................20

2.5. EndereçamentoeordemdeBytes...................................................................212.6. Representandostring......................................................................................212.7. Representaçãodeinteiros...............................................................................22

2.7.1. Codificaçãodeinteirossemsinal...................................................................222.7.2. Codificaçãodeinteiroscomsinal...................................................................22

2.8. Pontoflutuante...............................................................................................222.8.1. Númerosfracionáriosbinários.......................................................................232.8.2. RepresentaçãodepontoflutuantedeacordocomaIEEE.............................242.8.3. Convertendoumnúmerofracionáriodecimalparabinário...........................252.8.4. Convertendoumnúmerofracionáriobinárioparadecimal...........................25

3. Operadores................................................................................................273.1. OperadoresAritméticos..................................................................................27

Page 3: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

3.2. Estadoslógicos................................................................................................283.3. OperadoresRelacionais...................................................................................283.4. OperadoresLógicos.........................................................................................293.5. EXERCÍCIOS.....................................................................................................31

4. Funções......................................................................................................324.1. Exercícios........................................................................................................33

5. COMANDOSDEDECISÃO............................................................................345.1. SE/IF..............................................................................................................345.2. SE...SENÃO/IF....ELSE....................................................................................35

5.2.1. Exercício.........................................................................................................355.3. IF/ELSEEncadeados.........................................................................................365.4. Váriosifs.........................................................................................................365.5. switch...CASE..................................................................................................375.6. EXERCÍCIOS.....................................................................................................39

6. Vetoresematrizes......................................................................................406.1. Criandovetoresematrizes..............................................................................406.2. Selecionandooualterandoovalordeumelemento........................................416.3. Matrizefunções.............................................................................................426.4. Ooperador“:”................................................................................................43

6.4.1. Criandosequênciasdeelementos..................................................................436.4.2. Selecionandoealterandolinhas,colunasouelementos...............................446.4.3. Localizandoaposiçãodeelementos(comandoFIND)...................................47

6.5. FINDemMatrizes............................................................................................486.5.1. Localizandoelementosemcolunas/linhasdematrizes.................................496.5.2. UtilizandoovalorretornadopeloFIND..........................................................496.5.3. ExemplosutilizandoocomandoFIND............................................................50

6.6. operadoresespeciasparainicializaçãodevetoresematrizes..........................506.6.1. Funçãoeye()...................................................................................................516.6.1. Funçãolinspace()............................................................................................526.6.2. Funçãoones...................................................................................................526.6.3. Funçãozeros...................................................................................................536.6.4. Funçãorand....................................................................................................54

6.7. EXERCÍCIOS.....................................................................................................55

7. Salvandoerecuperandodadosemarquivo................................................577.1. Salvandodadosemarquivo............................................................................57

7.1.1. Exemplo1.......................................................................................................577.1.2. Exemplo2.......................................................................................................58

7.2. Recuperandodadosdearquivos.....................................................................597.2.1. Exemplo1.......................................................................................................597.2.2. Exemplo2.......................................................................................................607.2.3. Exemplo3.......................................................................................................617.2.4. Exemplo4.......................................................................................................61

7.3. Exercícios........................................................................................................62

8. Gráficos......................................................................................................638.1. Gráficosem2dimensões................................................................................63

Page 4: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

8.1.1. Inserindotítuloeajustandoeixos..................................................................648.1.2. Adicionandolegenda......................................................................................678.1.3. Outrosparâmetrosdográfico........................................................................69

8.1.3.1. Mudandoacordofundo.....................................................................................698.1.3.2. Linhasdegrade....................................................................................................69

9. ComandosdeRepetição.............................................................................739.1. Enquantox,Processar(WHILE...Loop)............................................................739.2. PARA...ATÉ...Seguinte(FOR...TO...Next)......................................................749.3. Casospráticoscomrepetição..........................................................................75

9.3.1. Exemplo01-Somandoosvalores..................................................................759.3.2. Exemplo02–Verificandoosdivisores...........................................................78

9.4. Exercícios........................................................................................................80

Page 5: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

5

1. CONSTANTES, VARIÁVEIS E TIPOS DE DADOS. Variáveiseconstantessãooselementosbásicosqueumprogramamanipula.Uma

variáveléumespaçoreservadonamemóriadocomputadorparaarmazenarumtipodedadodeterminado.

1.1. CONSTANTES

Constanteéumdeterminadovalor fixoquenãosemodificaao longodo tempo,duranteaexecuçãodeumprograma.

1.2. VARIÁVEIS

Variável é a representação simbólica dos elementos de certo conjunto. Cadavariável corresponde a uma posição de memória, cujo conteúdo pode se alterado aolongodotempoduranteaexecuçãodeumprograma.Emboraumavariávelpossaassumirdiferentesvalores,elasópodearmazenarumvaloracadainstante.

Partindo de uma analogia, uma variável pode ser considerada como uma caixa,ondeotipodedadoquepodeserarmazenadonavariáveléotamanhodacaixa,mesmoprincípioaconteceemprogramação,umavariávelqueiráreceberumvalorlógicotemumtamanhoembytes(1byte)inferioraumavariávelqueiráreceberumvalorReal(4ou8bytes).

Total

34

Nome

Valor

Tipo

Figura1-Representaçãodeumavariável

Umavariávelécompostaportrêspartes:1. Nome:éorótulodacaixa;comoelairáseridentificada.2. Valor:oqueestáarmazenadodentrodacaixa.3. Tipo:sãoasdimensõesdacaixa,emcomputaçãoserefereaquantidadede

bitsdisponíveisparaarmazenamento.

Page 6: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

6

1.3. NOME DAS VARIÁVEIS

Paraatribuironomeparaumavariável,algumasregrasdevemseobedecida:1. Onomedeumavariávelpodeterumoumaiscaracteres;2. NomesdevariáveisoufunçõesnoOctavedevemcomeçarcomumaletra,

oucomumdosseguintescaracteresespeciais:'%','_','#','!','$','?'.3. Ospróximos caracterespodem ser letrasouumdos seguintes caracteres

especiais:'_','#','!','$','?'4. Nomespodemsertãolongosquantosequeira,masapenasosprimeiros24

caracteresserãolevadosemconsideração.5. Letrasmaiúsculaseminúsculassãodiferentes.6. Nãopoderãoserutilizadosoutroscaracteresdiferentesdeletras,números

ousublinhado;

1.4. VARIAVÉIS NO OCTAVE

ParautilizarvariáveisnoOctave,precisamosapenasespecificaronomeeovalor:

>>a = 1; >> b = 2 b = 2

Percebaadiferençaquandoseutilizaosinal ‘;’.Quandoeleé inserido,oOctaveatribui o valor a variável normalmente, a retirada do sinal irá fazer com que o Octaveatribuaovalorigualmenteaopçãoanterioreimprimaovalornoterminal.

Realizarasomadevariáveiseatribuirparaumanovavariávelésimples:

>>c = a + b; >> c c = 3 >> d = a + a d = 2

Percebaqueparaverificarovalordeumavariável,bastaapenasdigitaronomedavariável(lembre-sequeosinal‘;’iráimpedirqueovalorsejaexibido).

Casoqueira,podeserincluídovaloresdiretamente:

>> 2 * 5 ans = 10 >> 2 * 5.1

Page 7: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

7

ans = 10.200 >> 2 ^ 3 ans = 8 >> 2 / 5 ans = 0.40000

Observação: a utilização de espaço entre os valores e o sinal de operação éopcional.

Podemostambémapresentarosvaloresdevariávelatravésdocomandodisp:

>>a = 3; >> disp(a); 3

Eumasituaçãoespecialequandonãodefinimosavariávelqueiráserarmazendooresultado,nessecasooOctaveatribuiautomaticamenteoresultadoparavariávelans:

>>5 * 3; >> disp(ans); 15

1.5. VARIÁVEIS PRÉ-DEFINIDAS

Algumasvariáveisjápossuemvalorespré-definidos:

Constante DetalhesI,i,J,j NúmerosimagináriospurosInf,inf Infinito

NaN,nan Notanumber.Éoresultadodeoperaçõescomo'0/0ou'Inf-Inf'

SEEK_SETComandosopcionaisdafunçãofseekSEEK_CUR

SEEK_ENDeps Retornaaprecisãodocomputador

pi Arazãoentreacircunferênciadeumcírculoeseudiâmetro.Internamenteeleécomputadorpor`4.0*atan(1.0)'.

realmax Omaiornúmeroempontoflutuantequepodeserrepresentado

realmin Omenornúmeroempontoflutuantequepodeserrepresentado

stdin Retornarosnúmerosdosarquivoscorrespondenteaentradapadrão,saídapadrãoesaídadeerropadrão.stdout

Page 8: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

8

stderr

e NúmerodeEulerouConstantedeNéper.Éaconstantequeresolveaequação:log(e)=1

>> pi ans = 3.1416 >> e ans = 2.7183 >> realmax ans = 1.7977e+308

1.6. TIPOS DE VARIÁVEIS

Apesardetransparentes,asvariáveispossuemtiposparafinsdearmazenamento.

1.6.1. Inteiros Em grande parte das linguagens de programação, números naturais (0,1, 2,

3,etc.)sãoconhecidoscomointeirossemsinal.Para valores inteiros pode ser definidos a quantidade de bits utilizados para

armazenamentodovalor.

• Uminteirocomsinaldenbitstemumafaixadevaloresde-2n-1até2n-1–1• Uminteirosemsinaldenbitstemumafaixadevaloresde0até2n–1

Por exemplo, se foremutilizados 8 bits para armazernar um inteiro, a escala de

valoresvão:• Inteirocomsinal:de-27(-128)até27–1(127)• Inteirosemsinal:de0até28–1(255)

y=int8(x) Uminteirocomsinalde8-bitsentre[−27,27−1]=[−128,127]y=uint8(x) Uminteirosemsinalde8-bitsentre[0,28−1]=[0,255]y=int16(x) Uminteirocomsinalde16-bitsentre[−215,215−1]=[−32768,32767]y=uint16(x) Uminteirosemsinalde16-bitsentre[0,215−1]=[0,65535]

y=int32(x) Uminteirocomsinalde32-bitsentre[−231,231−1]=[−2147483648,2147483647]

y=uint32(x) Uminteirosemsinalde32-bitsentre[0,232−1]=[0,4294967295]

Page 9: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

9

1.6.2. Ponto flutuante O ponto flutuante é uma forma de representar números na forma racional

(envolvendofrações).Apadronizaçãodosnúmerosempontoflutuanteem1985,garantiuahomogeneidadeda representaçãoe cálculosdesse tipodenúmero.Antesdisso, cadafabricanteadotavaumaformaprópriaderepresentaretambémdeoperar,muitasvezesofatorprecisãoeradeixadoemsegundoplanoemfavordeummelhordesempenhodoscálculos.

EmOctaveasvariáveisporpadrãosãodouble,umtipodepontoflutuantede64bits,mesmoquandoonúmeroématematicamenteum inteiro.Napráticaumavariáveldoublepodearmazenarvaloresinteirosentre−252e252.

Para números reais, o double consegue armazernar valores entre2,22507385850720x10-308e1,7976931348623157 x 10308.

>> a = 3 * pi a = 9.4248 >> b = 1/3 b = 0.33333

O armazenamento em ponto flutuante tem problema de arredondamento,verifiqueoresultadodaequaçãoabaixo:

>> 0.5 - 0.4 -0.1 ans = -2.7756e-17

Outroproblemaquepodeaconteceréextrapolarolimitedearmazenamento: >>printf("%25d\n", 2^53 + 1); 9007199254740992 >>printf("%25d\n", 2^53 + 2); 9007199254740994 >>printf("%25d\n", 2^53 + 3); 9007199254740996.

Obs.:Ocomandoprintfserávistoemcapítuloaparte,maspararesumir,eleé

umcomandoquepermiteespecificarcommaisdetalhescomoseráapresentadaasaída.

1.6.3. String Stringssãocodificadascomoumasequênciadecaracteresterminadapelocarácter

nulo (valor 0). Cada carácter é umnúmero inteiro convertido atravésdeumadefiniçãoparaumcarácter.AtabelamaisutilizadaéaASCII,queapresentaaequivalênciadeváriossímbolosparaobinário.

Page 10: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

10

Stringssãodelimitadaspelosinaldeaspasduplas(“e”),eaconcatenação(junçãodestrings)podeserfeitoutilizandooscolchetes:“[]”

>>x = "aula"; >>y = "programação"; >> [x y] ans = aulaprogramação

1.6.4. Tipos de variáveis dinâmicos Quando nos criamos e gerenciamos variáveis, Octave permite alterar o tipo da

variáveldinamicamente.Istosignificaquepodemoscriarumvalorrealelogoemseguidaalteraroconteúdodavariávelparaoutrotipo:

>> a = 5.1 a = 5.1000 >> a = "valor" a = valor

1.7. LENDO E IMPRIMINDO VALORES NO OCTAVE

Além do comando disp, o Octave possui o comando printf, um comando maisamploparaimprimirvalores.

1.7.1. Imprimindo valores Aimpressãodevaloresatravésdocomandoprintf:

a = 5

a

Início

Fim

>>a = 5; >> printf("O valor de a = %d\n", a); O valor de a = 5

Figura2-Imprimindovalores

Page 11: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

11

Perceba que o printf possui alguns caracteres estranhos dentro das aspas, oprimeiro %d se refere ao tipo de dado esperado, outros formatos que poderão serutilizados:

Tabela1-Caracterescoringas

Caractere Descrição

%dou%i Númerodecimalinteiro.%f Númeroreal(pontoflutuante)%s String

O“\n”(barrainvertida)éosímboloindicadoparaaofinalrealizarumaquebrade

linhanahoradeapresentaroresultadoOutroexemplodeimpressão:

a = 5

a

Início

Fim

pi = 3.14

pi

>>a = 5; >>pi = 3.14; >> printf("A = %d, PI = %f\n", a, pi); A = 5, PI = 3.140000

Figura3-Imprimindo2valores

Numaoperaçãodessesvalores,fizemosduassaídasprintfs,umacomoresultadosendoimpressocomointeiroeoutracomonúmeroreal:

>>a = 5; >>pi = 3.14; >>printf("A = %d, PI = %f\n", a, pi); A = 5, PI = 3.140000 >>printf("Resultado 1: %d\n", a * pi); Resultado 1: 15

Page 12: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

12

>>printf("Resultado 2: %f\n", a * pi); Resultado 1: 15.700000

Você irá perceber que o Resultado 1 será truncado, isso se deve a forma de

armazenamentodovalorRealquenahoraderealizaraapresentaçãonãoéapresentadodevidamente:

Resultado 1: 15 Resultado 2: 15.700000

1.7.2. Lendo um valor Paralerumvalordigitado,utilizamosafunçãoinput:

a

Início

Fim

a

>>a = input("Digite um valor: "); Digite um valor: 4 >>printf("Valor digitado: %d\n", a); Valor digitado: 4

Figura4-Lendoumvalor

1.8. EXEMPLO 01 – LENDO DOIS VALORES E APRESENTANDO A SOMA

Nesse exemplo iremos apresentar um programa que irá solicitar ao usuário que

digitedoisvaloreseapresenteasomadeles:

Page 13: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

13

a+b

Início

Fim

a

b

>>a = input("Digite um valor de A: "); Digite um valor de A: 5 >>b = input("Digite um valor de B: "); Digite um valor de B: 3 >>printf("Resultado: %d", a + b); Resultado: 8

Figura5-Algoritmoparasomardoisvalores

1.9. EXERCÍCIOS

1. Convertaoexemploacimadeformaquepossarealizarasomadenúmerosreais.2. Indiqueosnomesdasvariáveisquesãoválidos.Justifiqueosnomesinválidos.

a. pesob. média_finalc. R$

d. inte. 1diaf. teste1

g. area.do.quadradoh. valorreali. a+b

1.10. EXERCÍCIOS PROGRAMAÇÃO

1. Façaumfluxograma/programaquerecebadoisvaloreseapresenteadivisão

entres.2. Façaumfluxograma/programaquerecebadoisvalores,uméabaseeoutroo

expoenteeapresenteoresultadodapotência3. Umfluxograma/programaquerecebaovalordoraiodeumcírculoeimprimaa

área.4. OSr.Josédomercadinhodaesquinasolicitouquevocêfaçaum

fluxograma/programaparaagilizarocálculodocustodasmaças.ElevendemaçaaovalordeR$10,00pordúzia.Oclientepodecompraremfraçãodemeiadúziaoudúziascompletas.Seuprogramadevereceberovalordedúziaseapresentaroresultado.

Page 14: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

14

Exemplos:Digite a quantidade de dúzias: 4 Valor das maças = R$ 40.000000 Digite a quantidade de dúzias: 1.5 Valor das maças = R$ 15.000000

5. Façaumfluxograma/programaquerecebaosvaloresdoscatetosecalculeahipotenusadeumtriânguloretângulo(paracalculararaizutilizeafunçãosqrt(valor)).

Exemplos:Digite o valor do Cateto a: 2 Digite o valor do Cateto b: 4 O valor da hipotenusa é 4.472136 Digite o valor do Cateto a: 9 Digite o valor do Cateto b: 12 O valor da hipotenusa é 15.000000

Page 15: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

15

2. SISTEMAS DE NUMERAÇÃO Utilizaranotaçãodecimaléinteressanteparanóssereshumanos,principalmente

pela associação como número de dedos. Porémpara o computador amanipulação dedados através dessa notação é atualmente inviável, e por isso, o computador utiliza arepresentação de informação através da notação binária (dois estados: ligado oudesligado,0ou1).

2.1. SISTEMA DE NUMERAÇÃO DECIMAL

Estamostãoacostumadoscomarepresentaçãodevaloresnoformatodecimalquepassa despercebido a forma como são compostos, por exemplo, o número 456 é acombinaçãode:

6 x unidades(peso1ou100) 5 x dezenas(peso10ou101) 4 x centenas(peso100ou102)Ououtraformaderepresentaçãoéatravésdopesodascasas:Valor 4 5 6Peso 106 105 104 103 102 101 100

Resultado 400 50 6Somando-seosresultados:

400+50+6=456Pareceumabrincadeira,maslembre-sequejáestamosacostumadoscomesse

sistemadenumeraçãoejásabemoscomorepresentarele.

2.2. SISTEMA DE NUMERAÇÃO BINÁRIO

Acodificaçãoutilizapelocomputarpossuiapenasdoisestadospossíveis,comisso

atabeladepesosutilizaabase2,ecomopodemosterapenasosvalores0e1nascasas,vamos fazerademonstraçãodequantovaleonúmero11100102 (percebao2subscritoapósonúmero,elerepresentaemqualbaseseestáapresentadoonúmero)

Valor 1 1 1 0 0 1 0Peso 26=64 25=32 24=16 23=8 22=4 21=2 20=1Resultado 64 32 16 0 0 2 0Somandoosresultados:

Page 16: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

16

64+32+16+0+0+2+0=11410

2.2.1. Convertendo de decimal para binário Oprocessodeconversãodedecimalparabináriopodeserfeitodeduasformas,de

formaaexemplificarosprocessosvamosconverteronúmero35110parabinário:Método1–Dividindoonúmeropor2sucessivamente

351 2175 2350

1 350 87 28611

43 2421

21 2201

10 2100

5 241

2 220

1

Utilizandoosresultadosdetrásparafrente:

35110=1010111112Método2–SubtraçãodopesodascasasNessemétodo,precisoverificarsepossosubtrairovalordonúmeropelopesoda

casa, caso positivo, acrescento 1 (um) a saída e o resto da subtração é enviada para apróximacasa.Seonúmeroémenorqueopesodacasa,acrescento0(zero)paraasaídaecontinuoomesmonúmeronovalordapróximacasa.

Valor 351–256= 95 95-64= 31 31-16= 15-8= 7-4= 3-2= 1-1=0Peso 29=512 28=256 27=128 26=64 25=32 24=16 23=8 22=4 21=2 20=1Saída 1 0 1 0 1 1 1 1 1

Novamentechegamosaoresultado:

35110=1010111112

2.3. SISTEMA DE NUMERAÇÃO OCTAL

Page 17: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

17

Paranóshumanos,entenderumasequênciade0e1éconfusoefazeraconversãodebinárioparadecimalexigecertocálculosparaseobterovalor,deformaasimplificaravisualizaçãodesequênciasdebitssãoutilizadosoutrosmétodosesistemadenumeração.Umdeleéooctal,queutilizaosnúmerode0a7,totalizando8possíveiscombinaçãoporcasa.

2.3.1. Conversão de octal para decimal Paraconverterumnúmeroemoctalparadecimalutilizamosoprocessodecasase

pesos,porexemplo,paraconverteronúmero7538paradecimalfizemos:Valor 7 5 3Peso 85=32.768 84=4096 83=512 82=64 81=8 80=1Resultado 7x64=448 5x8=40 3x1=3 Oresultadoserá:

448+40+3=49110

2.3.2. Conversão de decimal para octal Paraconverterumnúmeroemdecimalparaoctal,utilizamosoprocessodedivisão

sucessivaspor8.Vejaumexemplo,paraconverteronúmero89710paraoctal

897 88961

112 81120

14 886

1

Oresultadoé16018

2.3.3. Convertendo de binário para octal O real motivo de se utilizar o sistema de numeração octal deve-se a forma de

representar os números em binário. Por isso o sistema de conversão é simples, porémanteseinteressanteconheceronúmeroemoctaleseequivalenteembinário.

Page 18: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

18

Tabela2-Equivalênciaoctal-bináriaOctal Binário

0 0001 0012 0103 0114 1005 1016 1107 111

Combasenessatabela,bastaapenasagruparacadatrêsbitsonúmeroembinário

e verificar seu equivalente em octal, caso necessário podemos preencher com zeros aesquerdanossonúmeroembinário.

Vejaoexemplo,paraconverteronúmero11001110112paraoctal:

1100111011}}}}3741

Resultado:11001110112=14738

2.3.4. Conversão de octal para binário. Paraaconversãodeoctalparabináriooprocessoéoinversodaqueleapresentado

anteriormente,utilizandoaTabela2utiliza-seaequivalênciadonúmeroemoctal Paraexemplificar,vamosconverteronúmero47328parabinário:

100111011010

4732 }}}}

Oresultadodaconversão:1001110110102

2.4. SISTEMA DE NUMERAÇÃO HEXADECIMAL

Deuma formaparecida ao sistemaoctal, o hexadecimal é utilizadoparamelhorvisualizar uma sequencia de bits, sendo inclusive muito mais utilizado que o octal. Deforma a completar a lista com 16 símbolos, após o 9 se inicia a utilização de letras,começandonoAatéoF,essaequivalênciaévistanaTabela3

Page 19: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

19

Tabela3-EquivalênciaDecimal–Hexadecimal

Decimal Hexadecimal0 01 12 23 34 45 56 67 78 89 910 A11 B12 C13 D14 E15 F

2.4.1. Conversão de hexadecimal para decimal. Para a conversão utilizamos o sistema de casas agora com a base 16. Para

exemplo, vamos converter o número A5D (perceba a substituição da letra pela seuequivalentedecimal)

Valor A 5 DPeso 164=65536 163=4096 162=256 161=16 160=1Resultado 10x256=2560 5x16=80 13x1=13

Resultado=2560+80+13=265310

2.4.2. Conversão de decimal para hexadecimal O processo ocorre por divisão, sempre cuidando para o caso do resto formaior

que10devesersubstituídopelosualetraequivalente.Convertendoonúmero1205910paraabasehexadecimal:

Page 20: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

20

12059 1612048(B)11

753 1647752

116232

(F)15

Resultado=2F1B16

2.4.3. Conversão de hexadecimal para binário Aconversãoentreessasbasessegueomesmoraciocíniodaconversãoentreoctal

ebinário,porémcom4casas,queéaquantidadedecasasnecessáriapararepresentaros16símbolosemhexadecimal.

Hexadecimal Binário Hexadecimal Binário0 0000 8 10001 0001 9 10012 0010 A 10103 0011 B 10114 0100 C 11005 0101 D 11016 0110 E 11107 0111 F 1111

A conversão acontece agrupando os binário em grupo de 4 e verificando seu

equivalenteemhexadecimal,oprocessoinversotambéméválido.Porexemplo,paraconverteronúmero1011110101012parahexadecimal:

101111010101}}}

B D 5

Ede1F816parabinário:

111111000

}}}1 F 8

Page 21: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

21

2.5. ENDEREÇAMENTO E ORDEM DE BYTES

Os programas que utilizam vários bytes para armazenar dados, precisar de duas

informações:qualoendereçodearmazenamentoequalaordemdosbytesnamemória.Paradadosarmazenadosemváriosbytes,geralmenteumasequênciadebytescontínuosé reservado para esse dado. O endereço dado é o byte inicial, por exemplo, se umavariávelxéarmazenadanoendereço0x100,ovalordaexpressão&xé0x100.Portantoosquatrobytesdavariávelxsãoarmazenadosnosendereços0x100,0x101,0x102e0x103.

Aordemdosbyteséaformacomoosdígitosserãoarmazenamentosnoespaçodememória,podendoiniciarpelomaissignificativo(bigendian)oupelomenossignificativo(littleendian)1.Exemplosdearquiteturaquesãolittleendianincluem:x86(inclusivex86-64), 6502 (inclusive65802,65C816), Z80 (inclusiveZ180,eZ80etc.),MCS-48,8051,DECAlpha,AlteraNios,AtmelAVR,SuperH,VAX,ePDP-11.

Nossa forma de representar número é equivalente ao big endian, ondecomeçamosarepresentarumnúmerocomomaiorpesoprimeiroeaesquerda.Algumasarquitetura big endian são: Motorola 6800 e 68k, Xilinx Microblaze, IBM POWER,System/360eseussucessoresSystem/370,ESA/390,ez/Architecture.

Aindaháumconjuntodearquiteturaqueaordemdosbytespodeconfiguradonomomentodeinicialização,denominadasbi-endian.Sãoexemplodearquiteturabi-endianARM,PowerPC,Alpha,SPARCV9,MIPS,PA-RISCeIA-64.

Aseguirsegueumexemplodearmazenamentodovalor0x0A0B0C0DnasformasBigeLittleEndian:

0x103 0D0x102 0C0x101 0B0x100 0A

Figura6-BigEndian

0x103 0A0x102 0B0x101 0C0x100 0D

Figura7-LittleEndian

2.6. REPRESENTANDO STRING

String em C é codificado como uma sequência de caracteres terminada pelo

caracter nulo (valor 0). Cada caracter é um número inteiro convertido através de umadefiniçãoparaumcaracter.AtabelamaisutilizadaéaASCII,queapresentaaequivalênciadeváriossímbolosparaobinário,porexemploastring“arquitetura”será representadaconformemostraaFigura8,percebaqueocomputadoriráarmazenarovalorembinário.

Caracter a r q u i t e t u r a

Decimal 97 114 113 117 105 116 101 116 117 114 97

1 Protocolos seriais também são classificados quanto a ordem de envio das

informações.USB,RS-232,RS-422eRS-485sãoexemplosdepadrõesseriaisdotipolittle

Page 22: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

22

Binário 1100001 1110010 1110001 1110101 1101001 1110100 1100101 1110100 1110101 1110010 1100001

Hexadecimal 61 72 71 75 69 74 65 74 75 72 61Figura8-Representaçãodecaracteres

2.7. REPRESENTAÇÃO DE INTEIROS

Existem diversas formas de representar um número inteiro, a princípio ocomputador é capaz de armazenar inteiros positivos apenas, porém, comoproceder seprecisar armazenar um número negativo? Esse capítulo irá tratar dessas formas derepresentação

2.7.1. Codificação de inteiros sem sinal Assumimosquearmazenamosuminteirocomalarguraω,ovetorquecontêmos

valores chamaremosdeň, uma sequênciadebits que será convertidopara inteiro semsinal.Aequaçãoquetranscreveaformadeconversãoéapresentadoaseguir:

𝐼!! = ň 𝑖 ×2!!!!

!!!

2.7.2. Codificação de inteiros com sinal2 Pararepresentarumnúmerocomsinaloprocessomaiscomuméocomplemento

de2.Eleutilizaobitmais significativodapalavracomosinal.Aexpressãoquedefineaformadeconversãoé:

𝐼!" = − ň ω− 1 ×2!!! + ň 𝑖 ×2!!!!

!!!

Por exemplo, qual o número emdecimal representadopelo número 110110102,percebaquealarguradovetoré8:Valor 1 1 0 1 1 0 1 0Peso 27=128 26=64 25=32 24=16 23=8 22=4 21=2 20=1Resultado 128 64 0 16 8 0 2 0

-(128)+64+16+8+2=-38

2.8. PONTO FLUTUANTE

2FimdomundoparaoLinuxesimilares,umproblemadelimitaçãonavariáveldearmazenamentoda

datanos sistemas compadrãoPOSIXpodemcausar problemas, o fim será as 03hrs14min07segde19deJaneirode2038.Paramaioresdetalhesprocurepor“Bug2038”

Page 23: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

23

O ponto flutuante é uma forma de representar números na forma racional (envolvendofrações).Apadronizaçãodosnúmerosempontoflutuanteem1985garantiuahomogeneidadedarepresentaçãoecálculosdessetipodenúmero.Antesdisso,cadafabricanteadotavaumaformaprópria de representar e também de operar, muitas vezes o fator precisão era deixado emsegundoplanoemfavordeummelhordesempenhodoscálculos.

2.8.1. Números fracionários binários

Na nossa forma norma de representação de números fracionários decimais, utilizamos osistemadepesotambémnoladodireitodavírgulaqueseparaaparteinteiradafracionária.Porexemplo,onumero12,345seriarepresentadoassim:

Valor 1 2 3 4 5 Peso ... 101 100 10-1 10-2 10-3 ...Resultado 10 2 0,3 0,04 0,005

Oresultadoseriaasomadosresultados,ounaformamatemática:

𝐷 = 10!×𝑑[𝑖]!

!!!!

OndeDseriaonúmerodecimalfinal,maquantidadedecasasinteiras,nonúmerodecasasfracionárias,ed[i]apartedonúmerodecimalnacasai.

Poranalogia,considereagoraessaformapararepresentarosistemabinário,comomesmoprincípiodecasasepesos.Porexemplo,vamosrepresentaronúmero101.112

Valor 1 0 1 1 1 Peso ... 22=4 21=2 20=1 2-1=1/2 2-2=1/4 ...Resultado 4 0 1 1/2 1/4

Resultado = 5 !!

Arepresentaçãomatemáticaé:

𝐵 = 2!×𝑏[𝑖]!

!!!!

Page 24: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

24

Porémessaformaderepresentarnúmerosfracionáriostemproblemasdeprecisão34,porexemplo, para representar o número 0,2 (1/5), não há formas precisão de representação,conformemostradonaTabela4.

Tabela4-aproximaçãode1/5

Representação Valor Decimal0,012 1/4 0,25100,00112 3/16 0,1875100,0011012 13/64 0,203125100,001100112 51/256 0,1992187510

2.8.2. Representação de ponto flutuante de acordo com a IEEE Com o padrão IEEE 754 de 1985, baseada num pequeno e consistente conjunto de

princípiostornouarepresentaçãoemnúmeroempontoflutuanteeleganteeentendível.

AIEEE754representaumnúmeronoformatoV=(-1)SxMx2eonde:

• S:sinaldonúmero,negativoédefinidoporS=1oupositivoS=0• M:Mantissa,éarepresentaçãodapartefracionária• e:expoentedabase.

AIEEE754padronizaoformatoemdoistamanhos,opontoflutuantedePrecisãosimpleseo de Precisão dupla. Cada um com diferentes tamanhos de campos conforme apresentadorespectivamentenasfigurasFigura9Figura10

bits 1 8 23

+- Expoente Mantissa

Figura9-Pontoflutuantedeprecisãosimples

bits 1 11 52

+- Expoente Mantissa

Figura10-Pontoflutuantedeprecisãodupla

O expoente é definido através do calculo com o bias, esse número é obtido através donúmerodebitsnoexpoentecomafórmula2k−1–1.Paraocasodeprecisãosimples,obiasé28−1–1=127.Paraopontoflutuantedeprecisãodupla,211−1–1=1023.

3 Um fato curioso sobre essa problema de representação foi na guerra doGolfo, para sabermais

detalhespesquisenumsitedebuscapor“erroarredondamentomíssilPatriot”.4AindapodemosverificarproblemasdearredondamentonoExcel,para issonumacélulaqualquer

insiraaequação=(0,5-0,4-0,1).Oresultadodeveriaser0.

Page 25: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

25

2.8.3. Convertendo um número fracionário decimal para binário5 Deformaaexemplificaraconversão,vamosconsiderarumadefiniçãoprópriadotamanho

dopontoflutuante,osinalseráde1bit,oexpoentede3bits(biasiguala3)emantissade4bits,totalizando8bitsparaarmazenaronúmeroqueseránossoexemplo:2,625:

1. Paraaparteinteira,realiza-seaconversãonormaldedecimalparabinário:210=1022. Paraapartefracionária,faz-sesucessivasmultiplicaçõesdapartefracionáriapor2:

0,625×2=1,25 1 Retiraonúmerointeiroecontinuaaconta0,25 ×2=0,5 0 Gerou0,continuando...0,5 ×2=1,0 1 Gerou1erestou0,paraaqui.

Portanto,0,62510=0,1012

3. Juntandoaparteinteiraeapartefracionária,temos10.10124. Adicionandooexpoente:10.1012×205. Normalizando: 10.1012 × 20 = 1.01012 × 21 (verifique que foi deslocado o ponto

decimalumacasaparaadireita,porisso,oexpoenteaumentouumacasa).6. Mantissa:01017. Expoente:1+3=410=10028. Bitdesinalpositivo:09. Resultadoé01000101,emhexadecimal4516

Vamosparaoutroexemplo,converteronúmero -39887.5625parao formato IEEE754deprecisãosimples:

1. Aparteinteira:3988710=100110111100111122. Afração0,562510=0,10012

0,5625×2=1,125 1 Generate1andcontinuewiththerest.0,125 ×2=0,25 0 Generate0andcontinue.0,25 ×2=0,5 0 Generate0andcontinue.0,5 ×2=1,0 1 Generate1andnothingremains.

3. Aconversãocompleta:39887,562510=1001101111001111,100124. Normalizando:1001101111001111,10012=1,00110111100111110012×215.5. Mantissaé00110111100111110010000,oexpoenteé15+127=142=100011102,

bitdesinalé1.6. Portanto39887,5625é11000111000110111100111110010000=C71BCF9016

2.8.4. Convertendo um número fracionário binário para decimal. Oprocessoinverso,paraconverterC4A42A0016paradecimal,atravésdanormativaIEEEde

precisãosimples:

5Formadeconversãoretiradodehttp://sandbox.mc.edu/~bennet/cs110/flt/dtof.html

Page 26: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

26

1. Convertendo:C4A42A0016=1100010010100100001010100000000022. Sinal:1=negativo3. Expoente:100010012=137–127(bias)=104. Mantissa:010010000101010000000002=0,28253173828125105. Aplicandoamantissaeoexpoente=1,28253173828125x210=-1313,312510

Page 27: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

27

3. OPERADORES Osoperadoressãomeiospeloqualincrementamos,decrementamos,comparamos

eavaliamosdadosdentrodocomputador.Temostrêstiposdeoperadores:• OperadoresAritméticos• OperadoresRelacionais• OperadoresLógicos

3.1. OPERADORES ARITMÉTICOS

Osoperadoresaritméticossãoosutilizadosparaobterresultadosnuméricos.Alémdaadição,subtração,multiplicaçãoedivisão,háooperadorrestodadivisão.Ossímbolosparaosoperadoresaritméticossão:

Tabela5-Operadoresaritméticos

Operação SímboloAdição +Subtração -Multiplicação *Divisãopeladireita /Divisãopelaesquerda \Potência ^ou**Transpor ‘

Hádoisoperadoresparadivisão,umque segueo sentidonormal comoestamos

acostumados:>>2 / 4 ans = 0.5

Eoutroquefazoprocessocomosoperadoresinvertidos:

>>2 \ 4 ans = 2.

Paraapotência,podemserutilizadostantoosinal‘^’quanto‘**’:

Page 28: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

28

>>2 ^ 2 ans = 4. >>2 ** 2 ans = 4.

Tabela6-HierarquiadasOperaçõesAritméticasNível Operação1º ()Parênteses2º *ou/(oqueaparecerprimeiro)3º +ou–(oqueaparecerprimeiro)

ExemploTotal = PRECO * QUANTIDADE 1 + 7 * 2 - 1 = 14 3 * (1 - 2) + 4 * 2 = 5

3.2. ESTADOS LÓGICOS

Emvárias linguagem,osoperadores relacionaise lógicossópodemretornardoisestados possíveis Verdadeiro ou Falso (em inglês True ou False) representado pelosnúmeros1e0respectivamente.

Porém,qualquervalordiferentede0(zero)seráconsideradoverdadeiro.Vejaalgunsexemplos:

>> 0 & 1 ans = 0 >>-1 & 2 ans = 1 >>1 & 2 ans = 1

3.3. OPERADORES RELACIONAIS

Os operadores relacionais são utilizados para comparar números. Os valores aseremcomparadospodemsernúmerosouvariáveis.

Estes operadores sempre retornam valores lógicos (Verdadeiro ou Falso). Paraestabelecerprioridadesnoquedizrespeitoaqualoperaçãoexecutarprimeiro,utilizeosparênteses.

Page 29: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

29

Osoperadoresrelacionaissão:

Tabela7-OperadoresrelacionaisDescrição Símbolo

Iguala ==Diferente ~=ou!=Maiorque >Menorque <Maiorouiguala >=Menorouiguala <=

Exemplo:TendoduasvariáveisA=5eB=3Osresultadosdasexpressõesseriam:

Tabela8-ExemplodeexpressõesExpressão ResultadoA==B FALSOA!=B VERDADEIROA>B VERDADEIROA<B FALSOA>=B VERDADEIROA<=B FALSO

3.4. OPERADORES LÓGICOS

Os operadores lógicos servem para combinar resultados de expressões,retornandoseoresultadofinaléverdadeirooufalso.

Osoperadoreslógicossão:

Tabela9-OperadoreslógicosOperador Original EmOctave

e and &ou or |não not ~ou!

E/AND = Uma expressão AND (E) é verdadeira se todas as condições forem

verdadeiras

Page 30: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

30

Tabela10-OperadorE1ºValor 2ºValor Resultado

F F FF V FV F FV V V

OR/OU=UmaexpressãoOR (OU)éverdadeirasepelomenosumacondição for

verdadeira

Tabela11-OperadorOU1ºValor 2ºValor Resultado

F F FF V VV F VV V V

NOT=Uma expressãoNOT (NÃO) inverte o valor da expressão ou condição, se

verdadeirainverteparafalsaevice-versa.

Tabela12-OperadorNÃO1ºValor Resultado

V FF V

Exemplos:SuponhaquetemostrêsvariáveisA=5,B=8eC=1.Osresultadosdasexpressõesseriam:

Tabela13-ExpressõesExpressão Resultado

A==B & B>C FALSOA~=B | B<C VERDADEIRO

A>B VERDADEIROA<B & B>C VERDADEIROA>=B | B==C FALSO

~ A<=B FALSO

Page 31: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

31

3.5. EXERCÍCIOS

1) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo.Informeseasexpressõessãoverdadeirasoufalsas.

2) SabendoqueA=3,B=7eC=4,informeseasexpressõesabaixosãoverdadeirasoufalsas.

a)(A+C)>B ( )b)B>=(A+2) ( )c)C==(B–A) ( )d)(B+A)<=C ( )e)(C+A)>B ( )

3) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo sãoverdadeirasoufalsas.

a)(A>C)&(C<=D) ( )b)(A+B)>10|(A+B)==(C+D) ( )c)(A>=C)&(D>=C) ( )

4) Faça um programa que solicite ao usuário que digite a base e a altura de umtriângulo.Emseguida,apresenteaáreadomesmo.

Área=(Base*Altura)/2

5) Crieumprogramaquesoliciteaousuárioquedigiteaquantidadedehorasedeminutos. Após isso, o programa deverá responder a quantidade de segundos nesseperíodo.

Segundos=(Quantidadedehoras*3600)+(Quantidadedeminutos*60)

6) Escrever um algoritmo para determinar o consumo médio de um automóvelsendofornecidaadistânciatotalpercorridapeloautomóveleototaldecombustívelgasto

Consumomédio=distânciatotal/totaldecombustívelgasto

7) A Loja Café comAçúcar está vendendo seus produtos em 5 (cinco) prestaçõessemjuros.Façaumprogramaquerecebaumvalordeumacompraemostreovalordasprestações.

Page 32: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

32

4. FUNÇÕES Funções são formas de operar elementos de forma mais natural e são muito

utilizadasparamelhorarestruturaumprograma.Umafunçãocomeçacomapalavrachavefunctioneterminacomendfunctionveja

umexemplo:

>>function res=soma(a, b) >>res = a + b; >>endfunction >>soma(4, 5) ans = 9

DetalhandoaslinhasNa linhafunction res=soma(a, b) começamosumafunçãochamandoa

palavra function, logo em seguinda a variável res será responsável por pelo retornodedadosparao localemque foi chamado.Soma se refereaonomeda funçãoea ebosvaloresqueserãopassados.

Dentrodafunção,avariávelderetornores iráreceberoresultadodasomaeaofinaldafunçãoiráterseuvalorretornandoafunçãoquechamou.

Alinhasoma(4, 5)iráchamarafunçãocorrespondente,passandoosvalores4

e5,aofinalapresentadooresultado.Asintaxepadrãodafunçãoéaseguinte:Function [<retorno>]=<Nome_Função>(<lista de argumento>) <Processamento> endfunction

Oretornopodeserumaúnicavariávelouumconjuntodevariáveis,nessecasoalistadevariáveisderetornodevemserinseridasdentrodecolchetes(“[“e“]”)

Percebanopróximoexemplo,queafunçãoprocessaretornadoisvalores,umcom

oresultadodasomadosparâmetroseoutrocomasubtração:

>>function [soma, subtrai]=processa(a, b) >>soma = a + b; >>subtrai = a - b; >>endfunction >>[res_soma, res_sub] = processa(6, 4) res_soma = 10

Page 33: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

33

res_sub = 2

4.1. EXERCÍCIOS

1. Escrevaumafunçãoquecalculeeretorneadistânciaentredoispontos(x1,y1)e(x2,y2).

2. Escreva uma função potencia(base, expoente) que, quando chamada,retornabaseexpoente.Porexemplo,potencia(3,4)deveretornar81.Assumaqueexpoenteéuminteiromaiorouiguala1.

3. Crie funções que recebam um valor de x e retorne o resultado dasseguintesequaçõesmatemáticas:

a. x+2b. x–2*xc. x2–4d. x3+2x2-6x+2

4. Façaumprogramaquerecebaosvaloresdea,beceatravésdaformuladeBhaskara,retorneasduasraízesdaexpressão.

Page 34: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

34

5. COMANDOS DE DECISÃO Oscomandosdedecisãooudesviofazempartedastécnicasdeprogramaçãoque

conduzem a estruturas de programas que não são totalmente sequenciais. Com asinstruçõesdeSALTOouDESVIOpode-se fazercomqueoprogramaprocedadeumaououtra maneira, de acordo com as decisões lógicas tomadas em função dos dados ouresultadosanteriores.

5.1. SE / IF

Aestruturadedecisão“SE/IF”normalmentevemacompanhadadeumcomando,ou seja, se determinada condição for satisfeita pelo comando SE/IF então executedeterminadocomando.

A decisão é sempre composta por um ou mais operador relacional, equando mais de um operador relacional estiver na condição,obrigatoriamente deve-se utilizar o operador lógico para conectar asexpressões.

AdecisãosópodeserrespondidacomSimouNão

Imagine um algoritmo que determinado aluno somente estará aprovado se sua

médiaformaiorouiguala5.0,vejanoexemplodealgoritmocomoficaria.SEMEDIA>=5.0ENTÃO

ALUNOAPROVADOEmdiagramadeblocosficariaassim:

media = input("Digite a nota: ") if media >= 5 printf("Aprovado\n"); end

Figura11-ComandoIF

Page 35: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

35

5.2. SE... SENÃO / IF....ELSE

Aestruturadedecisão“SE/SENÃO”,funcionaexatamentecomoaestrutura“SE”,com apenas uma diferença, em “SE” somente podemos executar comandos caso acondição seja verdadeira, diferente de “SE/SENÃO”, pois sempre um comando seráexecutado independente da condição, ou seja, caso a condição seja “verdadeira” ocomandodacondiçãoseráexecutado,casocontrárioocomandodacondição“falsa”seráexecutada.

Emalgoritmoficariaassim:SEMÉDIA>=5.0ENTÃO

ALUNOAPROVADOSENÃO

ALUNOREPROVADOOdiagramaeocódigoemOctave

media = input("Digite a nota: ") if media >= 5 printf("Aprovado\n"); else printf("Reprovado\n"); end

Figura12-UsodoSE/SENÃONo exemplo acima está sendo executada uma condição que, se for verdadeira,

executa o comando “APROVADO”, caso contrário executa o segundo comando“REPROVADO”.

5.2.1. Exercício

1) Façaumprogramaquesomedoisvalores,seoresultadofor0deveapareceramensagem“Zero”,casocontrário,“DiferentedeZero”.

Page 36: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

36

5.3. IF/ELSE ENCADEADOS

Paraoexemplodadoanteriormentepodemospensaremtornaroprogramamaiselaborado,criandoasseguintessituações:

• Casooalunotirenotaabaixode5,sejaconsideradoreprovado.• Casooalunotenhanotamaiorouiguala5,porém,menordoque7estará

emexame.• Casooalunotenhanotamaiorouiguala7estaráaprovado.

AtenteasaídadoprimeiroIF,neleacondiçãomédia>=5garanteduassituações,

sefalsaentãoapresentaamensagemde“Reprovado”,seforverdadeiraentraparamaisumadecisãoIF.

No segundo IF não me preocupo se a média for maior do que 5, pois isso foiverificado no bloco anterior, com isso verifico agora se média >= 7 e as duaspossibilidades:“Exame”ou“Aprovado”.

media = input("Digite a nota: ") if media >= 5 if media >= 7 printf("Aprovado"); else printf("Exame"); end else printf("Reprovado"); end

Figura13-IFsencadeados

5.4. VÁRIOS IFS

Podemos também utilizar vários IFs em sequência para resolver o problema damédia:

Page 37: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

37

media < 5Sim

Não

Reprovado

Fim

media

media >= 5 && media < 7

Sim

Não

Exame

media >= 7Sim

Não

Aprovado

media = input("Digite a nota: ") if media < 5 printf("Reprovado"); elseif media >= 5 & media < 7 printf("Exame"); elseif media >= 7 printf("Aprovado"); end

Figura14-IFemsequênciaNesse caso, deve-se tomar cuidado nas condições do IF, como queremos que

apenasumamensagemsejaexibida,acondiçãonãopodeseraplicadaparavárioscasos,porisso,quenosegundoIFtivemosquerealizarduascomparações.

5.5. SWITCH... CASE

A estrutura de decisão SWITCH/CASE é utilizada para testar, na condição, umaúnica expressão, queproduzum resultado, ou, então, o valordeumavariável, emqueestáarmazenadoumdeterminado conteúdo.Compara-se, então,o resultadoobtidonotestecomosvaloresfornecidosemcadacláusula“Caso”.

No exemplo do diagrama de blocos abaixo, é recebido uma variável “Valor” etestado seu conteúdo, caso uma das condições seja satisfeita, é apresentado o mêscorrespondente,casocontrárioéapresentadaamensagem“Nãoéummêsválido!”.

DiagramadeBloco:

Page 38: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

38

Recebe Valor

Valor = 1

Valor = 2

Valor = 3

.

.

.

.

Valor = 12

Não

Não

Não

Sim

Sim

Sim

SimNão

Janeiro

Fevereiro

Março

Março

Não é um mês válido

Figura15-DiagramadeblocodoSwitch

EmOctave:

mes = input("Digite o mês:"); switch (mes) case 1 printf("Janeiro\n") case 2 printf("Fevereiro\n") case 3 printf("Março\n") case 4 printf("Abril\n") case 5 printf("Maio\n") case 6 printf("Junho\n") case 7 printf("Julho\n") case 8 printf("Agosto\n") case 9 printf("Setembro\n") case 10 printf("Outubro\n") case 11

Page 39: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

39

printf("Novembro\n") case 12 printf("Dezembro\n") otherwise printf("Mês inválido\n") end

Figura16-Códigofontedoswitch

Outra formadeusaro comandoSwitch/caseé agrupandoasopçõese caso seja

umadela,ocomandoseráexecutado:

valor = input("Digite um valor:"); switch (valor) case {1, 2, 3} printf("Valor digitado foi 1, 2 ou 3\n") case {4, 5, 6} printf("Valor digitado foi 4, 5 ou 6\n") otherwise printf("Outro valor\n") end

5.6. EXERCÍCIOS

1. Osmoradores de uma localidade possuem um poço artesiano que distribui

águaparaacomunidade,acobrançaéfeitapeloconsumo,até10m3omoradorpagataxafixadeR$10,00, acimadessaquantidade,elepagaR$2,00pormetro cúbicoexcedente.Faça umprograma que receba a quantidade de litros gastos pelomorador e retorno ovalorquedeveserpago.

2. Faça um programa que leia um número inteiro e mostre uma mensagem

indicandoseépositivo,negativoouzero.

3. Crie umprograma que receba umnúmero inteiro e classifique-o empar ouímpar.Dica:a funçãomodulo(A,B)retornaorestodadivisãodonúmeroApeloB, porexemplo:modulo(5,2)iráapresentar1,enquantomodulo(6,2),apresentará0.

4. Elaboreumalgoritmoquedadaa idadedeumciclista classifique-oemumadasseguintescategorias:

InfantilA=5a7anosInfantilB=8a11anosJuvenilA=12a13anosJuvenilB=14a17anosAdultos=Maioresde18anos

Page 40: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

40

6. VETORES E MATRIZES Vetoresematrizessãoconstruçõesespeciaisdevariáveis,sãoumagrupamentode

variáveis do mesmo tipo em que seus elementos são acessados através de índices. OOctavefoiprogramadoparalidarcomvetoresematrizesdeformaeficienteeelegante.

6.1. CRIANDO VETORES E MATRIZES

Paracriarumvetoroumatrizénecessárioconheceralgunssímbolosbásicos:

• Colchetes(“["e“]“):marcamoinícioeofimdeumamatriz;• Vírgula (“,“): separa os valores em colunas diferentes (também pode ser

utilizadooespaço(““)parasepararoselementos;• Pontoevírgula(“;”):separaosvaloresdediferenteslinhas.

Exemplosdecriaçãodevetores:

>>v1 = [1, 2, 3] % Vetor com uma linha e três colunas, elementos separados por vírgula

v1 = 1. 2. 3. >>v2 = [4 5 6] % Vetor com uma linha e três

colunas, elementos separados por espaço v2 = 4. 5. 6. >>v3 = [1; 2; 3] % Vetor com três linhas e uma

coluna v3 = 1. 2. 3.

Exemplosdecriaçãodematrizes:

Page 41: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

41

>>m1 = [1, 2, 3; 4, 5, 6] % Matriz de 2 linhas e 3 colunas

m1 = 1 2 3 4 5 6 >>m2 = [4 5 6; 7 8 9] % Matriz de 2 linhas e 3

colunas m2 = 4 5 6 7 8 9 >>m3 = [10 11 12 % Criando uma matriz com quebra

de linhas >>13 14 15 >>16 17 18] m3 = 10 11 12 13 14 15 16 17 18

Oupode-secriarumamatrizvazia:

>>m4 = [] m4 = [](0x0)

6.2. SELECIONANDO OU ALTERANDO O VALOR DE UM ELEMENTO

Para selecionar ou alterar um elemento da matriz utilizar os índices de linha e

coluna,começandoacontarpelovalor1:

Page 42: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

42

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15] A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 >>A(1, 3) % Selecionar o elemento na linha 1,

coluna 3 ans = 3 >>A(2, 1) = 99 % altera o elemento da linha 2,

coluna 1 para 99 A = 1 2 3 99 5 6 7 8 9 10 11 12 13 14 15

6.3. MATRIZ E FUNÇÕES Funçõespodemrecebercomoparâmetrosdeentradavetoresematrizes:>>function y=soma2(x) >>y=x+2; >>endfunction >>A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >>res = soma2(A) res = 3 4 5 6 7 8 Outroexemplo: >>function [r1, r2]=opera(x) >>r1 = x + 2;

Page 43: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

43

>>r2 = x – 2; >>endfunction >>A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >>[resSoma, resSub] = opera(A) resSoma = 3 4 5 6 7 8 resSub = -1 0 1 2 3 4

6.4. O OPERADOR “:”

Ooperador“:”éumoperadorcomváriasfinalidadesdentrodoOctave

6.4.1. Criando sequências de elementos No Octave, pode ser utilizado o operador “:” para criar uma sequência de

elementosnumvetor:

>>a = [1:10] a = 1 2 3 4 5 6 7 8 9 10 >>a = [1:2:10] a = 1 3 5 7 9 >>a = [2:2:10] a = 2 4 6 8 10 >>a = [2:1] % Cria uma sequência começando em 2 e

terminando em 1??

Page 44: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

44

a = [](1x0) >>a = [2:-1:1] % Para criar uma sequência

decrescente é necessário especificar o passo com -1 a = 2 1 >>a = [10:-1:1] a =

10 9 8 7 6 5 4 3 2 1

Asintaxedeusodooperador:paraacriaçãodevetoreséoseguinte:

[A:B]CriarumasequênciaentreosnúmerosAeB,seovalordeBformaiordoqueA,ovetorcriadoévazio.

[A:X:B] Cria uma sequência começando em A, com intervalo X entre os

elementosatéovalorB,desdequeasequêncianãoultrapasseovalorB.Esse comando também pode ser utilizado para criar uma sequência

decrescente.Nessecasoovalordo incrementodevesernegativoeovalordeAdevesermaiordoqueB.

Pode-se criar vetores com linhas em cada uma como uma sequência

diferente,porémdeve-seatentaraonúmerodeelementosemcadalinhaquedeveserigual:

>>b = [1:2:10; 2:2:10] b = 1 3 5 7 9 2 4 6 8 10 >>c = [1:2:10; 2:2:10; 1:3:15] c = 1 3 5 7 9 2 4 6 8 10 1 4 7 10 13

6.4.2. Selecionando e alterando linhas, colunas ou elementos

Page 45: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

45

Ooperador“:”podeserutilizadoparaselecionarlinhas,colunasouelementos:

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12] A = 1 2 3 4 5 6 7 8 9 10 11 12 >>B = A(:, 1) B = 1 4 7 10

NesseexemplofoicriadoamatrizA,depoisfoiselecionadotodasaslinhasatravés

dooperador“:”eapenasaprimeiracoluna;

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. >>B = A(2:4, 1) B = 4. 7. 10.

O comando pode ser utilizado para passar uma sequência de elementos, nesse

casofoiutilizadopararetornarentreaslinhase2e4apenasaprimeiracoluna

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. >>B = a(2:4, 1:2)

Page 46: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

46

B = 4. 5. 7. 8. 10. 11.

Retornaaslinhas2a4eascolunas1e2.

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. >>B = A(1:2:5, :) B = 1. 2. 3. 7. 8. 9. 13. 14. 15.

Nesseexemplo,retornouapenasaslinhasímparescomtodasascolunas.

Ealterandoelementosdamatriz:

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. >>A(1, :) = 0 % altera da linha 1, todos os

elementos das colunas para 0 A = 0. 0. 0. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.

Page 47: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

47

>>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. >>A(1:2:5, :) = 0 % Altera as linhas 1, 3 e 5 de

todas as colunas com o valor 0 A = 0. 0. 0. 4. 5. 6. 0. 0. 0. 10. 11. 12. 0. 0. 0. >>A = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. >>A(1:2:5, 1:2) = 0 % Altera as linhas 1, 3 e 5,

colunas 1 e 2 com o valor 0 A = 0. 0. 3. 4. 5. 6. 0. 0. 9. 10. 11. 12. 0. 0. 15.

6.4.3. Localizando a posição de elementos (comando FIND) OcomandoFINDéutilizadoparaencontraraposição(ouposição)doselementos

quecoincidemcomapesquisa.Porexemplo,considereovetor:

Page 48: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

48

>> X = [1 0 4 -3 0 0 0 8 6]; Eocomando>> indices = find(X == 0) indices = 2 5 6 7 Ocomando localizou todosos valores iguais a 0 (X ==0) e retornouasposições

desseselementos.Omesmoserveseovetorestiveremformadecoluna:>> X = [1; 0; 4; -3; 0; 0; 0; 8; 6]; >> indices = find(X == 0) indices = 2 5 6 7

6.5. FIND EM MATRIZES.

ParautilizerocomandoFINDemmatrizes,háalgumasdiferenças:>> X = [1 0 4; -3 0 0; 0 8 6] X = 1 0 4 -3 0 0 0 8 6 >> indices = find(X == 0) indices = 3 4 5 8

Page 49: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

49

Nesseexemplo,ocomandoFINDretornouaposiçãolineardosvaloresiguaisa0.Aposiçãolinearédefinidapelacolunas,começandonocantosuperioresquerdo:

OsnúmerosemAzulrepresentamaposiçãodoselementos.

6.5.1. Localizando elementos em colunas/linhas de matrizes Podemos ainda procurar um elemento numa coluna ou linha especifica, nesse

caso, o comando FIND irá retornar o(s) elemento(s) na posição referente a coluna oulinha:

>> indices = find(X(:, 3) == 0) indices = 2 Nesseexemplo,ocomandoFINDiráprocuraremtodasaslinhasdacoluna3pelo

valoriguala0.

Retornandoaposição2.

6.5.2. Utilizando o valor retornado pelo FIND Aproveitandooexemploanterior,emquelocalizamosovalor0na3ªcoluna:>> indices = find(X(:, 3) == 0) indices = 2 Percebemosqueháovalor0na2ªlinhadareferidacoluna,comissovamosutilizar

essevalorpararetornaralinhatodaearmazenarnavariávelRes:>> Res = X(indices, :) Res =

Page 50: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

50

-3 0 0 Graficamentefalando:

6.5.3. Exemplos utilizando o comando FIND VejaoutrosexemploscomousodocomandoFIND:>> indices = find(X(:, 2) == 0) indices = 1 2 Nessecaso,ocomandoFINDretornouduasocorrênciadevaloresiguaisa0,eno

momentodeselecionaraslinhas,quesãoutilizadosparaapresentaroresultado: >> Res = X(indices, :) Res = 1 0 4 -3 0 0 Oupodemosaindaquererqueeleretorneapenasa1ªocorrênciadoíndice:

>> Res = X(indices(1), :) Res = 1 0 4 Compareosdoiscasosparaentenderoquefoialterado.

6.6. OPERADORES ESPECIAS PARA INICIALIZAÇÃO DE VETORES E MATRIZES

NoOctavehácomandosespeciaisparadefinirvaloresdevetoresematrizes:

Page 51: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

51

eye Criaumamatrizidentidadelinspace Criarumvetorlinearmenteespaçadoones Criaumvetoroumatrizcomunszeros Criaumvetoroumatrizcomzerosrand geraumamatrizcomvaloresaleatórios

6.6.1. Função eye() Afunçãoeye()criaumamatrizidentidade,queéumamatrizemqueoselementos

dadiagonalprincipalsãoiguaisa1,osoutroselementossãoiguaisa0.Exemplos:

>>id1 = eye(4, 4) id1 = 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. >>id2 = eye(4, 2) id2 = 1. 0. 0. 1. 0. 0. 0. 0. >>a = [1 2 3; 4 5 6; 7 8 9; 10 11 12] a = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. >>id = eye(a) id = 1. 0. 0. 0. 1. 0. 0. 0. 1. 0. 0. 0.

Page 52: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

52

Asintaxedocomandoeye():

X = eye(m,n) X = eye(A)

Onde:

Ondemensãovaloresquerepresentamonúmerodelinhasecolunas.

A:umaoutraformadeconstruirumamatrizidentidade,passa-seumamatrizAeocomandoeye()constróiumamatrizidentidadecomasmesmasdimensõesdamatrizA.

6.6.1. Função linspace() Criaumvetorvetorialespaçadolinearmente.

>>linspace(1,2,11) ans = 1. 1.1 1.2 1.3 1.4 1.5 1.6

1.7 1.8 1.9 2. >>linspace(0,9,10) ans = 0. 1. 2. 3. 4. 5. 6. 7.

8. 9. >>linspace(0, 10, 5) ans = 0. 2.5 5. 7.5 10.

6.6.2. Função ones Geraumamatrizondetodososelementossãoiguaisa1 >>m1 = ones(1, 4) m1 = 1. 1. 1. 1. >>m2 = ones(3, 2) m2 =

Page 53: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

53

1. 1. 1. 1. 1. 1. >>a = [1 2 3; 4 5 6] a = 1. 2. 3. 4. 5. 6. >>m3 = ones(a) m3 = 1. 1. 1. 1. 1. 1. Asformasdechamarafunçãoonesão:y=ones(m1,m2,...) y=ones(A) y=ones() Onde:

m1em2sãovaloresquerepresentamonúmerodeelementosemcadadimensão

A:umaoutraformadeconstruirumamatrizidentidade,passa-seumamatrizAeocomandoones()constróiumamatrizdeelementos1comasmesmasdimensõesdamatrizA.

6.6.3. Função zeros Semelhante a função ones, preenche uma matriz com os elementos iguais a 0

(zero):

>>m1 = zeros(1, 5) m1 = 0. 0. 0. 0. 0. >>m2 = zeros(3, 4) m2 = 0. 0. 0. 0. 0. 0. 0. 0.

Page 54: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

54

0. 0. 0. 0. >>a = [1 2 3; 4 5 6; 7 8 9; 10 11 12] a = 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. >>m = zeros(a) m = 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.

Asintaxedafunçãozerosé:

y=zeros(m1,m2,..) y=zeros(A) y=zeros() Onde:

m1em2sãovaloresquerepresentamonúmerodeelementosemcadadimensão

A:umaoutraformadeconstruirumamatrizidentidade,passa-seumamatrizAeocomando zeros() constrói uma matriz de elementos 1 com as mesmas dimensões damatrizA.

6.6.4. Função rand Afunçãorandéutilizadaparacriarnúmerosematrizaleatórias

>>x=rand(3,3) x = 0.5667211 0.0568928 0.7279222 0.5711639 0.5595937 0.2677766 0.8160110 0.1249340 0.5465335 >>a = [1 2 3; 4 5 6]

Page 55: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

55

a = 1. 2. 3. 4. 5. 6.

Asintaxedechamarafunçãorand:

rand(m1,m2,.. [,key]) rand(x [, key]) rand() rand(key) rand("seed" [,n]) rand("info")

Onde:

Semargumento"key",assintaxesabaixoproduzemmatrizesrandômicascomo

geradorrandômicocorrente.

rand(m1,m2)éumamatrizrandômicadedimensãom1porm2.

rand(m1,m2,..,mn)éumamatrizrandômicadedimensãom1porm2,..pormn.

rand() : sem argumentos, fornece um escalar cujo valormuda a cada vez que é

referenciado.

6.7. EXERCÍCIOS

1. Criaçãoeoperaçãodematrizes

a. Criar2matrizesAeB,comdimensões3X4.

b. CriaremCatransportadeA.

c. GerarD,somandoAeB.

d. GerarE,subtraindoBdeA.

e. GerarFcomamultiplicação,elementoaelemento,deAporB.

f. Adicionar5acadaelementodeB.

g. Apagartodasasvariáveisusadasatéestemomento.

Page 56: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

56

2. Operaçãoemvetores:

a. GerarumvetorinteiroH,comovalorinicial6evalormáximo100,

comvariaçãoentreelementosde6.

b. GerarumvetorI,subtraindo2decadaumdosvaloresdeH.

c. Gerarumvetor J comamultiplicação,elementoaelemento,deH

porI.

3. InsiraamatrizX=[2797;3156;8425]noOctave,executeosseguintes

comandosedetalheovalorobtido

a. A=X(1,1:3)

b. B=X(1:2,1:2)

c. C=X(:,2:2:$)%Ooperador$éutilizadoparadesignarofimdasérie

d. D=X(1:2:$,:)

4. Detalheoquecadacomandoiráfazer:

a. x=[315912-10-12961]

x(x>0)=0

b. x=[315912-10-12961]

x(:,1:2:$)=2

c. x=[315912-10-12961]

y=x(x>10)

d. x=[315912-10-12961]

y=x(modulo(x,2)==0)

5. Faça:

a. Criar com a função rand a matriz realmat, de dimensões 7X5 e

multiplicá-lapor100.Depois utilizando a função int, modifique a

matrizmatdeformaquecontenhaapenasvaloresinteiros

b. Comamatrizmat obtida do itemanterior apresente a soma e o

produtodetodosseusvalores;

c. Aindasobreamatrizmatapresenteomaiorvalor,omenorvalore

amédiadosvalores

Page 57: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

57

7. SALVANDO E RECUPERANDO DADOS EM ARQUIVO OOctavepossuidoiscomandosbásicos:saveeloadquepermitesalvarelerdados

de arquivos em vários formatos. Vale lembrar que esses comandos salvam apenas osdados,oscomandosdevemsersalvosemarquivosaparte.

7.1. SALVANDO DADOS EM ARQUIVO

Asintaxedocomandosaveéaseguinte:save [options] file [variables] Onde: Options:sãoasopçõesaceitapelocomando,asprincipaissão:

-append Adicionaonovoconteúdoaoarquivo,semdestruirosdadosanteriores-ascii Salvaosdadosnumarquivotextosimples,seminformaçõesamais-binary Salvaosdadosemformatobinário(oarquivoficamenor,masdedifícil

entendimentoseabertoporumeditordetexto)-text Salvaosdadosemformatotexto(padrão)-zip ou -z comprimeosdadoscomoalgoritimogzip

File:arquivoondeosdadosserãosalvos.Variables:podeserumaoumaisvariáveisqueterãoseuconteúdosalvono

arquivo.

7.1.1. Exemplo 1 Porexemplo,considereosseguintescomandos:>>a = [1 2 4; 6 8 4; 1 4 5];

>>save dados.txt a

Irásalvaroarquivo“dados.txt”comoseguinteconteúdo:

Page 58: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

58

7.1.2. Exemplo 2 Seforemenviadostrêsvariáveisparaoarquivo:

>>a = [1 2 4; 6 8 4; 1 4 5]; >>b = 3.444; >>c = "texto";

>>save dados.txt a b cOarquivoresultantefica:

# Created by Octave 4.0.3, Mon Jan 22 14:20:37 2018 -02 <[email protected]>#name:a#type:matrix#rows:3#columns:3124684145

# Created by Octave 4.0.3, Mon Jan 22 14:29:30 2018 -02 <[email protected]>#name:a#type:matrix#rows:3#columns:3124684145#name:b#type:scalar3.444#name:c#type:string#elements:1#length:5texto

Page 59: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

59

7.2. RECUPERANDO DADOS DE ARQUIVOS

Quandosequer lerosdadosdearquivo,utilizamosocomandoLoad,que temaseguintesintaxe:

load [options] file [variables]

options:Asopçõessãoparecidasasdoscomandosave:

-ascii Assumequeosdadosestãoemformatodetextosemnenhumcabeçalhoamais.

-binary Assumequeoarquivoestáemformatobinário-text Assumequeoarquivoestáemformatotexto

File:nomedoarquivoaserlido

Variables: Asvariáveisqueserãoarmazenadas

7.2.1. Exemplo 1 ParaexemplificarousodoLoad,vamospartirdoarquivo“dados.txt”criadocom

osseguintesdados:

Comopodeserobservado,osnúmerosestãoorganizadosnumamatrizde3linhaspor3colunas,dotipomatriz,comonome“AA”

Quandoexecutamosocomando:

>>load dados.txt

Serácriadoumavariávelcomonome“AA”eosdadosqueestãonoarquivo:>> AA

#name:AA#type:matrix#rows:3#columns:34561238910

Page 60: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

60

AA = 4 5 6 1 2 3 8 9 10

7.2.2. Exemplo 2 Outroexemplo,dessavez,oarquivotemosseguintesdados:

Executandoocomando:

>>load dados.txt

Obteremosduasvariáveis:AAeBBcomosvalores:

>> AA AA = 4 5 6 1 2 3 8 9 10 >> BB BB = 11 12 13

#name:AA#type:matrix#rows:3#columns:34561238910#name:BB#type:matrix#rows:2#columns:3111213141516

Page 61: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

61

14 15 16

7.2.3. Exemplo 3 Dessa vez, iremos querer carregar os dados de um arquivo sem a estrutura de

cabeçalho,apenasosdados:

Nessecaso,mudamosaformadeentradadocomandoload:>> a = load("dados.txt")

a = 4 5 6 1 2 3 8 9 10

Vejaqueantesdocomandoloadfoiespecificadaavariávelemqueosdadosserão

salvos.Casosejaoomitidoonomedavariável,serácriadaumacomomesmonomedoarquivo.

7.2.4. Exemplo 4 Casoseimaginequeparasalvarduasmatrizesbastacolocarumaabaixodaoutra:

Aotentarcarregarosdados,vamosapenas1matrizcomtodososvalores:>> a = load("arquivo.txt") a =

4561238910

4561238910123111213

Page 62: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

62

4 5 6 1 2 3 8 9 10 1 2 3 11 12 13

Para recuperar duas matrizes separadas é necessário especificar os cabeçalhosparacadauma,comofeitonoexemplo2.

7.3. EXERCÍCIOS

1. Dadoalistadevaloresabaixo,crieumarquivocomessesvaloresefaçaaimportaçãonoOctave:

2. Faça um programa que leia 2 valores de um arquivo e verifique qual o

númeroémaior3. Façaumprogramaquerecebadoteclado2valoresesalveosdoisnúmeros

numarquivo.

25910111516171820

Page 63: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

63

8. GRÁFICOS OOctavepermitecriardiversostiposdegráficosem2e3dimensões,paraisso,a

basedegráficoséconstruídaatravésdafunçãoplot.

8.1. GRÁFICOS EM 2 DIMENSÕES

Paracriarumgráfico2D,éutilizadoafunçãoplot,quenecessitadepelomenos2

parâmetros,umcomalistadevaloresdoeixoXeoutrocomosvaloresdeY:>>X = [-3:0.5:3] X = - 3. - 2.5 - 2. - 1.5 - 1. - 0.5 0. 0.5

1. 1.5 2. 2.5 3. >>Y = X.^2.-4 Y = 5. 2.25 0. - 1.75 - 3. - 3.75 - 4. - 3.75

- 3. - 1.75 0. 2.25 5. >>plot(X, Y) Eoresultado:

Page 64: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

64

8.1.1. Inserindo título e ajustando eixos OOctavepermitequesecrietítuloseadicionerótulosnoseixosdosgráficos.Os

comandos:• title():adicionaumtítulonapartesuperiordográfico;• xlabel():adicionaumrótulonoeixodasabscissas;• ylabel():adicionaumrótulonoeixodasordenadas.

Adicionandoessescamposaoexemploanterior:>>X = [-3:0.5:3] X = - 3. - 2.5 - 2. - 1.5 - 1. - 0.5 0. 0.5

1. 1.5 2. 2.5 3. >>Y = X.^2.-4 Y = 5. 2.25 0. - 1.75 - 3. - 3.75 - 4. - 3.75

- 3. - 1.75 0. 2.25 5. >>plot(X, Y); >>xlabel("Valores de X"); >>ylabel("Valores de Y"); >>title("Teste de plotagem");

Page 65: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

65

Podemos personalizar melhor o gráfico passando certos parâmetros para as

funçõesxlabel,ylabeletitle:Porexemplo:>>xlabel("Valores de X", "fontsize", 16); >>ylabel("Valores de Y", "fontsize", 16); >>title("Teste de plotagem","fontsize", 20);

Iráreproduziroseguintegráfico:

Page 66: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

66

Algumaspropriedadesquepodemseralteradassão:

• “fontname”:Defineafonte,ovalorpassadodeveserumastring• “fontsize”:Defineotamanhodafonte.Ocomandoesperaumvalornumérico,

padrão10.Aunidadedemedidaédefinidapelocomandofontunits• “fontunits”:Defineaunidadedemedidadafonte,aceitaumasdasopções

"centimeters","inches","normalized","pixels","points".Opadrãoé"points".• “fontweight”:espessuradafonte,éaceitaumasdasopções:"bold","demi",

"light","normal",opadrãoé"normal".• “horizontalalignment”:defineoalinhamentohorizontal,osvaloresaceitossão:

"center","left","right",opadrãoé"left".• “verticalalignment”,definieoalinhamentovertical,valoresaceitos:"baseline",

"bottom","cap","middle”,"top".Opadrãoé"middle”.• “rotation”:Definearotaçãodotexto,ovaloraceitodevesernoformatonumérico

eémedidoemgraus• “color”:Acordotexto,ovaloraceitoéumacoreminglêsnoformatostring

Esseparâmetrospodemserpassadosnamesmalinhadeconfiguração.

Vejaoexemplo:

Page 67: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

67

>>X = [-3:0.5:3]; >>Y = X.^2.-4; >>plot(X, Y); >>xlabel("Valores de X", "fontsize", 12, "color", "red",

"verticalalignment", "top" ); >>ylabel("Valores de Y", "fontsize", 12, "fontname",

"Courier", "fontweight", "demi", "rotation", 0 ); >>title("Teste de plotagem","fontsize", 20, "color",

"red");

Eoresultado:

8.1.2. Adicionando legenda Paraadicionarlegendasusa-seocomando:Legend( strings [,"location",pos][,"orientation", orient

][, opções ] ) onde:

• strings:ostextosqueirãoaparecernalegenda• "location":essecomandoéopcional,defineaposiçãodalegenda,casoseja

utilizado,oargumentoposdeveserumdesses:

Page 68: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

68

pos Localizaçãodalegendanorth Topocentrosouth Baixocentroeast Centrodireitawest Centroesquerda

northeast Topodireita(padrão)northwest TopoEsquerdasoutheast Baixodireitasouthwest Baixoesquerdaoutside Podeseradicionadoaofinaldaposição,paracolocaracaixada

legendaforadaáreadográfico.Porexemplo“eastoutside”

• “orientation”:comandoopcional,defineaorientadaçãodalegenda,sefor

utilizado,ovalordeorientdeveser"vertical"(padrão)ou"horizontal".Vejaumexemplo:

>>legend("Valor de x", "location", "east", "orientation", "vertical");

AindaocomandoLegendpodeserexecutado,apenascomumdosargumentos:

Page 69: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

69

"show" Mostraalegendanoplot"hide" Ocultaalegendanoplot"toggle" Alteraomodoentre"hide"e"show"(seestiveroculto,

exibeoploteseestiverexibindo,oculta)"boxon" Mostraumacaixaaoredordalegenda(padrão)

"boxoff" Ocultaumacaixaaoredordalegenda.

"right" Posicionaorótulodetexonoladodireitodofigura(padrão)

"left" Posicionaorótulodetexonoladoesquerdodofigura

"off" Apagaalegenda.

8.1.3. Outros parâmetros do gráfico Algunsoutroscomandosinteressanteparaaconfiguraçãodográfico:

8.1.3.1. Mudando a cor do fundo

AcordefundodajanelagráficadoOctaveébrancaporpadrão.Épossívelmudá-laatravésdocomando:

set( gca() , "color" , cor )Onde:gca()retornacomoparâmetroomanipuladordeeixosdajanelagráficacorrente,Oparâmetrocordeveserumacoreminglês

8.1.3.2. Linhas de grade

Aslinhasdegradepodeseradicionadasatravésdocomando:grid comaopções:

Page 70: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

70

• on• off• minor• minoron• minoroff

Porexemplo:>>grid on

Iráproduziroseguintegráfico:

Pode-seaindainserirogridmenor:>>grid minor on

Page 71: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

71

Paraajustaracordogrid,precisamosespecificaracoratravésdocomando:>> set(gca(), "xcolor", cor) >> set(gca(), "ycolor", cor) Porexemplo,parasetaracorverdeparaoeixoXeazulparaoY:>> set(gca(), "xcolor", "green") >> set(gca(), "ycolor", "blue")

Page 72: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

72

Page 73: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

73

9. COMANDOS DE REPETIÇÃO Utilizamos os comandos de repetição quando desejamos que um determinado

conjuntodeinstruçõesoucomandossejamexecutadosumnúmerodefinidoouindefinidodevezes,ouenquantoumdeterminadoestadoprevalecerouatéquesejaalcançado.

Essetipodeestruturaémuitoimportanteemprogramação,eseuusoéconstantenasdisciplinasdeprogramação.

Basicamenteumlaçoderepetiçãoécompostoportrêspartes:

1. Inicialização2. Verificaçãodacondição.3. Incremento/decremento

Nodiagramaaseguirsãoapresentasastrêspartes:

i <= 10

Sim

Não

i = i + 1

i = 0

Fim

2

3

1

i = 0 while i < 10 i = i + 1 end

Figura17-PartesdeumlaçoderepetiçãoQuanto ao formato da repetição, são basicamente três os formatos aceitos em

Octave:• Enquantox,processar(While...Loop);• Para...Até...Seguinte(For...To...Next).

9.1. ENQUANTO X, PROCESSAR (WHILE... LOOP).

Neste caso, o bloco de operações será executado enquanto a condição x forverdadeira. O teste da condição será sempre realizado antes de qualquer operação.Enquantoacondiçãoforverdadeiraoprocessoserepete.Podemosutilizaressaestruturaparatrabalharmoscomcontadores.

Page 74: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

74

Emdiagramadeblocoaestruturaéaseguinte:

Figura18-DiagramaWhile

Exemplodecontador:

i <= 10Sim

Não

i = i + 1

i = 0

Fim

i

i = 0; while i < 10 i = i + 1; printf("%d\n", i); end

Figura19-LaçoWhile

9.2. PARA... ATÉ... SEGUINTE (FOR... TO... NEXT).

A construção do Laço For, em diagrama émuito semelhante com o laçoWhile,porémousodeleémaisabrangenteeflexível,vejaalgunsexemplos:

for i=1:10 printf("%d\n", i) end

Page 75: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

75

Outroexemplo,dessavez,oforiráinteragirnumalista:a = [1,3,2,4]; for i=a disp(i); end

Nesseexemplo,avariávelaéumalistacom4elementos.Oforinteragesobrecada

objeto,imprimindoumdecadavez.

9.3. CASOS PRÁTICOS COM REPETIÇÃO

Para melhor ilustrar o uso dos laços de repetição iremos apresentar alguns

exemplospráticos:

9.3.1. Exemplo 01 - Somando os valores Atividade:Criarumprogramaparasomarosnnúmerospares.PartimosdolaçoderepetiçãojáapresentandoWhile:

i <= 10Sim

Não

i = i + 1

i = 0

Fim

i

i = 0; while i < 10 i = i + 1; end

Figura20-LaçoWhileComonãosabemosovalorden,iremoscriarumavariávelparaela,especificarum

valoreutilizarovalordencomolimitedolaçoderepetição.

Page 76: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

76

i <= n

Sim

Não

i = i + 1

Fim

i

i = 0

n

i = 0; n = input("Digite o maior valor:"); while i <= n i = i + 1; printf("%d\n", i) end

Figura21-ModificaçõesnolaçobásicoSe for digitado o valor 5 (utilizaremos esse valor para o restante do exemplo)

perceba que o programa irá contar de 1 a 6, não coincidindo como esperado que eracontaraté5,pararesolverisso,vamosretirarosinalde“=”dacomparação.

A atividade proposta é somar os números pares, desconsiderando o 0 (zero) oprogramadeverealizaraseguinteconta:

Total = 2 + 4 + 6 + 8 + 10 Total = 30

Antesderealizarasoma,vamosapresentaressesvalores,comonossoprogramaapresentaosnúmerosde1a5,paraapresentarosvaloresparesbastamultiplicarmosovalordeipor2:

Page 77: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

77

i < n

Sim

Não

i = i + 1

n = 5

Fim

i * 2

i = 0

i = 0; n = input("Digite o maior valor:"); while i < n i = i + 1; valor = i * 2; printf("%d\n", valor); end

Figura22-Imprimindovalorespares

Porenquantoapenasalteramosovalormostrado.

Agoravamoscriarumavariáveltemporáriaqueiráarmazenarparacadapassodolaçoodobrodovalordeievamosdeslocaroprintfparaofinal:

i < n

Sim

Não

i = i + 1

total = 0

Fim

n = 5

i = 0

total

total = total + (i * 2)

i = 0; n = input("Digite o maior valor:"); total = 0; while i < n i = i + 1; total = total + (i * 2) end printf("Valor final: %d\n", total)

Executando passo-a-passo a repetição se desdobra na seguinte forma (note que

apósocálculo,oresultadoéarmazenadoemtotal):

Page 78: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

78

Etapa VariávelTotal

Variáveli Cálculoefetuado

1ᵒ 0 1 0+(1*2)= 22ᵒ 2 2 2+(2*2)= 63ᵒ 6 3 6+(3*2)= 124ᵒ 12 4 12+(4*2)= 205ᵒ 20 5 20+(5*2)= 30

Saída 30 Matematicamentefalandoafórmuladonossoexemploé:

𝑇𝑜𝑡𝑎𝑙 = 𝑖 ∗ 2!

! ! !

9.3.2. Exemplo 02 – Verificando os divisores. Atividade:Dadoumnúmeron,verificarentre2en–1quaissãoseusdivisores.ParafacilitararesoluçãovamospartirutilizandoolaçoderepetiçãoWhile:

i < n

Sim

Não

i = i + 1

Fim

n = 27

i = 0

i

i = 0; n = 27; total = 0; while i < n i = i + 1; printf("%d\n", i) end

Figura23-LaçoWhile

Page 79: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

79

Comonãoprecisamososnúmero1eon,vamosfazerumamodificaçãonaordemdo conteúdo doWhile, começamos por imprimir o número n (com isso, apresentará ovalorden–1)einiciamosovalordei=2:

i < n

Sim

Não

i = i + 1

Fim

n = 27

i = 2

i

i = 2; n = 27; total = 0; while i < n printf("%d\n", i) i = i + 1; end

Figura24-ModificaçõesnolaçoWhile

Agora, iremos verificar se o valor de n pode ser dividido por i e a saída, caso

positivo:

i < n

Sim

Não

i = i + 1

Fim

n = 27

i = 0

n % i == 0

O número é divisível por i

Sim

Fim

Não

Figura25-Diagramadoprograma

Page 80: INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA ...professor.luzerna.ifc.edu.br/marcelo-cendron/wp...instituto federal de educaÇÃo, ciÊncia e tecnologia catarinense – cÂmpus

80

i = 2; n = 27; total = 0; while i < n if mod(n, i) == 0 printf("O número %d é divisível por %i\n", n, i); end i = i + 1; end

Figura26-Código-fonte

9.4. EXERCÍCIOS

1) Apresente o total da soma obtido dos cem primeiros números inteiros(1+2...+99+100).

2) Faça um programa que a partir de dois números imprima os números do

intervaloexcluindoosvaloresdados.

3) Crieumprogramaquedadoumnúmeroeleimprimaatabuadadessenúmerode1a10.

4) Façaumprogramaque conte de 1 a 100 e a cadamúltiplo de 10 emita umamensagem:“Múltiplode10”.

5) Escrevaummétodoquerecebedoisnúmerosreaisaeberetornaasomadetodososnúmerosparesexistentesentreessesdois

6) Utilizandorepetição,calculeofatorialdeumnúmero.Lembre-sequeofatorialde0é1e,nãoexistefatorialdenúmerosnegativos.