Você está na página 1de 86

LGICA DE PROGRAMAO

EDIO N 1 - 2007

LARCIO DA CRUZ LOUREIRO ___________________________________________________________________ Apoio Gesto e Execuo Contedo e Tecnologia

SOCIESC Sociedade Educacional de Santa Catarina

SUMRIO

AULA 1 - INTRODUO LGICA E AO PROCESSO DE PROGRAMAO .. 7 AULA 2 - LINGUAGENS DE PROGRAMAO .................................................. 16 AULA 3 - FORMAS DE REPRESENTAO DE UM ALGORITMO .................... 27 AULA 4 - VARIVEIS E CONSTANTES .............................................................. 42 AULA 5 - ESTRUTURAS DE PROGRAMAO - CONDICIONAIS .................... 52 AULA 6 - ESTRUTURAS DE PROGRAMAO - REPETIO.......................... 68 AULA 7 - MODULARIZAO DE ALGORITMOS ............................................... 77

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Apresentao

Este livro didtico contm a disciplina de Lgica de Programao. O material apresenta aos alunos do EAD os fundamentos da lgica de programao de sistemas informatizados, estimulando o desenvolvimento de um bom estilo de construo de sistemas e o pensamento lgico. Os tpicos apresentados esto distribudos em aulas, e cada uma avana gradativamente nas tcnicas essenciais para a elaborao de programas de computadores. importante ressaltar que o livro foi desenvolvido com o objetivo de oferecer um aprendizado independente, que est inerente aos estudos do EAD, e o contedo foi revisado com o intuito de oferecer uma linguagem simples, objetiva e estimulante. Lembre-se de que a sua passagem por esta disciplina ser tambm acompanhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax, telefone, e-mail ou Ambiente Virtual de Aprendizagem. Entre sempre em contato conosco quando surgir alguma dvida ou dificuldade. Toda a equipe ter a maior alegria em atend-lo, pois a sua aquisio de conhecimento nessa jornada o nosso maior objetivo. Acredite no seu sucesso e bons momentos de estudo! Equipe Tupy Virtual.

Carta do Professor
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Apesar do que voc possa ter ouvido, programar um computador no difcil. a habilidade que qualquer um pode desenvolver, dedicando prtica, pacincia e muito caf. Wang (2007)

Caro aluno, Desde o advento dos computadores, as comunidades de programadores de software vm crescendo no somente para a criao de solues para atender s novas necessidades do mercado, mas tambm uma resposta para acompanhar as mudanas dos negcios empresariais. Esta constante evoluo (ou transformao) nos oferece hoje recursos poderosos e ao mesmo tempo simples, para a construo de sistemas. A criao de programa para computadores uma atividade que sofre do mesmo sentimento de aprender matemtica: h pessoas que adoram e h pessoas que odeiam. Muitos especialistas tentam encontrar meios para melhorar as abordagens didticas, que facilitem a conquista de novos adeptos, mas ainda se percebe que h uma mistura de sentimento e vocao. Porm, diferente da matemtica, a programao de sistemas uma atividade interativa que fornece feedback imediato, como resultado de explorao, investigao e auto-avaliao do programador. importante observarmos que lgica uma prtica comum em nossas atividades dirias, desde a deciso em qual local almoar at aceitar um emprego. Por isso, acredita-se que os obstculos da lgica de programao no esto nos conceitos e sim nas linguagens de programao utilizadas, bem como na utilidade do trabalho de construo que est sendo realizado. Por outro lado, ao conquistar sua posio como programador, voc poder sentir a grande satisfao de um artista, j que utilizar seus conhecimentos e habilidades para construir solues que sero utilizadas por outras pessoas, para resolver problemas. Ento, eis a proposta deste trabalho: oferecer uma abordagem simples e construtiva para minimizar os desafios que a disciplina exige do aluno. Incentivlo(a) a persistir na evoluo dos seus estudos de lgica de programao, e faz-lo(a) perceber que a prtica trar os resultados esperados. Professor Larcio da Cruz Loureiro

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Cronograma de Estudo
Acompanhe no cronograma abaixo os contedos das aulas e atualize as possveis datas de realizao de aprendizagem e avaliaes. Semana Carga horria
8 1 12 8 2 12 12 8 Estruturas de Programao Condicionais Estruturas de Programao Repetio Modularizao do programa _/_ a _/_ _/_ a _/_ _/_ a _/_

Aula
Introduo Lgica de Programao e ao Processo de Programao Linguagens de Programao Variveis e Constantes

Data / Avaliao
_/_ a _/_ _/_ a _/_ _/_ a _/_

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Plano de Estudo
Ementa Fundamentos da lgica de programao, motivadores e histrico, processo e os passos que envolvem a programao de computadores, linguagens de

programao, interpretadores e compiladores, conceitos bsicos sobre algoritmos e suas representaes, construir algoritmos com variveis, constantes, operadores, estruturas condicionais e de repetio.

Objetivos da Disciplina

Geral
.Transmitir ao aluno os conhecimentos essenciais para a programao de computadores, aprendendo termos de lgica de programao e seus componentes. Incentivar no aluno a capacidade de interpretao de problemas e a composio de solues usando regras lgicas. Especficos

- Conhecer os principais componentes para a programao de computadores; - Desenvolver programas usando algoritmos, representados atravs de pseudocdigos e fluxogramas; - Acostumar-se com as regras de sintaxe utilizadas em linguagem de programao. Carga Horria: 60 horas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Aula 1

INTRODUO LGICA E AO PROCESSO DE PROGRAMAO

Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Descrever os fundamentos lgicos associados ao desenvolvimento de software; Descrever o processo de desenvolvimento de software; Descrever as tcnicas para a resoluo de problemas; Identificar as fases de execuo de um programa.

Contedos da aula

Acompanhe os assuntos desta aula e, se preferir, ao trmino, assinale o contedo j estudado. Histria do desenvolvimento de sistemas Terminologias O processo de desenvolvimento de software Fases de execuo de um programa Tcnicas para resoluo de problemas Exerccios propostos. Prezado aluno, seja bem vindo a nossa primeira aula. Vamos conhecer as bases da lgica de programao, como surgiu e sua evoluo. Boa Aula!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

1 HISTRIA DO DESENVOLVIMENTO DE SISTEMAS

As linguagens de programao de hoje so o resultado de desenvolvimentos que iniciaram em 1950. Conceitos numricos foram inventados, testados e aprimorados a partir da incorporao de sucessivas linguagens de programao. Com raras excees, os fundamentos de uma linguagem de programao so fortemente influenciados pela experincia com linguagens anteriores. medida que as linguagens evoluram, novos conceitos e paradigmas continuam a ser criados e o cenrio de linguagens de programao daqui a dez anos ir ser, provavelmente, muito diferente da experincia atual. Uma das linguagens antigas de alto nvel que foi um grande sucesso, a Fortran, introduziu expresses simblicas e a capacidade do programador criar procedimentos modulares. A ltima verso do padro da linguagem foi publicado em 1997. A linguagem COBOL tambm foi uma linguagem de grande adeso pelos programadores e empresas (e ainda considerada uma opo importante), e sua principal contribuio foi o conceito de descrio de dados. A linguagem Fortran foi amplamente adotada pela computao numrica e a linguagem COBOL, para o processamento de dados comerciais. Nos dois casos, trs necessidades influenciaram no aprimoramento das linguagens: A constante necessidade de aprimorar a capacidade da linguagem para atender s complexidades dos problemas apresentados; Aumentar a velocidade na construo de programas e com isto fazer mais com menos; Facilitar a adoo da linguagem por profissionais que possuam um nvel mnimo de conhecimento, necessrio para a construo de programas. Atualmente, podemos considerar que as linguagens esto mais prximas das trs necessidades descritas anteriormente, mas alguns incovenientes se apresentaram medida que essa abordagem evolui: Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Com uma construo cada vez mais fcil, reduz o nvel de domnio do programador sobre o conhecimento da linguagem. Em caso de problema na construo do programa, o programador pode ter dificuldades para resolv-lo, j que no possui um amplo controle sobre as peculiaridades da linguagem; Com a necessidade de velocidade na construo de sistemas, os aplicativos utilizados acabam gerando maior importncia que a prpria linguagem. Isso exige do programador domnio sobre a linguagem, como tambm, sobre o prprio programa que ser utilizado para implementar a linguagem; Com o volume cada vez maior de recursos disponveis na linguagem, exige-se cada vez mais a atualizao do programador em novas tecnologias, sem conseguir obter o domnio completo de recursos essenciais; Com a insero de mais recursos linguagem, para que o programador esteja no topo da tecnologia, precisar dedicar cada vez mais tempo para aprender e construir recursos, que antes poderiam ser realizados de forma mais simples. PERCEBEU O DESAFIO? medida que evolumos as linguagens de programao, melhoramos a capacidade e velocidade na construo de programas, mas tambm geramos cada vez mais opes para se resolver um problema, aumentando a complexidade para a elaborao de solues. Ento, diante desse desafio, imprescindvel ao programador perceber as nuances que se apresentam nas linguagens de hoje. Por isso a grande importncia que a Lgica de Programao desempenha sobre o programador, formando uma slida base de discernimento a ser aplicada na adoo de uma linguagem especfica. Com uma forte base de lgica de programao, o programador ter maiores chances em dominar qualquer linguagem de desenvolvimento de sistemas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

10

2 TERMINOLOGIAS NO DESENVOLVIMENTO DE SISTEMAS

Como todo segmento profissional, desenvolver sistemas possui um amplo conjunto de termos tcnicos. Esses termos so o reflexo de anos de mudanas e particularidades aplicadas nas linguagens de programao, mas podem variar de acordo com o contexto em que so utilizadas. Nesse momento do curso importante voc entender os seguintes termos: Termo Programa de computador Especificao Significado
um conjunto de instrues que orientam o computador para o que fazer e quando fazer. Documento que descreve como o problema deve ser resolvido, fazendo-se uso da linguagem de programao.

Implementar

Ato de escrever o cdigo de programao para atender a uma especificao de soluo para um problema.

Cdigo de Programao

o contedo da linguagem de programao, inserido pelo programador, de acordo com as regras da linguagem

Processo de desenvolvimento Compilar o programa Depurar o programa

Compreende todas as fases e atividades para a construo de um sistema. Traduzir o cdigo de programao para a linguagem de mquina do computador. Utilizar uma ferramenta para verificar se o cdigo de programao est construdo de acordo com as regras da linguagem de programao.

Sintaxe da linguagem

So

as

regras

implcitas

na

linguagem

de

programao que o programador precisa respeitar para que o programa funcione adequadamente.

Processamento

o momento em que o programa est realizando a execuo do cdigo inserido pelo programador.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

11

