56275894 Apostila de Algoritmo e Programacao Portugol

download 56275894 Apostila de Algoritmo e Programacao Portugol

of 49

Transcript of 56275894 Apostila de Algoritmo e Programacao Portugol

Curso tcnico em Informtica Soeducar - PEP

Algoritmo e Programao

Alterada por: Daniel Pereira Ribeiro

SumrioIntroduo ................................ ................................ ................................ ................................ ................................ .. 4 1. 2. 3. 1. 2. 3. 4. 5. 6. 7. 1. 2. 3. 4. Alguns Conceitos Bsicos................................ ................................ ................................ ............................... 4 Software ................................ ................................ ................................ ................................ ......................... 5 O DESENVOLVIMENTO DE SISTEMAS DE INFORMAO E O PROGRAMADOR ................................ ...... 6 PSEUDO-CDIGO ................................ ................................ ................................ ................................ ......... 7 Portugus Estruturado ................................ ................................ ................................ ................................ .... 8 LINGUAGEM DE PROGRAMAO ................................ ................................ ................................ ............... 8 TIPOS DE LINGUAGENS DE PROGRAMAO ................................ ................................ ............................ 8 PROCESSO DE CRIAO E EXECUO ................................ ................................ ................................ ..... 8 ERROS NUM PROGRAMA ................................ ................................ ................................ .......................... 10 CRITRIOS DE QUALIDADE ................................ ................................ ................................ ....................... 10 IDENTIFICADORES, CONSTANTES, VARIVEIS E TIPOS BSICOS ................................ ........................ 11 DECLARAO DE VARIVEIS ................................ ................................ ................................ .................... 12 PALAVRAS RESERVADAS ................................ ................................ ................................ .......................... 12 OPERADORES ................................ ................................ ................................ ................................ ............ 13 3.1. 3.2. 3.3. 3.4. 3.5. 5. 6. OPERADOR DE ATRIBUIO ................................ ................................ ................................ ............. 13 OPERADORES ARITMTICOS: ................................ ................................ ................................ ........... 13 OPERADORES RELACIONAIS: ................................ ................................ ................................ ........... 13 OPERADORES LGICOS: ................................ ................................ ................................ ................... 14 PRIORIDADE DE OPERADORES: ................................ ................................ ................................ ....... 15

ALGORITMO ................................ ................................ ................................ ................................ ............................. 7

COMANDOS BSICOS ................................ ................................ ................................ ................................ ........... 11

EXERCCIOS INTRODUTRIOS I ................................ ................................ ................................ ............ 15 COMANDOS DE ENTRADA E SADA ................................ ................................ ................................ .......... 16 6.1. 3.6. Comando de Entrada de Dados ................................ ................................ ................................ ............ 16 Comando de Sada de Dados ................................ ................................ ................................ ............... 16

7. 1. 2.

ESTRUTURA DE UM ALGORITMO EM PSEUDO -CDIGO E C ................................ ................................ 16 SEQUNCIA ................................ ................................ ................................ ................................ ................ 17 SELEO ................................ ................................ ................................ ................................ .................... 17 2.1. 2.2. 2.3. SELEO SIMPLES ................................ ................................ ................................ ............................. 18 SELEO COMPOSTA ................................ ................................ ................................ ........................ 18 ANINHAMENTO DE SELEES ................................ ................................ ................................ .......... 18 LAO ENQUANTO(WHILE) ................................ ................................ ................................ .................. 19 CONTROLADOS POR CONTADOR ................................ ................................ ................................ ..... 19 REPETIO COM TESTE NO FINAL ................................ ................................ ................................ ... 20 ESCAPE DO LAO Abandone (break)................................ ................................ ............................... 21 Sinalizador ('Flags') ................................ ................................ ................................ ............................... 21

ESTRUTURAS BSICAS DE CONTROLE ................................ ................................ ................................ ............... 17

3.

ESTRUTURAS DE REPETIO - LAOS(LOOPS) ................................ ................................ ..................... 19 3.1. 3.2. 3.7. 3.8. 3.9.

4. 5. 6. 7. 1.

EXERCCIOS INTRODUTRIOS II................................ ................................ ................................ ............ 21 REGRAS PRTICAS PARA A CONSTRUO DE ALGORITMOS LEGVEIS ................................ .............. 22 UMA REFLEXO ANTES DE RESOLVER OS PROBLEMAS ................................ ................................ ....... 23 EXERCCIOS COMPLEMENTARES - I ................................ ................................ ................................ ........ 23 VETORES E MATRIZES ................................ ................................ ................................ .............................. 25

ALGORTMOS BASEADOS EM ESTRUTURAS DE DADOS HOMOGNEAS: ................................ ........................ 25

2. 3. 4.

REPETIO COM VARIVEL DE CONTROLE PARA (for) ................................ ................................ ....... 25 SELEO DENTRE AS MLTIPLAS ALTERNATIVAS -CASO (CASE)................................ ......................... 26 VETORES ................................ ................................ ................................ ................................ .................... 27 4.1. 3.10. DECLARAO DE VETORES ................................ ................................ ................................ .............. 28 EXERCCIOS SOBRE VETORES ................................ ................................ ................................ ......... 30 Exerccios Resolvidos ................................ ................................ ................................ ........................... 33

5.

MATRIZES ................................ ................................ ................................ ................................ ................... 31 5.1.

