Lógica de Programação

Segue então o artigo. Preciso dar umas arrumadas nele, mas está aí. Qualquer coisa quem quiser ver o artigo original em (.doc) e a apresentação sobre o tema (mais completa e em pdf)

Lógica de Programação
Edward Boszczowski1, Jorge Augusto F. de Souza1
1Centro de Ciências Tecnológicas – Universidade do Estado de Santa Catarina (UDESC)
Caixa Postal 15.064 – 91.501-970 – Joinville – SC – Brasil
moc.liamg|bedraved#moc.liamg|bedraved, rb.moc.tsebi|azuos_f_egroj#rb.moc.tsebi|azuos_f_egroj

Resumo. Este artigo tem o objetivo de apresentar o conceito e representação da lógica de programação, focado para o desenvolvimento de aplicações computacionais.

1. Introdução

Para que uma pessoa possa trabalhar com sistemas e programas, ela precisa utilizar-se de lógica de programação. Segundo Moraes (2000), lógica de programação consiste na técnica de encadear pensamentos para atingir determinado objetivo. Esse artigo visa demonstrar a utilização da lógica de programação na resolução de problemas, com uma apresentação das formas utilizadas para representá-la no capítulo seguinte.

2. Desenvolvendo a Lógica de Programação

A lógica de programação tem como função a resolução de problemas, então uma boa forma de praticar é utilizá-la na resolução de problemas do cotidiano. Um exemplo seria retirar um objeto de uma caixa fechada e depois fechá-la, os passos seriam abrir a caixa; retirar o objeto de dentro da caixa; fechar a caixa. Observa-se que existe uma ordem para resolver determinado problema: eu não poderia retirar o objeto da caixa antes de abri-la.
Vale ressaltar a importância de passar a lógica no papel para o desenvolvimento da mesma. Como exemplo será utilizado um programa que se aprende a fazer na escola, conhecido como Máximo Divisor Comum ou MDC:

MDC de a e b
1 se b = 0, então o MDC de a e b é a
2 caso contrário, o MDC de a e b é igual o MDC de b e o resto da divisão
de a por b

É possível não compreender a lógica acima, no entanto na escola se aprende a fazer essa conta no caderno que não é nada mais que lógica de programação no papel. Com a prática consegue-se fazer a conta de cabeça, ou seja, dominou a lógica daquele programa.
No último exemplo pode-se notar a utilização da instrução “se” e caso contrário (“senão”) além da “é igual” . Essas instruções são uma das formas mais comuns de representar a lógica de programação, que será visto logo a seguir.

3. Representando a Lógica

Com o intuito de facilitar a abstração, foram criadas estruturas para representar o pensamento lógico tanto graficamente, como os diagramas de blocos, como na forma de linguagem hipotética. Essas estruturas serão apresentadas nesse capítulo.

3.1 Estrutura de Decisão

A estrutura de decisão é composto por instruções que fazem com que o programa proceda de uma ou outra maneira, de acordo com decisões baseadas em função dos dados ou resultados anteriores. As estruturas de decisão mais utilizadas são “Se Então”, “Se Então Senão” e “Caso Selecione”.
A estrutura “Se Então” é sucedida por um comando, se a condição é satisfeita então o comando será executado. Como exemplo, um dado algoritmo é utilizado para determinar se um número é par em linguagem hipotética.

SE NÚMERO/2 = RESTO 0 ENTÃO O NÚMERO É PAR
A linguagem busca aproximar a representação da lógica de programação com a linguagem humana, facilitando a compreensão dos passos lógicos.
Agora o mesmo exemplo em diagramas de blocos:

flickr:13395040135

Diagramas de blocos é uma forma eficaz de representar os passos lógicos, permitindo uma fácil visualização do fluxo de um algoritmo. Um diagrama é composto por uma seqüência de símbolos padronizados e bem definidos. No exemplo acima é possível observar três deles.

flickr:13395402854

Outros símbolos serão apresentados nesse artigo de acordo com o momento que eles aparecerem.
A próxima estrutura de decisão a ser apresentada é a “Se Então Senão”. A diferença dessa estrutura com a anterior é que um comando também é executado quando a condição não for cumprida. Utilizando o exemplo anterior, agora caso a divisão por dois não tiver resto zero o número em questão será ímpar.