3 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Uma medida de sucesso no desenvolvimento de software a capacidade em produzir bons produtos, com bons processos e de forma consistente. Para atender esse tipo de consistncia, depende primariamente da presena de dois fatores: Pessoas que sabem como construir programas; Entendimento claro do que precisa ser feito e qual o problema que precisa ser solucionado, estabelecendo limites objetivos e claros. Segundo Donaldson e Siegel (2000), os seguintes princpios determinam um bom processo de desenvolvimento de software: Planejar o trabalho antes de realiz-lo; Obter o acordo na definio de responsabilidades; Estabelecer e incentivar equipes autogerenciveis; Determinar pontos de verificao; Manter uma contnua interao com o cliente do sistema; Monitorar o progresso do trabalho; Orientar o responsvel pelo trabalho e treinar as equipes; Fornecer avaliaes intermedirias dos trabalhos; Fornecer um feedback das entregas realizadas pelos profissionais envolvidos; Melhorar constantemente o processo de desenvolvimento, ajustando os erros enfrentados nos processos anteriores. Desse modo, podemos afirmar que o trabalho de desenvolvimento de sistemas tambm recebe premissas que facilitam a entrega de produtos e, conseqentemente, asseguram sua qualidade. Um ciclo de desenvolvimento de software parte de princpios. Chama-se ciclo porque um conjunto de etapas que, juntas, giram de acordo com um sentido lgico de seqncia a ser executada, durante o trabalho de construo de um sistema. Mostramos um exemplo de ciclo na figura 1.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

12

Figura 1 Ciclo de Desenvolvimento de Software Dessa forma, podemos descrever sete passos para atender um ciclo de vida de desenvolvimento: 1. Definio do Problema; 2. Desenho da soluo; 3. Refinamento da soluo; 4. Estratgia de testes do desenvolvimento; 5. Codificao do programa e testes; 6. Documentao; 7. Manuteno do programa. A construo de cdigo de programao tambm possui seu prprio ciclo de elaborao (figura 2), que faz parte do ciclo maior para o desenvolvimento da soluo apresentada anteriormente.

Figura 2 Ciclo de Construo de Cdigo do Programa

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

13

4 AS FASES DE EXECUO DE UM PROGRAMA

Um programa de computador possui trs fases distintas: Entrada Processamento Sada

Na fase de entrada de dados, voc fornece os dados para o computador, no momento em que o programa solicita informaes. A fase de entrada de dados a primeira fase de execuo de um programa de computador. A segunda fase a de processamento, na qual o programa realiza aes com os dados digitados, de acordo com a programao implementada. A terceira fase a de sada, em que o computador apresenta o resultado do processamento tambm de acordo com a programao realizada (sada em tela ou na impressora). O processo de construo de programas deve considerar as trs fases, principalmente quando a especificao envolve o usurio do computador. Tambm importante ressaltar que, em cada uma das fases, h um conjunto de orientaes que o programador precisa seguir e a linguagem de programao em uso, suporta as trs fases de forma diferente, mas apresenta os mesmos resultados esperados em cada fase.

5 TCNICAS PARA A RESOLUO DE PROBLEMAS

O matemtico George Polya (1945), uma autoridade na resoluo de problemas, dividiu a soluo de problemas em quatro passos: 1. Entender o problema: este primeiro passo o mais complexo e o mais importante. O objetivo obter o maior nmero de informaes sobre o problema, usando tcnicas como entrevistas e observaes, e elaborando modelos representativos que facilitem o entendimento do problema.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

14

tambm importante verificar a fonte de informaes para obter o entendimento do problema; 2. Elaborando um plano: uma vez entendido o problema, necessrio elaborar uma viso sobre a soluo para o problema. Um plano composto de um conjunto de atividades que devero ser realizadas para a soluo do problema. Nesta fase importante: a. Localizar se problemas semelhantes j foram solucionados e obter a informao necessria para reproduzir a soluo para o novo problema; b. Restringir o problema em uma forma simples que possa ser solucionado. Caso se apresente um grande problema, dividir em partes para facilitar a soluo; c. Generalizar o problema para garantir que futuros problemas semelhantes possam ser resolvidos da mesma forma (ou com pequenos ajustes); 3. Executar o plano: uma vez o plano definido, deve ser acompanhado para que o resultado esperado seja atingido. Cada elemento do plano dever ser verificado aps ser aplicado. Se partes do plano se apresentaram insatisfatrias, o plano dever ser revisado; 4. Avaliao: finalmente, o resultado dever ser avaliado para garantir que est vlido e o problema est resolvido.

SNTESE

Nesta aula voc pde perceber como a lgica de programao uma disciplina fundamental para o programador, baseando-se nos desafios e nas tcnicas atuais para a resoluo de problemas. Como toda atividade sempre possui uma histria, voc aprendeu que a histria da programao de computadores um fato relevante a ser observado, e

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

15

permite que possamos entender como as linguagens de programao chegaram at a atualidade. Falamos sobre as tcnicas para o desenvolvimento de software e quais os elementos fundamentais para essas tcnicas, desde a terminologia bsica at os passos que devem ser seguidos para um resultado final de sucesso. Espero que voc esteja gostando e obtendo o sentimento de segurana nos tpicos que estamos abordando. Vamos em frente!

EXERCCIOS PROPOSTOS

1) De acordo com seus estudos, descreva quais so os principais desafios do programador da atualidade. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

2) O que cdigo de programao? ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

3) Liste os passos para o ciclo de desenvolvimento de um sistema. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

16

Aula 2

LINGUAGENS DE PROGRAMAO

Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Entender as similaridades entre a linguagem humana e as linguagens utilizadas para programar um computador; Relacionar as caractersticas que envolvem a construo de um programa; Fornecer orientaes para selecionar uma linguagem de programao para uso; Definir algoritmo e reconhecer seus elementos essenciais.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao trmino, assinale o contedo j estudado. Lngua vs. Linguagem de programao Compiladores vs. Interpretadores Programao e o sistema operacional Programao e a Internet Escolhendo uma linguagem de programao O que so algoritmos? Exerccios propostos

Prezado aluno, nesta segunda aula, voc aprender quais so os componentes de uma linguagem de programao de computadores, Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

17

quais so os elementos que influenciam o desenvolvimento de programas e o principal assunto em lgica de programao: algoritmos. Vamos em frente e boa aula!

1 LNGUA VS. LINGUAGEM DE PROGRAMAO

A linguagem humana baseada em smbolos, que fornecem um meio para a comunicao entre as pessoas. constituda por elementos que determinam as regras e devem ser seguidas para que se mantenha uma comunicao adequada. Uma linguagem de programao de computador recebe as mesmas premissas, ou seja, constituda por um conjunto de regras que determinam a forma como o computador ir executar atividades especficas. O Novo Dicionrio Aurlio da Lngua Portuguesa define linguagem como: o uso da palavra articulada ou escrita como meio de expresso e de comunicao entre as pessoas. O Dicionrio tambm descreve a Linguagem de Programao como: linguagem que se expressa um conjunto de aes de forma aceitvel pelo computador. importante percebermos essa semelhana para que tenhamos a primeira absoro das regras associadas a uma linguagem de computador e, com isso, possamos obter uma adaptao construtiva na programao de computadores. Hoje vivemos um nvel de uso das linguagens de computador muito prximas da linguagem humana. Usando ainda a referncia ao Novo Dicionrio Aurlio, as linguagens atuais so consideradas Linguagem de Programao de Alto Nvel, ou seja, a linguagem de programao que se assemelha ao ingls comum, o que torna mais fcil seu aprendizado e uso na definio de programas de computador. Fica ento a mensagem de que no h nada de complicado associado s linguagens de programao de computadores. Na verdade um constante exerccio da memria humana que, no momento da construo de um programa, o programador precisa lembrar-se das regras e dos elementos disponveis na linguagem para atingir o seu objetivo.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

18

Tambm preciso lembrar que se aplica, na construo dos programas, a lgica booleana, necessria para condicion-lo de acordo com validaes, regras e orientaes que desejamos aplicar no computador. Conforme observamos na aula anterior, a evoluo das linguagens de computador gerou uma grande variao, que foram conseqncias no apenas de revises e aprimoramentos, como tambm, a orientao de uma linguagem especfica para problemas particulares. Dessa forma, centenas de linguagens de programao surgiram e hoje so classificadas em quatro geraes: Linguagens de primeira gerao (1GL): so linguagens totalmente dependentes do computador, so conhecidas como linguagem de mquina, e exigem o mais baixo nvel de abstrao que um programa pode ser construdo. Seu uso est cada vez mais restrito na atualidade; Linguagens de segunda gerao (2GL): com o objetivo de melhorar a produtividade na construo dos programas para computador, a primeira reviso das linguagens e a construo de novas, tinham por finalidade fornecer elementos de programao mais abstratos e com um grande nmero de funcionalidades pr-construdas. As funcionalidades eram organizadas na forma de bibliotecas, que podiam ser reutilizadas nos programas, acelerando a sua construo; Linguagens de terceira gerao (3GL): tambm conhecidas como linguagens estruturadas, so reconhecidas pela grande capacidade procedural e estrutural dos dados. Isso significa que programas grandes podiam ser divididos em pedaos integrados, facilitando a manuteno dos mesmos; Linguagens de quarta gerao (4GL): so as conhecidas linguagens de alto nvel destinadas construo de programas para finalidades especficas. Alm de usufruir das caractersticas de modularizao e bibliotecas das linguagens de terceira gerao, oferecem um meio ainda mais poderoso na construo de programas, principalmente no que se refere reutilizao de bibliotecas de programas. Com o uso cada vez mais comum de bancos de dados relacionais, essas linguagens foram potencializadas para a construo e manipulao de dados. So as linguagens amplamente utilizadas na atualidade.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

19

2 COMPILADORES VS. INTERPRETADORES

Como vimos, atualmente, as linguagens de quarta gerao so as mais utilizadas. Significa que trabalhamos em um nvel de construo de programas que o computador no entende. A isto chamamos de abstrao de cdigo, ou seja, no sabemos como o computador resolver o programa que construmos, por ser linguagem de mquina, mas sabemos todas as regras de alto nvel que devem ser seguidas. nesse cenrio que ferramentas especficas, chamadas compiladores e interpretadores, so utilizadas para converter o programa construdo em linguagem de alto nvel para a linguagem de baixo nvel do computador. Essa converso, tambm muito conhecida como traduo, gera o nvel de facilidade que as linguagens atuais necessitam para manter a produtividade que os negcios exigem hoje. A primeira abordagem de traduo a interpretao. A ferramenta de interpretao de programas (interpretador) realiza a traduo do programa construdo em alto nvel, em tempo de execuo do programa. Conforme vimos na aula anterior, sempre que voc executar o programa, precisar que o interpretador realize a traduo, tal qual mostramos na figura 3.
Construir, testar e executar o programa
Programa de Computador Linguagem de Mquina

Interpretador

Computador

Figura 3 Etapas na construo e execuo de programas interpretados

A segunda abordagem de traduo a compilao (figura 4). A ferramenta de compilao (compilador) interpreta o programa construdo em linguagem de alto

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

20

nvel e gera um programa equivalente em linguagem de mquina. A traduo realizada de vrias formas e sua abordagem depende do compilador em uso.

Construir o programa e primeira compilao


Programa de Computador Linguagem de Mquina

Compilador

Computador

Testar e executar o programa compilado


Programa de Computador (em linguagem de mquina)

Computador

Figura 4 Etapas na construo e execuo de programas compilados

3 PROGRAMAO E O SISTEMA OPERACIONAL