MODULARIZAO DE ALGORITMOS ................................ ................................ ................................ .................... 35 1. 2. 3. 4. 5. INTRODUO ................................ ................................ ................................ ................................ ............. 35 PROCEDIMENTOS ................................ ................................ ................................ ................................ ...... 35 FUNES ................................ ................................ ................................ ................................ .................... 36 Prottipos de Funes ................................ ................................ ................................ ................................ .. 39 Escopo de Variveis ................................ ................................ ................................ ................................ ..... 40 5.1. 3.11. 3.12. 6. 7. 8. 1. 2. Variveis locais ................................ ................................ ................................ ................................ ..... 40 Parmetros formais ................................ ................................ ................................ ............................... 41 Variveis globais ................................ ................................ ................................ ................................ ... 41

Passagem de parmetros por valor e passagem por referncia ................................ ................................ .... 42 FUNES RECURSIVAS ................................ ................................ ................................ ............................ 43 ESTRUTURAO DOS MDULOS DE UM ALGORITMO ................................ ................................ ........... 43 INTRODUO ................................ ................................ ................................ ................................ ............. 44 ALGORITMOS DE PESQUISA ................................ ................................ ................................ ..................... 44 2.1. 3.13. 3.14. PESQUISA SEQENCIAL SIMPLES ................................ ................................ ................................ .... 44 PESQUISA SEQENCIAL ORDENADA ................................ ................................ ............................... 45 PESQUISA BINRIA ................................ ................................ ................................ ............................. 46 MTODO DE SELEO DIRETA ................................ ................................ ................................ ......... 47 MTODO DE INSERO DIRETA ................................ ................................ ................................ ....... 48 MTODO DA BOLHA ................................ ................................ ................................ ........................... 48

ALGORITMOS DE PESQUISA E ORDENAO ................................ ................................ ................................ ...... 44

3.

ALGORITMOS DE ORDENAO................................ ................................ ................................ ................. 47 3.1. 3.2. 3.3.

IntroduoNesta apostila estudaremos Lgica de Programao e, para isso, importante ter uma viso geral do processo de desenvolvimento de programas (software), visto que o objetivo final ter um bom embasamento terico para a prtica da programao de computadores.

1. Alguns Conceitos BsicosDados So elementos brutos que podem ser processados por um computador para se obter alguma concluso ou resultado, ou seja, uma informao. Computador Mquina (Hardware) muito rpida que pode processar dados, realizando clculos e operaes repetitivas, se dotados de programao adequada (software ou firmware), e que fornece resultados corretos e precisos. Informao o resultado do processamento dos dados pelo computador. Uma informao pode ser considerada como um dado para outro processamento e, por isso, muitas v ezes referenciada como dado de sada. Hardware um termo de origem americana que engloba todo o equipamento, principal e perifrico, de um computador. O termo utilizado tambm para equipamentos sem software. O hardware normalmente fixo e difcil de ser modificado. Software outro termo de origem americana que engloba programas, documentao, proce ssamento de dados, utilizados em um computador para resoluo de determinado problema. O software, ao contrrio do hardware, malevel e por isso mais facilmente modificvel pelo programador, para adaptao a novos dados, novos requisitos do problema a ser resolvido, ou novo hardware onde vai funcionar (ser executado). Programa de computador Sequncia de instrues no ambgua e finita em uma linguagem de programao especifica que, quando executada, resolve um problema determinado. Linguagem de mquina a linguagem binria (composta de zeros e uns) utilizada pelos computadores, para representar dados, programas e informaes. tediosa, difcil de compreender e fcil de gerar erros na programao. Linguagens baixo nvel Linguagem de programao que compreende as caractersticas da arquitetura do computador. Assim, utiliza somente instrues do processador, para isso necessrio conhecer os registradores da mquina. Nesse sentido, as linguagens de baixo nvel esto diretamente relacionadas com a arquitetura do computador. Um exemplo a linguagem Assembly que trabalha diretamente com os registradores do processador, manipulando dados. Linguagens alto nvel Englobam todas as linguagens de programao que utilizam compiladores ou interpretadores. Possuem instrues mais poderosas que as linguagens de baixo nvel facilitando ainda mais o , trabalho do programador. Ex. Pascal, Delphi, C, C#, Java, PHP, etc. Linguagens no procedurais de alto nvel So linguagens utilizadas para sistemas de gerenciamento de banco de dados, planilhas, e outros aplicativos que utilizam comandos ainda mais poderosos que as linguagens de alto nvel e, por isso, so ainda mais fceis de programar. Ex. SQL, DBASE, Oracle PL/SQL, XML, etc. Compilador um programa utilizado para traduzir os programas escritos pelo programador nas linguagens de alto nvel (programa fonte) para linguagem de mquina (programa executvel), para que possa ser executado pelo computador. Interpretador um programa que traduz os programas escritos pelo programador para linguagem de mquina no momento da execuo (no existindo assim o programa executvel). IDE (Ambiente de Desenvolvimento Integrado) um programa que reuni algumas ferramentas para o desenvolvimento e software como, editor de texto, compilador, depurador, entre outro, facilitando o trabalho do programador.4

