• Nenhum resultado encontrado

4.2 T I POS DE PROGRAMAÇAO

Existem formas diferentes de se programar, mesmo utilizando a mesma língua-

,

gem de programação. E como se fossem comparados textos que tratam do mesmo as- sunto mas que foram escritos por pessoas diferentes.

Apesar disso, as linguagens de programação possuem características e regras que determinam como o programa deverá ser escrito para que seja 'interpretado' pela

' .

maquma.

4.2. 1 CONCEITOS S O B R E A PROG RAMAÇAO L I N E A R -

A programação linear pressupõe a criação de programas que, na sua execução, obedeçam a uma seqüência de passos executados consecutivamente, com início e fim específicos. Esse princípio era utilizado por linguagens mais antigas, como o Basic, no qual as linhas de código eram numeradas uma a uma e eventuais desvios eram executa­ dos apontando-se para a linha desejada.

Embora alguns tipos de linguagem tenham restrições na forma de programação, dando pouca flexibilidade ao desenvolvedor, nada impede que programas lineares se­ jam gerados utilizando-se de linguagens estruturadas ou orientadas a objetos.

A desvantagem da programação linear é a complexidade. Programas lineares extensos são difíceis de ser desenvolvidos e até compreendidos.

4.2.2 "

CONCEITOS SOB R E A PROG RAMAÇAO

E S T R U T U RADA

Usando o velho provérbio "dividir para conquistar", pode-se afirmar que, para a consecução de um objetivo, é melhor e bem mais fácil dividir as tarefas a serem realiza­ das em etapas, executando-as uma por vez, até que todo o trabalho tenha sido realizado.

Pode-se, ainda, pensar que esse trabalho pode ser realizado em equipe. A divisão do trabalho e a distribuição adequada das tarefas a cada um dos elementos da equipe, se

bem coordenadas, com certeza produzirão resultados melhores e bem mais rápidos. O problema, muitas vezes, está em como dividir essas tarefas de forma adequada e eqüita­ tiva e gerenciar o seu desenvolvimento.

Em programação, pode-se pensar da mesma forma. A construção de um progra­ ma monolítico que execute uma tarefa complexa, além de ser complicada e demorada, pode não produzir o resultado esperado. Mesmo que o resultado seja alcançado, o tem­

po despendido pode ser demasiado. Essa situação se agrava se for considerado que esse tempo gasto representa custos no desenvolvimento de uma aplicação que podem supe­ rar as expectativas de custos do projeto.

Deve-se utilizar esta filosofia para criar um programa extenso e complicado. Um bom programador deve ser como um bom gerente no momento de atribuir tarefas em um programa: deve separar as tarefas que o programa deve realizar, depois deve atacá­ las uma a uma, tornando o trabalho menos assustador. Essa abordagem é o que norteia o conceito de programação estruturada.

CAPÍTULO 4 - CONCEITOS DE PROGRAMAÇÃO 33

Na programação estruturada, a divisão de tarefas é um processo chamado de modularização. Nesse processo, divide-se o programa em pmtes ou módulos que exe-

,

cutam tarefas específicas. E importante que essas tarefas, representadas pelos módulos, sejam específicas e cada uma delas seja o mais independente possível das demais reali­

zadas por outros módulos do programa. Isto é, a independência funcional está relacio­ nada diretamente à modularização. Por exemplo, suponha que você pertença a uma equipe que está participando de uma gincana na qual várias tarefas são determinadas e o prazo fmal está estabelecido. Vence a equipe que completar o maior número de tarefas dentro do prazo. Se as tarefas forem divididas adequadamente, será grande a chance de que todas sejam cumpridas no tempo determinado. Por outro lado, se ocorrer um erro nessa distribuição e alguém acabar fazendo algo que outro elemento do grupo também esteja fazendo, com certeza o tempo não será suficiente ou alguma tarefa deixará de ser realizada.

Os procedimentos ou funções são blocos de programa que executam detenui­ nada tarefa. Cada um desses blocos de código recebe um nome, o qual é utilizado como chamada do procedimento ou função. Tanto procedimentos quanto funções podem re­ ceber valores para que possam realizar suas tarefas. A diferença é que os procedimen­ tos, embora possam receber valores, não retornam outros valores como resultado, en­ quanto uma função retoma valores como resultado das operações que realizou.

Os nom.es dos procedimentos, normalmente, são palavras ou pequenas frases que procuram associá-los de forma mnemônica à tarefa realizada. Por exemplo:

AtualizarDados ( )

As funções são nomeadas da mesma maneira que os procedimentos, lembran­ do que o nome de uma função pode ser utilizado em uma expressão como se fosse

uma variável, porque uma função retoma um valor quando termina sua execução. Por exemplo:

soma (x, y) .

A seguir é apresentado um pequeno programa em C, que executa a soma de dois números introduzidos pelo teclado e exibe o resultado no vfdeo.

1 . / * funcao . c * /

2 . ma in ( )

3 . (

4 . int x , y, r;

5 . print f ( "Digite dois números: " ) ;

6 . scanf ( "%d %d" , &x , &y) ;

7 . r = soma (x, y) ;

8 . printf ( "A soma dos números é : %d" , r ) ;

9 . )

10 . / * soma ( ) * /

1 1 . / * retorna a soma de dois numeros * /

13 . int

1 4 . {

J ' k ;

1 5. return ( j +k ) ;

1 6 . }

No exemplo, as variáveis x e y recebem os números cuja entrada é feita pelo

teclado (linha 6). A função soma ( ) é chamada na linha 7, com a passagem dos valores. A função é executada a partir da linha 1 2 e, na linha 1 5 , retoma o valor da soma dos

'

numeros.

O exemplo é bastante simples e, obviamente, não seria necessário criar uma função apenas para somar dois números. Serve apenas como ilustração para a chamada de uma função com passagem e retorno de valores.

Ainda dentro do exemplo, podem-se encontrar outras funções internas da pró­ pria linguagem, como printf ( ) e scanf ( ) que funcionam, a princípio, da mesma

forma que a função soma ( ) .

Estudaremos outros exemplos de procedimentos e funções no Capítulo 7, que tratará com mais profundidade desse assunto.

Quando se pensa na criação de um programa, surge a pergunta: por onde devo começar? Uma forma de desenvolver um programa é partir de sua representação em pseudocódigo ou fluxograma, conforme discutido no Capítulo 2. O fluxograma é um tipo de algoritmo que utiliza símbolos gráficos para representar as ações ou instruções a

serem seguidas. Assim como o pseudocódigo, ele é utilizado para organizar o raciocínio lógico a ser seguido para a resolução de um problema ou para a definição dos passos na execução de uma tarefa.

Cada etapa importante definida em seu fluxograma ou pseudocódigo pode ser usada como um nome de sub-rotina (procedimento ou função) no programa. Essas eta­ pas devem estar definidas e claramente identificadas em seu esboço, de forma que se

possa saber onde são utilizadas.

4.3

CONC E I TOS