Segundo Custer (1993), um sistema operacional um programa de computador que fornece um ambiente no qual outros programas de computador possam ser executados, permitindo-lhes tirar vantagem fcil do processador e de dispositivos de entrada e sada, como os discos. Como todo dispositivo computacional necessita de um sistema operacional, bem como as variaes que existem atualmente no mercado (Windows, Linux e suas vrias compilaes), importante voc perceber a importncia que o software bsico possui na construo de programas. Como o sistema operacional responsvel pela disponibilidade de vrios recursos do computador, as atuais linguagens de programao se utilizam das bibliotecas fornecidas pelo sistema operacional para realizar suas principais tarefas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

21

As potencialidades de um programa so derivadas das capacidades que o sistema operacional oferece para a linguagem de programao. Por exemplo, dessa forma que o Windows e as interfaces grficas fornecidas com o Linux oferecem ao programador a facilidade para a construo de programas que utilizam janelas. Quando um programador insere o comando para desenhar uma janela, a linguagem, aps interpretada ou compilada, realiza o desenho atravs do dilogo entre a linguagem e os recursos do sistema operacional, que, por sua vez, se utiliza das caractersticas fsicas do computador. Isso tambm vale para armazenar informaes, imprimir dados e outras atividades que um programa pode realizar. Nesse momento, o importante voc reconhecer a importncia em conhecer as potencialidades do sistema operacional para conseguir explor-las ao mximo e com isto obter resultados ricos e poderosos na construo de seus programas.

4 PROGRAMAO E A INTERNET

Da mesma forma que o sistema operacional oferece recursos e influencia na construo de programas, a Internet oferece um novo nvel de oferta de recursos. A Internet de hoje disponibiliza um conjunto de funcionalidades que o programador pode explorar para construir programas a serem utilizadas por dezenas ou milhares de pessoas, com a ajuda de trs elementos fundamentais: Um meio comum de acesso s informaes (rede de comunicao pblica Internet); Uma interface grfica comum para manipular as informaes (pginas apresentadas em um nico aplicativo - Navegador); Uso de uma linguagem de programao comum, independente do computador utilizado pelo usurio. O desenvolvimento para a Internet tambm se baseia nas mesmas premissas de construo de programas, mas possui particularidades que exigem do programador algumas preocupaes que a programao para Windows ou Linux no exigem. A maioria dessas particularidades est associada aos elementos fundamentais acima mencionados. Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

22

5 ESCOLHENDO UMA LINGUAGEM DE PROGRAMAO

Alm das geraes das linguagens de programao de computadores, h uma categoria atual que fornece uma nova abordagem para a construo de programas: as ferramentas de desenvolvimento rpido de sistemas, ou RAD (rapid application development). Com o maior nmero de necessidades das solues baseadas em interfaces grficas, um novo conjunto de ferramentas de software explora essas oportunidades, na forma de um processo interativo para o programador no desenvolvimento da soluo. As linguagens RAD, como so conhecidas, permitem ao programador desenhar como o programa dever se apresentar (interface com o usurio) e ento escrever o cdigo de programao para fazer com que a janela desenhada tenha alguma funcionalidade para o usurio. Com este mtodo, houve certo nivelamento das ferramentas utilizadas para construir programas, liberando o programador para manter o foco na linguagem e na lgica empregada em resolver o problema. Dessa forma, a escolha de uma linguagem de programao recebe um conjunto de avaliaes que, de acordo com o objetivo, determina qual deve ser a melhor aplicada. No existe a melhor linguagem. O que existe so algumas variveis que podem ser consideradas na escolha de uma linguagem: Prazo para o desenvolvimento do programa e a experincia do programador na linguagem, que favoream a produtividade de execuo dos trabalhos de programao; Sistema operacional onde o programa ser executado; Necessidades tecnolgicas especficas que favoream uma linguagem em particular; Evoluo da linguagem, compatibilidade com novas tecnologias e viso de crescimento futuro; Tamanho da equipe envolvida na construo do sistema; Suporte do fabricante ou de uma comunidade constituda, que fornea um nvel mnimo de segurana na construo de programas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

23

Nesse contexto, a importncia de um bom entendimento e conhecimento sobre lgica de programao, objeto desse livro didtico, fundamental para que a elaborao de um programa possa ser utilizada em qualquer linguagem. H um site independente na Internet que procura realizar uma pesquisa mensal de popularidade das atuais linguagens de programao (http://www.tiobe.com/index.htm?tiobe_index). A tabela 1, a mais atual publicada, apresenta o seguinte resultado para as 10 primeiras. Tabela 1 Ranking de Linguagens Ranking Linguagem 1 2 3 4 5 6 7 8 9 10 Java C C++ PHP Visual Basic Perl Python JavaScript C# Ruby

6 O QUE SO ALGORITMOS?

Segundo Ximenes (1993), um algoritmo qualquer conjunto finito de instrues que possa ser seguido para a realizao de uma tarefa especfica ou resoluo de um determinado problema. J na rea de Informtica, tambm de acordo com Ximenes (1993), um algoritmo definido como uma seqncia ordenada e finita de passos, independente da linguagem de programao a ser utilizada para codific-lo, que leva soluo de um dado problema. provvel que voc j tenha ouvido falar em algoritmos. Na verdade, a palavra pode ser aplicada a qualquer atividade que aplique o conceito acima Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

24

descrito. Receitas de bolo, manuais com procedimentos de execuo e roteiros para atendimentos especficos so alguns exemplos de algoritmos. Aplicamos o conceito de algoritmo diariamente, a partir do momento que estabelecemos um planejamento mental para realizar uma determinada tarefa, considerando que deveremos executar um conjunto de passos at a concluso do objetivo a ser atingido. Por exemplo: Incio 1. Colocar a chave na ignio; 2. Virar a chave; 3. Se o carro pegar 3.1. Pressionar o pedal de embreagem; 3.2. Posicionar a primeira marcha; 3.3. Acelerar o carro; 4. Seno 4.1. Repetir; Fim Um algoritmo possui quatro propriedades essenciais: Completo: para que um algoritmo seja considerado completo, todas as aes precisam ser descritas e devem ser nicas; No pode haver redundncia: um conjunto de instrues s pode ter uma nica forma de ser interpretada. Conforme nosso exemplo acima, o algoritmo s permite uma forma de ligar o carro usando a chave de ignio; Determinstico: esta terceira propriedade significa que se as instrues forem executadas, certo que o resultado esperado ser sempre atingido; Finito: significa que as instrues precisam terminar aps um nmero limitado de passos.

SNTESE

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

25

Nesta segunda aula avanamos um pouco mais no mundo da programao de sistemas de computador. Comeamos entendendo as razes que definem a linguagem de computador como um meio para o programador realizar suas atividades e percebemos a grande similaridade com a linguagem humana. Aprendemos tambm quais os agentes internos e externos que influenciam na tarefa de programar um computador e ressaltamos a importncia que o contexto de execuo do programa determina os primeiros passos na sua construo. E j que falamos tanto de linguagem, obtivemos o primeiro contato com as geraes de linguagens de computador, suas caractersticas e os elementos essenciais para escolher a linguagem a ser utilizada. Finalmente, fizemos nossa primeira incurso sobre o termo algoritmo. Perceba que muitos conceitos aqui apresentados encaixam-se com as informaes tratadas na primeira aula, sendo uma abordagem estruturada e construtiva na elaborao de seu conhecimento para o desenvolvimento de sistemas. Espero que voc tenho chegado at aqui motivado pelo conhecimento at agora absorvido e tenha certeza que muito mais vm por a. Fique firme, pratique os exerccios sugeridos e vamos seguindo em frente.

EXERCCIOS PROPOSTOS

2) Quais so as geraes das linguagens de programao? ___________________________________________________________________ ___________________________________________________________________ Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

26

___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

2) Cite a diferena entre o compilador e um interpretador. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

3) Descreva com as suas prprias palavras o que um algoritmo. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

4) Quais so as propriedades essenciais de um algoritmo? ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

27

Aula 3

FORMAS DE REPRESENTAO DE UM ALGORITMO


Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Entender as opes de representao de um algoritmo; Fornecer as orientaes nas tcnicas de representao de algoritmos; Construir um algoritmo usando pseudocdigo; Apresentar graficamente um algoritmo usando um fluxograma.

Contedo da aula

Acompanhe os assuntos desta aula, se preferir, ao trmino, assinale o contedo j estudado. Formas de representao de um algoritmo O que um pseudocdigo? Interpretador de Linguagem Algortmica Regras para construo de um pseudocdigo O que um fluxograma? Regras para representao grfica de um algoritmo Exerccios propostos Nesta terceira aula, voc conhecer detalhes tcnicos envolvidos na construo de algoritmos e aprender como represent-los. Como voc ver nesta unidade a representao de algoritmos e o uso de um software para apoio, so recursos comuns que o programador iniciante obtm para melhor entendimento e prtica na lgica de programao. Boa aula! Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

28

1 FORMAS DE REPRESENTAO DE UM ALGORITMO

Os algoritmos podem ser representados de vrias formas, como: Usando uma lngua comum (portugus, ingls, espanhol e etc.) meio utilizado para a descrio de receitas, manuais de procedimentos, etc., sendo a forma mais espontnea na representao de algoritmos; Usando uma linguagem de portugus estruturado, que tambm conhecida como pseudocdigo ou pseudo linguagem. O pseudocdigo tambm recebe variaes de nomes, como: Portugol, PDL (Program Design Language), pascalide, linguagem algortmica e outros. Nesse curso vamos utilizar o termo pseudocdigo, considerando ser a forma mais pura de objetivo desse mtodo; Usando representaes grficas, como diagramas e fluxogramas. Cada uma das formas de representao possui vantagens e desvantagens e cabe ao programador escolher qual oferece as melhores caractersticas para atender suas necessidades. Tambm comum a combinao das representaes, principalmente quando h necessidade de um nvel de entendimento de vrias pessoas. As trs formas mais comuns para representar um algoritmo so: Diagrama de Nassi-Shneiderman (Diagrama de Chapin); Pseudocdigo; Fluxogramas (Diagrama de Fluxo). Nesse curso focalizaremos os pseudocdigos e fluxogramas.

2 O QUE UM PSEUDOCDIGO?

uma forma especial de linguagem, bem mais restrita que a lingua portuguesa e com significados bem definidos para todas as palavras utilizadas nas instrues inseridas em um programa. O objetivo principal dessa abordagem permitir ao programador pensar no problema em si e no nas regras particulares de uma Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

29

linguagem de programao ou em qual equipamento/sistema operacional ir executar o algoritmo. No pesudocdigo, assim como nas linguagens de programao, basicamente utilizamos comandos que compem a execuo do algoritmo. So comandos executados seqencialmente, de forma que um comando somente ser executado ao trmino da execuo do comando anterior. Um exemplo de pseudocdigo : Inicio <declaraes de variveis> <comandos> fim Nas prximas pginas, vamos explorar os principais componentes dessa linguagem e, medida que o curso evoluir, novos elementos da linguagem sero apresentados, para representar a soluo do problema que ser proposto.

3 INTERPRETADOR DE LINGUAGEM ALGORTMICA