2. SoftwareO software de um computador o que determina o seu uso e os resultados que sero produzidos e apresentados. Em um computador digital existem diversos tipos diferentes de software com finalidades e complexidades diferentes. Normalmente, quanto mais relacionado e prximo ao hardware, o software mais difcil e complexo de ser desenvolvido e mantido pelo programador.A Figura abaixo procura ilustrar em camadas o que foi dito. Partindo-se do hardware que est nocentro e normalmente contm um conjunto de instrues operacionais programado diretamente nele (FIRMWARE). O firmware armazenado permanentemente num circuito integrado (chip) de memria do hardware, como uma ROM, PROM, EPROM ou ainda EEPROM e memria flash, no momento da fabricao do componente. Muitos aparelhos simples possuem firmware, entre eles podemos citar controle remoto, calculadora de mo, alguns perifricos do computador como disco rgido, teclado, modem e tambm aparelhos mais complexos como celulares, cmeras digitais, aparelhos de som, geladeiras, entre outros que possuem um firmware para a execuo de suas tarefas. O Sistema Operacional com seus diversos programas a primeira camada de software donosso computador. muito complexo desenvolver-se um sistema operacional como DOS, UNIX, LINUX, WINDOWS, MAC OS, ANDROID e outros que voc j deve ter ouvido falar. Externamente ao sistema operacional vamos encontrar os compiladores e interpretadores das linguagens de programao que, de certa forma, traduzem os programas aplicativos para a linguagem de mquina que o computador entende. Nesta segunda camada encontramos tambm os processadores ou editores de texto, os gerenciadores de bancos de dados (MySQL, Firebird, PostgreSQL, Oracle, MS Access, etc.), as planilhase muitos outros programas utilitrios (Antivrus, Navegadores WEB, Reprodutores de udio e vdeo, editores de imagens, et .). c Na camada mais externa encontramos os programas aplicativos que podem serdesenvolvidos utilizandose os recursos da camada anterior e nas linguagens de programao,utilizando as IDEs, os interpretadores ou os compiladores para poderem ser desenvolvidos executados. Para o desenvolvimento destes programas que se faz uso das tcnicas de construo de algoritmos, de forma a se garantir que os programas sero gerados com um mnimo de e e podero ser mantidos, sem rro dificuldade, por um programador, que no o tenha desenvolvido. Ao contrrio do que muitos pensam, um computador no faz nada sozinho. Ele uma mquina rpida, que resolve problemas bem definidos e repetitivos, mesmo complexos, mas somente se for bem programado. Ou seja: se temos LIXO na entrada (quer na forma de maus programas ou dados ruins), teremos LIXO na sada (nossos resultados).

Figura 1.1 As Camadas de software em um computador.

5

3. O DESENVOLVIMENTO DE SISTEMAS DE INFORMAO E O PROGRAMADORUm sistema de informao pode ser definido como um sistema baseado em computador que auxilia, automatiza e aperfeioa o funcionamento de qualquer atividade atravs da(o): y y y Reduo da participao do homem em atividades rotineiras e repetitivas; Aumento da facilidade na coleta e armazenamento de dados e na rapidez de recuperao e manuseio; Reduo do nmero de erros produzidos em operaes de coleta, arquivamento e recuperao de dados e de informaes; Aumento de facilidade e flexibilidade na gerao de relatrios, entre outros.

Qual o papel do programador e do analista de sistemas no desenvolvimento de sistemas de informao? Vejamos o Ciclo de Vida de um sistema. Para desenvolvimento de qualquer sistema informatizado de boa qualidade h que se passar pelas seguintes fases: 1 Fase: Estudo de Viabilidade (Estudos Iniciais das necessidades de um sistema) 2 Fase: Anlise detalhada do sistema (Planejamento com o cliente) 3 Fase: Projeto preliminar do sistema (Planejamento com os analistas de sistemas) 4 Fase: Projeto detalhado do sistema (Algoritmos) 5 Fase: Codificao ou implementao (na linguagem escolhida) 6 Fase: Testes 7 Fase: Implementao, operao e manuteno As trs primeiras fases normalmente so de responsabilidade dos Analistas de Sistemas. Nas outras podem trabalhar indistintamente, dependendo da complexidade e da situao, programadores, analistas ou programadores e analistas. A construo dos algoritmos aparece ento na fase do projeto detalhado do sistema. Aps definidos e criados todos os algoritmos temos de codific-los na linguagem escolhida. Para essa tarefa o programador dever conhecer a mquina e o compilador a serem utilizados, e esse assunto ser coberto nos prximos mdulos. No desenvolvimento de um sistema, quanto mais tarde um erro detectado, mais dinheiro etempo se gasta para repar-lo. Assim, a responsabilidade do programador maior na criao dosalgoritmos do que na sua implementao, pois, quando bem projetados, no se perde muito tempo tendo que refaze-los reimplant-los e retest-los, assegurando assim um final feliz e no prazo previstopara o projeto. Entretanto, num projeto, o trabalho de desenvolvimento de algoritmos e programaspoder ter de ser todo refeito se houver problemas nas trsprimeiras fases, mostrando assim aimportncia do trabalho do Analista de Sistemas. Pode-se encontrar na literatura em informtica vrias formas de representao das etapas que compem o ciclo de vida de um sistema. Essas formas de representao podem variar tanto na quantidade de etapas quanto nas atividades a serem realizadas em cada fase. Como pode-se observar, nesse exemplo de ciclo de vida de um sistema (com sete fases) apresentado acima, os algoritmos fazem parte da quarta etapa do desenvolvimento de um programa. Na verdade, os algoritmos esto presentes no nosso dia-a-dia sem que saibamos, pois uma receita culinria, as instrues de uso de um equipamento ou as indicaes de um instrutor sobre como estacionar um carro, por exemplo, nada mais so do qu algoritmos. e

6

ALGORITMOUm Algoritmo uma sequncia de instrues ordenadas de forma lgica para a resoluo de uma determinada tarefa ou problema. Algoritmo no computacional cujo objetivo a utilizao de um telefone pblico.

Incio 1. Tirar o fone do gancho; 2. Ouvir o sinal de linha;S E Q U N C I A

3. Introduzir o carto; 4. Teclar o nmero desejado; 5. Se der o sinal de chamar 5.1 Conversar; 5.2 Desligar; 5.3 Retirar o carto; 6. Seno 6.1 Repetir; Fim.