SE NÚMERO/2 = RESTO 0 ENTÃO O NÚMERO É PAR
SENÃO O NÚMERO É ÍMPAR

Em diagrama:

flickr:13402853183

A estrutura de decisão “Caso Selecione” é utilizada para comparar um resultado de uma expressão com vários casos distintos.
O exemplo de Moraes(2000) demonstra bem essa estrutura. O algoritmo testa vários casos da seleção de uma opção feita pelo o usuário, cada caso fará com que o algoritmo imprima um determinado texto ou se nenhum caso for atendido o algoritmo irá imprimir outro.

CASO SELECIONE A OPÇÃO…
…COMO 1 IMPRIMIR “TÍTULO 1”
…COMO 2 IMPRIMIR “TÍTULO 2”
…COMO 3 IMPRIMIR “TÍTULO 3”
SENÃO IMPRIMIR “OPÇÃO ERRADA”

Agora em diagrama:

flickr:13395401904

Nesse exemplo de diagrama, novos símbolos são utilizados.

flickr:13395036755

3.2 Estrutura de Repetição

A estrutura de repetição é utilizada para que um conjunto de passos seja executado várias vezes sendo que a quantidade pode ser definida ou indefinida ou se uma determinada condição for alcançada. Esse item irá apresentar as estruturas de repetição “Enquanto X, Processar”, “Até que X, Processar”, “Processar, Enquanto X” e “Processar, Até que X”.
No “Enquanto X, Processar” o processo somente ocorre enquanto a condição for verdadeira. Já o “Até que X, Processar” é o contrário, ou seja, o processo ocorre enquanto a condição for falsa.
A diferença das estruturas “Processar, Enquanto X” e “Processar, Até que X” é que o processo é feito antes da condição, então mesmo que a condição não seja cumprida o processo ocorrerá ao menos uma vez. Abaixo está o diagrama de blocos representando cada estrutura.

flickr:13395398284

4. UML

A UML é uma linguagem para a modelagem de sistemas sejam eles de baixo, médio ou de alta complexidade. Sua estrutura é formada em grande parte de elementos da programação orientada a objetos como classes, pacotes, herança, entre outros. Apesar disso a UML não é restrita ao território das linguagens orientadas a objeto, podendo ser utilizado para os mais diversos projetos, como os de programação paralela e modelando também sistemas transacionais.

4.1 Histórico da UML

Até algum tempo atrás o que dominava as linguagens era o paradigma estruturado, o qual basicamente é composto de três estruturas: seqüência, repetição e seleção. No meio da década de 80 a situação começa a se inverter, com o mecado começando a adotar o paradigma orientado a objetos, o qual é consolidado na década de 90.
Para se projetar sistemas baseados em tal paradigma, surgem diversas metodologias. Uma delas foi criada por James Rumbaught que se destacava na anáise orientada a objeto. Outra surgiu devido a Grady Booch, que era melhor para o projeto orientado a objetos. Após o lançamento destas duas metodologias, os autores tentarem se unir para fazer uma metodologia unificada. Para auxiliar esta tarefa Ivar Jacobson, criador da engenharia de software orientada a objetos se juntou a eles.
Em 1997 os três completaram um esboço (draft) da UML 1.0 e mandaram para a OMG, organização que lida com a definição de metodologias orientadas a objeto. Neste mesmo a especificação foi adotada e aos poucos ela se consolidou como a metodologia dominante para a maior parte dos projetos de software existentes.

4.2 Os diagramas da UML

Para que um sistema de software seja corretamente escrito a UML emprega diversos tipos de diagramas, cada um com um propósito específico. Estes diversos tipos de diagramas totalizam 13 e são divididos em três categorias: Estrutura, Comportamento e Interação.
Diagramas de estrutura: diagrama de classe, diagrama de objeto, diagrama de componente, diagrama de estrutura composta, diagrama de pacote e diagrama de distribuição.
Diagramas de comportamento: diagrama de caso de uso, diagrama de atividade e diagrama de máquina de estado.
Diagramas de interação: diagrama de seqüência, diagrama de comunicação, diagrama de temporização e diagrama de panorama de interação.
Cada um destes diagramas desempenha e um papel e para demonstrar um pouco da importância deles, alguns exemplos serão vistos em seguida.