Um dos grandes desafios do programador iniciante acostumar-se com as tarefas para a construo de algoritmos. Tradicionalmente, aprende-se lgica de programao usando-se uma linguagem particular, dessa forma, o iniciante aprende lgica j inserido na linguagem de programao final que ser utilizada (Pascal, C, C++ e etc.). Alguns autores acreditam que essa abordagem acelera o processo de aprendizagem, mas exige do iniciante um grau de entendimentos dos elementos envolvidos, que pode no atender a todos. Coisas como experincia anterior com a informtica, interesse natural em programao de computadores e capacidade de autodesenvolvimento, fornecem um contexto adequado para essa abordagem. Para os programadores iniciantes, que possuem alguma limitao no aprendizado sobre lgica de programao, necessria uma abordagem mais clara, comum e gradual. Assim, surgiram as iniciativas dos projetos de Interpretador de Linguagem Algortmica (ILA). De forma geral, so necessidades percebidas na rea acadmica Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

30

para envolver os alunos nos primeiros passos no mundo da programao. Vrios programas foram lanados com esta finalidade, mas, infelizmente, no se mantm um padro mnimo da linguagem de pseudocdigo utilizada. Nesse curso utilizaremos um ILA projetado no mundo acadmico de Portugal, um software chamado Portugol, construdo usando a linguagem Java para seu desenvolvimento. Os exemplos e exerccios apresentados sero todos compatveis com o ambiente desse sistema. A grande vantagem no uso dessa ferramenta a simplicidade da linguagem utilizada e a capacidade de relacionamento em gerar cdigo e fluxograma em um ambiente nico. De todos os programas que testei, este se apresenta com a melhor abordagem dos elementos necessrios da ferramenta para um programador iniciante.

3.1 INSTALAO DO ILA - Portugol Efetue o download do programa Portugol a partir da Biblioteca do curso, identificado pelo seguinte nome: Portugol233.zip Ao terminar o download, acesse a pasta onde o arquivo foi salvo e descompacte-o. Ao terminar a descompactao, uma subpasta ser apresentada com o nome de dist (figura 5). Abra-a e observe que haver um arquivo com o nome run.bat, efetue um duplo-clique sobre esse arquivo para executar o programa.

Figura 5 Lista de Arquivos da pasta dist do software Portugol

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

31

importante verificar que, para executar o programa, necessrio que uma Mquina Virtual Java (JVM ou Java Virtual Machine) esteja instalada no sistema operacional. Caso contrrio, a execuo do arquivo acima apresentar um erro. Caso voc precise instalar uma JVM, acesse novamente a pgina da biblioteca do curso, verifique que h dois arquivos que podero ser baixados: plataforma Windows e plataforma Linux. Efetue o download do programa de acordo com o seu sistema operacional. So eles: Plataforma Windows - jre-6u1-windows-i586-p.exe Plataforma Linux - jre-6u1-linux-i586-rpm.bin Execute o programa baixado e siga as instrues da instalao. Caso tudo funcione adequadamente, ao executar o arquivo run.bat, ser apresentada uma janela conforme a figura 6.

Figura 6 Janela de entrada no sistema Portugol O sistema oferece dois ambientes para construo de algoritmos: editor de texto, para a construo usando pseudocdigo ou o editor de fluxogramas, para a construo usando uma abordagem grfica. 3.2 AMBIENTE DO EDITOR DE PSEUDOCDIGO DO PORTUGOL Ao executar o programa de Editor de Texto (Portugol IDE), um ambiente de construo de pseudocdigo apresentado (figura 7). Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

32

Figura 7 Janela principal do sistema Portugol O programa possui elementos visuais como todo software para Windows, possui um menu de comandos, uma barra de ferramentas, e dois painis principais: editor de cdigo e informaes. No painel de informaes, h uma diviso em guias que oferece trs reas de contedo, conforme mostra a figura 8.

Guia Ecran Informaes

Descrio/Objetivo Apresenta os resultados do algoritmo Apresenta informaes sobre o sistema e pontos de observao sobre a execuo do programa.

Ajuda da Linguagem

Manual com as regras da linguagem de pseudocdigo utilizada na ferramenta.

Figura 8 Pginas do painel de informaes

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

33

4 REGRAS BSICAS PARA A CONSTRUO DE UM PSEUDOCDIGO Conforme vimos, um pseudocdigo recebe regras da mesma forma que uma linguagem convencional. Possui regras de sintaxe (forma como os comandos devem ser escritos) e regras de semntica (conjunto de aes que sero exercidas pelo computador durante a execuo do referido comando). Todo programa escrito em pseudocdigo deve conter a estrutura do blo0co principal de comandos, que deve comear com a palavra inicio e terminar com a palavra fim (sem as aspas). Os comandos para a execuo do programa so inseridos dentro do bloco inicio-fim. Observe o programa abaixo escrito em pseudocdigo: inicio variavel texto nome variavel inteiro nota1, nota2, media enquanto nome =/= "fim" faz escrever "Digite o nome do aluno" ler nome escrever "Informe a nota da primeira prova" ler nota1 escrever "Informe a nota da segunda prova" ler nota2 media <- (nota1 + nota2) / 2 se media >= 7 ento escrever "Aluno aprovado = ", nome seno escrever "Aluno reprovado = ", nome fimse Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

34

ler nome fimEnquanto fim Observe que as palavras em negrito so os comandos em conformidade com a sintaxe da linguagem de pseudocdigo, que aplicada no Interpretador da Linguagem. Perceba tambm que algumas linhas possuem recuos em relao linha anterior. A essa distribuio de recuos chamamos indentao, significando que os elementos possuem uma hierarquia facilitando a leitura do programa por outras pessoas. 4.1 DIGITANDO O ALGORITMO NO SOFTWARE PORTUGOL Ao digitar um programa no PORTUGOL IDE (figura 9), para verificar se o programa funciona de acordo com suas expectativas, clique no boto Executar, ou pressionar a tecla F3, ou executar o comando Executar do menu Algoritmo.

Figura 9 Comando Executar Aps a execuo do algoritmo, observe que o painel de informaes apresentar contedo nas guias ecran e informaes. No ecran, so apresentadas as mensagens do comando ESCREVER e LER (Entrada e Sada do algoritmo).

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

35

Quando a instruo LER executada, uma caixa de dilogo apresentada solicitando a informao para a entrada de dados pelo usurio (figura 10).

Figura 10 Programa em execuo no painel de informaes Em Informaes, so apresentados dados sobre a execuo do algoritmo (figura 11), os horrios de execuo e os passos realizados.

Figura 11 0 painel de informaes apresenta um resumo

5 O QUE UM FLUXOGRAMA?

O fluxograma, ou diagrama de fluxo, foi por muito tempo a representao preferida dos programadores para a construo de algoritmos. Um fluxograma uma representao grfica da seqncia de aes que podem ocorrer em um programa. Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

36

O fluxograma utiliza-se de smbolos especficos para a representao grfica dos algoritmos, e sofrem algumas variaes de acordo com o autor ou ferramenta em uso. A tabela 2 mostra a simbologia tradicionalmente utilizada por fluxogramas. Tabela 2 Elementos grficos utilizados em fluxogramas

Processos Utilizado na atribuio de valores para variveis

Deciso Representa as decises que ocorrem no programa

Leitura Para ler o contedo das variveis

Escrita Utilizado para a escrita de dados e contedos de variveis

Conector Muito utilizado para conectar partes do fluxo ou na integrao com outros fluxos Terminal Normalmente utilizado para Inicio e Fim do fluxo. Setas de fluxo de controle

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

37

Com esses elementos visuais o programador representa cada passo que o programa deve executar, obtendo uma viso grfica do fluxo do programa. Existe um grande nmero de ferramentas baseadas em computador para apoiar a construo de fluxogramas, tanto para Windows como tambm para Linux. Em nosso curso, vamos utilizar a ferramenta Portugol para a representao grfica em fluxogramas. Esse software permite a converso direta entre o programa construdo em pseudocdigo e sua correspondncia representativa em fluxograma, segundo nos mostra a figura 12.

Figura 12 Converter o algoritmo em fluxogrma

Mas possvel tambm realizar a operao contrria, ou seja, iniciar a construo de um algoritmo pelo fluxograma e converter o diagrama para pseudocdigo. Veja as figuras 13 e 14.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

38

Figura 13 Ambiente de visualizao/construo de Fluxogramas

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

39

Figura 14 Exemplo de Fluxograma

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

40

SNTESE

Agora sim! Comeamos a ter uma viso prtica sobre a construo de programas de computador. Nesta aula voc aprendeu as duas principais representaes que podem ser utilizadas para a construo de algoritmos. So as ferramentas principais do curso e servem como principal base para acelerar no conhecimento de linguagens de programao. Cabe ressaltar que o uso dessas ferramentas tem como principal objetivo facilitar a descrio do seu entendimento para a soluo de um problema e a opo entre pseudocdigo ou fluxograma depender do contexto do problema a ser resolvido. Nas prximas aulas voc conhecer os comandos utilizados em cada representao de um algoritmo, estudando detalhadamente cada exemplo. At a prxima aula.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

41

EXERCCIOS PROPOSTOS

3) Descreva as diferenas entre um pseudocdigo e um fluxograma. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

2) Execute o software Portugol e construa em pseudocdigo e/ou fluxograma os algoritmos abaixo (no se preocupe nesse momento em utilizar desvios condicionais): Troca de pneu de um carro; Troca de lmpada de um cmodo da casa; Realizar uma ligao e conversar por um telefone celular; Verificao do nvel de leo do carro.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

42

Aula 4

VARIVEIS E CONSTANTES
Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Conceituar variveis e constantes em um algoritmo; Declarar variveis, determinar o tipo de dados a ser armazenado e comentar algoritmos; Atribuir valores s variveis; Trabalhar com expresses matemticas.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao trmino, assinale o contedo j estudado. Variveis e constantes Tipos de dados e Atribuio de valores Comentando algoritmos Operadores aritmticos e relacionais Expresses aritmticas e relacionais Instrues Ler e Escrever (pseudocdigo) Exerccios propostos As variveis e constantes so elementos fundamentais de um programa de computador. Nesta aula voc obter o conhecimento necessrio para construir algoritmos usando estes elementos de programao. Boa aula!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

43

1 VARIVEIS E CONSTANTES

As variveis e constantes so conceitos fundamentais para a construo de algoritmos, pois so atravs deles que um algoritmo armazena os dados dos problema.

1.1 VARIVEIS Quando uma determinada informao do problema tem a possibilidade de sofrer alteraes (ou variaes) no decorrer da execuo do programa, essa informao dever ser tratada como uma varivel do problema e deve ser representada no algoritmo. Como o prprio nome sugere, as variveis podem conter valores diferentes a cada instante do programa, segundo as instrues do algoritmo. Do ponto de vista tcnico, uma varivel um espao de memria do computador que reservamos para guardar os dados elementares do problema a ser resolvido. Quando descrevemos uma varivel no algoritmo, utilizamos um nome (ou identificador) para represent-la e seu contedo pode ser alterado, consultado ou apagado quantas vezes forem necessrias, pois a varivel sempre armazenar o ltimo valor atribudo para o seu contedo. A ao de descrever uma varivel no algortimo chamada de declarao ou declarar uma varivel.