REPETIO

SELEO

Podemos definir como formas bsicas para definir uma soluo de qualquer problema as etapas de: SEQUNCIA SELEO REPETIO Claro que para criar um algoritmo computacional no ser to simples como esse apresentado. Na informtica, o algoritmo o "projeto do programa", ou seja, antes de se fazer um programa (software) na Linguagem de Programao desejada (Pascal, C, Delphi, Java, PHP, etc.) deve-se fazer o algoritmo do programa. J um programa, um algoritmo escrito numa forma compreensvel pelo computador (atravs de uma Linguagem de Programao), onde todas as aes a serem executadas devem ser especificadas nos mnimos detalhes e de acordo com as regras de sintaxe1 da linguagem escolhida. Um algoritmo no a soluo de um problema, pois, se assim fosse, cada problema teria um nico algoritmo. Um algoritmo um 'caminho' para a soluo de um problema e, em geral, existem muitos caminhos que levam a uma soluo satisfatria, ou seja, para resolver o mesmo problema pode-se obter vrios algoritmos diferentes. Assim podemos definir que um algoritmo precisa: 1. Ter incio e fim; 2. Ser descrito em termos de aes no ambguas e bem definidas; 3. Que as aes sigam uma sequncia ordenada.

1. PSEUDO-CDIGOOs algoritmos so descritos em uma linguagem chamada pseudo-cdigo. Este nome uma aluso posterior implementao em uma linguagem de programao, ou seja, quando formos programar em uma linguagem, por exemplo, C, estaremos gerando cdigo em C. Por isso os algoritmos so independentes das linguagens de programao. Ao contrrio de uma linguagem de programao no existe um formalismo rgido de como deve ser escrito o algoritmo. O algoritmo deve ser fcil de interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao. Utilizaremos em nosso curso o PORTUGOL para o estudo dos algoritmos e a Linguagem de Programao C para a criao dos programas. 7