4.2.1 Diagramas de casos de uso

Este diagarama faz parte dos diagramas de comportamento, os quais têm sua
importância por mostrar o comportamento de um dado objeto, processo de negócio. Segundo Miller (2003), diagramas de casos de uso descrevem o que um sistema faz do ponto de vista de um observador externo ao em vez de como faz. Esta característica torna-se de suma importância, pois permite a qualquer pessoa que olhar o diagrama percebe como ele se comporta e quais são suas principais atividades.
Um exemplo de caso de uso é o da figura abaixo que ilustra um paciente marcando uma consulta num sonsutório médico.

flickr:13395385944
Figura 1. Caso de uso para um sistema de clínica de saúde (Miller, 2003)

Apenas observando-se o diagrama pode-se observar que o cliente deve marcar ou cancelar uma consulta com a pessoa que organiza os horários de consulta (scheduler), tem que requisitar medicação com um médico e ainda pagar a conta com o gerente. Neste caso de uso observa-se quais atores interagem com o sistema, dando uma visão geral do próprio sistema.

4.2.2 Diagramas de classe

Os diagramas de classe são diagramas estruturais, o que significa que seu propósito
é demonstrar a estrutura de algum componente ou característica do sistema, neste classo as classes. Isto evidencia a importância desse diagrama, pois classes são muito importante e um observador externo ao em vez de como faz. Esta característica torna-se de suma importância, pois permite a qualquer pessoa que olhar o diagrama percebe como ele se comporta e quais são suas principais atividades.
Um exemplo de caso de uso é o da figura abaixo que ilustra um paciente marcando uma consulta num sonsutório médico.em projetos orientados a objetos, uma vez que elas é que dão o esqueleto de um objeto, a qual se bem projetada favorece o reuso e a flexibilidade no projeto de software

flickr:13395396664
Figura 2. Diagrama de classe de um catálogo de revenda (Miller, 2003)

A figura 2 mostra um diagrama de classe de um catálogo de revenda. Tal diagrama mostra a estrutura das classes e o relacionamento entre elas, evidenciando assim a interligação que existe no sistema e como ele está organizado.

4.2.3 Diagramas de seqüência

O diagramas de seqüência pertence à classe dos diagramas de interação. Um
diagrama de interação mostra como os objetos interagem entre si trocando mensagens num sistema. A organização de um diagrama de seqüência é em relação ao tempo, mostrando como com o passar do tempo as interações ocorrem entre objetos, visualizando quais mensagens são trocadas e o tempo que demora esta interação.

flickr:13395030255
Figura 3. Diagrama de seqüência para um sistema de reserva de hotel (Miller, 2003)

Pode-se ter uma idéia do funcionamento dos diagramas de seqüência olhando oara a figura 3. Ela mostra que a interação começa da esquerda para a direita, com o objeto window que manda a mensagem para aChain que a encaminha imediatamente em aHotel, aonde é verificado por meio de uma iteração se hã algum quarto disponvel. Se houver o diagrama prossegue at a confirmação da reserva.

5. Conclusão

Aqueles que querem desenvolver aplicações computacionais em qualquer área precisam desenvolver o pensamento lógico através da prática. Nas várias formas que ela é representada, a lógica de programação é o elemento chave na superação de obstáculos.

Referências

Miller, P. (2007) “Pen & Paper Programming”, http://blogs.claritycon.com/blogs/peter_miller/archive/2007/10/10/3307.aspx, Março.

Moraes, P. S.(2000) “Lógica de Programação”, Apostila para o curso básico de lógica de programação, Universidade de Campinas, Brasil.

OBJECT MANAGEMENT GROUP (2009) “Introduction to OMG's
Unified Modeling Language”, Disponível em: <http://www.omg.org/gettingstarted/what_is_uml.htm>, Acesso em: 19. mar

Sonoda, E. (2007) “Como funciona um computador”, http://www.ime.usp.br/~elo/IntroducaoComputacao/Como%20funciona%20um%20computador.htm, Março.

Arquivos:

apLogica
Artigo Logica

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.