1.2 CONSTANTES Quando uma informao no tem qualquer possibilidade de alterao, ou variar, no decorrer da execuo do programa, deve ser tratada como uma constante. Do ponto de vista tcnico, uma constante uma rea de armazenamento do computador que manter seu contedo durante toda a execuo do programa. Esta rea possui um nome (ou identificador) e poder ser recuperada (lida) a qualquer momento no algoritmo. Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

44

2 TIPOS DE DADOS E ATRIBUIO DE VALORES

Toda varivel ou constante precisa receber um tipo de dado, que determinar qual o domnio de seu contedo. Os tipos mais comuns de dados so conhecidos como tipos primitivos, descritos na tabela 3. Tabela 3 Tipos de dados usados em Pseudocdigo Tipo Inteiro Descrio
Todo e qualquer dado numrico que pertena ao conjunto de nmeros inteiros relativos (negativo, nulo ou positivo)

Domnio -2.147.483.648 2.147.483.647

Real

Todo e qualquer dado numrico que pertena ao conjunto de nmeros reais (negativo, nulo ou positivo)

-1.7 E 308 1.7 E 308

Lgico

Todo e qualquer dado que s pode assumir duas situaes (dados biestveis, algo como verdadeiro ou falso)

Verdadeiro ou Falso, normalmente entre pontos. Por exemplo, .verdadeiro. ou .f. Seqncias de caracteres entre aspas.

Texto

Todo e qualquer dado composto por um conjunto de caracteres alfanumricos (nmeros, letras e caracteres especiais)

Toda varivel possui algum contedo que ser armazenado e manipulado pelo algoritmo. As variveis que sero utilizadas nos algoritmos devem ser declaradas inicialmente. A declarao de uma varivel indica o tipo de dado que ela pode guardar no decorrer da execuo do algoritmo (ou no decorrer da execuo do programa que futuramente ser construdo). Para declararmos uma varivel, temos que criar-lhe um identificador, que ser o nome da varivel no algoritmo e tambm temos que definir o tipo de dado que a Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

45

varivel pode armazenar. Faremos a declarao de variveis obedecendo ao seguinte padro: variavel [tipo] [nome] Onde tipo pode ser uma das palavras: inteiro, real, lgico ou texto; o nome deve seguir as seguintes regras: Deve comear por um caractere alfabtico; Pode ser seguido por mais caracteres alfabticos e/ou numricos; No permitido o uso de caracteres especiais, como: @, #, &, *, +, ? etc. (exceto o sublinhado). Exemplos de nomes corretos de variveis: Agencia Data_Venda Nome_Aluno Sexo Endereco Nr_Nota_Fiscal Salario Nr_Tentativas

2.1 CASE SENSITIVE Algumas linguagens possuem regras particulares para os nomes das variveis. Mas h uma observao importante e que pode variar de uma linguagem para outra, a sensibilidade por letras maisculas e minsculas utilizadas no nome da varivel. Por exemplo, Nome diferente de NOME. Por isso, para que voc no tenha problemas futuros, neste curso declare sempre as variveis em letras maisculas.

2.2 ATRIBUIO DE VALORES Conforme vimos, cada varivel deve armazenar e determinar um tipo de dado. A definio de tipos de dados diferentes oferece uma srie de vantagens para a programao de computadores. As duas mais importantes so: A economia no armazenamento de dados na memria; Velocidade nas operaes aritmticas e lgicas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

46

A forma de atribuir um valor para uma varivel utilizando o sinal de igual acompanhado do valor a ser atribudo. Em pseudocdigo utilizado o smbolo de seta: X 2

3 COMENTANDO ALGORITMOS

Um tpico importante, mas pouco explorado nas linguagens de programao a necessidade de inserir comentrios no algoritmo construdo. Toda linguagem de programao, bem como um pseudocdigo fornecem uma forma simples (e normalmente padronizada) para inserir comentrios no programa. O aspecto importante em inserir comentrios est na capacidade de leitura que forneceremos para outros programadores que, porventura, venham a reutilizar o programa construdo. As solues lgicas que construmos para um problema pode variar de programador para programador, por isso trabalhar com comentrios uma prtica saudvel para o relacionamento com outros profissionais. Ao fazer uso dos comentrios, voc estar documentando o programa para seu prprio uso. No incomum um programador esquecer quais foram as bases que utilizou para construir o algoritmo e, caso necessite revisar um programa h muito tempo sem ser acessado, como proceder se o esqueceu? Para inserir um comentrio, inicie a frase com duas barras comuns. Por exemplo: //Exemplo de comentrio

4 OPERADORES ARITMTICOS E RELACIONAIS

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

47

4.1 OPERADORES ARITMTICOS Quando construmos algoritmos, comum trabalharmos com expresses matemticas para a resoluo de alguns problemas. As expresses matemticas podem fazer uso de operadores aritmticos e lgicos. As operaes so aes executadas sobre os operandos (variveis ou constantes) que foram previamente definidos. Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes bsicas da matemtica e podem ser aplicadas a nmeros inteiros e/ou reais, conforme tabela 4. Tabela 4 Operadores Aritmticos Operao Adio Subtrao Multiplicao Diviso Potenciao Radiciao Operador + * / ^ %

Os smbolos utilizados como operador na tabela 4, so representativos na ferramenta de pseudocdigo utilizada neste curso. Algumas linguagens possuem variaes nos smbolos utilizados para potenciao e radiciao. Um aspecto importante no uso de operadores aritmticos sua prioridade matemtica, ou seja, um operador de maior prioridade realizar sua operao antes de um operador de menor prioridade. A tabela 5 apresenta as regras de prioridade e que podem ser alteradas com o uso de parnteses. Tabela 5 Prioridade de clculo dos operadores aritmticos Operador ^, ** Algoritmos Operao Exponenciao Prioridade 1

SOCIESC Sociedade Educacional de Santa Catarina

48

/ * + -

Diviso Multiplicao Adio Subtrao

2 2 3 3

4.2 OPERADORES RELACIONAIS Um outro grupo importante de operadores formado pelos operadores relacionais (tabela 6). Quando queremos fazer comparaes entre valores ou entre expresses (tanto matemticas como lgicas), precisamos utilizar essa categoria de operadores.

Tabela 6 Operadores relacionais Comparao Igual Diferente Maior que Menor que Maior ou igual a Menor ou igual a Operador = =/= > < >= <=

O resultado de uma comparao sempre um valor lgico (verdadeiro ou falso). Os smbolos utilizados como operador na tabela acima, tambm so representativos na ferramenta de pseudocdigo utilizada neste curso. Algumas linguagens possuem variaes no smbolo utilizado para a comparao Diferente.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

49

5 INSTRUES LER E ESCREVER

Na construo de algoritmos, conveniente que o usurio possa informar dados externos para serem operados pelo programa. Assim, um programa pode receber um dado informado por um operador atravs de um comando de leitura. Da mesma forma, pode ser necessrio conhecer o resultado de determinada operao executada pelo computador, ento ser necessria uma forma de exibir os dados. Cada linguagem tem uma forma especfica para entrada e sada de dados. Em algoritmos usaremos os comandos genricos Ler e Escrever, para realizar a interface com o usurio, conforme mostra a figura 15.

Figura 15 Exemplo de algoritmo de entrada e sada de dados

A instruo Ler utilizada quando se deseja obter informaes do teclado do computador, ou seja, um comando de entrada de dados. Para simplificar, usa-se a instruo Ler, quando se necessita que o usurio do algoritmo digite algum dado (e posteriormente do programa). A instruo Escrever utilizada quando se deseja mostrar informaes na tela do computador, ou seja, um comando de sada de dados. Para simplificar, usase a instruo Escrever, quando se necessita mostrar algum dado para o usurio do algoritmo (e posteriormente do programa).

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

50

Algumas sugestes importantes para escrever algoritmos em pseudocdigo, para realizar operaes de entrada e sada: Incluir comentrios nas linhas mais importantes do programa; Utilizar nomes significativos para as variveis e constantes, que possam identificar o seu contedo; Efetuar a indentao das linhas para facilitar a leitura.

SNTESE

Nesta aula estudamos os primeiros elementos para o desenvolvimento de um algoritmo, principalmente no que se refere entrada e sada de dados. Um processo comum de execuo de um programa entrar com uma informao, process-la e apresentar o resultado obtido, processo descrito nesta aula. Tambm conhecemos a importncia das variveis e constantes na programao de computadores. Na verdade, todo trabalho realizado por um computador baseado na manipulao de informaes contidas em sua memria. Parte desta aula sabermos classificar os dados de acordo com o tipo de informao contida neles. Finalmente, procuramos compreender como trabalhar com expresses aritmticas e lgicas, componentes necessrios para a construo de algoritmos.

EXERCCIOS PROPOSTOS

4) Considerando as variveis abaixo, assinale N para numrico, C para texto e L para lgico: ( ) 1000 ( ) 4,56

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

51

( ( ( ( (

) 12 ) .v. ) Casa 8 ) -456 ) -4.56

( ( ( ( (

) ) ) ) )

.Verdadeiro. cinco 5 456 45.876

2) Supondo que as variveis Nota1, Nota2, Matrcula e Sexo sero utilizadas para armazenar as notas de um aluno, o nmero da matrcula do aluno e o sexo do aluno, respectivamente, efetue abaixo a declarao das variveis e seus tipos corretamente. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

3) Encontre os erros da seguinte declarao de variveis: Variveis Numrico endereo, nfilhos, valor$, xpto, c, peso Texto idade, x Lgico NomeDoPai ___________________________________________________________________ ___________________________________________________________________ 4) Desenvolva algoritmos para os problemas abaixo, usando a ferramenta Portugol: a. Calcular a mdia entre 4 valores informados pelo usurio e apresentar o resultado; b. Calcular o resultado de xy, onde x e y sero fornecidos pelo usurio e apresentar o resultado. Aula 5 Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

52

ESTRUTURAS DE PROGRAMAO CONDICIONAIS

Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Utilizar os operadores lgicos; Utilizar uma estrutura de controle seqencial e condicional; Detectar os erros comuns de programao.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao trmino, assinale o contedo j estudado. Estruturas de controle Usando expresses lgicas Desvios condicionais simples e compostos Bloco SE-ENTO-SENO Bloco ESCOLHE-CASO Identificando erros comuns de lgica A proposta desta aula lhe apresentar e lhe ensinar uma abordagem comum na construo de programas, o que so chamados de estruturas de controle. A lgica condicional e seus elementos sero tratados. Boa aula e vamos adiante!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

53

1 ESTRUTURAS DE CONTROLE

Os exemplos de algoritmos que vimos at agora j nos deram uma viso simples do que um bloco de cdigo de programao. Quando um algoritmo executado e todos os seus passos (instrues) so processados em seqncia, sem desvios e sem repetir ou omitir nenhuma linha, chamado de algoritmo seqencial (figura 16). Por exemplo: inicio real soma, numero1, numero2 escrever "Digite um numero: " ler numero1 escrever "Digite outro numero: " ler numero2 soma <- numero1 + numero2 escrever "O resultado da soma : " escrever soma fim Quando o algoritmo permite a escolha de um conjunto de aes e/ou estruturas que sero executadas a partir do resultado de uma condio (simples ou composta), chamado de algoritmo condicional (figura 16). Esta uma estrutura de controle muito comum na programao de computadores, pois normalmente tomamos decises dentro do programa, esperando que se faa uma atividade ou outra, de acordo com determinado resultado de algum processamento. Por exemplo: inicio real soma, numero1, numero2 escrever "Digite um numero: " ler numero1 escrever "Digite outro numero: " ler numero2 soma <- numero1 + numero2 Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