2. Portugus EstruturadoO Portugus Estruturado uma forma especial de linguagem bem mais restrita que a Lngua Portuguesa e com significados bem definidos para todos os termos utilizados nas instrues (comandos). Essa linguagem tambm conhecida como Portugol (juno de Portugus com Algol, Pseudocdigo ou Pseudolinguagem. O Portugus Estruturado na verdade uma simplificao extrema da lngua portuguesa, limitada a pouqussimas palavras e estruturas que tm significado pr-definido, pois deve-se seguir um padro. Emprega uma linguagem intermediria entre a linguagem natural e uma linguagem de programao, para descrever os algoritmos. A sintaxe do Portugus Estruturado no precisa ser seguida to rigorosamente quanto a sin taxe de uma linguagem de programao, j que o algoritmo no ser executado como um programa. Embora o Portugus Estruturado seja uma linguagem bastante simplificada, ela possui todos os elementos bsicos e uma estrutura semelhante de uma linguagem de pr gramao de computadores. Portanto, resolver o problemas com portugus estruturado pode ser uma tarefa to complexa quanto a de escrever um programa em uma linguagem de programao qualquer, s no to rgida quanto a sua sintaxe, ou seja, o algoritmo no d eixa de funcionar porque esquecemos de colocar um ';' (ponto evrgula)por exemplo, j um programa no funcionaria. A Figura a seguir apresenta um exemplo de algoritmona forma de representao de portugus estruturado.

Figura 2.1: Exemplo de Portugus Estruturado

3. LINGUAGEM DE PROGRAMAOUma linguagem de programao uma notao formal para descrio de algoritmos que sero executados por um computador. Como todas as notaes formais, uma linguagem de programao tem dois componentes: Sintaxe e Semntica. A sintaxe consiste em um conjunto de regras formais, que especificam a composio de programas a partir de letras, dgitos, e outros smbolos. Por exemplo, regras de sintaxe podem especificar que cada parnteses aberto em uma expresso aritmtica deve corresponder a um parnteses fechado, e que dois comandos quaisquer devem ser separados por um ponto e vrgula. As regras de semntica especificam o significado de qualquer programa, sintaticamente vlido, escrito na linguagem.

4. TIPOS DE LINGUAGENS DE PROGRAMAOExistem diversas linguagens de programao, cada uma com suas caractersticas especficas e com nveis de complexidade e objetivos diferentes como j vimos anteriormente: Linguagem de Mquina Linguagens de Baixo Nvel Linguagens de Alto Nvel nica compreendida pelo computador. Especfica para cada tipo de computador (processador). Ex.: Assembly Utiliza instrues prximas da linguagem humana de forma a facilitar o raciocnio. Ex.: Uso Cientfico: Fortran Propsito Geral: Pascal, C, Basic, Delphi, Java Uso Comercial: Cobol, Clipper

y

y y

5. PROCESSO DE CRIAO E EXECUOEmbora seja teoricamente possvel a construo de computadores especiais, capazes de executar programas escritos em uma linguagem de programao qualquer, os computadores, existentes hoje em dia so capazes de executar somente programas em linguagem de baixo nvel, a Linguagem deMquina. 8

As Linguagens de Mquina so projetadas levando -se em conta os seguintes aspectos: Rapidez de execuo de programas; Custo de sua implementao; Flexibilidade com que permite a construo de programas de nvel mais alto. Por outro lado, lin guagens de programao de alto nvel so projetadas em funo de: Facilidade de construo de programas Confiabilidade dos programas O PROBLEMA : Como a linguagem de nvel mais alto pode ser implementada em um computador, cuja linguagem bastante diferente e de nvel mais baixo? SOLUO: Atravs da traduo de programas escritos em linguagens de alto nvel para alinguagem de baixo nvel do computador. Para isso existem trs tipos de programas tradutores: Montadores, Interpretadores e Compiladores ou simplesmente uma IDE. MONTADOR Efetua a traduo de linguagem de montagem (Assembly) para a linguagem demquina. 1. 2. 3. 4. Obtm prxima instruo do Assembly Traduz para as instrues correspondentes em linguagem de mquina Executa as instrues em linguagem de mquina Repete o passo 1 at o fim do programa

INTERPRETADOR Efetua a traduo de uma linguagem de alto nvel para linguagem demquina da seguinte forma: 1. 2. 3. 4. Obtm prxima instruo do cdigo-fonte em linguagem de alto nvel Traduz para as instrues correspondentes em linguagem de mquina Executa as instrues em linguagem de mquina Repete o passo 1 at o fim do programa

COMPILADOR Efetua a traduo de todo o cdigo-fonte em linguagem de alto nvel para as instrues correspondentes em linguagem de mquina, gerando o cdigo-objeto do programa. Em seguida necessrio o uso de outro programa (Link-Editor) que responsvel pela juno de diversos cdigos -objeto em um nico programa executvel. IDEs Facilitam a tcnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rpido de Aplicativos"), que visa a maior produtividade dos desenvolvedores. As caractersticas e ferramentas mais comuns encontradas nos IDEs so: y y y y y Editor - edita o cdigo-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE; Compilador (compiler) - compila o cdigo-fonte do programa, editado em uma linguagem especfica e a transforma em linguagem de mquina; Linker - liga (linka) os vrios "pedaos" de cdigo-fonte, compilados em linguagem de mquina, em um programa executvel que pode ser executado em um computador ou outro dispositivo computacional. Depurador ( ebugger) - auxilia no processo de encontrar e corrigir defeitos no cdigo-fonte do programa, na tentativa de aprimorar a qualidade de software; Modelagem (modelling) - criao do modelo de classes, objetos, interfaces, associaes e interaes dos artefatos envolvidos no software com o objetivo de solucionar as necessidades -alvo do software final. Gerao de cdigo - caracterstica mais explorada em Ferramentas CASE, a gerao de cdigo tambm encontrada em IDEs, contudo com um escopo mais direcionado a templates de cdigo comumente

y

9

y y

y

utilizados para solucionar problemas rotineiros. Todavia, em conjunto com ferramentas de modelagem, a gerao pode gerar todo ou praticamente todo o cdigo-fonte do programa com base no modelo proposto, tornando muito mais rpido o processo de desenvolvimento e distribuio do software; Distribuio (deploy) - auxilia no processo de criao do instalador do software, ou outra fo rma de distribuio, seja discos ou via internet. Testes Automatizados (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatrio, assim auxiliando na anlise do impacto das alteraes no cdigo-fonte. Ferramentas deste tipo mais comuns no mercado so chamadas robs de testes. Refatorao (refactoring) - consiste na melhoria constante do cdigo-fonte do software, seja na construo de cdigo mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatorao, em conjunto com os testes automatizados, uma poderosa ferramenta no processo de erradicao de "bugs", tendo em vista que os testes "garantem" o mesm o comportamento externo do software ou da caracterstica sendo reconstruda.

6. ERROS NUM PROGRAMAErros de Compilao: Erros de digitao e de uso da sintaxe da linguagem Erros de Link-Edio: Erro no uso de bibliotecas de subprogramas necessrias ao programa principal. Erros de Execuo: Erro na lgica do programa (algoritmo).

7. CRITRIOS DE QUALIDADERefere-se preciso das informaes manipuladas pelo programa, ou seja, os resultados gerados pelo processamento do programa devem estar corretos, caso contrrio o programa simplesmente no tem sentido. Clareza: Refere-se facilidade de leitura do programa. Se um programa for escrito com clareza, dever ser possvel a outro programador seguir a lgica do programa sem muito esforo, assim como o prprio a utor do programa entend-lo aps ter estado um longo perodo afastado dele. (Comentrios no cdigo) Simplicidade: A clareza e preciso de um programa so normalmente melhoradas tornando as coisas o mais simples possvel, consistentes com os objetivos do pr ograma. Muitas vezes torna-se necessrio sacrificar alguma eficincia de processamento, de forma a manter a estrutura do programa mais simples. Eficincia: Refere-se velocidade de processamento e a correta utilizao da memria. Um programa deve ter desempenho SUFICIENTE para atender as necessidades do problema e do usurio, bem como deve utilizar os recursos de memria de forma moderada, dentro das limitaes do problema. Modularizao: Durante a fase de projeto, a soluo do problema total vai sendo fatorada emsolues de subproblemas, o que permite, geralmente, dividir o problema de forma natural em mdulos com subfunes claramente delimitadas, que podem ser implementados separadamentepor diversos programadores de uma equipe, ou seja, a modularizao consiste noparticionamento do programa em mdulos menores bem identificveis e com funes especficas,de forma que o conjunto desses mdulos e a interao entre eles permite a resoluo doproblema de forma mais simples e clara. Generalidade: interessante que um programa seja to genrico quanto possvel de forma apermitir a reutilizao de seus componentes em outros projetos. METODOLOGIA DE SOLUO 1. 2. 3. 4. 5. 6. Entender o problema; Formular um esboo da soluo; Fazer uma primeira aproximao das variveis necessrias; Rever os passos originais, detalhando; Se o algoritmo estiver suficientemente detalhado, testar com um conjunto de dados significativos; Implementar numa linguagem de programao.

10

COMANDOS BSICOS1. IDENTIFICADORES, BSICOS CONSTANTES, VARIVEIS E TIPOS

Identificadores: Representam os nomes escolhidos para rotular as variveis, procedimentos e funes, normalmente, obedecem as seguintes regras:

Letra Letra Dgito

1. O primeiro caractere deve ser uma letra 2. Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto: {a,b,c,..., z,A,B,C,...Z,0,1,2,...,9,_} 3. Os nomes escolhidos devem explicitar seu contedo. EX: A, B1, BC3D,SOMA, CONTADOR ; Obs.: Um exemplo de identificador invlido seria 2AB ou qualquer outro iniciado por um dgito Constante (constant) Uma constante (Const), como sugere o nome, umidentificador que armazena um valor fixo e imutvel, durante a execuo de um algoritmoou programa. Podemos associ a uma posio de -lo memria (endereo) que tem umcontedo fixo. Este contedo poder ser um nmero (real ou inteiro), uma cadeia decaracteres (texto) ou um valor lgico (ser definido abaixo). Varivel (variable) Uma varivel (Var) um identificador que, como sugere onome, possui o contedo varivel durante a execuo de um algoritmo ou programa.Podemos associar uma varivel a uma posio da memria (endereo) e poderemosarmazenar (guardar) neste endereo qualquer valor do conjunto de valores de um tipobsico associado a ela. Uma varivel pode assumir vrios valores diferentes ao longo daexecuo do programa, mas, em um determinado momento, possui apenas um valor.Unidades bsicas de armazenamento das informaes a nvel de linguagens deprogramao. Os tipos de dados e variveis utilizados dependem da fina lidade dosalgoritmos, mas, podemos definir alguns, pelo fato de serem largamente utilizados eimplementados na maioria das linguagens: Esse tipo bsico poder ser: INTEIRO (int, short int ou long int): qualquer nmero inteiro, negativo, nulo ou positivo. Ex: -2, -1, 0... Operaes: soma(+), subtrao(-), multiplicao(*), diviso inteira(/), resto(%) e comparaes. REAL (float ou double): qualquer nmero real, negativo, nulo ou positivo. Ex: 2.5, 3.1 Operaes: soma(+), subtrao(-), multiplicao(*), diviso exata(/) e comparaes. CARACTER (char): qualquer conjunto de caracteres alfanumricos. Ex: A, B, "ABACATE" Operaes: comparaes TEXTO OU CADEIA DE CARACTERES (string):uma varivel deste tipo poder armazenaruma cadeia de caracteres de qualquer tamanho. Caso seja imprescindvel para o entendimentopode-se acrescentar, entre parnteses, a quantidade mxima de caracteres. (Exemplo: texto (10)). Obs.: Os textos devero ser representados sempre entre apstrofes para que no se confundamcom os valores numricos. Veja que o inteiro 5, diferente do texto 5. 11

LGICO (boolean):tipo especial de varivel que armazena apenas os valores V e F, onde Vrepresenta VERDADEIRO e F FALSO. Ex: e, ou, no Operaes: Verdadeiro ou Falso

2. DECLARAO DE VARIVEISConsiste na definio dos nomes e valores das constantes e dos nomes e tipos dasvariveis que sero utilizadas pelos algoritmos, previamente sua utilizao, incluindocomentrio, quando se fizerem necessrios. Na maioria das linguagens de programao, quando o computador est executando umprograma e encontra uma referncia a uma varivel ou a uma constante qualquer, se esta notiver sido previamente definida, ele no saber o que fazer com ela. Da mesma forma, umprogramador que estiver implementando um al oritmo, em alguma g linguagem de programao,ter o seu trabalho simplificado se todas as constantes e variveis referenciadas no algoritmotiverem sido previamente declaradas. As constantes so declaradas antes das variveis. Vejamosos formatos da declarao e alguns exemplos. O significado da declarao de variveis corresponde criao de locais na memria rotuladacom o nome da varivel (identificador) e marcada com o tipo de valores que ela pode conter. Paraque os programas manipulem valores, estes devem ser armazenados em variveis e para isso,devemos declar-las de acordo com a sintaxe:

inteiro real caracter lgico

identificador

Ex: Inteiro X1; obs.: X1 o nome de um local de memria que s pode conter valores do tipo inteiro real SOMA, MDIA; caractere frase, nome; inteiro X1; real A,B; lgico TEM;

3. PALAVRAS RESERVADASSo palavras que tero uso especfico no nosso pseudo-cdigo e que no devero serusadas como identificadores, para no causar confuso na interpretao. Exemplo: Algoritmo, Programa, Bloco, Procedimento, Inteiro, Real, Texto, Const,Var, Tipo, Incio, Imprima, Se, Ento, Seno, Enquanto, Repita, Variando,Faa, Caso, At, Vetor, Matriz, Registro, Fim, Execute, Procedimento, Funo, etc.... O significado de cada um desses termos ser visto e entendido nos itens e captulos que seseguem. COMANDO SIMPLES uma instruo simples. leia(x); COMANDO COMPOSTO Um grupo de comandos simples que executam alguma tarefa. Incio leia(x); y = 2*x; fim.

12

4. OPERADORESNa soluo da grande maioria dos problemas necessrio que as variveis tenham seus valores consultados ou alterados, para isto, devemos definir um conjunto de OPERADORES, sendo eles:

3.1. OPERADOR DE ATRIBUIOIdentificador = Expresso aritmtica Expresso lgica Expresso literal Ex: O valor da expresso atribudo ao identificador (varivel). X = 2; y = 5-x; Este comando permite que se fornea ou altere o valor de uma determinada varivel, onde o tipo desse valor seja compatvel ao tipo de varivel na qual est sendo armazenado, de acordo com o especificado na declarao. NUM = 8 {A varivel NUM recebe o valor 8} NOME = Guilherme {A varivel NOME recebe o valor Guilherme} CONT = 0 AUXNOME = NOME {A varivel AUXNOME recebe o contedo da varivel NOME} ACHOU = falso {A varivel ACHOU recebe o valor falso}

3.2. OPERADORES ARITMTICOS:+ = Adio * = Multiplicao - = Subtrao ou inverso do sinal. % = Resto da diviso de inteiros 5%2=1 b a**b = Exponenciao a SINAL(A) - Fornece o valor -1, +1 ou zero conforme o valor de A seja negativo, positivo ou igual a zero.

/ = Diviso TRUNCA(A) - A parte inteira de um nmero Fracionrio. / = Quociente da diviso de inteiros ARREDONDA(A) - Transforma por arredondamento, 5/2=2 um nmero fracionrio em inteiro. Obs. FUNES PRIMITIVAS: As funes mais comuns de matemtica so tambm definidas e vlidas no PORTUGOL. Exemplos: LOG (X), {d o logaritmo na base 10 de X} SEN (X), {d o seno de X} ABS (X), {d o valor absoluto de X} INT (X), {d a parte inteira de um real X} ARREDONDA (x), {arredonda um real para inteiro} RAIZ (X), {d a raiz quadrada de X} etc.

3.3. OPERADORES RELACIONAIS:So utilizados para relacionar variveis ou expresses, resultando num valor lgico (Verdadeiro ou Falso), sendo eles: == igual = maior ou igual

Exemplo: NUM = 3 NOME = DENISE NUM > 5 falso (0) {3 no maior que 5} NOME < DENIZ verdadeiro (1) {DENISE vem antes de DENIZ} 13

(5 + 3) > = 7 verdadeiro NUM != (4 1) falso {lembre-se que NUM recebeu 3}

3.4. OPERADORES LGICOS:Os operadores lgicos permitem que mais de uma condio seja testada em uma nica expresso, ouseja, pode-se fazer mais de uma comparao (teste) ao mesmo tempo. Operao Negao Conjuno Disjuno (no exclusiva) Disjuno (exclusiva) Operador no e ou xou (l-se: ou exclusivo)

Note que a tabela acima, apresenta os operadores lgicos j ordenados de acordo com suas prioridades, ou seja, se na mesma expresso tivermos o operador ou e o operador no, por exemplo,primeiro devemos executar o no e depois o ou. De uma forma geral, os resultados possveis para os operadores lgicos podem ser vistos na tabela abaixo, conhecida como Tabela Verdade: A F F V V B F V F V AeB F F F V A ou B F V V V no A V V F F A xou B F V V F

Exemplos de testes utilizando operadores lgicos: Expresso Se chover e relampejar, eu no saio. Se chover ourelampejar, eu no saio. Se chover xourelampejar, eu no saio. Quando eu no saio? Somente quando chover e relampejar ao mesmo tempo (apenas 1 possibilidade). Somente quando chover, somente quandorelampejar ou quando chover e relampejar aomesmo tempo (3 possibilidades). Somente quando chover, ou somente quandorelampejar (2 possibilidades).

1.

Se (salario > 180) e (salrio < 800) Ento Escrever ('Salrio vlido para financiamento') Seno Escrever ('Salrio fora da faixa permitida para financiamento') FimSe. Se (idade < 18) ou (idade > 95) Ento Escrever ('Voc no pode fazer carteira de motorista') Seno Escrever ('Voc pode possuir carteira de motorista') FimSe Se (idade > = 18) e (idade < = 95) e (aprovado_exame = 'sim') Ento Escrever ('Sua carteira de motorista estar pronta em uma semana') Seno Escrever ('Voc no possui idade permitida ou no passou nos testes') FimSe. 14

2.

3.

3.5. PRIORIDADE DE OPERADORES:Durante a execuo de uma expresso que envolve vrios operadores, necessrio a existncia de prioridades, caso contrrio poderemos obter valores que no representam o resultado esperado. A maioria das linguagens de programao utiliza as seguintes prioridades de operadores: 1 - Efetuar operaes embutidas em parnteses "mais internos" 2 - Efetuar Funes 3 - Efetuar multiplicao e/ou diviso 4 - Efetuar adio e/ou subtrao 5 - Operadores Relacionais 6 - Operadores Lgicos Ou seja, Primeiro: Parnteses e Funes Segundo: Expresses Aritmticas 1) +, - (Unitrios) 2) ** 3) *, / 4) +, - (binrio) Terceiro: Comparaes Quarto: No Quinto: e Sexto: ou OBS: O programador tem plena liberdade para incluir novas variveis, operadores ou funes para adaptar o algoritmo as suas necessidades, lembrando sempre, de que, estes devem ser compatveis com a linguagem de programao a ser utilizada.

