Tecnicas de Programacao Gnu Octave

Embed Size (px)

DESCRIPTION

gnu octave

Citation preview

  • Marcos Marcelino Mazzucco

    2004

    INTRODUO S TCNICAS DE PROGRAMAO COMGNU OCTAVE E MATLAB

    ALGORITMOSTCNICAS DE PROGRAMAO

    GNU OCTAVE E MATLAB

    VISO GERALTIPOS DE DADOS

    OPERADORESESTRUTURAS CONDICIONAISESTRUTURAS DE REPETIO

    ESTRUTURAS DE DADOS HOMOGNEASESTRUTURAS DE DADOS HETEROGNEAS

    MODULARIZAOAPLICAESATIVIDADES

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    1

    INTRODUO S TCNICAS DE PROGRAMAO COMGNU OCTAVE E MATLAB

    Este material foi desenvolvido para acompanhar a disciplina Programao paraEngenharia, ministrada pelo professor Marcos Marcelino Mazzucco. O uso noautorizado deste material incorre em violao dos direitos autorais, estandosujeito s penalidades previstas na legislao em vigncia. Acompanha estematerial os software livres GNU Octave e mEd disponveis emhttp://www.octave.org e http://paginas.unisul.br/eqm/disciplinas/ppe.

    Marcos Marcelino Mazzucco

    ltima reviso 21/03/2005

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    2

    NDICE1 INTRODUO............................................................................................................................ 42 ALGORITMOS PARA SOLUO DE PROBLEMAS............................................................... 5

    2.1 INTRODUO AOS ALGORITMOS ................................................................................................. 62.1.1 EXEMPLO - REA DE UM TRINGULO .................................................................................. 72.1.2 EXEMPLO- REAS DE TRS TRINGULOS ........................................................................... 82.1.3 EXEMPLO - SOMA DE NMEROS....................................................................................... 102.1.4 EXEMPLO - EQUAO DO SEGUNDO GRAU....................................................................... 11

    2.2 REPRESENTAO GRFICA DE UM ALGORITMO ......................................................................... 122.2.1 EXEMPLO - FLUXOGRAMA PARA SOMA DE NMEROS ........................................................ 122.2.2 EXEMPLO - FLUXOGRAMA PARA EQUAO DO SEGUNDO GRAU......................................... 132.2.3 EXEMPLO - FLUXOGRAMA CONTAGEM PEAS................................................................... 14

    2.3 REFINAMENTOS SUCESSIVOS .................................................................................................. 162.4 EXERCCIOS............................................................................................................................ 16

    2.4.1 EXERCCIO - ALGORITMO CONTAGEM DE PEAS ................................................................ 172.4.2 EXERCCIO - ALGORITMO EQUAO SEGUNDO GRAU II ...................................................... 172.4.3 EXERCCIOS - ALGORITMO E FLUXOGRAMA CLASSIFICAO .............................................. 172.4.4 EXERCCIOS - ALGORITMO E FLUXOGRAMA PRODUTRIO.................................................. 17

    3 ALGORITMOS PARA PROGRAMAO EM COMPUTADOR.............................................. 183.1 CONHECER O COMPUTADOR.................................................................................................... 193.2 ALGORITMO PARA PROGRAMAO ........................................................................................... 203.3 FLUXOGRAMA COM ELEMENTOS DE COMPUTADORES................................................................ 213.4 ENTRADA E SADA DE DADOS................................................................................................... 233.5 TIPOS DE DADOS BSICOS ...................................................................................................... 243.6 OPERADORES MATEMTICOS .................................................................................................. 283.7 DESVIO CONDICIONAL ............................................................................................................. 29

    3.7.1 DESVIO CONDICIONAL SIMPLES ........................................................................................ 293.7.2 DESVIO CONDICIONAL COMPOSTO .................................................................................... 303.7.3 ANINHAMENTO DE ESTRUTURAS CONDICIONAIS ................................................................. 32

    3.8 OPERADORES LGICOS E RELACIONAIS ................................................................................... 333.9 ESTRUTURAS DE REPETIO ................................................................................................... 353.10 ESTRUTURAS DE DADOS HOMOGNEAS ............................................................................... 41

    3.10.1 MANIPULAO DE DADOS EM ESTRUTURAS HOMOGNEAS ........................................... 423.10.2 EXEMPLO MATRIZES E VETORES................................................................................... 42

    3.11 ESTRUTURAS DE DADOS HETEROGNEAS ............................................................................ 463.11.1 MANIPULAO DE DADOS EM ESTRUTURAS HETEROGNEAS ........................................ 47

    3.12 MODULARIZAO DE ALGORITMOS....................................................................................... 513.12.1 MECANISMOS DE PASSAGEM DE PARMETROS ............................................................. 593.12.2 EXERCCIO FLUXOGRAMAS E ALGORITMOS ................................................................... 633.12.3 EXERCCIO TEMPERATURA........................................................................................... 633.12.4 EXERCCIO BUSCA ...................................................................................................... 633.12.5 EXERCCIO DISTNCIA ................................................................................................. 63

    4 PROGRAMAO COM GNU OCTAVE/MATLAB.................................................................. 644.1 HISTRICO ............................................................................................................................. 654.2 INSTALANDO O SOFTWARE NECESSRIO ................................................................................... 65

    4.2.1 PARTE 1- O DOWNLOAD ................................................................................................. 664.2.2 PARTE 2- A INSTALAO ................................................................................................. 664.2.3 MED: M-FILE EDITOR ....................................................................................................... 674.2.4 AJUSTE FINAL ................................................................................................................. 70

    4.3 GNU OCTAVE E MATLAB- LINHA DE COMANDO ........................................................................ 704.4 PROGRAMANDO COM MATLAB/OCTAVE .................................................................................... 744.5 ENTRADA E SADA DE DADOS................................................................................................... 764.6 TIPOS DE DADOS BSICOS ...................................................................................................... 78

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    3

    4.6.1 DADOS TIPO DOUBLE (REAL)............................................................................................ 824.6.2 DADOS TIPO STRING (TEXTO)........................................................................................... 824.6.3 CONSTANTES.................................................................................................................. 83

    4.7 OPERADORES MATEMTICOS .................................................................................................. 844.8 DESVIO CONDICIONAL ............................................................................................................. 84

    4.8.1 DESVIO CONDICIONAL SIMPLES ........................................................................................ 854.8.2 DESVIO CONDICIONAL COMPOSTO .................................................................................... 854.8.3 ANINHAMENTO DE ESTRUTURAS CONDICIONAIS ................................................................. 85

    4.9 OPERADORES LGICOS E RELACIONAIS ................................................................................... 864.10 ESTRUTURAS DE REPETIO ............................................................................................... 884.11 ESTRUTURA DE SELEO (SWITCH) ...................................................................................... 894.12 ESTRUTURAS DE DADOS HOMOGNEAS ............................................................................... 91

    4.12.1 MANIPULAO DE DADOS EM ESTRUTURAS HOMOGNEAS ........................................... 924.12.2 VETORES E MATRIZES DE CARACTERES (TEXTO)........................................................... 93

    4.13 ESTRUTURAS DE DADOS HETEROGNEAS ............................................................................ 954.14 SUBROTINAS COM GNU OCTAVE E MATALAB ........................................................................ 964.15 NOMES DE ARQUIVOS E SUBROTINAS................................................................................... 99

    5 APLICAES ........................................................................................................................ 1005.1 FATORIAL ............................................................................................................................. 1005.2 ESTATSTICA ......................................................................................................................... 1005.3 INTEGRAL ............................................................................................................................. 102

    6 APLICAES ESPECFICAS OCTAVE/MATLAB............................................................... 1076.1 MATRIZES............................................................................................................................. 1076.2 POLINMIOS ......................................................................................................................... 108

    6.2.1 RAZES ......................................................................................................................... 1096.2.2 MULTIPLICAO ............................................................................................................ 1096.2.3 DIVISO........................................................................................................................ 1096.2.4 ADIO......................................................................................................................... 1096.2.5 DERIVAO .................................................................................................................. 1106.2.6 INTEGRAO................................................................................................................. 1106.2.7 APROXIMAO POLINOMIAL ........................................................................................... 1106.2.8 EXPANSO EM FRAES PARCIAIS ................................................................................. 110

    6.3 RAZES DE EQUAES NO LINEARES .................................................................................... 1106.4 EQUAO DIFERENCIAL ORDINRIA........................................................................................ 1116.5 INTEGRAO DE EQUAES A UMA VARIVEL......................................................................... 1136.6 GRFICOS ............................................................................................................................ 1146.7 MANIPULAO DE DADOS EM ARQUIVOS ................................................................................. 119

    7 ATIVIDADES PROPOSTAS .................................................................................................. 121

    8 ATIVIDADES COMPLEMENTARES ..................................................................................... 1228.1 REGRESSO LINEAR ............................................................................................................. 1228.2 EQUAO DIFERENCIAL ......................................................................................................... 1238.3 EQUAO DIFERENCIAL 2 ...................................................................................................... 124

    9 BIBLIOGRAFIAS.................................................................................................................... 126

    10 APNDICE 1- SOLUES DAS ATIVIDADES PROPOSTAS ............................................ 12710.1 FATORIAL ......................................................................................................................... 12710.2 ESTATSTICA ..................................................................................................................... 12710.3 INTEGRAL ......................................................................................................................... 129

    11 APNDICE 2- UNIDADE DATA_TYPES............................................................................... 131

    12 APNDICE 3- UNIDADE OCTAVE_PASCAL....................................................................... 133

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    4

    1 INTRODUOA soluo de um problema envolve o domnio de cincias diversas. Um problema

    de engenharia envolve conhecimentos matemticos, fsicos, qumicos efenomenolgicos. A soluo de qualquer problema comea pela compreenso dosprocessos e fenmenos envolvidos. Compreender tornar compreensvel e expandir asinformaes na direo das solues. Algoritmos so, apenas, as direes das solues,no constituindo a soluo de um problema, porm indicando a trajetria (com o grau derefinamento possvel) para que uma soluo vivel seja obtida. Assim sendo, crucialque se invista uma boa parcela do tempo, da soluo de qualquer problema, na coletade informaes e compreenso do problema, reduzindo, desta forma, o tempo gasto nacorreo ou reincio do problema.

    O algoritmo para a soluo de uma problema em computador diferente daquelepara a soluo mental. Os passos que so bvios para o raciocnio humano no os sopara os computadores. Para tanto, necessria a definio das instrues que podemser utilizadas para que um conjunto coeso e restrito de informaes seja viabilizado ecompreendido pelo computador. Para atender a este requisito, sero definidasestruturas, em lngua portuguesa, que possam ser traduzidas para linguagens formaisde programao, fixando ateno para o GNU Octave e Matlab.

    Para permitir uma evoluo gradual do raciocnio possvel definir prottipos, osquais, aps refinamento conduzem a uma soluo vivel para um problema. Vriasetapas de refinamento podem se suceder de forma a atingir a soluo.

    Este material constitudo por 4 captulos fundamentais: Algoritmos para soluode problemas, Algoritmos para programao em computador, Programao com GNUOctave/Matlab, os quais estabelecem de foram gradativa como transpor um raciocnio deforma que uma soluo computacional seja obtida. Os captulos adicionais atentam paraproblemas resolvidos e atividades, os quais alm de complementar este materialreforam a idia de que apenas a prtica extensiva pode tornar rotineira a programaode computadores.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    5

    2 ALGORITMOS PARA SOLUO DE PROBLEMAS

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    6

    2.1 INTRODUO AOS ALGORITMOS

    Para iniciar nosso estudo sobre a soluo de problemas cientficos emcomputador necessrio estabelecer um novo modo de raciocinar. Este modo deve serbaseado em etapas lgicas e devidamente encadeadas, de forma a conduzir a umasoluo vivel, ou seja, na forma de algoritmos. Nesta fase inicial apenas formalizaremosuma forma de pensar sem qualquer vnculo a mquinas programveis. Assim sendo,definiremos os prottipos das solues. Os prottipos indicam de forma superficial, pormclara o que deve ser feito para que um objetivo seja atingido.

    De uma forma geral a soluo de problemas segue as seguintes etapas:- Estudo do contexto do problema;

    - Compreenso;- Anlise;- Simplificao;- Resumo do problema (normalmente na forma de diagrama).- Objetivos

    - Formulao cientfica do problema;- Equaes;- Dados;- Regras (fenomenolgicas, heursticas(senso comum));- Relaes e relacionamentos;- Condies.

    - Soluo- Aplicao dos postulados formulados

    - Anlise dos resultados- Significado do resultados;- Violao de limites (faixa de validade);- Resultados inesperados;- Resultados errneos.

    - Concluses- Verificao dos objetivos;- Resumo dos resultados.

    Freqentemente, as etapas listadas devem ser sucessivamente repetidas paraque uma soluo seja obtida.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    7

    Observe que para um indivduo que acompanha a soluo de um problema (formapassiva) algumas etapas no so observadas. interessante pensar que em todos osproblemas assumimos as formas ativas (resolver) e passiva (aceitar a soluo).Considere, por exemplo a determinao (forma ativa) do comprimento da hipotenusa deum tringulo. Usamos o teorema de Pitgoras sem questionar a origem deste, apenasaceitando a equao como verdadeira (forma passiva). Para o registro das etapas dodesenvolvimento da soluo de um problema, apenas algumas partes so visveis, desdeque no prtico representar todo o conhecimento (universal) que est envolvido.Temos, ento, a seguinte representao:

    Estr

    utu

    ra

    algoritmo objetivo do algoritmoincio registro (entrada) de informaes formulao soluo apresentao dos resultados (sada)fim

    Nota: neste estudo, os smbolos (delimitadores) e sero utilizados para representar,de forma concisa e clara, atos e aes que devem efetuados.

    2.1.1 EXEMPLO - REA DE UM TRINGULODeterminar a rea de um tringulo retngulo a partir de duas medidas, dos

    comprimentos dos catetos ou da hipotenusa e um dos catetos e determinar a medidarestante. Arredondar todos os dados e resultados para uma casa decimal.algoritmo calcular rea e uma medida desconhecidaincio Registrar os comprimentos de duas medidas (entre trs CO; CA; H) Determinar o comprimento da terceira medida pelo teorema de Pitgoras incio se no conhecida a hipotenusa calcular: H=(CO2+CA2)1/2 seno se no conhecido o Cateto Oposto calcular: CO =(H2-CA2)1/2 seno calcular: CA =(H2-CO2)1/2 fim se fim Arredondar H, CO, CA para uma casa decimal Calcular a rea pela equao: A= CO*CA/2 Arredondar A para uma casa decimal Apresentar: rea calculada e medida restante com as unidades correspondentesfim

    Exe

    mplo

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    8

    Para cumprir os objetivos (clculo da rea e medida desconhecida) a partir dosdois dados necessrio decidir qual forma da equao de Pitgoras deve ser utilizada. Atomada de deciso est representada pelas sentenas "se" , "seno se" e "seno".Adicionamos a sentena "fim se" para separar com facilidade diferentes tomadas dedeciso ou outras operaes em um algoritmo.

    Observe que as sentenas "algoritmo ", "incio", "fim", "se" , "seno se", "seno"e "fim se" esto em negrito. As palavras em negrito so estruturais para a formalizaodo raciocnio que se pretende resumir na forma de um algoritmo e so chamadaspalavras reservadas.

    Estr

    utu

    ra

    se primeira condio ento fazer primeiro conjunto de aes ou atosseno se segunda condio ento fazer segundo conjunto de aes ou atosseno se terceira condio ento fazer terceiro conjunto de aes ou atosseno fazer conjunto final de aes ou atosfim se

    Nota: O nmero de sentenas "seno se" variado, porm apenas uma sentena"seno" que representa uma condio terminal (se nenhuma das outras for aplicvel)pode ser utilizada. As palavras ento e fazer so opcionais pois apenas reforam a idiade tomada de deciso e resultado.

    2.1.2 EXEMPLO- REAS DE TRS TRINGULOSConhecidos os comprimentos dos catetos de trs tringulos retngulos ("tringulo

    1", "tringulo 2" e "tringulo 3"), determinar as reas destes, registrando (guardando) osvalores calculados e apresentado os valores arredondados em duas casas decimais.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    9

    algoritmo calcular as reas de trs tringulosincio Registrar os comprimentos dos catetos do tringulo 1 como CO e CA Calcular a rea pela equao: A= CO*CA/2 Arredondar A para uma casa decimal Apresentar a rea calculada com a unidade correspondente Registrar os comprimentos dos catetos do tringulo 2 como CO e CA Calcular a rea pela equao: A= CO*CA/2 Arredondar A para uma casa decimal Apresentar a rea calculada com a unidade correspondente Registrar os comprimentos dos catetos do tringulo 3 como CO e CA Calcular a rea pela equao: A= CO*CA/2 Arredondar A para uma casa decimal Apresentar a rea calculada com a unidade correspondentefim

    Exe

    mplo

    Observe que a medida que o nmero de tringulos se torna maior torna-se invivelrepresentar o procedimento apresentado na forma de um algoritmo (e at o clculomanual). Porm nosso raciocnio pode ser expresso de forma mais compacta como:

    algoritmo calcular as reas de trs tringulosincio para os tringulos 1, 2 e 3 fazer Registrar os comprimentos dos catetos tringulos como CO e CA Calcular a rea pela equao: A= CO*CA/2 Arredondar A para uma casa decimal Apresentar a rea calculada com a unidade correspondente fim parafim

    Exe

    mplo

    Neste exemplo foi utilizada uma representao simblica de repetio. Assentenas "para" e "fim para" representam a repetio sobre elementos enumerados, ouse seja, um conjunto finito de elementos dispostos de forma ordenada. Podemosexpressar a repetio tambm, esperando que alguma condio seja atingida (final) paraindicar o trmino das repeties; as sentenas "repetir" ou "fazer" e "at que"representam este caso. Ou ainda, esperando que alguma condio se mantenha (inicial)e portanto a insatisfao deste requisito encerre o ciclo de repetio; as sentenas"enquanto" ou "fim enquanto" representam este caso. Estas trs estruturas representamas estruturas de repetio que tambm utilizaremos em nossos raciocnios.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    10

    Estr

    utu

    rapara elementos enumerados fazer Conjunto de aes ou atosfim para

    repetir Conjunto de aes ou atosat que condio de encerramento

    fazer Conjunto de aes ou atosat que condio de encerramento

    enquanto condio de continuidade fazer Conjunto de aes ou atos fim enquanto

    Para a soluo de problemas em mquinas programveis estas estruturas soessenciais, porm alguns acrscimos so necessrios pois uma mquina no podedesdobrar uma ao ou conseqncia sem uma preparao prvia. Porm nossoobjetivo, at aqui, preparar a forma de raciocnio para representar a soluo de umproblema, ou seja, o algoritmo.

    2.1.3 EXEMPLO - SOMA DE NMEROSEscrever um algoritmo para calcular e apresentar a soma de um conjunto

    qualquer de nmeros.algoritmo soma de nmerosincio Solicitar a quantidade de nmeros a somar e armazenar em N A soma ser acumulada em S que inicialmente ser zero para N nmeros requeridos fazer Solicitar um nmero e armazenar em Z Somar o nmero recebido com S e acumular o novo valor em S: S= S+Z fim para Apresentar a soma calculada guardada em Sfim

    Exe

    mplo

    Uma boa maneira de verificar se o algoritmo est correto executar o teste de mesa.Este teste consiste em numerar as linhas do algoritmo, estipular valores de entrada paraos quais a sada conhecida e executar os passos descritos no algoritmo. Para esteexemplo temos:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    11

    1 algoritmo soma de nmeros2 incio3 Solicitar a quantidade de nmeros a somar e armazenar em N4 A soma ser acumulada em S que inicialmente ser zero5 para N elementos (nmeros) fazer6 Solicitar um nmero e armazenar em Z7 Somar o nmero recebido com S e acumular o novo valor em S: S= S+Z8 fim para9 Apresentar a soma calculada guardada em S10 fim

    Exe

    mplo

    Supondo 4 nmeros: [1,5 ; 2,5 ; 3,5 ; 4,5]Seqncia de execuo e valores: 1; 2; 3(N=4); 4(S=0); [5(elemento 1 de 4); 6(Z=1,5);7(S=0+1,5=1,5); 8; 5(elemento 2 de 4); 6(Z=2,5); 7(S=1,5+2,5=4,0); 8; 5(elemento 3 de4); 6(Z=3,5); 7(S=4,0+3,5=7,5); 8; 5(elemento 4 de 4); 6(Z=5,5); 7(S=7,5+4,5=12); 8;5(elemento 5 de 4: fim ciclo)]; 9; 10.

    2.1.4 EXEMPLO - EQUAO DO SEGUNDO GRAUEscrever um algoritmo para determinar as razes de uma equao do segundo grau apartir dos coeficientes que forem fornecidos. Dever ser indicado o nmero de razes reaisexistentes e a existncia de razes complexas.1 algoritmo equao segundo grau2 incio3 Solicitar os coeficientes da equao ax2+bx+c e armazenar em a, b e c4 Calcular: delta=b2-4ac5 se delta negativo ento6 Apresentar a frase: "Para este caso somente existem razes complexas"7 seno se delta positivo ento8 Calcular: x1=(-b+(b2-4ac)1/2)/(2a) 9 Calcular: x2=(-b-(b2-4ac)1/2)/(2a) 10 Apresentar a frase "Existem duas razes" e os valores de x1 e x211 seno12 Calcular: x1=(-b)/(2a) 13 Apresentar a frase "Somente existe uma raiz" e o valor de x114 fim se15 fim

    Exe

    mplo

    O teste de mesa para a= 2; b=3; c=1 fica: 1; 2; 3(a= 2; b=1; c=0); 4(delta=+1); [5; 7; 8(x1=(-3+(32-421)1/2)/(22)= -0,5); 9(x2=(-3-(32-421)1/2)/(22)= -1); 10; 14];15.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    12

    Nota: Observe que na estrutura de tomada de deciso, quando uma condio verificada como verdadeira, as demais condies no so testadas, e o teste se encerra(fim se).

    2.2 REPRESENTAO GRFICA DE UM ALGORITMO

    A visualizao grfica de um algoritmo pode auxiliar muito a compreenso dofluxo das informaes e clculos. Alm disso os fluxogramas so excelentes ferramentaspara documentao de algoritmos. A representao grfica de algoritmos pode serrealizada na forma de fluxogramas, com base na seguinte simbologia:

    Smbolo DescrioTerminal: Smbolo utilizado para representar o incio ou fim de umalgoritmo, contendo as palavras incio e fim .Processo: Smbolo utilizado para indicar processamentos: clculos,atribuio de valor, operaes matemticas ou lgicas, etc..Entrada e Sada de Dados: Smbolo utilizado para representarentrada (dados recebidos) ou sada (dados apresentados) de dadosde maneira genrica. Deve-se informar se realizada entrada ousada de dados.

    Deciso: Smbolo utilizado para representar tomadas de decisopossibilitando desvios no fluxo do algoritmo.

    Conector: Smbolo utilizado para unir ou particionar um diagrama.Quando um diagrama particionado necessrio indicar com umaletra ou nmero (no interior do conector) o particionamento.Conector de Pgina: Smbolo utilizado para especificar a conexoentre pginas (continuao) em um fluxograma.Fluxo de Dados: Smbolo utilizado para representar o fluxo dedados em um fluxograma.

    2.2.1 EXEMPLO - FLUXOGRAMA PARA SOMA DE NMEROSFazer o fluxograma para o algoritmo mostrado no exemplo soma de nmeros.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    13

    soma de nmerosincio

    Sada: apresentar a fraseQuantidade de nmeros a somar:

    Entrada:armazenar o valor recebidoN

    ltimo elemento j foi somado?

    SadaQual o nmero a somar:

    EntradaZ

    S=S+Z

    Sim

    No

    fim

    S=0

    SadaA soma dos

    N nmeros

    S

    Neste fluxograma foram utilizados quatro elementos da simbologia de fluxogramas.Merece especial destaque o smbolo deciso que foi utilizado para estabelecer um ciclo(observe as setas destacadas) representando as sentenas para...fim para. Desta forma,o ciclo somente ser encerrado aps o ltimo elemento ser apresentado. Observe,tambm, que as frases foram representadas entre aspas ("Qual o nmero a somar:", porexemplo).

    2.2.2 EXEMPLO - FLUXOGRAMA PARA EQUAO DO SEGUNDO GRAUFazer o fluxograma para o algoritmo mostrado no exemplo equao do segundo grau.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    14

    equao segundo grauincio

    Sada: apresentar a fraseCoeficientes da equao ax2+bx+c=0

    Sada Coeficiente a :Entrada a

    Sada Coeficiente b :Entrada b

    Sada Coeficiente c :Entrada c

    delta negativoSim

    No

    fim

    delta=b2-4ac

    SadaPara este caso somente existem razes complexas"

    delta positivo

    x1=(-b+(b2-4ac)1/2)/(2a)x2=(-b-(b2-4ac)1/2)/(2a)

    SadaExistem duas razes reais

    x1 x2

    x1=(-b)/(2a)

    SadaSomente existe uma raiz

    x1

    Sim

    No

    Neste fluxograma os mesmos quatro elementos do fluxograma anterior foram utilizados.O smbolo de deciso foi utilizado para estabelecer uma seqncia de tomada de decisose..."seno se"...seno..."fim se". Observe que se delta no positivo e nem negativosomente pode ser zero e portanto o vrtice inferior (No) do segundo elemento dedeciso representa o que aqui foi denominado condio terminal (final).

    2.2.3 EXEMPLO - FLUXOGRAMA CONTAGEM PEASUm depsito possui um estoque de parafusos, porcas e arruelas e outras peasmisturados. Para cada parafuso so necessrias duas arruelas e uma porca. Fazer um

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    15

    fluxograma para contar cada item, indicar quantos conjuntos (1 porca + 1 parafuso+2arruelas) existem e o total de peas.

    contagem de peasincio

    fim

    Sada O nmero de parafusos :

    ParO nmero de porcas :

    PorO nmero de arruelas :

    Arr

    existem peas no estoque ?

    Pegar uma pea

    A pea um parafuso?

    Par=0Por=0Arr=0

    Outros=0

    Par=Par+1

    A pea uma porca ?

    Por=Por+1

    A pea uma arruela ?

    Arr=Arr+1

    Outros=Outros+1

    Sim

    No

    Sim

    No

    Sim

    No

    Sim

    No

    SadaO nmero total de peas :

    Total

    Total= Par+Por+Arr+Outros

    Sada O nmero de conjuntos

    (parafuso + porca +2 arruelas ) : M

    Determinar o menor valor (mnimo) entre

    Par, Por e Arr/2 e armazenar a resposta em M

    Truncar (eliminar as casas decimais) de M e armazenar

    a resposta novamente em M

    Observe neste exemplo que o primeiro elemento de deciso estabelece a condio determinao de um ciclo de repetio: enquanto existirem peas o ciclo se mantm.Quando as peas se esgotarem, encerra-se o ciclo. Est configurado um ciclo de

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    16

    repetio na forma enquanto..."fim enquanto". Os quatro demais elementos de decisoconfiguram uma estrutura se..."seno se"..."seno se"...seno..."fim se". As variveisPar, Por, Arr e Outros so incrementadas em um a cada unidade identificada. Istocaracteriza um acumulador pois o ltimo valor da varivel o nmero total de elementos.

    2.3 REFINAMENTOS SUCESSIVOS

    relevante observar que as etapas definidas em um algoritmo podem, por si s,representar um conjunto de etapas e, portanto, requerer um refinamento maior para queseja completamente entendida e/ou realizada. Considere o exemplo a seguir:

    algoritmo nmero de mols{prottipo de algoritmo para calcular o nmero de mols de um composto qumico}incio Calcular a Massa Molecular do composto identificado Armazenar a Massa Molecular do Composto qumico em m_m Solicitar a Massa da espcie qumica e armazenar em m Calcular o nmero de mols : N=m/m_m Apresentar o nmero de molsfim

    Exe

    mplo

    A etapa Calcular a Massa Molecular do composto identificado requer etapas adicionais

    em sua realizao, como segue:

    refinamento Calcular a Massa Molecular do composto identificado {refinamento para clculo da Massa Molecular de um composto qumico}incio Identificar o Composto qumico: frmula Identificar as Massas Moleculares dos tomos do composto identificado Calcular a Massa Molecular fim

    Exe

    mplo

    Os refinamentos sucessivos correspondem a etapas naturais da soluo deproblemas e posteriormente sero utilizados para transportar as idias expressas nosalgoritmos para a programao em computadores.

    2.4 EXERCCIOSEsta seo sugere alguns exerccios para treinar o contexto apresentado. Ciente

    de que a nica forma de fixar estes conceitos pela vivncia e prtica deste tipo deabordagem, o leitor deve se sentir encorajado a procurar mais exerccios nas bibliografiasapresentadas e na Internet.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    17

    2.4.1 EXERCCIO - ALGORITMO CONTAGEM DE PEASEscreva o algoritmo para o fluxograma contagem de peas apresentado anteriormente.

    2.4.2 EXERCCIO - ALGORITMO EQUAO SEGUNDO GRAU IINo algoritmo equao segundo grau, no foi considerada a situao onde o termo 4ac zero que resulta em uma nica raiz (x1=x2). Refaa o algoritmo e o fluxograma paraconsiderar este caso.

    2.4.3 EXERCCIOS - ALGORITMO E FLUXOGRAMA CLASSIFICAOUma caixa contm elementos de trs formas: cubos, esferas e cilindros nas coresvermelho, azul e preto. Escreva um algoritmo e faa um fluxograma para contar o nmerototal de elementos, contar o nmero de cilindros, esferas e cubos de cada cor e o nmerototal de elementos de cada uma das formas (todas as cores).

    2.4.4 EXERCCIOS - ALGORITMO E FLUXOGRAMA PRODUTRIOAnteriormente foram apresentados o algoritmo e o fluxograma para a determinao dasoma (somatrio) de um conjunto qualquer de nmeros. Baseado nisto escreva oalgoritmo para determinar o produto (produtrio) de um conjunto qualquer de nmeros.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    18

    3 ALGORITMOS PARA PROGRAMAO EMCOMPUTADOR

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    19

    3.1 CONHECER O COMPUTADOR

    Para definir tarefas para uma mquina, necessrio conhecer as possibilidades eos limites desta. Quando os primeiros computadores digitais programveis foramprojetados eram necessrios conhecimentos de operaes com nmeros binrios,microeletrnica, complexas cadeias lgicas, etc. para implementar programas paratarefas simples. Assim, a programao destes equipamentos estava restrita a umpequeno grupo de profissionais, na sua maioria com formao em eletrnica. A evoluoda capacidade computacional permitiu que a forma de programao, ou seja, a maneiracomo os componentes internos de um computador so instrudos a realizar algumatarefa, evolusse deixando de lado (para a maioria dos programadores) as instrues emmicro-escala. Desta forma, possvel solicitar o armazenamento de um dado, namemria de um computador, sem o conhecimento de como uma memria funciona, qualregio da memria est disponvel e por onde a informao deve trafegar para chegar atesta. Porm a programao de qualquer mquina limitada se no conhecermos suaspossibilidades.

    Para a estruturao de algoritmos para computadores no so necessriosconhecimentos sofisticados da arquitetura de um computador, mas necessrio que seconhea, ao menos as formas como possvel interagir com a mquina.

    Um computador dispe de mecanismos de entrada e sada de dados,armazenamento e processamento destes. A entrada de dados ocorre atravs deaparatos, como teclado, mouse, scanner, joystick, etc.. Para a sada de dados dispe-sede monitor de vdeo, impressora, dispositivos de rede, etc.. O armazenamento de dadospode ser efetuado atravs da memria voltil ou RAM (Random Access Memory),memria ROM (Read Only Memory), disco rgido (HD- Hard Disk), disco flexvel(disquete), etc.. O processamento dos dados realizado na unidade central deprocessamento (CPU-Central Processing Unit) ou, mais popularmente, processador.

    Quando da escrita de um algoritmo so utilizados mecanismos de entrada e sadade dados e de armazenamento (memria) genricos. O processamento (CPU) serrepresentado pelo encadeamento rigoroso de estruturas a serem definidas.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    20

    3.2 ALGORITMO PARA PROGRAMAO

    Definiremos a estrutura de um algoritmo para programao em computador, apso refinamento, com disponibilidade de:

    Estruturas de entrada e sada de dados;Formas de armazenamento de dados (tipos);Estruturas de processamento.

    Para padronizar e facilitar a compreenso da nomenclatura que ser utilizada,definiremos:

    As palavras reservadas sero escritas em negrito (preferencialmente) ousublinhadas (quando da impossibilidade do uso do negrito);

    A sintaxe das estruturas far uso do delimitador , que ser substitudo pela

    instruo (ou conjunto de instrues) a ser executada.Sero adicionados 3 espaos alinhados esquerda aps o incio e antes do fim

    de estruturas de teste condicional, repetio e entre as partes de incio e fim.Somente os comentrios (delimitados por chaves) podero conter caracteres

    acentuados, as demais palavras no sero acentuadas. Nas etapas iniciais deabordagem dos problemas (prottipos) podero ser utilizados caracteres acentuados.

    Para facilitar a compreenso da estruturao de algoritmos no utilizaremosnenhuma linguagem de programao formal e nem ao menos computadores. Usaremosuma linguagem de programao fictcia, em lngua portuguesa que corresponde ao que conhecido como algoritmo em "portugus estruturado". Como os computadoresreconhecem, de forma nativa, o ponto como separador decimal, este tambm serutilizado aqui. A linguagem de programao que mais se assemelha a escrita dealgoritmos estruturados em "ingls estruturado" a PASCAL. Algumas representaesutilizadas aqui esto baseadas nesta linguagem, adaptada para lngua portuguesa, claro.

    A sintaxe para a escrita de um algoritmo conter o nome deste, um brevecomentrio (entre chaves { }) de seu objetivo, as declaraes necessrias e os pontosde incio e finalizao, conforme o modelo abaixo e apresentado anteriormente:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    21

    Estr

    utu

    raalgoritmo Nome do algoritmo{comentrio}incio instruesfim

    Os pontos de incio e finalizao do algoritmo devem ser marcados pelasinstrues incio e fim.

    Nesta etapa, algoritmos para programao em computador, estar direcionada aescrita de algoritmos para programao, que invariavelmente passam pela etapa anterior,algoritmos para soluo de problemas. Para diferenciar estas etapas utilizaremos apalavra programa ao invs de algoritmo, tendo em mente que so partes de umamesma soluo. Quando, aqui, estiver referido programa, ser entendido que oalgoritmo para programao em computador est sendo pretendido.

    Estr

    utu

    ra

    programa Nome do programa{comentrio}incio instruesfim

    Os delimitadores ( ), j utilizados anteriormente, nesta etapa de refinamento,devem ser substitudos pelas instrues que sero apresentadas e que efetivamenteviabilizam o proposto em um computador digital.

    3.3 FLUXOGRAMA COM ELEMENTOS DE COMPUTADORES

    Na elaborao de fluxogramas para programao alguns smbolos especiaispodem ser utilizados para facilitar a compreenso e explicitar os propsitos. Aos smbolosj apresentados para a representao grfica de algoritmos acrescentam-se osseguintes:

    Smbolo Descrio

    Sada de Dados em Vdeo: Smbolo utilizado para especificar comodispositivo de sada de dados o vdeo.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    22

    Entrada de Dados por Teclado: Smbolo utilizado para especificarcomo dispositivo de entrada de dados o teclado.

    Preparao: Smbolo utilizado indicar uma instruo ou conjunto deinstrues que iro modificar a execuo do fluxograma. Aqui serutilizado para indicar as variveis globais e estruturas de repetiocom contagem de ciclo.

    O fluxograma a seguir representa o algoritmo nmero mols apresentado anteriormenteusando os smbolos de entrada de dados por teclado e sada de dados em vdeo.

    incio

    m_m

    Nm/m_m

    fim

    Massa Molecular

    m

    Massa da espcie

    {Calcular nmero de mols de uma espcie}

    N

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    23

    3.4 ENTRADA E SADA DE DADOS

    A soluo da maioria dos problemas em computador, requer que uma ou maisintervenes ocorram para que sejam fornecidas informaes para o incio oucontinuidade da soluo. Da mesma forma, essencial que sejam visualizados osresultados.

    A sintaxe para entrada de dados, em nossa notao ser:

    Estr

    utu

    ra

    {instrues para entrada de dados}nome da varivel que armazenar o dadoler

    ler (nome da varivel que armazenar o dado)

    A notao de entrada de dados para elaborao de fluxogramas :

    varivel

    A sintaxe para sada de dados ser:

    Estr

    utu

    ra

    {instrues para sada de dados}escrever (informao)escrever (informao , NL)

    escrever (dado 1 , dado 2 , dado 3 ,..., dado n)escrever (dado 1 , dado 2 , dado 3 , ..., dado n , NL)

    Nota: a instruo para sada de dados pode ser utilizada para vrias informaes(escritas em uma mesma linha).A instruo NL corresponde a indicao de que aprxima instruo escrita ser em uma Nova Linha. Caso contrrio todos os dados seroescritos na mesma linha at o final desta.

    A notao de sada de dados para elaborao de fluxogramas :

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    24

    informaes

    programa saudacao{Meu primeiro programa}incio escrever (Ol mundo.)fim

    Exe

    mplo

    3.5 TIPOS DE DADOS BSICOS

    So as formas de manusear e armazenar as informaes mais simples, a partirdas quais podem ser obtidas outras formas. So elas:

    NumricaNmeros InteirosNmeros reais (ponto flutuante)

    Literal, Caracteres ou Cadeia de Caracteres (texto)Lgico (verdadeiro ou falso)

    O tipo de dado inteiro caracterizado por nmeros inteiros positivos ounegativos. As linguagens de programao implementam este tipo de dado conformeespecificao de um comit internacional de normas, porm a maioria delas oferecevariantes do tipo inteiro para funes especficas.

    O tipo de dado real representado por quaisquer nmeros positivos ounegativos. Porm, nmeros inteiros so representados em forma fracional (1 = 1.0). Estetipo de dados tambm chamado de ponto flutuante desde que todos os nmerospossuem uma parte fracional (1.20). Um nmero real pode ser convertido em umnmero inteiro atravs das operaes de arredondamento e truncamento. O truncamentoconsiste na eliminao da parte fracional de um nmero. Definiremos as operaes

    arredondar(nmero) e truncar(nmero) para esta converso.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    25

    programa real_para_inteiro{converter um nmero real para inteiro}variveis I1, I2:inteiro R:realincio escrever (Informe um nmero real) ler(R) I1arredondar(R) I2truncar(R) escrever (O valor de , R , "arredondado :" , I1 , NL) escrever (O valor de , R , "truncado :" , I2 , NL)fim

    Exe

    mplo

    O tipo de dado texto representado por cadeias caracteres como letras,nmeros, smbolos, etc. Os valores deste tipo so apresentados sempre entre aspas( ). Tipos caracteres so tambm chamados de string ou cadeia.

    O tipo de dado lgico aquele que representa dados que versam sobre averacidade (ou falsidade) das informaes. So tambm conhecidos como tiposbooleanos.

    Existem linguagens de programao de computadores que exigem aespecificao (declarao) dos tipos de variveis a serem utilizadas, enquanto outrasrealizam a tipificao dinamicamente, atribuindo-lhes o tipo mais adequado. Aqui sercaracterizada a declarao formal das variveis, sendo que esta sempre ser efetuadano incio de cada algoritmo (entre o nome do algoritmo e ponto de incio do prprio). Aseo de declarao de variveis ser precedida da palavra variveis (que no poderser utilizada para outra finalidade) sendo que o smbolo : representar o operador deatribuio de tipo enquanto o smbolo representar o operador de atribuio de valor.

    Para a declarao de uma varivel, ser necessrio atribuir um nome a esta. Onome de uma varivel sempre dever ser iniciado por um caracter literal ( A ... Z; a ... z)ou _ (nunca um nmero), poder conter caracteres como: letras ( A ... Z; a ... z) ,nmeros (0 ... 9) e outros caracteres ( _) e no poder conter acentuao espaos embranco, ponto, vrgula, parnteses, colchetes, chaves, etc.. Algumas linguagens deprogramao fazem distino, para o nome de variveis, entre letras maisculas eminsculas; em nossa notao no ser feita esta distino, porm adotaremos,preferencialmente, a escrita em letras minsculas.

    A sintaxe para a declarao de variveis obedece o seguinte formato:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    26

    Estr

    utu

    ra{especificao (declarao) dos tipos das variveis}variveis varivel : tipo varivel 1 , varivel 2 : tipo

    A sintaxe para a atribuio de um valor uma varivel obedece o seguinteformato:

    Estr

    utu

    ra

    {atribuio de valor a uma varivel}

    varivel valor

    Nota: o smbolo utilizado para atribuio de valor ao invs do sinal de igual (=)porque em muitas linguagens de programao o smbolo = utilizado para compararvalores.

    programa saudacaovariveis x: real y: inteiro z: real nome: texto aberto: lgico a1: inteiro seunome, seu_nome: textoincio seunomeler escrever (Ol , seunome , NL , "Bom dia !")fim

    Exe

    mplo

    programa algumas_variaveisvariveis x , z: real y: inteiro nome: texto aberto: lgico A1: inteiro seunome , seu_nome: textoincio x2.5 y111 z111.0 nomeMarcos abertoverdadeiro A10 seunomeMarina seu_nomeIsabela zyfim

    Exe

    mplo

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    27

    As variveis tambm podem receber o resultados de operaes entre tipos, desdeque estas possuam o mesmo tipo daquelas. Assim uma varivel do tipo inteiro no podereceber os valores 1.0 e 1 desde que estes valores so dos tipos real e texto,respectivamente. Uma varivel do tipo real pode receber um valor do tipo inteiro poisestes tipos so compatveis, contudo o valor recebido deixar de ser representado comum nmero inteiro. Por exemplo, o nmero 1 (inteiro), quando atribudo a uma variveldo tipo real, ser representado como 1.000 (o nmero de casas decimais definido comoa preciso numrica da representao).

    Algumas vezes, so manipuladas informaes que no so variveis, mas simconstantes, e portanto, no devem ser modificadas no programa. A declarao deconstantes semelhante a das variveis, porm sem a necessidade de definir um tipo,desde que o valor ser atribudo apenas uma vez e, portanto, pode ser identificado comsegurana. A seo de declarao de constantes (posicionada entre o nome doprograma e ponto de incio do prprio) ser precedida da palavra constantes (que nopoder ser utilizada para outra finalidade) sendo que o smbolo representar ooperador de atribuio de valor a uma constante e somente poder ser utilizado uma vez(na declarao).A sintaxe para a declarao de constantes :

    Estr

    utu

    ra constantes nome da constante valor

    Nota: nem todas as linguagens de programao utilizam o conceito de constantes

    programa algumas_constantesvariveis x: real u: textoconstantes PI3.1416 R0.082 dois2 dias_no_ano365 universidadeUNISUL Aa dois_maior_3falso engenharia_quimica_nosso_cursoverdadeiroincio xdois uuniversidadefim

    Exe

    mplo

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    28

    No exemplo anterior, PI e R so constantes com o tipo real, dois e dias_no_ano so dotipo inteiro, universidade e A so do tipo texto e dois_maior_3 eengenharia_quimica_nosso_curso so do tipo lgico.

    As regras para a definio de nomes para constantes a mesma adotada para asvariveis.

    As notaes de atribuio de valor para elaborao de fluxogramas so:

    varivel valor

    varivel 1 valor 1varivel 2 valor 2varivel n valor n

    algoritmo calcular_N{Prottipos }incio Receber dados de Presso, Volume e Temperatura Resolver N na equao dos gases ideais Apresentar o resultado: Nfim

    programa calcular_Nvariveis pressao , volume , T , N:realconstantes R0.082 {atm*L/K/mol}incio escrever (Informar a presso (atm):) ler (pressao) escrever (Informar o volume (L):) volume ler escrever (Informar a temperatura (C):) T ler Npressaovolume/(TR) escrever (O nmero de moles do gs : N , NL)fim

    Exe

    mplo

    3.6 OPERADORES MATEMTICOS

    As operaes matemticas envolvem sempre variveis de tipos numricos (real einteiro). Na programao de computadores mantm-se a ordem matemtica para as

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    29

    operaes, porm sendo permito o uso, apenas, de parnteses para definir aprecedncia em operaes complexas.

    Os seguintes operadores matemticos sero definidos nesta abordagem:Operador Significado

    + Adio- Subtrao* Multiplicao/ Diviso^ Potenciao

    programa resolve_equacao{ Resolver a equao y=4x3+3(2^x2+2x)+1 }variveis y:real x:realincio escrever (indicar o valor de x:) ler (x) y4*(x^3)+3*(2^(2*x)+1.5*(x^2)-2*x^(1/2))+1/6 escrever (A soluo da equao y= , y , NL)fim

    Exe

    mplo

    Nota: A equao y4*(x^3)+3*(2^(2*x)+1,5*(x^2)-2*x^(1/2))+1/6 tambm pode ser escritacomo y4*x^3+3*(2^(2*x)+1,5*x^2-2*x^(1/2))+1/6, pois a operao de potenciaopossui prioridade sobre a multiplicao, 4*(x^3)=4*x^3. Porm no caso da operaox^(1/2), se forem removidos os parnteses a operao realizada ser (x^1)/2 pois apotenciao precede a diviso.

    3.7 DESVIO CONDICIONALEstrutura que permite a tomada de decises, a partir da avaliao de condies.

    Os desvios condicionais podem ser estruturados (classificados) nas formas simples ecomposta.

    3.7.1 DESVIO CONDICIONAL SIMPLES

    Quando a avaliao da condio direciona apenas a uma deciso (Conjunto deInstrues )

    Estr

    utu

    ra

    se (condio 1) ento Conjunto de Instrues 1fim se

    se (condio 1) Conjunto de Instrues 1fim se

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    30

    3.7.2 DESVIO CONDICIONAL COMPOSTO

    Quando a avaliao da condio direciona mais de uma deciso (ao menos duas).

    Estr

    utu

    ra

    se (condio 1) ento Conjunto de Instrues 1seno Conjunto de Instrues 2fim se

    se (condio 1) Conjunto de Instrues 1seno Conjunto de Instrues 2fim se

    A notao do desvio condicional para elaborao de fluxogramas :

    condio

    F

    V

    Conjunto de instrues executadas caso condio seja falsa

    Conjunto de instrues executadas caso condio seja verdadeira

    O desvio condicional composto tambm pode ser escrito com mltiplasverificaes lgicas:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    31

    Estr

    utu

    rase (condio 1) ento Conjunto de Instrues 1seno se (condio 2) ento Conjunto de Instrues 2seno se (condio 3) ento Conjunto de Instrues 3seno Conjunto de Instrues finalfim se

    se (condio 1) Conjunto de Instrues 1seno se (condio 2) Conjunto de Instrues 2seno se (condio 3) Conjunto de Instrues 3seno Conjunto de Instrues finalfim se

    A notao do desvio condicional com mltiplas verificaes para elaborao defluxogramas :

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    32

    condio 1

    F

    V Conjunto de instrues executadas caso condio 1 seja verdadeira

    condio 2

    F

    V Conjunto de instrues executadas caso condio 2 seja verdadeira

    condio 3

    F

    V Conjunto de instrues executadas caso condio 3 seja verdadeira

    Conjunto de instrues executadas caso condio 1, condio 2 e

    condio 3 sejam falsas

    3.7.3 ANINHAMENTO DE ESTRUTURAS CONDICIONAIS

    Os desvios condicionais podem ser encadeados (ou aninhados) para formarestruturas de tomadas de decises mais complexas, por exemplo:

    se (condio 1) ento se (condio 2) ento Conjunto de Instrues 1 seno Conjunto de Instrues 2 fim seseno Conjunto de Instrues 3fim se

    Exe

    mplo

    O fluxograma para o aninhamento de estruturas condicionais anterior :

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    33

    condio 1

    F

    V

    Conjunto de instrues executadas caso condio 1 seja falsa

    condio 2

    F

    V

    Conjunto de instrues executadas caso condio 2 seja falsa

    Conjunto de instrues executadas caso

    condio 2 seja verdadeira

    3.8 OPERADORES LGICOS E RELACIONAIS

    Os desvios condicionais esto sujeitos a verificaes, atravs dos operadoresrelacionais, e podem estar sujeitos a mltiplas condies, conectadas pelos operadoreslgicos:

    Operadores relacionais=

    Igual a () Diferente de

    > Maior que< Menor que

    (>=) Maior ou Igual a (1 {Presso em atm}Condio 3: Volume>=22.4 {L}Condio 4: Forca

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    34

    O operador lgico e utilizado quando se deseja que a concluso seja obtida apenas seas todas as proposies apresentadas (premissas) sejam verdadeiras:

    Estr

    utu

    ra

    se (condio 1) e (condio 2) e ... e (condio n) ento Conjunto de Instrues 1seno Conjunto de Instrues 2fim se

    se (Temperatura=25) e (Pressao=1) ento escrever (Condio ambiente , NL)seno se (Temperatura=0) e (Pressao=1) ento escrever (CNTP , NL) seno escrever (Condio desconhecida , NL) fim sefim se

    Exe

    mplo

    Tabela verdade para o operador lgico e :Condio 1 Condio 2 Resultado

    falsa falsa Falsoverdadeira falsa Falso

    falsa verdadeira Falsoverdadeira verdadeira Verdadeiro

    O operador lgico ou utilizado quando se deseja que a concluso seja obtida sealguma das proposies apresentadas (premissas) seja verdadeira:

    Estr

    utu

    ra

    se (condio 1) ou (condio 2) ou ... ou (condio n) ento Conjunto de Instrues 1seno Conjunto de Instrues 2fim se

    Tabela verdade para o operador lgico ou :Condio 1 Condio 2 Resultado

    falsa falsa FalsoVerdadeira falsa Verdadeiro

    falsa verdadeira VerdadeiroVerdadeira verdadeira Verdadeiro

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    35

    se (Temperatura=25) ou (Temperatura=0) ento se (Pressao=1) ento escrever (Condio ambiente ou CNTP , NL) seno escrever (Condio desconhecida , NL) fim sefim se

    Exe

    mplo

    O operador lgico no utilizado quando se deseja verificar se uma condio no verdadeira :

    Estr

    utu

    ra

    se no (condio 1) ento Conjunto de Instrues 1seno Conjunto de Instrues 2fim se

    Observe que no (condio 1) igual a falso se (condio 1) verdadeira e iguala verdadeiro se (condio 1) for falsa.

    se no (Pressao=1) ento escrever (Condio desconhecida , NL)fim se

    Exe

    mplo

    Tabela verdade para o operador lgico no :Condio Resultado

    falsa verdadeiroverdadeira falso

    3.9 ESTRUTURAS DE REPETIO

    Estruturas que permitem que um certo conjunto de instrues seja executadosucessivas vezes (ciclos) sem a necessidade de repetir a escrita das instrues. Tambmconhecidos como Laos de repetio. So possveis trs estruturas de repetio:

    Com teste lgico de continuidade no incio da estrutura;Com teste lgico de continuidade no final da estrutura;Com teste lgico de continuidade por contagem de ciclo.

    Uma estrutura de repetio, cujo teste de continuidade do ciclo de repetio efetuado no incio da estrutura, possui a seguinte sintaxe:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    36

    Estr

    utu

    raenquanto (condio) fazer Conjunto de Instruesfim enquanto

    enquanto (condio) Conjunto de Instruesfim enquanto

    A notao de ciclo de repetio com teste de continuidade no incio, paraelaborao de fluxogramas :

    condio

    V

    F

    Conjunto de instrues executadas enquanto condio seja verdadeira

    Uma estrutura de repetio, cujo teste de continuidade do ciclo de repetio efetuado no final da desta, possui a seguinte sintaxe:

    Estr

    utu

    ra

    repetir Conjunto de Instruesat que (condio)

    fazer Conjunto de Instruesat que (condio)

    A notao de estrutura de repetio com teste de continuidade no final do ciclo,para elaborao de fluxogramas :

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    37

    condio

    V

    F

    Conjunto de instrues executadas at que condio seja verdadeira

    Na estrutura enquanto...fim enquanto se a condio de continuidade no satisfeita no incio desta, nenhuma instruo contida na estrutura ser executada. Naestrutura repita...at que se a condio de continuidade no satisfeita no incio desta, oconjunto de instrues contidas na estrutura ser executada uma vez, desde que o teste realizado no final da estrutura.

    Uma estrutura de repetio, cujo teste de continuidade do ciclo de repetio realizado por contadores de ciclo, possui a seguinte sintaxe:

    Estr

    utu

    ra

    para varivel de contagem de valor inicial at valor final fazer Conjunto de Instruesfim para

    para contador de valor inicial at valor final passo valor do passo fazer Conjunto de Instruesfim para

    para contador de valor inicial at valor final Conjunto de Instruesfim para

    Nota: Quando for omitido o valor do incremento (passo) estar implcito o valor 1. Osvalores inicial, final e do passo tem por objetivo selecionar os elementos no intervalorequerido. A varivel de contagem ou contador deve ser representada por um nmerointeiro, apesar de algumas linguagens de programao suportarem valores fracionrios.

    A notao de ciclo de repetio com contagem de ciclo, para elaborao defluxogramas pode ser efetuada de trs formas:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    38

    varivel>limite

    Conjunto de instrues executadas at que condio

    (varivel>limite) seja verdadeira

    varivel valor inicialpassovalor

    limite valor final

    varivel varivel+passoV

    F

    varivel>limite

    Conjunto de instrues executadas at que condio

    (varivel>limite) seja verdadeira

    varivel valor iniciallimite valor final

    varivel varivel+1V

    F

    Conjunto de instrues executadas at que (varivel>valor final)

    varivel de valor inicial at valor final passo valor

    >

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    39

    Na ltima representao o smbolo de preparao est sendo utilizado paraindicar o teste de continuidade do ciclo e a incrementao do contador de ciclo.

    As estruturas de repetio podem ser encadeadas de diversas formas, de acordocom a necessidade. As duas primeiras estruturas permitem construes mais flexveis,enquanto a ltima indicada quando o nmero de ciclos desejado conhecido, sendoque o contador representado por um nmero inteiro.

    possvel encerrar um ciclo de repetio antes que a condio de encerramentoseja atingida. A palavra QUEBRA_CICLO representar a finalizao forada de um cicloe ser vlida em qualquer estrutura de repetio. Observe o fluxograma a seguir,comparando-o com o penltimo. Neste caso quando uma certa condio de quebra foratingida o ciclo ser encerrado forosamente.

    varivel>limite

    Conjunto de instrues executadas at que condio

    (varivel>limite) seja verdadeira

    varivel valor iniciallimite valor final

    varivel varivel+1V

    F

    condio de quebra

    F

    V

    QUEBRA_CICLO

    A instruo de finalizao forada de um ciclo permite construes interessantescomo ciclos infinitos. No fluxograma a seguir a condio de encerramento 1=1. Comoesta condio nunca falsa o ciclo somente ser encerrado quando uma dada

    condio interna do ciclo for atingida. Condio esta, cuja parte conseqente ainstruo QUEBRA_CICLO.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    40

    1=1

    V

    F

    Conjunto de instrues executadas enquanto 1=1

    condio V

    F

    QUEBRA_CICLO

    Nas trs seqncias a seguir um ciclo infinito utilizado para estabelecer ciclos derepetio com teste de continuidade no incio da estrutura, no fim da estrutura e comcontagem de ciclo.

    Estr

    utu

    ra

    enquanto (1=1) fazer se (Condio ento QUEBRA_CICLO fim se Conjunto de Instruesfim enquanto

    Estr

    utu

    ra

    enquanto (1=1) fazer Conjunto de Instrues se (Condio ento QUEBRA_CICLO fim sefim enquanto

    Estr

    utu

    ra

    Contadorvalor inicialLimitevalor finalenquanto (1=1) fazer se (Contador>Limite ento QUEBRA_CICLO fim se Conjunto de Instrues Contador=Contador+1fim enquanto

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    41

    Veja o exemplo a seguir para uma aplicao dos conceitos estabelecidos at esteponto:programa fatorialvariveis N:inteiro i:inteiro R:realincio esta_certofalso fazer escrever("Calcular o fatorial do Nmero:") ler(R) se no( R= truncar(R) ) ento escrever("Este nmero no inteiro" , NL) seno se( R

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    42

    com esta estrutura ocorre da mesma forma definida para os tipos bsicos, ou seja apalavra reservada variveis precede a tipificao obedecendo o seguinte formato:

    Estr

    utu

    ra

    variveis {vetor de dados} varivel : matriz[nmero de elementos] de tipo de dado {matriz de dados} varivel : matriz[nmero de linhas , nmero de colunas] de tipo de dado {vrias declaraes na mesma linha} varivel 1 , ... , varivel n : matriz[linhas , colunas] de tipo de dado

    variveis numero_de_dias_nos_meses : matriz[12] de inteiro nome_dos_meses : matriz[12] de texto dia_da_semana_para_trabalho : matriz[7] de lgico dez_coordenadas_x_y : matriz[10 , 2] de inteiro a , b : matriz[2 , 3] de real

    Exe

    mplo

    3.10.1 MANIPULAO DE DADOS EM ESTRUTURAS HOMOGNEAS

    As atribuies de valores ou operaes com dados de estruturas homogneasdeve ser realizada sobre cada elemento destas, atravs de um ndice individual.Algumas linguagens de programao permitem que sejam definidos os ndices queindexam os elementos de uma matriz de dados, outras indexam os dados a partir de 0(zero) ou 1. Aqui ser utilizada a indexao a partir de 1 (um), ou seja, para um vetorcom 5 elementos o primeiro elemento ser indexado como 1 e o ltimo como 5.

    A sintaxe para atribuio de valores a vetores e matrizes de dados obedece oseguinte formato:

    Estr

    utu

    ra nome do vetor[ndice]valornome da matriz[ndice da linha , ndice da coluna]valor

    3.10.2 EXEMPLO MATRIZES E VETORESEscrever um algoritmo para armazenar, em matrizes, os valores das relaestrigonomtricas seno e coseno para os ngulos de 90, 180 e 270 e os nmeros inteirosde 55 a 59:

    Os seguintes dados devem ser armazenados:90 180 270

    Seno 1 0 -1 1Coseno 0 -1 0 2

    1 2 3

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    43

    Valores1 552 563 574 585 59

    programa matrizes_de_dados{armazenar os valores do seno e coseno para os ngulos de 90, 180 e 270 e nmerosinteiros de 55-59}variveis relacoes_trigonometricas:matriz[2 , 3] de real numeros_inteiros_55_59:matriz[5] de inteiroincio relacoes_trigonometricas[1 , 1] 1 {seno(90)} relacoes_trigonometricas[1 , 2] 0 {seno(180)} relacoes_trigonometricas[1 , 3] -1 {seno(270)} relacoes_trigonometricas[2 , 1] 0 {coseno(90)} relacoes_trigonomtricas[2 , 2] -1 {coseno(180)} relacoes_trigonomtricas[2 , 3] 0 {coseno(270)} numeros_inteiros_55_59[1]55 numeros_inteiros_55_59[2]56 numeros_inteiros_55_59[3]57 numeros_inteiros_55_59[4]58 numeros_inteiros_55_59[5]59fim

    Exe

    mplo

    O uso de matrizes de dados nas estruturas de entrada e sada de dados segue aseguinte notao:

    Estr

    utu

    ra

    ler(nome do vetor[ndice do elemento])ler(nome da matriz[ndice da linha , ndice da coluna])

    nome do vetor[ndice do elemento] lernome da matriz[ndice da linha , ndice da coluna] ler

    escrever(nome do vetor[ndice do elemento])escrever(nome da matriz[ndice da linha , ndice da coluna])

    Para atribuir valores todos os elementos de um vetor de dados podem serutilizadas as estruturas de repetio. O uso da estrutura para...fazer o mais adequado,porm quaisquer estruturas de repetio podem ser utilizadas.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    44

    Estr

    utu

    ra{atribuir valores a um vetor de dados atravs da estrutura para...fazer}para indexador do elemento de 1 at valor final passo 1 fazer vetor de dados[ indexador do elemento]valorfim para

    {atribuir valores a um vetor de dados atravs da estrutura repetir...at que} indexador do elemento1repetir vetor de dados[ indexador do elemento]valor indexador do elemento indexador do elemento+1at que (indexador do elemento > nmero de elementos)

    {atribuir valores a um vetor de dados atravs da estrutura enquanto...fim enquanto}ndice do elemento1enquanto (indexador do elemento

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    45

    Estr

    utu

    ra{atribuir valores a uma matriz de dados atravs da estrutura para...fazer}para linha de 1 at nmero de linhas passo 1 fazer para coluna de 1 at nmero de colunas passo 1 fazer matriz de dados[linha , coluna]valor fim parafim para

    Procedimentos semelhantes podem ser adotados para utilizar os dispositivos deentrada e sada de dados para atribuir e exibir dados em estruturas homogneas.

    No exemplo que segue requerido apresentar os dados armazenadosanteriormente na matriz relacoes_trigonometricas utilizando uma das estruturas derepetio apresentas, bem como, formatar a sada com os ttulos das linhas e colunas.algoritmo escrever_dados{Apresentar os dados armazenados anteriormente na matriz relaes_trigonomtricas}incio Armazenar os valores das reaes trigonomtricas Apresentar os dados usando a estrutura para...fazer fim

    Exe

    mplo

    programa escrever_dados{Refinamento}variveis linha:inteiro coluna:inteiro relacoes:matriz[2] de texto relacoes_trigonometricas:matriz[2 , 3] de realincio relacoes_trigonometricas[1 , 1] 1 {seno(90)} relacoes_trigonometricas [1 , 2] 0 {seno(180)} relacoes_trigonometricas [1 , 3] -1 {seno(270)} relacoes_trigonometricas [2 , 1] 0 {coseno(90)} relacoes_trigonometricas [2 , 2] -1 {coseno(180)} relacoes_trigonometricas [2 , 3] 0 {coseno(270)} relacoes [1] "sen" relacoes [2] "cos" {exibir os dados atravs da estrutura para...fazer} escrever (- - -|90 | 180 | 270 , NL) para linha de 1 at 2 fazer escrever (relacoes [linha] , | ) para coluna de 1 at 3 fazer escrever (relacoes_trigonometricas[linha , coluna] , | ) fim para escrever (NL) fim parafim

    Exe

    mplo

    Nota:a instruo escrever (NL) objetiva criar uma nova linha no dispositivo de sada, ou seja,forar o deslocamento da posio de escrita para a linha seguinte.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    46

    A apresentao, desde algoritmo no dispositivo de sada ser:

    - - - |90|180|270sen| 1 | 0 | -1cos| 0 | -1 | 0

    3.11 ESTRUTURAS DE DADOS HETEROGNEAS

    Estruturas de dados heterogneas so formas de agrupamentos de variveis, dediversos tipos, em uma nica varivel. So estruturas que permitem que os atributos deuma certa informao sejam reunidos em uma nica estrutura, permitindo um raciocniomais simples e efetivo. As estruturas de dados heterogneas so, tambm, conhecidascomo registros de dados ou variveis compostas heterogneas.

    A sintaxe para a declarao de um registro ser:

    Estr

    utu

    ra

    nome varivel:registro atributo 1 : tipo 1 atributo 2 : tipo 2 ...

    atributo n : tipo nfim registro

    {Criar uma estrutura heterognea para identificar uma bomba eltrica}variveis bomba:registro tensao:inteiro pressao:real potencia:real corrente_alternada:lgico unidade_pressao:texto unidade_potencia:texto fim registro

    Exe

    mplo

    No exemplo anterior, foram utilizados cinco atributos (campos) para caracterizaruma bomba eltrica, porm alguns destes atributos esto intimamente relacionados epoderiam representar uma informao de forma mais coesa atravs, tambm, de umregistro de dados. Isto seria possvel criando, por exemplo, um registro de dados quecontivesse o valor da tenso e a unidade desta.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    47

    {Criar outra estrutura heterognea para identificar uma bomba eltrica}variveis bomba:registro tensao:inteiro pressao:registro valor:real unidade:texto fim registro potencia:registro valor:real unidade:texto fim registro corrente_alternada:lgico fim_registro

    Exe

    mplo

    Estruturas de dados heterogneas podem conter, como atributos, estruturashomogneas, bem como podem estar contidas nestas. O uso extensivo de variveisheterogneas contribui para a organizao e clareza de um programa.

    3.11.1 MANIPULAO DE DADOS EM ESTRUTURAS HETEROGNEAS

    As atribuies de valores ou operaes com dados de estruturas heterogneasdeve ser realizada sobre cada atributo destas, atravs de um operador de referncia (.).Algumas linguagens de programao no implementam estruturas de dadosheterogneas. Porm, historicamente, observa-se que a maioria das linguagensacrescentou estas estruturas sua sintaxe pela versatilidade oferecida por estas.

    A sintaxe para atribuio de valores a registros de dados obedece o seguinteformato:

    Estr

    utu

    ra

    varivel.atributo valor

    A leitura e escrita de dados do/para registros tambm realizada atravs dooperador de referncia (.), observe o exemplo que segue.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    48

    algoritmo cadastra_bombas{Cadastrar 5 bombas a partir de entradas do usurio exibindo o cdigo do produto para cadaum}incio para 5 bombas fazer Solicitar as informaes de Tenso, Valor da Potncia, Unidade da Potncia e Tipo de Corrente, armazenando-as em uma varivel heterognea Codificar as informaes acumulando as em um vetor com dados do tipo inteiro Apresentar o cdigo fim parafim

    Exe

    mplo

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    49

    programa cadastra_bombas{Refinamento}variveis i:inteiro j:inteiro opcao:texto bombas:matriz[5] de registro tensao:inteiro potencia:registro valor:real unidade:texto fim registro corrente_alternada:lgico codigo:matriz[4] de inteiro {cdigos para tenso, potncia.valor, potncia.unidade,corrente_alternada} fim registroconstantes {identificadores dos valores de tenso} _110V1 _220V2 _24V3 {identificadores dos valores de potncia} _0_25HP1 {0.25HP} _0_50HP2 {0.50HP} _50W4 {50W} {identificadores das unidades de potncia} HP1 W2 {identificadores para verdadeiro e falso} F0 V1incio para i de 1 at 5 fazer escrever (Cadastrando bomba : , i , NL) {Coletar as informaes} escrever (Informar tenso (V):) ler (bombas[i].tensao) escrever (Informar unidade da potncia:) ler (bombas[i].potencia.unidade) escrever (Informar potncia (; bombas[i].potencia.unidade;):) ler (bombas[i].potencia.valor) repetir escrever (A bomba opera com corrente alternada (S/N):) ler (opo) at que (opcaoS) ou (opcao=N) se (opo=S) ento bombas[i].corrente_alternadaverdadeiro seno bombas[i].corrente_alternadafalso fim se {Codificar as informaes. Continua... }

    Exe

    mplo

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    50

    {Continuao... Codificar as informaes} se (bombas[i].tensao=220) ento bombas[i].codigo[1]_220V seno se (bombas[i].tensao=110) ento bombas[i].codigo[1]_110V seno se (bombas[i].tensao=24) ento bombas[i].codigo[1]_24V seno bombas[i].codigo[1]0 {desconhecido} fim se

    se (bombas[i].potencia.valor=0,25) e (bombas[i].potencia.unidade=HP) ento bombas[i].codigo[2]_0_25HP bombas[i].codigo[3]HP seno se (bombas[i].potencia.valor=0,5) e (bombas[i].potencia.unidade=HP) ento bombas[i].codigo[2]_0_50HP bombas[i].codigo[3]HP seno se (bombas[i].potencia.valor=50) e (bombas[i].potencia.unidade=W) ento bombas[i].codigo[2]_50W bombas[i].codigo[3]W seno bombas[i].codigo[2]0 {desconhecido} bombas[i].codigo[3]0 {desconhecido} fim se

    se (bombas[i].corrente_alternada=verdadeiro) ento bombas[i].codigo[4]V seno bombas[i].codigo[4]F fim se

    {Apresentar o cdigo} escrever (O cdigo da bomba cadastrada :) para j de 1 at 3 fazer escrever (bombas[i].codigo[j] , . ) fim para escrever (bombas[i].codigo[4] , NL) escrever (----------------------------------------- , NL) fim parafim

    Exe

    mplo

    A apresentao, desde algoritmo no dispositivo de sada, com entradas fornecidaspelo usurio, ser:

    Cadastrando bomba: 1Informar tenso (V): 220Informar unidade da potncia: HPInformar potncia (HP): 0.25A bomba opera com corrente alternada (S/N): SO cdigo da bomba cadastrada : 2.1.1.1-----------------------------------------

    Cadastrando bomba: 2Informar tenso (V): _

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    51

    3.12 MODULARIZAO DE ALGORITMOS

    Dependendo da complexidade de um problema, o algoritmo para sua soluopode ser melhor desenvolvido com a diviso em partes menores (subrotinas) e, portanto,mais simples. A garantia de que as partes de um algoritmo realizam corretamente astarefas a que se destinam e de que estejam corretamente encadeadas garante a soluodo problema. Cada parte de um algoritmo constitui um novo algoritmo, podendo, portanto,estar sujeita a divises em algoritmos menores, obtendo-se o refinamento e aespecificidade necessrios. O refinamento em subrotinas sugere que a funcionalidade decada parte est perfeitamente delineada. A manipulao de um algoritmo por outro ocorreatravs do nome destes. O refinamento sucessivo auxilia o desenvolvimento deproblemas complexos. Considere um caso onde um programa possa ser dividido em"subprogramas", cada um desempenhando uma tarefa definida de forma clara e objetiva.Por exemplo, se um algoritmo deve estabelecer um caminho para que seja escolhidaentre as equaes y=x2 e y=2x aquela que deve ser utilizada em um caso especfico. Oalgoritmo (prottipo) a seguir indica um caminho.algoritmo calcula_y{resolver as equaes 1) y=x2; 2) y=2x}incio Listar opes de equaes Identificar a equao a ser resolvida Resolver a equao selecionada Apresentar o resultadofim

    Exe

    mplo

    Se cada uma das etapas listadas puder ser codificada como um subprograma, oprograma final seria to claro, quanto o algoritmo e sua compreenso seria facilitada.programa calcula_y{resolver as equaes 1) y=x2; 2) y=2x}incio listar_opcoes identificar_equacao resolver_equacao apresentar_resultadofim

    Exe

    mplo

    Este tipo de abordagem no totalmente vivel, pois quando o algoritmo, na verso deprottipo, foi definido no foram consideradas as implicaes das etapas. Quando asetapas so muitos simples no conveniente consider-las como subprogramas, poisisto pode tornar-se trabalhoso demais. Veja o refinamento final deste exemplo, a seguir:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    52

    programa calcula_y{Refinamento em mdulos}variveis x: real y: real opcao: inteiroconstantes equacao_11) y= x^2 equacao_22) y= 2^x{subprogramas} subrotina listar_opcoes {escolher entre as equaes y=x^2; y=2^x} incio escrever (Selecione a equao desejada (nmeros) , NL) escrever (equacao_1 , NL) escrever (equacao_2 , NL) fim sub

    subrotina identificar_equacao incio ler (opcao) fim sub

    subrotina resolver_equacao {resolver uma das equaes } incio escrever (indicar o valor de x ) ler (x) se opcao=1 ento yx^2 seno y2^x fim se fim sub

    subrotina apresentar_resultado incio escrever (O resultado da equao ; opcao ; ; y ; NL) fim sub

    incio listar_opcoes identificar_equacao resolver_equacao apresentar_resultadofim

    Exe

    mplo

    Observe que utilizamos uma nomenclatura semelhante a do programa principal,apenas substituindo a palavra programa por subrotina. As sees como declarao devariveis e constantes tambm podem estar contidas em subrotinas.

    Estr

    utu

    ra subrotina nome da subrotinaincio instruesfim sub

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    53

    O uso de subrotinas estabelece uma hierarquia, onde existe o programa principale os auxiliares. As variveis declaradas no programa principal podem estar acessveis atodos os algoritmos, enquanto as definidas nos auxiliares so restritas a estes. O grau devisibilidade de uma varivel denominado escopo e classificado como global ou local.Assim, as variveis contidas nas subrotinas so denominadas variveis locais e soparticulares deste, existindo apenas durante a execuo da subrotina. Desta forma, umadas vantagens prticas do uso de subrotinas que a unidade de processamento somenteprecisar se preocupar com as variveis locais durante o uso destas. Antes e aps amanipulao da subrotina as variveis locais permanecem indeterminadas.

    comum que seja necessria a transferncia de informaes entre algoritmossem o uso de variveis globais, devendo ser estabelecido um mecanismo de troca dedados. O trnsito de dados em subrotinas denominado passagem de parmetros, osquais so constitudos por variveis ou valores enviados para uma subrotina. Estapassagem deve ser efetuada aps o nome da subrotina e entre parnteses. Assubrotinas sero indicadas conforme as seguintes sintaxes:

    Estr

    utu

    ra

    subrotina nome da subrotina(lista de parmetros com tipos)variveis lista de variveisincio instruesfim sub

    subrotina [variveis de retorno com tipo]nome subrotina( parmetros com tipos)variveis lista de variveisincio instruesfim sub

    Existem duas formas de subrotinas: os procedimentos e as funes. Umprocedimento executa uma tarefa permitindo o trnsito de dados, enquanto uma funoestende esta funcionalidade, retornando algum valor no prprio nome da subrotina.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    54

    Estr

    utu

    raprocedimento nome do procedimento(lista de parmetros com tipos)variveis lista de variveisincio instruesfim procedimento

    funo [varivel de retorno com tipo]nome da funo( parmetros com tipos)variveis lista de variveisincio instruesfim funo

    Nota: A lista de parmetros com tipos pode seguir os formatos:lista=parmetro 1:tipo 1 ; parmetro 2:tipo 2lista=parmetro 1,parmetro 2:tipo 1;parmetro 3,parmetro 4:tipo 2

    A notao de subrotinas para elaborao de fluxogramas :

    nome da subrotina(parmetros)

    instrues requeridas

    RETORNARparmetros de retorno

    No uso (chamada) de um procedimento/funo, apenas vrgulas so utilizadas.Nas declaraes, o ponto-e-vrgula utilizado, para separar tipos diferentes emprocedimento/funo. Entre tipos iguais pode ser utilizada vrgula (ex.:funo [tst]teste(a, b: lgico; c, d, e: inteiro) ).

    Como, em muitos casos, prtico e necessrio a definio de subrotinas emunidades separadas do programa principal adotaremos o uso da instruo usar paradirecionar a escrita das subrotinas para uma nova rea. Trata-se, de um recursofacilitador da estruturao do programa e a esta instruo chamaremos decompartilhamento. A sintaxe para o uso desta instruo em um algoritmo ser:

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    55

    Estr

    utu

    raalgoritmo nome do algoritmovariveis lista de variveisconstantes lista de constantesusar

    nome da unidadeincio conjunto de instruesfim

    unidade nome da unidade conjunto de instruesfim unidade

    O programa calcula_y pode, ento, ser rescrito na forma a seguir utilizando oconceito de compartilhamento. Observe que as subrotinas identificar_equacao,resolver_equacao e apresentar_resultado so dependentes das variveis x, y e opcaodeclaradas no programa principal. Estas variveis possuem escopo global e sem elas assubrotinas no podem cumprir sua tarefa (ser executadas). Este inconveniente pode serresolvido utilizando os mecanismos de passagem de parmetros. Estes mecanismospermitem a construo de subrotinas independentes de qualquer programa principal, eque portanto podem ser reutilizadas em situaes diversas. De fato a facilidade deprogramao que se obtm atualmente, fruto de bibliotecas de subrotinas muito bemdesenvolvidas, presentes nas linguagens de programao existentes. Como no interessante reunir subrotinas para todas as aplicaes em todas as linguagens deprogramao de computadores, existem linguagens de programao de propsitoespecfico. Aqui, o interesse est direcionado a computao cientfica, maisespecificamente para soluo de problemas de matemtica aplicada a engenharia.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    56

    programa calcula_y{Refinamento em mdulos}variveis x: real y: real opcao: inteiroconstantes equacao_11) y= x^2 equacao_22) y= 2^xusar programas_auxiliaresincio listar_opcoes identificar_equacao resolver_equacao apresentar_resultadofim

    unidade programas_auxiliares subrotina listar_opcoes {escolher entre as equaes y=x^2; y=2^x} incio escrever (Selecione a equao desejada (nmeros) , NL) escrever (equacao_1 , NL) escrever (equacao_2 , NL) fim sub

    subrotina identificar_equacao incio ler (opcao) fim sub

    subrotina resolver_equacao {resolver uma das equaes } incio escrever (indicar o valor de x ) ler (x) se opcao=1 ento yx^2 seno y2^x fim se fim sub

    subrotina apresentar_resultado incio escrever (O resultado da equao , opcao , , y , NL) fim subfim unidade {programas_auxiliares}

    Exe

    mplo

    Nota: O nome de uma unidade deve ser nico no programa e seguir as mesmas regraspara definio de nomes de variveis.

    Vamos praticar estes conceitos com um exemplo mais completo. Usar funes eprocedimentos para montar uma tabela de dados linear para, no mximo, 10 valores de xa serem fornecidos, com a devida apresentao destes ao final dos clculos. Criar, ao

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    57

    menos, uma funo (com nome f) e trs procedimentos com os nomes dados_entrada,calcular e exibir_tabela.algoritmo tabela_dados_linear{Resolver a equao y=f(x) com f(x)=ax+b}incio Obter os dados de x, armazenando-os em uma matriz Identificar (solicitar) os coeficientes da equao da reta Calcular os valores de f(x) para os dados armazenados, armazenado-os em uma matriz Apresentar os resultadosfim

    Exe

    mplo

    programa tabela_dados_linear{Refinamento}usar bloco_1variveis coeficiente_linear:real coeficiente_angular:real x:real nmero_pontos:inteiro pontos:matriz[10 , 2] de realconstantes titulo Montar uma tabela linear.usar bloco_2 , bloco_3incio escrever(titulo) dados_entrada coeficientes calcular exibir_tabelafim

    Exe

    mplo

    Nota: Observe que a instruo usar foi utilizada duas vezes, antes e aps a declaraode variveis. Isto significa que as variveis declaradas no so visveis (escopo) nasubrotina f, pois ela est contida no bloco_1 que est sendo compartilhado antes daseo das variveis.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    58

    unidade bloco_1 funo [r:real] f(a , b , x:real) incio ra*x+b fim funofim unidade{bloco_1}

    unidade bloco_2 procedimento dados_entrada variveis contador:inteiro incio escrever (Nmero de pontos (max.10):) ler (numero_pontos) para contador de 1 at numero_pontos fazer escrever (Informe o ponto N , contador) ler x pontos[contador,1]x fim_para fim procedimento{ dados_entrada }

    procedimento calcular variveis contador:inteiro y:real incio para contador de 1 at numero_pontos fazer yf(coeficiente_angular , coeficiente_linear , pontos[contador , 1]) pontos[contador , 2]y fim para fim procedimento{ calcula }

    procedimento exibir_tabela variveis contador:inteiro incio escrever (x | y , NL) para contador de 1 at numero_pontos fazer escrever (pontos[contador , 1] , | , pontos[contador , 2] , NL) fim para fim procedimento{ exibir_tabela }fim unidade{bloco_2}

    unidade bloco_3 procedimento coeficientes incio escrever (Coeficiente angular:) ler(coeficiente_angular) escrever (Coeficiente linear:) ler (coeficiente_linear) escrever (f(x)= , coeficiente_angular , *x+ , coeficiente_linear , NL) fim procedimentofim unidade{bloco_3}

    Exe

    mplo

    Aqui ser utilizada a palavra subrotina para designar tanto procedimentos comofunes, visto que esta diferenciao apenas conceitual.

  • INTRODUO S TCNICAS DE PROGRAMAO COM GNU OCTAVE E MATLAB

    - Marcos Marcelino Mazzucco -

    59

    3.12.1 MECANISMOS DE PASSAGEM DE PARMETROS

    Sem o uso de subrotinas, a criao de programas torna-se pobre e onerosa, poismuitas tarefas resultam em repetio consumindo um tempo precioso. Subrotinaspermitem que a representao da soluo de um problema possa ser estendida paraproblemas similares, com uma grande economia de tempo e esforo, alm docompartilhamento de recursos entre programadores. Resumidamente, a reutilizao dealgoritmos essencial, dos pontos de vista profissional e intelectual. Para garantir umaproveitamento efetivo de algoritmos importante que estes sejam escritos de formagenrica e independente, aproveitando, ao mximo o recurso de passagem deparmetros. Para tanto, este recurso deve incluir a possibilidade tanto do envio, quantodo recebimento de informaes. As subrotinas do tipo funo incluem este tipo defuncionalidade. Para estender esta funcionalidade ser incorporada na passagem deparmetros o fluxo bidirecional de informaes atravs do smbolo . A sintaxe paradefinio de um procedimento com passagem bidirecional de parmetros :

    Estr

    utu

    ra

    procedimento nome(indicador de direoparmetros com tipos)

    Quando o fluxo de informaes ocorre unicamente no sentido de