54

se soma <= 10 ento escrever "O resultado da soma : " escrever soma seno escrever "A operao est acima do esperado!" fimse fim Observe que, nessa estrutura, antes de enviarmos o resultado para a tela do usurio, estamos realizando uma avaliao do valor obtido na operao aritmtica do algoritmo. Utilizamos a palavra SE para realizarmos a instruo de teste do resultado e depois informamos qual a expresso que deve ser testada (soma <=10, ou seja, o contedo da varivel soma menor ou igual a dez?). Esse um exemplo de expresso lgica que veremos mais adiante na aula. O resultado deste teste s pode ser um: positivo ou negativo. Caso positivo (a varivel soma igual ou menor que dez), o primeiro bloco de instrues ser executado. Caso o resultado seja negativo (a varivel soma maior que 10), o segundo bloco, iniciado com a palavra SENO, ser executado.

Figura 16 Comparao entre algoritmos seqenciais e condicionais

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

55

2 USANDO EXPRESSES LGICAS

Como vimos na aula anterior, foram apresentados os operadores aritmticos (soma, subtrao, etc.) com eles formamos EXPRESSES ARITMTICAS, por exemplo B = A * C2. Tambm foram apresentados os operadores relacionais (maior que, menor que, igual e etc.), com eles construmos EXPRESSES RELACIONAIS, ou seja, estamos relacionando elementos para realizar uma comparao, por exemplo B <= 10. Neste tpico voc estudar um outro grupo de operadores, chamados lgicos. A principal finalidade desses operadores UNIR duas expresses, sejam relacionais ou aritmticas, e com isto estender as capacidades de lgica condicional no algoritmo. Os principais operadores lgicos so os que aparecem na tabela 7. Tabela 7 Operadores Lgicos Operao Conjuno Disjuno (no-exclusiva) Operador E OU Exemplo de expresso lgica SE X > 10 E X <20 ENTO (s h uma possibilidade) SE X > 10 OU Y > 20 ENTO Neste caso, retornar verdadeiro se X for maior que 10 OU se Y for maior que 20. Uma das expresses for verdadeira, o retorno do teste ser verdadeiro. (h trs possibilidades) Negao NO SE NO A = Y ENTO Este operador inverte o resultado, neste exemplo, se A for igual a Y retornar FALSO. (somente h uma possibilidade) Disjuno (Exclusiva) Algoritmos XOU SE X > 10 XOU Y > 20 ENTO Somente se X > 10 ou Y > 20 retornar verdadeiro, um ou outro.

SOCIESC Sociedade Educacional de Santa Catarina

56

Operao

Operador

Exemplo de expresso lgica (h duas possibilidades)

Dessa forma, estamos revisitando a tabela verdade, que apresenta os resultados possveis dos operadores lgicos (tabela 8). Tabela 8 Resumo de possibilidades usando os operadores lgicos Retorno de cada expresso Expresso A F F V V Expresso B F V F V E AeB F F F V OU A ou B F V V V NO No A V V F F XOU A xou B F V V F

3 DESVIOS CONDICIONAIS SIMPLES E COMPOSTOS Para que a execuo do algoritmo seja desviada para um caminho especfico, com um conjunto de instrues especficas, necessrio um comando de desvio. O comando de desvio dado pela palavra SE, que inicia um bloco de instrues e deve terminar com a palavra FIMSE. Dentro deste bloco haver instrues que sero executadas de acordo com o resultado do teste lgico inserido no desvio. Esse desvio precisa conter um teste lgico, para que determine se as instrues dentro do bloco SE devero ser executadas ou no. O teste lgico composto de expresses aritmticas, relacionais e lgicas. A estrutura de um bloco SE-ENTO : SE expresso (es) lgicas ENTO Instrues de comando FIMSE

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

57

A diferena entre o desvio condicional simples e desvio composto est na resposta que deve ser dada, caso no existam instrues para o outro resultado da expresso aplicada na palavra SE. Quando se deseja incluir as instrues para o outro resultado, dever ser utilizada a palavra SENO, dentro do bloco SE. A estrutura de um bloco SE-ENTO-SENO : SE expresso (es) lgicas ENTO Instrues de comando SENO Instrues de comando FIMSE Destaquemos tambm que existem casos em que necessrio se estabelecer um conjunto de verificaes de condies sucessivas. Essa estrutura chamada de estrutura de desvio condicional encadeado (ou aninhado), significa permitir que, a partir de uma condio atendida, poder estabelecer novas condies e, dessa forma, teremos condies dentro de condies. A estrutura de um bloco de desvio condicional encadeado : SE expresso (es) lgicas ENTO SE expresso (es) lgicas ENTO Instrues de comando FIMSE SENO Instrues de comando FIMSE Programadores mais experientes preocupam-se com o uso de blocos condicionais encadeados. No h limite de encadeamento de blocos, mas uma combinao muito grande poder gerar grande dificuldade ao programador em localizar um problema de lgica. Diante disso, h uma prtica comum de limitar at sete encadeamentos e, acima disso, utiliza-se da estrutura ESCOLHE-CASO, que veremos mais adiante nesta aula. Por exemplo: Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

58

Considere o problema exposto na figura 17, em que se estabelecem trs condies para calcular o reajuste do salrio de um funcionrio: o Quando o salrio for menor do que 500, o reajuste ser de 15%; o Quando o salrio for maior ou igual que 500 e menor ou igual a 1000, o reajuste ser de 10%; o Quando o salrio for maior que 1000, o reajuste ser de 5%.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

59

Figura 17 Fluxograma com desvio condicional composto

4 BLOCO SE-SENO-ENTO

Em pseudocdigo, as instrues de desvios condicionais devem tambm seguir regras especficas. Um exemplo de Desvio Simples: inicio inteiro A inteiro B escrever "Digite um valor para A:" ler A escrever "Digite um valor para B:" Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

60

ler B se A < B ENTO escrever "A menor que B!!" fimse fim Observe que, no exemplo, caso o usurio digitar o valor de B maior do que A, nada ir acontecer no programa. Se desejarmos apresentar alguma instruo para o B ser maior que A, precisamos utilizar a palavra SENO. Por exemplo: inicio inteiro A inteiro B escrever "Digite um valor para A:" ler A escrever "Digite um valor para B:" ler B se A < B ENTO escrever "A menor que B!!" SENO escrever "B menor que A!!" fimse fim

5 BLOCO ESCOLHE-CASO

Quando h um conjunto de testes lgicos a serem realizados em um mesmo momento do programa, exigindo que vrios blocos SE-ENTO sejam construdos, poder haver certo desconforto para o programador constru-lo e para outros programadores interpretarem. Nesses casos, se houver erro, o programador ter grande dificuldade de localiz-lo, j que h um conjunto muito grande de testes que devem ser feitos. Nessa situao, um outro bloco de desvio pode ser utilizado: ESCOLHECASO. Essa abordagem uma excelente potencializao dos desvios compostos Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

61

que algumas linguagens disponibilizam e geram algumas dificuldades para sua utilizao. A estrutura de um bloco ESCOLHE-CASO : ESCOLHE expresso (es) CASO expresso (es) Instrues CASO expresso (es) Instrues DEFEITO FIMESCOLHE Por exemplo: inicio real a, b, resposta inteiro escolha a <- 20 b <- 5 resposta <- 0 escrever "O que voc quer ver: 1 = soma 2 = multiplicao 3 = diviso" ler escolha escolhe escolha caso 1: resposta <- a + b escrever "A resposta " escrever resposta caso 2: resposta <- a * b escrever "A resposta " escrever resposta caso 3: resposta <- a / b escrever "A resposta " escrever resposta defeito: Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

62

escrever "Voc no digitou uma opo vlida" fimescolhe fim E como ficaria a representao do algoritmo em fluxograma? Veja a figura 18.

Figura 18 Fluxograma baseado no algoritmo

6 IDENTIFICANDO ERROS COMUNS DE LGICA

6.1 O que so erros de programao? Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

63

Este um excelente momento para voc refletir sobre uma caracterstica inerente aos trabalhos de programao de computadores: os erros de programao, ou bugs. Conforme vimos nas primeiras aulas, o desafio do programador construir o melhor conjunto de lgica e instrues para entregar a soluo para um problema. Por isso, fundamental um excelente entendimento de qual o problema a ser resolvido e quais so as variveis que devem ser consideradas para sua resoluo. Segundo Behring (1989), bug um erro ou um defeito na construo de um programa, ou ainda um engano na instalao do equipamento de processamento de dados, provocando seu mau funcionamento. Nesse contexto, um algoritmo pode conter dois tipos de erros na sua construo: Erros de sintaxe; Erros de lgica.

6.2 Erros de sintaxe Os erros de sintaxe ocorrem quando a instruo foi digitada fora dos padres que a linguagem exige, por exemplo, em pseudocdigo utilizado neste curso, a criao de um bloco SE, sem terminar com a palavra FIMSE, ou a palavra ENTO, sem o til na letra A. Todos os softwares mais atuais de mercado para programao de computadores, j fornecem um aviso aps a digitao de uma sintaxe errada, orientando o programador para corrigir o problema antes de executar o programa (apesar desse comportamento ser uma opo para o programador, dentro do software em uso). No caso do software que estamos utilizando neste curso (Portugol), quando o programador digita uma palavra que est correta no pseudocdigo, o editor destaca a palavra em negrito figura 19).

Figura 19 Exemplos de reconhecimento dos elementos construdos Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

64

Alm disso, o editor tambm apresenta cores diferentes para os elementos que compem as instrues digitadas, exemplo: valores em vermelho e smbolo de atribuio de valor em azul. 6.3 Erros de lgica Os erros de lgica so mais complexos de resolver. Nesses casos, o programa foi construdo com a sintaxe correta e executado tranqilamente, mas o resultado apresentado no foi o esperado. Dessa forma, os erros de lgica no apresentam mensagem de erro especfica e resolv-los , muitas vezes, uma tarefa trabalhosa para o programador. Diante desse grande desafio, os fabricantes de software para programadores ampliaram o potencial das ferramentas para analisar cdigo. So ferramentas conhecidas como debugger ou depuradores de cdigo de programao. Existem as mais variadas ferramentas disponveis no mercado, pagas e gratuitas. Normalmente as mais comuns utilizadas so as fornecidas em conjunto com alguma ferramenta de desenvolvimento. A ferramenta Portugol tambm oferece um recurso de depurao do pseudocdigo criado pelo programador figura 20).

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

65

Figura 20 Menu Algoritmo do software Portugol A janela de monitoramento apresenta o contedo das variveis figura 21).

Figura 21 Janela de depurao de cdigo no software Portugol

SNTESE