5. EXERCCIOS INTRODUTRIOS I1. O resultado da expresso 3 + 6 * 13 = X? 2. Sendo A,B,C e D variveis do tipo inteiro, cujos contedos so: A=3, B=4, C=13 e D=4. Quais os valores fornecidos por cada uma das expresses aritmticas abaixo? a) 100*(B/A)+C b) A%5 - D/2 c) trunca(0,3+5)*2 3. a) X+Y-Z; c) JOO+JOS/JOEL; 4. 5. d) (C+D)/C**2 e) B%(A+1) f) sinal(D -C) b)A+B/C**2; d) X+Y+B**2+R*3

Qual a primeira operao executada em cada um dos comandos abaixo?

Avalie a seguinte expresso aritmtica: 6+4/2*3. O resultado desta expresso 15; 12; 24? Qual o resultado das seguintes expresses a) 1 + 7 * 2 ** 2 - 1 = X b) 3 * (1 - 2) + 4 * 2 = X

6.

Avalie as expresses abaixo sabendo que X = 2 e Y = 3 a) 3 * y - x ** 2 * (7 - y ** 2) b) 2 * x * (3 - y) / (x ** 2 - y)

7.

Identifique as entradas e sadas das expresses abaixo. Escreva-as em forma computacional a) r=2y+3zb)

