ALGORITMO E PROGRAMAÇÃO 1 ALGORITMO É a descrção de um conjunto de ações que, obedecdas, resultam numa sucessão fnta de passos, atngndo um objetvo. 1.1 AÇÃO É um acontecmento que a partr de um estado ncal, após um período de tempo fnto, produz um estado fnal prevsível e bem defndo. 1.2 AUTOMAÇÃO É o processo em que uma tarefa dexa de ser desempenhada pelo homem e passa a ser realzada por máqunas, sejam estas dspostvos mecâncos, eletrôncos (como computadores) ou de natureza msta. 1.3 REPETIBILIDADE É necessáro que seja especfcado com clareza e exatdão o que deve ser realzado em cada uma das fases do processo a ser automatzado, bem como a sequênca em que estas fases devem ser realzadas. 1.4 OUTRAS DEFINIÇÕES ALGORITMO é a especfcação de uma sequênca ordenada de passos que deve ser seguda para realzação de uma tarefa garantndo a sua repetbldade. ALGORITMO é uma sequênca de passos que vsam atngr um objetvo bem defndo. 2 PROGRAMAÇÃO O conceto central da programação é o de algortmo. Programar é bascamente construr algortmos. Segundo Wrth: Programas são formulações concretas de algortmos abstratos, baseados em representações e estruturas específcas de dados. Um programa pode ser vsto como uma codfcação de um algortmo em uma determnada Lnguagem de Programação, para execução pelo computador. Professor: Ivo Máro Mathas 6
3 LINGUAGEM DE PROGRAMAÇÃO (SOFTWARE) 3.1 LINGUAGEM DE MÁQUINA PRIMEIRA GERAÇÃO 1GL Os computadores só podem executar os programas dretamente em Lnguagem de Máquna, que é um conjunto de nstruções capazes de atvar dretamente os dspostvos eletrôncos do computador. Os computadores possuem dferentes comandos mplementados em seu processador e esses são acessados em forma numérca (bnára ou hexadecmal), o que torna pouco expressvo para letores humanos um programa em Lnguagem de Máquna, pos há necessdade de saber o sgnfcado específco de cada número. 3.2 LINGUAGEM ASSEMBLER/MONTADORA SEGUNDA GERAÇÃO 2GL Dante das dfculdades apresentadas pela Lnguagem de Máquna, surgu a dea da lnguagem smbólca, onde palavras (mnemôncos) como LOAD, STORE, MOVE, COMPARE, ADD, SUBTRACT, MULTIPLY e DIVIDE, são usadas como equvalentes dretos das nstruções bnáras. É a lnguagem de nível medatamente acma da lnguagem de máquna, baxo nível, em que um programa chamado montador, escrto em Lnguagem de Máquna, organza as palavras e as traduz para forma bnára, que é armazenada em bancos de dados chamados bblotecas (lbrares). 3.3 LINGUAGENS DE ALTO NÍVEL TERCEIRA GERAÇÃO 3GL A partr da Lnguagem Assembler, onde um comando dessa corresponde a um comando em Lnguagem de Máquna, se estabeleceu a relação de um comando smbólco para város comandos em Lnguagem de Máquna. São lnguagens de programação projetadas para serem faclmente entenddas pelo ser humano, consderadas proceduras e estruturadas, em que a maora dessas lnguagens suporta o conceto de programação estruturada. 3.3.1 Hstórco 1957 - FORTRAN (Formula Translaton) - Fórmulas matemátcas, natureza técnca e centífca. 1959 - COBOL (Common Busness Orented Language) Comercal, uso geral. Professor: Ivo Máro Mathas 7
1964 - BASIC (Begneers All-Purpose Symbolc Instructon Code) - Incalmente, ser uma lnguagem mas smples que o Fortran, porém evoluu sem um padrão defndo e passou a ser a lnguagem mas utlzada em mcrocomputadores, de uso geral. 1968 - PASCAL (homenagem ao matemátco francês) - Voltada, para o ensno, mas também de uso geral. 1977 - C (A,B e C ultmo resultado) - Uso geral, nível médo. Observação - lnguagem C: crada na década de 70, por Denns Rtche, nos laboratóros Bell. Para tanto, ele utlzou o sstema operaconal Unx e a lnguagem BCPL. Baseado nessa lnguagem, outro pesqusador, chamado Ken Thompson (que também trabalhou na cração de C) hava crado a lnguagem B, que por sua vez fo nfluencada pela lnguagem BCPL crada por Martn Rchards. Como a lnguagem de Rche fo posteror à lnguagem B, recebeu o nome de C. A lnguagem C é estruturada, e consderada de nível médo, possu portabldade do códgo fonte e um programa objeto muto efcente, rápdo e compacto. Alguns sstemas computaconas escrtos em C: Unx e Lnux, parte do Wndows e seus aplcatvos, Delph, Turbo Pascal, Cbulder, etc. Comparatvo entre códgos: Professor: Ivo Máro Mathas 8
3.4 LINGUAGENS DE QUARTA GERAÇÃO 4GL Uma das prncpas característcas dessas lnguagens e a de gerar códgo automatcamente para a produção de programas de computadores aplcando a técnca RAD (Rapd Applcaton Development). Essa técnca possblta obter uma maor otmzação dos códgos dos programas e maor rapdez de desenvolvmento por meo de uma IDE (Integrated Development Envronment), geralmente em ambente vsual utlzando-se dos recursos gráfcos do sstema operaconal, como o Wndows. Exemplos: C Bulder, Delph, Vsual Basc, etc. Nessa geração de lnguagens também se encontram as lnguagens orentadas à objetos o que torna possível a reutlzação de partes do códgo para outros programas. Uma lnguagem consderada 4GL é a lnguagem SQL (Structured Query Language), sendo um padrão para manpulação e consulta de bancos de dados relaconal, também usada em conjunto com as lnguagens de 3GL. 3.4.1 Hstórco Java é uma lnguagem de programação orentada a objeto desenvolvda na década de 90 por uma equpe de programadores chefada por James Goslng, na empresa Sun Mcrosystems. Dferentemente das lnguagens convenconas, que são compladas para códgo natvo, a lnguagem Java é complada para um bytecode que é executado por uma máquna vrtual. PHP (Personal Home Page) é uma lnguagem de programação de computadores nterpretada, lvre e muto utlzada para gerar conteúdo dnâmco na Web, desenvolvda em meados de 1994. 3.5 LINGUAGENS DE QUINTA GERAÇÃO 5GL Nessa geração são consderadas as lnguagens orentadas à Intelgênca Artfcal (IA). Exemplo: LISP, Prolog. Professor: Ivo Máro Mathas 9
3.5.1 Hstórco LISP (LISt Processng) a lsta é a estrutura de dados fundamental dessa lnguagem. Tanto os dados como o programa são representados como lstas, o que permte que a lnguagem manpule o códgo fonte como qualquer outro tpo de dados. A lnguagem LISP é nterpretada, em que o usuáro dgta expressões em uma lnguagem formal defnda e recebe como retorno a avalação de sua expressão. PROLOG (PROgrammng n LOGc) é uma lnguagem de programação lógca e declaratva. O propósto dessa lnguagem é crar programas para tradução de lnguagem natural (como nglês ou português). 3.6 COMPILADORES São programas especalmente projetados para traduzr programas escrtos em lnguagem de alto nível (programa fonte) para lnguagem de máquna, gerando um novo programa chamado programa objeto, após esta operação o códgo objeto deve passar por mas uma etapa que é a lnkedção, que consste em gerar um programa executável (módulo de carga). O programa lnkedtor tem também a fnaldade de juntar dversos programas objeto em um únco programa (módulo de carga). O complador é específco a cada lnguagem, ou seja, só pode complar programas escrtos na lnguagem para a qual fo preparado, e ao efetuar a complação detecta e emte mensagens sobre os erros no uso da lnguagem (erros de sntaxe, uso ncorreto de comandos, etc.), não gerando o programa complado, ou seja, o programa objeto. 3.7 INTERPRETADORES São programas especalmente projetados para traduzr (nterpretar) programas escrtos em lnguagem de alto nível para lnguagem de máquna, durante a execução, ou seja não é gerado um novo programa, o própro texto do programa é utlzado. Os Interpretadores são específcos a cada lnguagem e durante a execução de um programa verfca a exstênca de algum erro no uso da lnguagem, caso haja, nterrompe a execução emtndo uma mensagem apontando o erro. A execução de um programa nterpretado é mas lenta em relação a um complado. Professor: Ivo Máro Mathas 10
3.8 SOFTWARE O Software está dvddo em Software de Sstema e Software de Aplcação, e o Software de Sstema subdvde-se em Software do Sstema Operaconal e Software de Lnguagens. 4 FORMAS DE REPRESENTAÇÃO DE ALGORITMOS 4.1 DESCRIÇÃO NARRATIVA Representação dos algortmos dretamente em lnguagem natural. Pouco usada na prátca porque o uso da lnguagem natural mutas vezes causa má nterpretação, ambgudades e mprecsões. Exemplo: uma nstrução como, "Afrouxar lgeramente um parafuso", necesstara de uma nstrução mas precsa como, "Afrouxar o parafuso, grando 30 º no sentdo ant-horáro". 4.2 FLUXOGRAMA CONVENCIONAL É uma representação gráfca de algortmos onde formas geométrcas dferentes mplcam ações (nstruções, comandos) dstntos. Tal propredade faclta o entendmento das deas contdas nos algortmos. Forma ntermedára entre a descrção narratva e o pseudocódgo (subtem segunte), mas é menos mprecsa que a prmera e no entanto, não se preocupa com detalhes de mplementação do programa como tpo das varáves usadas (tem futuro). Preocupa-se com detalhes de nível físco da mplementação do algortmo como: dstngur dspostvos onde ocorrem as operações de entrada e saída de dados. Professor: Ivo Máro Mathas 11
Prncpas formas geométrcas usadas em fluxogramas: = Iníco e Fnal do Fluxograma = Operação de Entrada de dados = Operação de saída de dados = Operações de atrbução e chamada ou retorno de subalgortmo. = Desvo condconal (decsão) Professor: Ivo Máro Mathas 12
Exemplo: Cálculo da méda de duas notas de um aluno sob a forma de um fluxograma. Iníco N1,N2 Méda := (N1+N2)/2 Méda>=7.V. "Aprovado".F. "Reprovado" Fm. 4.3 PSEUDOCÓDIGO - LINGUAGEM ESTRUTURADA - PORTUGOL É uma forma de representação de algortmos rca em detalhes, como a defnção dos tpos de varáves usadas em lnguagens de programação e assemelha-se bastante a forma com que os programas são escrtos. Professor: Ivo Máro Mathas 13
Forma geral de representação de um algortmo em pseudocódgo: Algortmo <nome_do_algortmo> Var <declaração_de_varáves_globas> <declaração_dos_subalgortmos> Iníco Var <declaração_de_varáves_locas> <corpo_do_algortmo> Fm. Onde: Algortmo é uma palavra que ndca o níco da defnção de um algortmo em forma de pseudocódgo; <nome_do_algortmo> é um nome smbólco dado ao algortmo com a fnaldade de dstngu-lo dos demas; <declaração_de_varáves> consste em uma porção opconal onde são declaradas as varáves locas/globas usadas no algortmo prncpal e eventualmente nos subalgortmos; <subalgortmos> consste de uma porção opconal do pseudocódgo onde são defndos os subalgortmos. Iníco e Fm são as palavras que respectvamente delmtam o níco e térmno do conjunto de nstruções do corpo do algortmo. Professor: Ivo Máro Mathas 14
Exemplo: Cálculo da méda de duas notas de um aluno em pseudocódgo. Algortmo Méda; Iníco Var real: N1, N2, Méda; Lea N1, N2; Méda = (N1 + N2) / 2; Se Méda >= 7 Então Escreva "Aprovado"; Senão Escreva "Reprovado"; Fm_se; Fm. Professor: Ivo Máro Mathas 15