Nesta aula voc iniciou a construo de programas que possuem desvios condicionais. Aprendeu a diferena entre programas seqncias e condicionais, e entendeu a diferena entre um programa condicional simples e composto. Tambm deve ter percebido a diferena entre o uso de desvios usando a palavra SE e os desvios atravs da palavra SELECIONAR-CASO. Esta ltima uma opo adequada para atender a um grande nmero de condies em um mesmo programa. As regras de pseudocdigo para a construo de algoritmos com desvios foram apresentadas, inclusive com exemplos simples. Finalmente, voc obteve contato com um tpico fundamental da programao de computadores: erros. Voc percebeu que a mxima Errar humano, tambm se Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

66

aplica no desenvolvimento de sistemas, e existem ferramentas e recursos para que voc procure localizar e eliminar erros. Voc pde perceber, no h grandes dificuldades na construo de programas e os desvios condicionais realizam um papel fundamental em programao de computadores. Voc chegou at aqui de forma muito construtiva. At a prxima aula.

EXERCCIOS PROPOSTOS

1) Numa festa, foi feito um sorteio para distribuir um prmio. Cinco pessoas foram sorteadas e deveriam pegar uma bola numerada de 1 a 5, Conforme o algarismo sorteado o prmio ser: Nmero da Bola 1 2 3 4 5 % do prmio 10% 25% 15% 20% 30%

O usurio dever informar o valor do prmio e qual o nmero da bola que tirou. Calcule o valor do prmio e escreva na tela, utilizando o desvio ESCOLHE- CASO. Construa o algoritmo usando o software PORTUGOL. Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

67

2) Quais so os dois tipos de erros na construo de algoritmos? ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ 3) Crie um algoritmo que receba o nome e a nota de um determinado aluno. Caso a nota seja maior ou igual a sete, imprima aprovado, caso negativo, imprima reprovado. 4) Faa um algoritmo que aps receber dois valores numricos, calcule a mdia e imprima o resultado se, e somente se for maior que 33.

Aula 6

ESTRUTURAS DE PROGRAMAO REPETIO

Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Construir algoritmos usando estruturas de controle de repetio; Construir lgica adequada para atender estrutura de repetio.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

68

trmino, assinale o contedo j estudado. Estruturas de repetio Bloco ENQUANTO-FAZ Bloco FAZ-ENQUANTO Bloco PARA-AT-PASSO Bem vindo a mais esta aula do curso. Veja que agora vamos evoluir o conceito de lgica condicional, usando blocos de repetio e entender quando utilizar uma condio ou outra, de acordo com o problema a ser resolvido. Boa aula!

1 ESTRUTURAS DE REPETIO

Os algoritmos estudados at agora lhe apresentaram problemas de programao envolvidos com entrada, sada, atribuio e seleo. Este o momento de damos uma passo adiante, considerando que voc j obteve experincia suficiente para avanarmos nos assuntos. Muitos problemas requerem um mecanismo de repetio, no qual algum clculo ou seqncia de instrues repetida, muitas vezes, usando diferentes condies. Esta aula ir explorar as alternativas para a construo de repeties e seus diferentes mtodos de uso. comum alguns autores descrevem os blocos de repetio de laos (ou loopings) porque, aps a execuo do ltimo comando de instruo, h uma avaliao (ou teste) e, de acordo com o resultado, o programa termina a repetio ou retorna ao primeiro comando, reiniciando a execuo das instrues dentro do lao. Cada repetio chamada de iterao ou passagem pelo lao. Para se construir uma seo repetitiva em um algoritmo necessrio a presena de quatro elementos (figura 22):

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

69

O primeiro um comando de repetio, que define os limites da seo de cdigo a ser repetida e controla se o cdigo deve ser repetido ou no. Neste curso vamos estudar trs diferentes estruturas de repetio: repita-at, enquanto-faz e para-at-passo; Cada uma destas estruturas necessita de uma condio que deve ser avaliada, vem a ser o segundo elemento da construo de uma seo repetitiva de cdigo. As condies vlidas aqui so idnticas s usadas em comandos de seleo; O terceiro um comando que, inicialmente, torna a condio verdadeira. Esse comando deve ser posicionado de forma a ser executado antes da condio ser avaliada pela primeira vez, para assegurar a correta execuo do lao na primeira vez em que a condio for avaliada; Finalmente, deve haver um comando dentro da seo repetitiva de cdigo que permita condio se tornar falsa. Isto necessrio para garantir que, em algum momento, a repetio pare.

Figura 22 Elementos de uma estrutura de repetio Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

70

2 BLOCO ENQUANTO-FAZ

O bloco ENQUANTO-FAZ a estrutura de repetio mais simples. Repete a execuo de um bloco de instrues enquanto a condio for verdadeira. Na primeira vez que a condio tornar-se falsa, o bloco no ser executado e entregar o controle do programa para a prxima instruo, logo aps o bloco de repetio. A estrutura de um bloco ENQUANTO-FAZ (figura 23) :

ENQUANTO expresso (es) lgicas FAZ Instrues de comando FIMENQUANTO

Figura 23 Exemplos de repetio ENQUANTO-FAZ

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

71

O fluxo de execuo de um algoritmo com a estrutura ENQUANTO-FAZ o seguinte: 1. O algoritmo avalia a expresso inserida na linha que contm a palavra ENQUANTO. A expresso utiliza os mesmos operadores estudados at o momento; 2. Caso o resultado da expresso seja VERDADEIRO, ento todo o bloco de instrues ser executado, at encontrar a palavra FIMENQUANTO; 3. Ao encontrar a palavra FIMENQUANTO, o algoritmo retorna para a primeira linha do bloco, que contm a palavra ENQUANTO e realiza um novo teste na expresso associada; 4. Caso a expresso permanea VERDADEIRA, o bloco executado novamente, caso contrrio, o bloco no executado e o algoritmo passa para a prxima linha de instruo. importante ressaltar nesse bloco que a expresso sempre avaliada antes do bloco de instrues.

3 BLOCO FAZ-ENQUANTO

Este bloco tem muita semelhana com ENQUANTO-FAZ, com a diferena fundamental: a expresso verificada aps a execuo do bloco de instrues. A primeira vez que o algoritmo executado e passa pelo bloco, o contedo do bloco ser executado independente da condio estabelecida na expresso. Somente depois da execuo do bloco que a expresso ser testada e o bloco de instrues se repete at que a expresso retorne FALSO. As diferenas entre as estruturas ENQUANTO-FAZ e FAZ-ENQUANTO muito leve. uma deciso que o programador deve tomar de acordo com a soluo que se deseja implementar e determina se a expresso deve ser testada antes ou depois do bloco de instrues. A estrutura de um bloco FAZ- ENQUANTO (figura 24) : FAZ Instrues de comando ENQUANTO expresso (es) lgicas

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

72

Figura 24 Exemplos de repetio faz-enquanto

4 BLOCO PARA-AT-PASSO

Na maioria dos casos de repetio, os algoritmos precisam executar um bloco de instrues por um nmero limitado de vezes, para isso, normalmente se utiliza uma varivel para controlar o nmero de repeties. Foi o caso nos dois tipos de repeties anteriores. Essas situaes sempre apresentam uma varivel contadora e quatro etapas: 1. Inicializao: atribui um valor inicial varivel contadora; 2. Teste: verifica a condio da varivel contadora; 3. Execuo: realizar a execuo do bloco de instrues; 4. Atualizao: incrementa o valor contido na varivel contadora. O grande nmero de situao que requer a lgica justifica a prxima estrutura de repetio, pois resume as etapas de repetio, otimizando a execuo do algoritmo. Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

73

PARA varivel DE valorinicial ATE valorfinal PASSO incremento Instrues de comando PRXIMO

Figura 25 Exemplos de repetio para-de-ate-passo Uma estrutura de repetio PARA-DE-AT-PASSO sempre vem acompanhada de uma varivel contadora que armazena quantas vezes o bloco de instrues foi executado. Alm de condensar uma lgica recorrente de criao de algoritmo em poucas linhas, possui mais algumas vantagens: A primeira linha do bloco de cdigo, contendo a palavra PARA, agrupa todas as instrues que controlam a repetio: a inicializao, o teste e a atualizao. Dessa forma, o programador obrigado a declarar todos os elementos para realizar a repetio. Na repetio ENQUANTO-FAA o programador precisa lembrar de inserir todos os elementos separadamente; Esse tipo de repetio separa claramente as instrues de controle da repetio, das instrues de execuo, oferecendo uma forma mais elegante de construo e minimizando problemas bsicos na construo de algoritmos.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

74

5 CONTADOR E ACUMULADOR

Dizemos que uma varivel considerada contador, quando utilizada para controlar quantas vezes um determinado trecho de programa foi executado. Esse tipo de uso de varivel muito comum em laos, pois normalmente h necessidade de contar o nmero de vezes que um conjunto de instrues foi executado. Uma varivel identificada como acumulador quando utilizada para acumular um valor dentro de um lao. Por exemplo, podemos precisar acumular um determinado valor at chegar ao nvel desejado dentro de um lao e somente sair do bloco de instrues do lao quando o nvel for atingido.

SNTESE

Voc acaba de avanar mais um passo na direo do conhecimento na programao de computadores. Agora voc descobriu o recurso de maior potencial na construo de algoritmos: os blocos de repetio, que elevam de forma clara o uso da lgica condicional para desenvolver sistemas. Primeiramente voc identificou o que um bloco de repetio e seus elementos fundamentais. Viu que cada execuo do bloco de repetio chamada de iterao e que um elemento fundamental no uso de repeties o amplo conhecimento sobre as expresses aritmticas, lgicas e relacionais. Logo em seguida voc aprendeu que, para atender solues que exijam uma repetio cujo teste lgico ocorre antes do bloco ser executado, a instruo ENQUANTO-FAA para esta finalidade. Depois fizemos uma inverso no bloco de repetio e, com o uso do FAAENQUANTO, temos uma condio contrria ao ENQUANTO-FAA. Nesse bloco de

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

75

repetio o teste lgico realizado depois que as instrues contidas no bloco so executadas. Nos dois casos, o programador tem a responsabilidade de avaliar qual melhor atender a necessidade especfica de uma soluo. Finalmente, voc aprendeu a repetio PARA-AT-PASSO, que uma abordagem otimizada dos outros dois modos de construo de blocos de repetio. Nesse tipo de repetio, os elementos so mais agrupados e fornecem uma abordagem mais clara para a construo de um cdigo de programao. isso! Chegamos juntos a um outro nvel de pensamento sobre a programao de computadores. Prepare-se que ainda vem mais na prxima aula.

EXERCCIOS PROPOSTOS

1) Escreva um algoritmo para apresentar cinco vezes na tela a frase Curso de Lgica de Programao. 2) Escreva um algoritmo para ler dois valores. Aps a leitura deve-se calcular a soma dos valores lidos e armazen-la em uma varivel. Aps o clculo da soma, escrever o resultado e escrever tambm a pergunta 'Novo Clculo (S/N)?'. Devese ler a resposta e se a resposta for 'S' (sim), deve-se repetir todos os comandos (instrues) novamente, mas se a resposta for 'N' (no), o algoritmo deve ser finalizado escrevendo a mensagem 'Fim dos Clculos'. 3) Escreva um algoritmo para ler a nota de 5 alunos e contar quantos foram aprovados, sendo que, para ser aprovado, a nota deve ser maior ou igual a 6,0. Escrever o nmero de aprovados. 4) Escreva um algoritmo que solicite um nmero e apresente todos os nmeros de 0 (zero) at o nmero digitado.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