15

6.

S

E E

E S

reci o represent r troca e informaes e ocorrer entre o mundo da mquina e o nosso No l orit o mundo, para isso, devemos utili ar comandos de entrada e sada, sendo que, no nvel de al oritmo esses comandos representam apenas a entrada e a sada da informao, independe do dispositivo utili ado teclado, discos, impressora, monitor,... , mas, sabemos que nas linguagens de programao essa independncia no existe, ou seja, nas linguagens de programao temos comandos especficos para cada tipo de unidade de Entrada/Sada.

6. .

m

E

Para que possamos obter dados do meio exterior para uso do computador memria principal , estes tm de vir atravs dos dispositivos de entrada. a mesma forma, as informaes que so produzidas, tm de ser levadas ao meio externo um arquivo, uma impressora, uma tela etc. atravs de um dispositivo de sada. Para isso, utilizamos dois comandos assim definidos: omando Lei ( no c): l, do meio externo, a prxima informao disponvel para leitura e armazena na(s) varivel(eis) discriminada(s) aps o comando, entre parnteses. ais tarde aprenderemos como especificar a leitura de um dado que est armazenado em um arquivo e de que arquivo est sendo lido o d ado. i , i ,... ;

Ex: leia (v);

valor da varivel (v) dado por um dispositivo de entrada (teclado).

