Documente Academic
Documente Profesional
Documente Cultură
Engenharia de Mquinas 1 Engenharia de Mquinas Martimas - Martimas M04 Computadores e Programao M04 Computadores e Programao
Introduo
Por todas as possibilidades que criou, o computador invadiu todos os domnios, ganhando uma importncia cada vez maior, e modificando a forma como se vive em sociedade, no sendo hoje possvel voltar atrs e prescindir dele. Como consequncia os gastos com a informtica aumentaram substancialmente.
Introduo
Actualmente os gastos com o software tendem a ser a maior parcela dos gastos com a informtica.
Ora este facto coloca a produtividade da programao numa perspectiva um pouco diferente da praticada alguns anos atrs.
Introduo
Nas ltimas duas dcadas surgem aplicaes e/ou programas cada vez maiores, mais ambiciosos, mais sofisticados, mais complexos e mais integrados. Essa integrao e complexidade aumenta ainda mais com o teleprocessamento e as aplicaes on-line.
Introduo
Quanto maior o programa ou aplicao maior ser a dificuldade de os alterar no sentido de os melhorar, adaptar ou remediar erros. Num contexto on-line, o problema torna-se bastante mais delicado.
Introduo
De facto, basta lembrar, que enquanto que numa empresa que funcione 8 horas por dia, um erro do programa numa aplicao de contabilidade ou de salrios, que passou durante a fase de teste e instalao, pode ser facilmente remediado, j o mesmo no se pode dizer dum banco, cujo centro de informtica funciona 24 horas por dia e em on-line, em que so permanentes as transferncias bancrias e onde um erro de programa pode ser catastrfico.
Engenharia de Mquinas Martimas M04 Computadores e Programao 7
Introduo
Podemos ento dizer que a evoluo das aplicaes vem avolumar dois problemas j existentes, como so a manuteno e a segurana, assim como vem introduzir o conceito de fiabilidade (reliability - maior confiana no correcto desempenho das suas funes).
Introduo
Por cada novo programa ou aplicao podemos dizer que dois factos conduzem necessidade de desenvolver uma actividade de manuteno dos programas, a saber:
os erros no detectados na fase de testes precisam de ser corrigidos medida que vo sendo descobertos a necessidade de efectuar alteraes ao programa, seja para satisfazer novas necessidades do utilizador, seja para satisfazer as que ele no soube explicitar antes do programa ser feito.
Engenharia de Mquinas Martimas M04 Computadores e Programao 9
Introduo
Para aumentar a produtividade da programao no basta s aumentar a produtividade do desenvolvimento de programas novos, mas tambm fazer programas que permitam diminuir o tempo de manuteno.
10
Introduo
Porque se perde tanto tempo com a Manuteno? Algumas das razes que levam a manuteno a ser uma actividade difcil e demorada so:
a lgica dos programas por vezes complicada e difcil localizar onde uma determinada funo realizada. cada programador tem a sua maneira muito prpria de escrever programas. o prprio programador ao fim de algum tempo tem dificuldade em entender algumas das instrues que escreveu e, ao alterar, produzir novos erros.
Engenharia de Mquinas Martimas M04 Computadores e Programao 11
Introduo
Porque se perde tanto tempo com a Manuteno? Algumas das razes que levam a manuteno a ser uma actividade difcil e demorada so:
o problema agrava-se se o programa entregue a outro programador que no tenha contacto com o autor. os programas em geral no esto documentados quando esto documentados, a documentao raramente se refere verso corrente .
12
Introduo
Porque se perde tanto tempo com a Manuteno? Algumas das razes que levam a manuteno a ser uma actividade difcil e demorada so:
a normalizao da terminologia, da nomenclatura, da lgica, etc..., ainda muito pouco respeitada, tornando difcil a compreenso para outros programadores, que no o autor. a interpretao dos erros por vezes difcil devido ao desconhecimento de ferramentas adequadas de debug e de deficiente estruturao do programa.
Engenharia de Mquinas Martimas M04 Computadores e Programao 13
Introduo
Porque se perde tanto tempo com a Manuteno? Algumas das razes que levam a manuteno a ser uma actividade difcil e demorada so:
o utilizador no sabe muitas vezes, concretamente, o que quer, bem como as frequentes alteraes de organizao obrigam a sucessivas alteraes do programa ou aplicao .
14
Introduo
Existe um conceito que importa ponderar e que de algum modo est generalizado entre os gestores. o conceito de eficincia/optimizao de um programa. Vulgarmente relaciona-se esta com o tempo de ocupao de memria e de execuo. Quanto menor o tempo destes, melhor ser a eficincia de um programa.
15
Introduo
Na verdade a eficincia/optimizao tem de ser vista no seu contexto. Isto , muitas vezes um programa para ser optimizado, em termos de tempo de execuo ou de ocupao de memria, alterado com artificios tais que tornam a sua manuteno difcil e o tempo que se poupa no seu desempenho largamente ultrapassado na pesquisa de erros ou em alteraes no mbito das actividades de manuteno.
Engenharia de Mquinas Martimas M04 Computadores e Programao 16
Introduo
Podemos ento concluir, que apesar de ser muitas vezes indispensvel, muitas vezes incorrecta quando se olha aos gastos totais e produtividade global da programao.
17
Introduo
As tcnicas de programao no passado derivavam sobretudo das limitaes impostas pelo hardware e pelo software e do facto de se tratar de uma actividade nova sem quaisquer precedentes.
18
Introduo
Os problemas e as limitaes com que se depararam os programadores, no passado, e que de certo modo os condicionaram listam-se de seguida:
memria limitada ou reduzida. limitao nas velocidades de processamento. inexistncia inicial de linguagens imps a necessidade da programao em cdigo mquina ou prximo (assembler) e o conhecimento perfeito do comportamento fsico da mquina (interrupts, endereos,...).
Engenharia de Mquinas Martimas M04 Computadores e Programao 19
Introduo
Os problemas e as limitaes com que se depararam os programadores, no passado, e que de certo modo os condicionaram listam-se de seguida:
a estrutura do computador limitava os mtodos de concepo do programa, sendo os primeiros problemas resolvidos pelos computadores de carcter cientfico e matemtico. s no final da dcada de 50 e incio da de 60, surgem linguagens independentes dos computadores e mais prximas da linguagem humana.
Engenharia de Mquinas Martimas M04 Computadores e Programao 20
Introduo
Os problemas e as limitaes com que se depararam os programadores, no passado, e que de certo modo os condicionaram listam-se de seguida:
o advento do compilador vem aliviar decisivamente o programador na tarefa de deteco dos erros de sintaxe. as linguagens evoludas, no estando em correspondncia de 1 para 1 com a linguagem mquina, permitiram fazer programas mais curtos, mais simples e mais compreensveis.
Engenharia de Mquinas Martimas M04 Computadores e Programao 21
Introduo
Os problemas e as limitaes com que se depararam os programadores, no passado, e que de certo modo os condicionaram listam-se de seguida:
o desenvolvimento das ferramentas de debug e os pacotes case tornaram o trabalho do programador bastante mais simples
22
Introduo
A evoluo do hardware e do software, assim como a crescente exigncia e necessidade da sociedade actual, faz com que os programas ou aplicaes sejam cada vez maiores e mais complexos, tornando cada vez mais difcil ao programador controlar o seu programa e em particular o fluxo de controle ao longo deste.
23
Introduo
Desenvolve-se ao longo da dcada de 60 uma teoria de programao, com vista a solucionar este problema, e que consiste em dividir o programa em pequenos mdulos ou subrotinas, de modo a serem facilmente controlados pelo programador. Esses mdulos podem ser facilmente codificados, compilados e testados independentemente, podendo ser posteriormente integrados na aplicao.
Engenharia de Mquinas Martimas M04 Computadores e Programao 24
Introduo
Consegue-se, assim:
melhorar a funo manuteno. melhorar a operacionalidade da aplicao. permitir operaes em on-line pois carrega-se na memria virtual somente o mdulo necessrio (sob o comando do programa de controle) para proceder operao necessria.
25
Introduo
A programao modular surge para fazer face s aplicaes complexas e s aplicaes on-line. Mas, ela por si s no basta, necessrio desenvolver tcnicas de desenho que permitam decidir correctamente em como dividir o programa em mdulos.
Programao estruturada
A programao estruturada surge entre 66 e 72 graas a um grande conjunto de investigadores de onde se salientam os nomes de Edsger Dijkstra e Harlan Mills (1919-1996).
A discipline of programming, E.Dijkstra, Prentice-Hall 1976 ISBN 013-215871-X Formal development of programs and proofs, E.Dijkstra, AddisonWesley 1990 ISBN 0-201-17237-2 www5.biostr.washington.edu/~jsp/muq/muf3_17.html. www.tcse.org/hmills.html.
Engenharia de Mquinas Martimas M04 Computadores e Programao 27
Programao estruturada
Baseia-se nos seguintes princpios ou critrios:
os GOTO's devem ser evitados a todo o custo pois tornam o programa de difcil manuteno qualquer programa prprio (uma entrada e uma sada) pode ser codificado utilizando apenas as seguintes figuras lgicas: sequncia, If Then Else e Do While decomposio do programa em sucessivos nveis de segmentao (programao modular), mantendo cada segmento um tamanho no superior a uma pgina.
Engenharia de Mquinas Martimas M04 Computadores e Programao 28
Programao estruturada
Baseia-se nos seguintes princpios ou critrios:
cada segmento dever constituir um programa prprio (uma entrada e uma sada), dever comportar-se como uma caixa negra (os mesmos inputs produzem os mesmos outputs) relativamente aos segmentos de nvel superior e constituir um esqueleto lgico para a chamada dos segmentos de nvel inferior. formatao do programa usando a identao.
29
Programao estruturada
Baseia-se nos seguintes princpios ou critrios:
uso de regras de codificao de modo a facilitar o controle e compreenso do programa definio de regras prprias, que constituam normas, de modo a que possam ser aplicadas por todos os programadores num mesmo projecto. composio passo a passo (Dijkstra - stepwise composition) ou desenvolvimento top down (Mills) na fase de Desenho da aplicao. desenho estruturado de programas (dcada de 70 Myers, Jackson,Engenharia Warnier). de Mquinas Martimas 30
M04 Computadores e Programao
Programa
O que um programa de computador? Um programa um conjunto de instrues que sero executadas em certas condies e por certa ordem, por um computador.
31
Programa
Para um determinado input o programa fornece um determinado output.
input
output
5/8/61
37 anos
32
Programa
A entrada ou input so dados ou parmetros que o programa l a partir de diferentes formas ou vias: teclado (parmetro no arranque ou dados a pedido) modem ficheiro
Engenharia de Mquinas Martimas M04 Computadores e Programao
rato
33
Programa
Os dados de input podem ser de vrios tipos. A saber:
Nmeros (inteiros, reais, complexos) Lgicos (verdadeiro, falso) Cadeias de caracteres ou strings Datas A definir pelo utilizador
34
Programa
A sada ou output so dados que o programa escreve em diferentes formas e suportes: modem impressora
monitor
ficheiro
Engenharia de Mquinas Martimas M04 Computadores e Programao 35
Programa
Os dados de output tal como os de input podem ser dos seguintes tipos
Nmeros (inteiros, reais, complexos) Lgicos (verdadeiro, falso) Cadeias de caracteres ou strings Datas A definir pelo utilizador
36
Programa
O programa constitudo por um conjunto de instrues que so lidas uma a uma pelo processador do computador. As primeiras instrues costumam ser de leitura dos dados de input. Leitura significa que os dados so guardados em memria. Cada localizao de memria onde cada dado (nmero, data, string,...) guardado identificada por um nome.
Engenharia de Mquinas Martimas M04 Computadores e Programao 37
Programa
Programa Eq2Grau Instruo 1 Instruo 2
1,1,-2
...
...
Calcular razes x1 e x2
...
Escrever no monitor ...
Programa
Programa Eq2Grau Instruo 1 Instruo 2 Instruo n Lrdo teclado a,b,c
...
Calcular razes x1 e x2
...
Escrever no monitor ...
39
Programa
Os nomes das localizaes de memria podem ser quaisquer conjuntos de caracteres, normalmente devero comear por uma letra. Por exemplo: x teste tx23 No costuma ser permitido a utilizao de . ou - nos nomes
Engenharia de Mquinas Martimas M04 Computadores e Programao 40
Programa
Aps o programa tr lido os dados de input costumam seguir-se instrues de processamento da informao. Essas instrues utilizam os dados guardados nas memrias, alteram-nos e/ou criam novos dados que so tambm guardados em memria.
41
Programa
Programa Eq2Grau Instruo 1 Instruo 2 Instruo n Lrdo teclado a,b,c
memrias
b b 2 4ac x1 2a b b 2 4ac x2 2a
...
Calcular razes x1 e x2
42
Programa
Finalmente o programa escreve os resultados ou output num monitor, impressora ou ficheiro. Os dados de output no so mais que valores guardados em determinadas localizaes de memria.
43
Programa
Programa Eq2Grau Instruo 1 Instruo 2 Instruo n Lrdo teclado a,b,c
44
Programa
As instrues so pois os elementos mais simples que entram num programa. Estas podem agrupar-se de determinada maneira, com identidade e objectivo, constituindo aquilo que se costuma chamar de segmentos.
45
Programa
Um programa (estruturado) pode ento ser constitudo por instrues simples e por segmentos de menor nvel. Cada um destes, por seu lado, pode ser constitudo por instrues simples e por segmentos de nvel inferior que por sua vez se iro decompr e por a adiante at s restarem instrues.
46
Programa
Programa Multibanco Instruo 1 Instruo 2
...
Instruo n Correr subrotina Levantamento Instruo n+2 Subrotina Levantamento Instruo 1 Instruo 2
...
...
Correr subrotina X
Subrotina X
...
Instruo n Retorna Engenharia de Mquinas Martimas M04 Computadores e Programao 47
Programa
Programa Multibanco Instruo 1 Instruo 2
...
Instruo n Correr subrotina Levantamento Instruo n+2
...
...
Correr subrotina X
Subrotina X
...
Programa
Um programa uma entidade que tem uma estrutura e uma funo. A estrutura a forma como ele se decompe em segmentos e instrues sucessivamente para nveis cada vez menores. A funo de um programa o conjunto de transformaes possveis que podem ocorrer, da entrada (input) para a sada (output), quando esse programa executado.
Engenharia de Mquinas Martimas M04 Computadores e Programao 49
Programa
Se podemos decompr um programa em segmentos porque a funo desse programa se pode decompr em sub-funes. Se determinarmos correctamente como que a funo de um programa se pode decompr em sub-funes e estas, por sua vez, em novas sub-funes, etc..., teremos definida a decomposio do programa em segmentos.
Engenharia de Mquinas Martimas M04 Computadores e Programao 50
Programa
O que se trata , no de decompr um programa em segmentos pois ele ainda no existe, mas de decompr o problema em sub-problemas ou a funo em sub-funes e assim sucessivamente de modo a que todas as sub-funes (que correspondem a segmentos) em conjunto realizem aquela funo.
51
Programa
Exemplo:
Multibanco
Levantamentos
Consultas
Pag.Servios
Saldos
Movimentos
52
Princpios
Princpio da Correspondncia Funo-Segmento Cada segmento de maior nvel de um programa deve corresponder a uma subfuno bem definida, de tal forma que o conjunto dessas subfunes do maior nvel realize a funo do programa. Este princpio, da correspondncia funo-segmento, deve ser aplicado em todos os nveis em que o programa se divide.
Engenharia de Mquinas Martimas M04 Computadores e Programao 53
Princpios
Princpio da Independncia dos Segmentos A decomposio de uma funo em subfunes deve obedecer s leis de construo simples, em nmero limitado e recorrendo s leis da sequncia, alternativa e iterao. Alm disso, a decomposio em subfunes deve ser tal que estas sejam to independentes umas das outras quanto possvel.
54
Princpios
Princpio da Correspondncia da Estrutura dos Dados com a Estrutura do Programa Sendo um programa um conjunto de instrues que recebe dados de input e os processa de modo a fornecer determinado output, ou sejam dados, natural que a sua concepo esteja fortemente condicionada pela estrutura desses dados. A estrutura de um programa deve em muitos casos, e especialmente em ficheiros sequenciais, obedecer estrutura dos ficheiros de dados. Engenharia de Mquinas Martimas 55
M04 Computadores e Programao
Teorema da Estrutura
A programao estruturada baseia-se num teorema que diz: qualquer programa prprio (que tenha apenas uma entrada e uma sada) pode ser codificado utilizando apenas as seguintes figuras lgicas: sequncia If Then ... Else (ElseIf Then) ... Endif Do While ... Enddo
Engenharia de Mquinas Martimas M04 Computadores e Programao 56
57
58
59
Escrever no monitor A hipotenusa , h Fim do programa Engenharia de Mquinas Martimas M04 Computadores e Programao 60
...
Fim do programa Engenharia de Mquinas Martimas M04 Computadores e Programao 62
Fases do projecto
As fases de desenvolvimento de um programa ou projecto so:
ANLISE CODIFICAO COMPILAO, LINKAGEM E DEBUG TESTES DE INTEGRAO
63
65
66
67
71
72
74
75
76
77
Sequncia
A
Alternativa
A
Iterao
A A A B* B *(N) B+
Do While...
81
82
85
87
88
CODIFICAO
Na fase da codificao o programador dever assegurar-se, em primeiro lugar, que a linguagem que ir utilizar permite respeitar as regras da programao estruturada.
89
CODIFICAO
Se no houver problemas a este nvel e caso o programador tenha seguido conscientemente os diferentes passos da metologia proposta, natural que a fase de codificao seja rpida e simples, consistindo somente na traduo de uma equivalncia de instrues, pseudo-linguagem para linguagem de programao, de uma para trs e muitas vezes de uma para uma.
Engenharia de Mquinas Martimas M04 Computadores e Programao 90
CODIFICAO
A preocupao do programador ficar resumida aos problemas da sntaxe (forma, regras) e semntica (significado) da linguagem escolhida.
91
94
95
96
98
103
106
REGRAS DE ESTILO
Simplicidade
escreva claramente seja simples e directo no sacrifique a clareza pela "eficincia" evite saltos desnecessrios se uma expresso lgica difcil de perceber, tente transform-la evite os GOTOs
Engenharia de Mquinas Martimas M04 Computadores e Programao 112
REGRAS DE ESTILO
Simplicidade
no "componha" mau cdigo - reescreva-o use nomes de variveis e de segmentos que signifiquem alguma coisa mas que permaneam curtos
113
REGRAS DE ESTILO
Pseudo-Linguagem
escreva primeiro numa pseudo-linguagem, o seu programa, e depois traduza para a linguagem de programao que usar use as regras de indentao.
114
REGRAS DE ESTILO
Figuras Lgicas
use os GOTOs s quando necessrio use as seguintes figuras lgicas: Sequncia If Then Else Do While estritamente
115
REGRAS DE ESTILO
Modularizao
modularize - use sub-rotinas e funes escreva e teste um programa grande em segmentos pequenos use as funes das bibliotecas
116
REGRAS DE ESTILO
Input
teste a plausibilidade e a validade dos "inputs" termine o input por marca de fim de ficheiro e no por contagem identifique inputs incorrectos (validao) - use procedimentos de recuperao se isso for possvel torne o input fcil de preparar e verificar, e o output auto-explicativo use formatos de inputs uniformes
Engenharia de Mquinas Martimas M04 Computadores e Programao 117
REGRAS DE ESTILO
Comentrios
assegure-se que os comentrios e o cdigo concordam no seja redundante, escreva comentrios que acrestem algo ao cdigo no comente demais no comente mau cdigo, reescreva-o use comentrios como prefcio a cada segmento
Engenharia de Mquinas Martimas M04 Computadores e Programao 118
REGRAS DE ESTILO
Teste de Debug
no pare no primeiro bug use compiladores com facilidade de debug verifique os erros um por um teste os seu programa para todos os valores limites teste alguns casos manualmente
119
REGRAS DE ESTILO
Optimizao
no faa faa o programa certo antes de o fazer rpido faa o programa seguro antes de o fazer rpido faa o programa simples antes de o fazer rpido no sacrifique a clareza por pequenos ganhos em eficincia se o programa no corre, no importa a sua rapidez
Engenharia de Mquinas Martimas M04 Computadores e Programao 120
REGRAS DE ESTILO
Optimizao
mais fcil optimizar um programa que corre, do que conseguir fazer correr um programa optimizado faa medies antes de fazer alteraes para optimizar faa medies depois das alteraes identifique claramente as zonas do programa que o tornam lento
Engenharia de Mquinas Martimas M04 Computadores e Programao 121
REGRAS DE ESTILO
Optimizao
identifique claramente a responsabilidade que cabe ao hardware e ao software na lentido do programa verifique o contributo devido estrutura dos dados
122
REGRAS DE ESTILO
Outros conselhos
evite o uso de variveis temporrias deixe o computador fazer as converses de dados. use parentesis para evitar ambiguidades escolha nomes de variveis e segmentos que no permitam confuso assegure-se que todas as variveis so inicializadas antes de serem usadas
Engenharia de Mquinas Martimas M04 Computadores e Programao 123
REGRAS DE ESTILO
Optimizao
inicialize as constantes com declaraes de constante ou valores iniciais inicialize as variveis com cdigo executvel no compare nmeros em floating point apenas na condio de igualdade assegure-se que os casos especiais so verdadeiramente especiais
Engenharia de Mquinas Martimas M04 Computadores e Programao 124
REGRAS DE ESTILO
Optimizao
quando trabalhar numa equipa defina priori regras de desenho e codificao que constituam Normas
125
126
FIM
127