76

Aula 7

MODULARIZAO DE ALGORITMOS
Objetivos da aula

Ao final desta aula, voc dever ser capaz de: Simplificar algoritmos muito grandes, usando o mtodo da modularizao; Entender o uso de subrotinas e seus tipos de construo.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao trmino, assinale o contedo j estudado. Modularizao Mdulos Funes Passagem de parmetros Chegamos na ltima aula do curso. Voc percebeu que a cada aula, os conhecimentos obtidos foram sendo relacionados e evoluindo a complexidade de um algoritmo. Nesta aula, vamos ver uma abordagem para simplificar algoritmos e melhorar a manuteno de nossos programas. Este assunto parte importante e tambm comum na construo de programas. Boa aula e vamos em frente!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

77

1 MODULARIZAO

A abordagem famosa dividir para conquistar muito utilizada na programao de computadores. H um estudo psicolgico afirmando que o ser humano consegue resolver problemas contendo menos de sete variveis simultneas. Se um problema possui acima de nove variveis simultneas, considerado um problema complexo, desta forma, a tcnica de dividir para conquistar utilizada para quebrar um problema complexo em vrios pedaos, ou pequenos problemas simples. Neste sentido, medida que construmos um algoritmo, as necessidades e os problemas so resolvidos complementando cada vez mais a soluo original. comum que um algoritmo seja extenso e proporcional complexidade que o problema apresenta, pois o conjunto de instrues ampliado para atender complexidade exigida, apresentando-se um tamanho cada vez maior. Em resumo, problemas complexos normalmente exigem algoritmos extensos. Em contrapartida, o principal objetivo da programao de computadores escrever um programa o menor possvel, para que se utilize um menor nmero de recursos (memria, espao no disco rgido, etc.), enquanto se resolve o problema de forma objetiva. Nesse cenrio, o volume de instrues e estruturas condicionais no algoritmo geram grande dificuldade de leitura e, em caso de problema, levar muito tempo para localizar sua origem. A soluo quebrar ou dividir o algoritmo em vrias e pequenas partes que, juntas, formaro um grande algoritmo. Esses pedaos de instrues de programao so conhecidos por mdulos ou subalgoritmos. Ao modularizar um algoritmo, buscamos aumentar a funcionalidade das partes do conjunto, facilitando o seu entendimento e possibilitando a reutilizao das partes. Todo programa modularizado contm um algoritmo principal (figura 26), o primeiro conjunto de instrues que sero executadas quando o programa for iniciado. A partir do algoritmo principal, so chamados os demais mdulos que compem o programa. Um subalgoritmo normalmente resolve problemas simples, como a operao aritmtica especfica ou verifica se uma determinada entrada de dados foi realizada Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

78

pelo usurio. Um subalgoritmo pode ser chamado pelo algoritmo principal ou por outros subalgoritmos que compem o programa. Quando ocorre a chamada ao subalgoritmo, as instrues contidas sero executadas e, aps sua execuo, o processamento do programa retornar para o ponto de chamada. Algumas modularizao: Confiabilidade: pela diviso do problema em pequenas partes simples, aumenta a possibilidade da soluo correta; Legibilidade: o programa fcil de ser lido e entendido por um programador de nvel mdio; Facilidade de manuteno: o programa fcil de ser modificado. Quando houver necessidade de mudana, a alterao ser facilmente implementada. Na verdade, apenas pequenas partes recebero modificaes; Flexibilidade: o programa fcil de ser reutilizado. Por exemplo: caractersticas de um algoritmo refletem a abordagem de

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

79

Figura 26 Chamando um subalgoritmo Os programadores utilizam subalgoritmos por dois motivos: Para facilitar a construo de algoritmos grandes: com a quebra do problema, usando pequenos conjuntos de instrues, mais fcil realizar a manuteno no programa; Para armazenar instrues repetitivas em uma nica localizao: algumas vezes voc precisar realizar uma tarefa mais de uma vez em seu algoritmo. Ao invs de escrever as instrues repetidas vezes, voc pode escrev-las em um subalgoritmo, que far parte do seu programa e poder ser chamado vrias vezes, em pontos diferentes do algoritmo; Algoritmos Para delimitar o escopo (nvel de abrangncia) de variveis: atravs da modularizao, uma varivel poder consumir recursos do

SOCIESC Sociedade Educacional de Santa Catarina

80

computador somente em determinados momentos do programa, otimizando a execuo do mesmo. Existem dois tipos de subalgoritmos: mdulos (ou procedimentos) e funes. Vamos conhecer cada um deles.

2 MDULOS

Conforme vimos, ao dividirmos um algoritmo em pequenas partes interdependentes, esses pedaos so chamados subalgoritmos, mas a identificao dos subalgoritmos pode variar de acordo com a linguagem em uso. Algumas linguagens chamam subalgoritmos de mdulos e outras chamam de procedimentos (podem tambm ser referenciados como desvios). Neste curso, vamos utilizar o termo mdulo ao pedao de programa que contm instrues que aceitam dados e utilizam estes dados para executar tarefas especficas. Os mdulos podem ser chamados em qualquer parte do algoritmo principal, como tambm podem ser chamados por outros mdulos que estejam presentes no mesmo programa. A chamada ao mdulo representa a execuo das aes contidas, em seguida, a execuo retorna ao ponto da chamada (poder ser o mdulo principal ou outros mdulos). No existe ordem para definio dos mdulos. Um mdulo composto por duas ou trs partes: Nome do mdulo; Uma ou mais instrues que devero ser executadas no mdulo; (Opcional) Dados fornecidos pelo algoritmo de origem, que sero utilizados para o processamento e execuo das instrues contidas no mdulo. (Este assunto ser tratado no tpico Passagem de Parmetros.) Veja na figura 27 um exemplo de construo de algoritmo com subalgoritmos, usando mdulo.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

81

Figura 27 Pseudocdigo para chamar um mdulo

3 FUNES

As funes compreendem as mesmas caractersticas de um mdulo. A diferena est no retorno do processamento do subalgoritmo. Em um mdulo, o processamento ocorre manipulando variveis do algoritmo principal e pode realizar vrias transformaes ao retornar ao ponto principal de chamada. As funes permitem o retorno de apenas um resultado e podem ser utilizadas como parte de uma expresso no algoritmo. Dessa forma, uma funo um bloco de instrues que computa e devolve um valor, semelhante s funes matemticas. Veja na figura 28 um exemplo de construo de algoritmo com subalgoritmos, neste caso usando Funo.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

82

Figura 28 Pseudocdigo para chamar uma funo

4 PASSAGEM DE PARMETROS

Parmetros so canais para se estabelecer uma comunicao bidirecional entre um mdulo e outro (mdulo principal ou outros mdulos). As informaes de um mdulo podem ser enviadas para um outro mdulo que, por sua vez, poder utilizar as informaes e alter-las ou no. Esse mecanismo chamado passagem de parmetros ou argumentos e pode ser de dois tipos: passagem de parmetros por valor (ou cpia) e passagem de parmetros por referncia. Essa abordagem complementa a construo de programas modularizados, ou seja, permite que as vrias partes possam comunicar-se por um mecanismo simples e direto de manipulao de parmetros. Com base nos exemplos apresentados anteriormente, veja a figura 29.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

83

Figura 29 Passagem de parmetros Vejamos agora quais so os tipos de parmetros que podemos utilizar na comunicao entre as partes de um programa: Passagem de parmetros por valor: faz-se uma cpia do contedo das variveis locais para um outro mdulo. As modificaes efetuadas nos dados do parmetro no retornam ao mdulo chamador. Esse tipo de mecanismo reserva um espao diferente em memria para os parmetros serem copiados e no causarem modificaes nos dados originais; Passagem de parmetros por referncia: faz-se a cpia do endereo da memria onde a varivel est armazenada. Nesse mecanismo, uma outra varivel ocupando um outro espao diferente na memria no armazena o dado em si, mas o endereo onde ele se localiza na memria. Sendo assim, todas as modificaes efetuadas nos dados do parmetro sero feitas no contedo original da varivel.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

84

SNTESE

Chegamos ultima aula do curso. Nesta aula voc aprendeu a importncia da modularizao de programas, percebendo que ser uma abordagem comum no diaa-dia como programador. Este o principal tpico da chamada Programao Estruturada, que identificada como um mtodo para desenvolvimento de software e hoje a base para o programador iniciante. Vimos tambm quais os instrumentos de linguagem, utilizados para a construo de programas estruturados, que so os mdulos e as funes. Finalmente, falamos sobre os parmetros, que so os elementos utilizados para manter a comunicao entre as vrias partes de um programa modularizado.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

85

EXERCCIOS PROPOSTOS

1) Explique a diferena entre mdulo e funo. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

2) Qual a importncia da modularizao de um programa? ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

3) Quais so as vantagens da modularizao de um programa? ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

86

REFERNCIAS
LOGICA DE PROGRAMAAO A CONSTRUO DE ALGORITMOS E ESTRUTURA DE DADOS Autor: FORBELLONE, A. e EBERSPACHER, H. Editora: MAKRON APRENDA EM 24 HORAS ESTRUTURA DE DADOS E ALGORITMO Autor: LAFORE, ROBERT Editora: CAMPUS ESTRUTURAS DE DADOS - CONCEITOS E TCNICAS DE IMPLEMENTAO Autor: VILLAS, MARCOS VIANNA Editora: CAMPUS - BB INTRODUO A ESTRUTURA DE DADOS - UMA INTRODUO COM TCNICAS DE PROGRAMAO EM C Coleo: CAMPUS/SOCIEDADE BRASILEIRA DE COMPUTAO (SBC) Autores: CELES, WALDEMAR, CERQUEIRA, RENATO e RANGEL, JOSE LUCAS Editora: CAMPUS ALGORITMOS E LGICA DE PROGRAMAO Autores: SOUZA, MARCO ANTONIO FURLAN DE, GOMES, MARCELO MARQUES, SOARES, MARCIO VIEIRA e CONCILIO, RICARDO Editora: THOMSON PIONEIRA LGICA DE PROGRAMAO Autor: FORBELLONE, ANDRE LUIZ Editora: PRENTICE HALL BRASIL LGICA DE PROGRAMAO Autor: XAVIER, GLEY FABIANO CARDOSO Editora: SENAC SO PAULO LGICA DE PROGRAMAO E ESTRUTURAS DE DADOS Autor: PUGA, SANDRA / RISSETTI, GERSON Editora: PRENTICE HALL BRASIL LGICA DE PROGRAMAO - ENSINO PRTICO Autor: MAGRI, JOAO ALEXANDRE Editora: ERICA LGICA DE PROGRAMAO Autores: BERG, ALEXANDRE CRUZ e FIGUEIRO, JOICE PAVEK Editora: ULBRA LGICA ESTRUTURADA PARA PROGRAMAO DE COMPUTADORES Autores: MANZANO, JOSE AUGUSTO NAVARRO GARCIA Editora: ERICA

Algoritmos