3.6.

m5 32 4 32 76

Comando Im im ( i no c): Imprime (na tela ou na impressora) o contedo da(s) varivel(eis) especificada(s) aps o comando, entre parnteses. No ser preocupao nossa a formatao de relatrios, mas o comando permite a impresso de texto (entre), se for necessria para c lareza ou especificao do que est sendo impresso. Im

im

l

e

Imprima

Ex: imprima (x);

valor atual da varivel (x) informado para um dispositivo de sada(monitor).

7. ES

E

As estruturas de controle introduzidas nesta unidade facilitaro a expresso de algoritmos e permitiro que exemplos mais significativos sejam apresentados e propostos, visando o aperfeioamentodo desenvolvimento do processo de aprendizado da construo de algoritmos. escreveremos a seguir os comandos bsicos de controle do P o programa equivalente em linguagem C para uma mel or compreenso. P L

Algoritmo Incio declaraes de variveis>;

SH QPIH R

T

'

Lei

el

el

S

; ( identificador ) ;

expresso ,

I

E

PSE

I

E

. Sero introduzidos paralelamente

"

0

)

D B 3@ 4A @98 4 32 EC C

' $& % $ ( $& % $#

!

F

1

V`Y WV U X

a

G

16

; Fim. C #include main () /* Um Primeiro Programa */ { printf ("Meu primeiro programa\n"); } Comentrio de cdigos: Quando fazemos um programa, uma boa ideia usar comentrios que ajudem a elucidar o funcionamento do mesmo. Os comentrios devem vir entre /* */ Ex: /* Um Primeiro Programa */ O compilador C desconsidera qualquer coisa que esteja comeando com /* e terminando */. DOCUMENTAO Alguns princpios bsicosdevero ser usados desde a criao do primeiro algoritmo: y y y Ao criar as constantes e variveis, utilizar nomes significativos e comentar, se necessrio for; Utilizar identao (trs espaos como sugesto), para mostrar a estrutura lgica e sequncia de comandos, quando usando o PORTUGOL e C. Utilizar parnteses para evitar ambiguidade nas expresses;

ESTRUTURAS BSICAS DE CONTROLENo captulo anterior, foram apresentados exemplos das trs estruturas necessrias para representao da soluo de qualquer algoritmo: a sequncia, a seleo e a repetio. Em se tratando de algoritmo para computadores, as trs tambm formam a base das estruturas de controle de execuo. Vejamos como formalizaremos a representao e o uso dessas estruturas no PORTUGOL e na Linguagem C.

1. SEQUNCIAGrupo de comandos que so executados um aps o outro. PORTUGOL Incio comando 1; comando 2; . . comando n; Fim. C #include main () /* Um Primeiro Programa */ { printf ("Meu primeiro programa\n"); }

2. SELEOTambm chamada de estrutura de deciso ou de processamento condicional, a estrutura de seleo utilizada quando a execuo de um comando (ou uma sequncia de comandos) depende de um teste anterior (uma ou mais comparaes). A seleo pode ser simples ou composta. 17

2.1.

SELEO SIMPLES

Quando a execuo de um comando (ou de uma sequncia de comandos) depender de uma condio verdadeira, e no h comandos a executar se a condio for falsa. PORTUGOL Se Ento (comandos); Fim Se; C if (num==10) //Condio { printf ("O numero e igual a 10."); //Comando } Onde a CONDIO poder ser tambm uma expresso lgica. Exemplo1: leia um nmero inteiro e o imprima se ele for diferente de 0 (ZERO) Exemplo2: Se (a