Sei sulla pagina 1di 70

Linguagens de Programao e suas Aplicaes

Fbio Sobreira Coriolano Filho

Copyright Universidade Tiradentes Autor: Fbio Sobreira Coriolano Filho Reviso de Texto: 1 reviso: Ancejo Santana Resende 2 reviso: Alfredo Luiz Menezes Portugal Castro 3 reviso: Maria Amlia Faanha Berger Capa: Rebecca Wanderley N. Agra Silva Folha de Rosto: Walmir Oliveira Santos Jnior Ilustraes: Adelson Tavares de Santana Walmir Oliveira Santos Jnior Wandeth Graziaany Soto Tello Jaciuk Editorao Eletrnica: Alexandre Meneses Chagas Ancelmo Santana dos Santos Astolfo Marques Pinto Bandeira Claudivan da Silva Santana Edivan Santos Guimares Redao: PROEAD - Pr-Reitoria Adjunta de Ensino a Distncia Av. Murilo Dantas, 300 - Farolndia - Prdio da Reitoria - Sala 40 CEP: 49.032-490 - Aracaju - SE - Tel.: (79) 3218-2186 E-mail: infopread@unit.br Site: http://www.proead.unit.br

Impresso: Grfica da Universidade Tiradentes Av. Murilo Dantas, 300 - Farolndia - CEP: 49032-490 Aracaju - Sergipe - e-mail: grafica@unit.br

Sumrio
UNIDADE I - Conceitos de Linguagem de Programao, Nomes e Escopo, Expresses e Comandos de Atribuio e Estruturas de Controle .................................. 9
Exerccio............................................................................................... 33 Atividade.complementar............................................................................ 43 Exerccios.sugeridos. ................................................................................ 44 .

UNIDADE II - Conhecendo o Delphi, utilizando formulrios e componentes ............................................ 47

Exerccio.sugerido.................................................................................... 59

Apresentao da Disciplina
Ementa

Conceitos Fundamentais de Linguagens de Programao. Evoluo das Linguagens de Programao. Sintaxe e Semntica. Elementos de uma Linguagem de Programao: nomes, ligaes, tipos de dados, expresses, estruturas de controle, subprogramas, tratamento de erros. Programao concorrente. Linguagens de Programao Orientadas a Objetos. Utilizando o ambiente de programao Delphi. Aplicaes Prticas.
Competncias.e.Habilidades

Compreender a evoluo histrica das Linguagens de Programao Conhecer os principais paradigmas de Linguagens de Programao e suas caractersticas. Capacitar a seleo de Linguagens de Programao, atravs da anlise de suas caractersticas. Utilizar adequadamente uma Linguagem de Programao. Utilizar o paradigma Orientao Objeto para desenvolver aplicaes. Conhecer a IDE Delphi para desenvolver aplicaes. Contedo Programtico Unidade I: Conceitos de Linguagem de Programao, Nomes e Escopo, Expresses e Comandos de Atribuio e Estruturas de Controle Introduo 1.1. Conceitos e paradigmas 1.1. Notas histricas 2. Trabalhando com vetores, procedimentos e funes 2.1 Arrays 2.2 Procedimentos e funes - Subprogramas 2.3. Variveis Locais e globais 3. Orientao a Objeto 3.1 Modificadores de acesso 3.2 Operadores de visibilidade 3.3. Property (propriedade) 3.4. Herana Unidade II: Conhecendo o Delphi, utilizando formulrios e componentes 4. Conhecendo melhor o Delphi 4.1 Componentes visuais e no visuais 4.2 Gerenciando um Projeto no Delphi. 4.3 Conhecendo melhor o Object Inspector 4.4 Manipulando excees 4.5 Caixas de dilogo 4.6 Trabalhando com os componentes do Delphi 4.7 Exerccios para conhecer mais alguns componentes

Metodologia.de.Ensino

A metodologia a ser utilizada dever contribuir para que o aluno tenha domnio de contedos apresentados na ementa, buscando a relao teoria-prtica no processo de formao acadmica e profissional. As atividades didtico/pedaggicas sero desenvolvidas atravs do auto-estudo, dos encontros presenciais organizados em grupos de estudos, debates, pesquisa bibliogrfica e atividades de pesquisa. Os recursos didticos e tecnolgicos para tais fins compreendem: ambiente virtual de aprendizagem material instrucional on-line, projetor, vdeo, plantes de tutoria on-line, por meio do correio eletrnico, DDG 0800 284 7117 e outros conforme as necessidades e possibilidades de ampliar a interao e diminuir a tendncia ao isolamento.
Atividades e Exerccios OBS.: Ao final de cada unidade, todos os exerccios propostos sero contabilizados para a nota da unidade e devo ser respondidos e entregues antes da prova.

Para auxiliar o contedo a ser estudado, realizamos vrias atividades, como: Exerccios subjetivos propostos e resolvidos; Demonstraes; Chat de discusso; Fruns e outros.
Metodologia de Avaliao

No processo de avaliao sero realizadas provas escritas com perguntas objetivas contextualizadas; atividades e dinmicas de grupo e atividades de pesquisas presenciais e on-line. As avaliaes devero ocorrer de modo presencial, atravs de provas escritas com questes objetivas de acordo com o calendrio da disciplina, disponvel no quadro de avisos e durante o processo; atravs de atividades regulares indicadas pelo professor-tutor como: atividades de dinmica de grupos, objetos do estudo, atividades de pesquisas, relatrios e fruns de discusso. A pontuao das atividades obedece ao seguinte critrio: 20% - Interesse, participao e cumprimento de tarefas (encontros presenciais, atividades tericas, atividades de pesquisas, fruns, chats e exerccios); 80% - Prova objetiva contextualizada.

Bibliografia Bsica

SEBESTA, Robert W. Conceitos de linguagens de programao. 5. ed. Porto Alegre: Bookman, 2005. VAREJO, Flvio M. Linguagens de Programao Conceitos e Tcnicas. 1. ed. Campus, 2004. WATT, David A. Programming Language Design Concepts. 1. Ed. John Wiley Consumer, 2004. CANTU, Marco. Dominando o Delphi 7: a Bblia, primeira edio, coleo A Bblia, Editora Makron Books, 2003. MACHADO, Raimundo Costa. Algoritmos e Estrutura de Dados.
Bibliografia complementar

GHEZZI, Carlo e JAZAYERI, Mehdi. Conceitos de linguagens de programao. Rio de Janeiro: Campus, 1991. MELO, Ana C. V. e SILVA, Flvio S. C. Princpios de Linguagens de Programao. Edgard Blucher, 2003.

UNIDADE I
Conceitos de Linguagem de Programao, Nomes e Escopo, Expresses e Comandos de Atribuio e Estruturas de Controle
Competncias e Habilidades
Compreender a evoluo histrica das Linguagens de Programao Conhecer os principais paradigmas de Linguagens de Programao e suas caractersticas. Capacitar a seleo de Linguagens de Programao, atravs da anlise de suas caractersticas. Utilizar adequadamente uma Linguagem de Programao. Utilizar o paradigma Orientao Objeto para desenvolver aplicaes. Conhecer a IDE Delphi para desenvolver aplicaes.

O que iremos aprender


Conceitos e paradigmas Notas histricas Trabalhando com vetores, procedimentos e funes Arrays Procedimentos e funes - Subprogramas Variveis Locais e globais Orientao a Objeto Modificadores de acesso Operadores de visibilidade Property (propriedade) Herana

Linguagens de Programao e suas Aplicaes

11

Introduo Nessa disciplina iremos estudar e conhecer alguns tipos de linguagens de programao, no intuito de que vocs possam analisar, descrever, justificar e comparar as caractersticas das vrias linguagens existentes no mercado, utilizando vocabulrio prprio e um conjunto de conceitos universais. Ser focado nesse curso um pouco do histrico das linguagens de programao e alguns conceitos, o paradigma Orientao Objeto e o ambiente de programao Delphi 7 onde colocaremos em prtica toda teoria estudada sobre as linguagens de programao. Esse curso trabalha com exemplos prticos e didticos juntando a teoria das linguagens de programao com a prtica de desenvolvimento de sistemas. Ainda ser focado no curso um estudo de caso final para os alunos desenvolverem e colocar em prtica todo assunto estudado durante o curso. 1.1 Conceitos e paradigmas As aplicaes computacionais esto presentes nas mais variadas reas existentes no mercado. Em virtude dessa diversidade, existem n tipos de linguagens de programao, cada qual com caractersticas prprias (legibilidade, simplicidade global, ortogonalidade, custo e outros). As linguagens de programao, segundo sua rea de atuao, podem ser divididas da seguinte maneira: Aplicaes cientficas: Surgiram na dcada de 40 e foram inventadas para desenvolver aplicaes cientficas. As primeiras linguagens para esse tipo de aplicao foram FORTRAN e o AGOL 60 e suas descendentes. Aplicaes comerciais: Iniciou-se na dcada de 50 e a primeira linguagem mais bem sucedida foi o COBOL. Inteligncia Artificial: Iniciou-se na dcada de 60 e a primeira linguagem desenvolvida para I.A. foi uma linguagem funcional chamada LISP. Programao de sistemas: Iniciou-se na dcada de 60 com alguns fabricantes de computadores que desenvolveram linguagens especiais orientadas para mquina - softwares para os equipamentos desenvolvidos pelas empresas. Um exemplo de linguagem para essa fase a C, que tornou sua execuo eficiente/eficaz, sem sobrecarregar o usurio com demasiadas restries de segurana (A C desenvolveu o sistema operacional UNIX). Linguagem de Scripting: Essas linguagens desenvolveram-se lentamente durante os ltimos 25 anos. Elas so utilizadas fazendo chamada a uma lista de comandos, os quais so chamados de script. A primeira foi a shel, que foi utilizada para gerenciar e filtrar arquivos simples. Hoje em dia, as linguagens scripting mais conhecidas so a perl e o java script e tambm so as mais utilizadas para aplicaes WEB.

12

Linguagens de Programao e suas Aplicaes

Existem critrios, como mencionado h pouco, para avaliao das linguagens de programao. Os mais importantes so os seguintes: Legibilidade: um dos critrios mais importantes para julgar uma LP, pois atravs dele que um cdigo de um programa poder ser lido e entendido. Uma linguagem com uma boa legibilidade facilita a manuteno de programas. Uma caracterstica que afeta a legibilidade de uma linguagem de programao multiplicidade de recursos (mais de uma maneira para desenvolver uma operao). Exemplo de uma multiplicidade: Cont = Cont + 1 Cont += 1 Cont ++ ++Cont Um outro ponto importante na legibilidade a questo da ortogonalidade, que significa que um conjunto pequeno de construes primitivas pode ser combinado com um nmero pequeno de maneira que construa as estruturas de controle e de dados da linguagem; Exemplo: tipos de dados (integer e float) e estruturas de dados (array e pointer) podem ser combinados gerando quatro tipos de estruturas de dados diferentes e independentes; A ortogonalidade est relacionada simplicidade: quanto mais ortogonal o projeto de uma linguagem, menos excees s regras da linguagem exigiro; Um exemplo de falta de ortogonalidade no Pascal, que exige beginend para formar grupos em todas as construes de controle, exceto a instruo repeat; A simplicidade em uma linguagem o resultado de uma combinao de um nmero relativamente pequeno de construes primitivas e o uso limitado do conceito de ortogonalidade; Para uma linguagem possuir uma boa legibilidade, tambm dever preocupar-se com as instrues de controle, pois mais fcil a leitura de programa de cima para baixo do que de um cdigo com instrues de pulo (GOTO utilizado nas linguagens BASIC e FORTRAN). Ainda existem as estruturas e os tipos de dado: se uma linguagem permitir a presena de facilidades adequadas para definir tipos de dados e estruturas ser um auxlio muito significativo para a legibilidade. Exemplo de estruturas e os tipos de dado Linguagem que no possui o tipo booleano: Muito_grande = 1 // significado no claro Linguagem que possui o tipo booleano: Muito_grande = true // significado claro

Linguagens de Programao e suas Aplicaes

13

Por fim, a sintaxe (como uma linguagem escrita), que tem um efeito expressivo sobre as linguagens. Os principais projetos sintticos que afetam a legibilidade so: Formas identificadoras restringir as variveis a um limite de caractere; Palavras especiais - as formas das palavras especiais de uma linguagem um fator fortemente influente na legibilidade de um programa (p.ex.: while,class,for,if). Escritabilidade: uma medida de at que ponto uma linguagem pode ser usada para um determinado fim especfico. A capacidade de escrita afetada diretamente pela legibilidade, pelo fato de que escrever um programa exige uma releitura constante da parte que j foi escrita pelo programador. As trs principais caractersticas da escritabilidade so as seguintes: Simplicidade e Ortogonalidade: Uma linguagem para ser simples e ortogonal basta possuir poucos tipos de construes primitivas e um conjunto consistente de regras para combin-las; O uso da ortogonalidade em excesso, pode levar a absurdos no cdigo que no podem ser descobertos pelo compilador. Suporte para abstrao: Significa reutilizao de cdigo e diminuio na redundncia de dados nos programas. As linguagens de programao podem suportar duas categorias de abstrao: processo e dados. Processo: uso de subprogramas (funes), para implementao de algoritmo; Dados: uso de arrays, onde cada posio do vetor representa uma varivel subscrita; Expressividade: Ocorre quando operadores muito poderosos fazem com que um complexo cdigo de programao seja realizado com um cdigo muito pequeno. Exemplo de Expressividade O comando cont ++ mais conveniente do que cont = cont +1. O bom uso da Expressividade tambm aumenta a capacidade de leitura do cdigo de programao. Confiabilidade: Um programa confivel se ele, de acordo com suas especificaes, tiver um bom-comportamento em qualquer condio. As principais caractersticas da confiabilidade so as seguintes: Verificao de tipo: Testar se existem erros de tipos, atravs do compilador ou na execuo do programa; Manipulao de exceo: Capacidade de um programa interceptar erros em tempo de execuo. C++ e Java incluem grande capacidade de manipular excees (este assunto ser visto mais adiante).

14

Linguagens de Programao e suas Aplicaes

Aliasing: Existe quando duas variveis apontam para a mesma posio de memria. Em algumas linguagens, o aliasing usado para superar deficincias nas facilidades de abstrao de dados. H linguagens que restringem muito para aumentar a confiabilidade - caso o contedo de uma varivel seja modificado, a posio de memria que esta varivel est apontando tambm modificada, bem como o contedo de todas as outras variveis que estavam apontando para essa posio de memria. Legibilidade e capacidade de escrita: Tanto a legibilidade como a escritabilidade influenciam na confiabilidade, pois quanto mais fcil for escrever um cdigo de um programa, maior a probabilidade do mesmo estar correto. Programas de difcil leitura complicam tambm a escrita e a manuteno de cdigos. Custo: O custo final de uma linguagem de programao uma funo de muitas de suas caractersticas, como: Custo de treinamento de programadores para usar a linguagem. Execuo de programas: velocidade que um programa executado. Preo do compilador: existem sistemas de implementao de linguagem paga e open source (Livre). A rpida aceitao do Java foi devido ao fato de ser uma linguagem livre, que roda em qualquer sistema operacional que possua sua mquina virtual. Confiabilidade: O custo da m confiabilidade deve ser levado em considerao, pois se o software falhar em um sistema crtico como uma usina nuclear ou um banco, o custo pode ser muito elevado; Manuteno: A manuteno de programas serve para fazer correes, como atualizao de um determinado programa. O seu custo depende de uma srie de caractersticas da linguagem, mas principalmente da legibilidade;

Tabela 1.1 Pgina 24 Livro Linguagens de programao 4 Edio Robert W. Sebesta.

Linguagens de Programao e suas Aplicaes

15

As Linguagens de programao so divididas em vrias categorias, que so: Imperativa: Linguagens projetadas em funo da arquitetura de Von Neumann (Dados e programas so armazenados na memria). Os algoritmos so especificados em grandes detalhes e os comandos ou instrues devem estar em ordem de execuo. Exemplo de linguagens imperativas: C, Pascal, Fortran, algol, cobol, etc. Funcionais. So baseados em funes matemticas. Existe aplicao de funes a determinados parmetros. O tipo de dados bsicos so as listas e os exemplos de linguagens imperativas so: ML, Miranda, Haskell, etc. Lgica: So baseadas em regras e smbolos. Os Programas lgicos so declarativos, porque consistem em declaraes em vez de atribuies e instrues de fluxo de controle. O exemplo dessa linguagem o Prolog. Orientada a Objetos: Relao prxima com a imperativa. So usados conceitos de classes, objetos, herana, polimorfismo e encapsulamento. Exemplos de linguagens OO: Java, c++, SmallTalk. Uma linguagem pode ser implementada por meio de trs mtodos: Compilao, Interpretao Pura, Implementao Hbrida. A Compilao ocorre quando os programas so traduzidos para linguagem de mquina a qual pode ser executada diretamente no computador. Essas fases so as fases desse mtodo de implementao: 1. O analisador lxico rene os caracteres do programa fonte em unidades lxicas - que so os identificadores, as palavras especiais, os operadores e os smbolos de pontuao. 2. O analisador sinttico pega as unidades do analisador lxico e usa-as para construir estruturas hierrquicas chamadas rvores de anlise, as quais representam a estrutura sinttica do programa. 3. O gerador de cdigo intermedirio traduz o programa em linguagem de alto nvel para linguagem de mquina. 4. A otimizao melhora os programas tornando-os mais rpidos e menores. 5. O gerador de cdigo converte a verso do cdigo intermedirio em linguagem de mquina equivalente.

16

Linguagens de Programao e suas Aplicaes

Figura 01 Existe tambm a Interpretao Pura, em que o interpretador executa diretamente as instrues do programa fonte, sem traduzir em linguagem de mquina. Isso feito atravs de uma mquina virtual, cujo ciclo de execuo entende os comandos da linguagem de alto nvel. A execuo desse tipo de implementao muito lento, por isso seu uso raro. Alguns sistemas de implementao de linguagem so um meio-termo entre os compiladores e os interpretadores puros. Eles traduzem os programas em uma linguagem intermediria, que interpretada. Apesar de serem utilizadas tambm mquinas virtuais, esse mtodo mais rpido que a interpretao pura, pois as instrues da linguagem fonte so decodificadas somente uma vez. Exemplos de linguagens que utilizam esse mtodo JAVA e PERL.

Figura 2

Linguagens de Programao e suas Aplicaes

17

Figura 3 1.2 Notas histricas Nesse tpico ser abordada uma coleo de linguagens de programao, mencionando o ambiente em que foi projetada a linguagem e as contribuies e motivaes das linguagens para seu desenvolvimento.

18

Linguagens de Programao e suas Aplicaes

Figura 4 Tendo em vista o grfico acima, a primeira linguagem de alto nvel compilada foi o FORTRAN (foi projetada no ano de 1954 por John Backus para o novo IBM 704). O ambiente em que essa linguagem foi desenvolvida o seguinte: Computadores pequenos e no confiveis; Aplicao para computao cientfica; No existia um padro para programao; A eficincia das aplicaes era o fator mais importante. As principais caractersticas dessa linguagem foram as seguintes: Nomes de variveis com at seis caracteres; Instruo de ciclo (DO loop); Entrada/Sada de dados formatados; Possibilidade de definir sub-rotinas; IF aritmticos; No possua tipos de dados; No utilizava compilao separada; Programas maiores que 400 linhas raramente eram compiladas corretamente. O cdigo de mquina produzido pelo compilador era muito eficiente;

Linguagens de Programao e suas Aplicaes

19

Nos anos seguintes seu compilador foi sendo atualizado com o FORTRAN II, FORTRAN III, FORTRAN IV, FORTRAN 77, FORTRAN 90. Suas principais atualizaes foram: Instruo IF-THEN-ELSE; Subprogramas que podem receber outros subprogramas como parmetro; Recursividade; Ponteiros; Arrays dinmicos; Uso do CASE; O FORTRAN foi sucesso em sua poca. Em virtude de sua eficincia, o FORTRAN ainda utilizado em alguns cursos de engenharia de muitas universidades. Em 1958, foi criada a primeira linguagem de programao funcional que oferece recursos para processamento de listas (tipo de estrutura de dados que utiliza ponteiros), cuja necessidade surgiu devido s primeiras aplicaes na rea de inteligncia artificial. Essa linguagem LISP (LISts Processing language) e foi projetada por John McCarthy. As principais caractersticas dessa linguagem so: No possui variveis nem atribuies; Suas estruturas de dados so o tomo (smbolos com forma de identificadores) e as listas. Controle da lgica de programao atravs de recursividade (mtodo de programao no qual uma funo pode chamar a si mesma) e expresses condicionais.

Figura 5

20

Linguagens de Programao e suas Aplicaes

Representao interna de duas listas em LISP acima: 1. (A B C D) 2. (A (B C) D (E (F G) ) ) No final da dcada de 50, a linguagem ALGOL 60 influenciou fortemente as linguagens de programao e foi o primeiro passo rumo sofisticao das linguagens de programao. O seu desenvolvimento teve incio com o ALGOL 58 e o ambiente de desenvolvimento foi o seguinte: FORTRAN tinha acabado de chegar para o IBM 70x. Muitas outras linguagens estavam sendo desenvolvidas, todas para mquinas especficas. Nenhuma linguagem era portvel. Todas eram dependentes de mquina. Inexistia linguagem universal para algoritmos. O objetivo dessa linguagem era manter proximidade com a notao matemtica, apresentar facilidade em escrever algoritmos e ser traduzvel para cdigo de mquina. Suas principais caractersticas eram as seguintes: Conceito de tipo formalizado Variveis de qualquer tamanho Arrays com nmero qualquer de elementos Parmetros separados por modo (Entrada e Sada) Comandos compostos (begin ... end) Ponto e vrgula ; era utilizado como separador de comandos Operador de atribuio sendo := As clusulas condicionais possuam else-if Em 1960, houve um encontro de 6 dias em Paris com o objetivo de fazer algumas modificaes na linguagem. A surgiu o ALGOL 60 e suas principais caractersticas eram as seguintes: Estrutura de Bloco (escopo local); Dois modos de passagem de parmetros (valor e nome); Subprogramas recursivos; Arrays dinmicos (vetores cujo tamanho pode ser aumentado em tempo de execuo); Tambm na dcada de 60, surgiu o COBOL, linguagem de programao que mais foi utilizada. Seu ambiente de desenvolvimento o seguinte: FLOW-MATIC linguagem para uso comercial que pertencia UNIVAC. AIMACO linguagem utilizada pela Fora Area dos Estados Unidos. IBM estava desenvolvendo COMTRAN

Linguagens de Programao e suas Aplicaes

21

O COBOL foi desenvolvido em cima do FLOW-MATIC e suas principais caractersticas so as seguintes: Nomes de at 12 caracteres, com hfens includos. Nomes em Ingls para operadores aritmticos. Dados e cdigo completamente separados. Verbos como primeira palavra em todo comando. Outra linguagem de programao muito conhecida, mas pouco utilizada, foi o BASIC. Seu maior uso foi nas dcadas de 70 e 80 nos microcomputadores. Ainda na dcada de 60, a IBM tentou projetar uma linguagem que pudesse ser utilizada em vrias reas da computao. Essa linguagem a PL/I e suas principais caractersticas eram: Tratamento de excees Uso da recurso Apontador como tipo de dado Seo cruzada de arrays Em 1967, foi criada a linguagem SIMULA 67 com o intuito de fazer simulao em sistemas. Essa linguagem foi baseada em ALGOL 60 e suas principais caractersticas eram: Co-rotinas - tipo de subprograma que podia ser reiniciado a partir do ponto onde tinha parado. Implementada em uma estrutura chamada classe. Classe como base para abstrao de dados. Classes que incluam estruturas de dados locais. Em 1968, foi projetado o ALGOL 68 que era a continuao do ALGOL 60, mas utilizava conceitos de ortogonalidade. Caractersticas: Estrutura de dado definida pelo programador. Tipo referncia (variveis na qual acessado o seu endereo de memria). Arrays dinmicos. Em 1971, foi projetada a linguagem PASCAL por Niklaus Wirth com o intuito de ensinar programao estruturada. uma linguagem simples e umas das mais utilizadas nas universidades para ensino de lgica de programao, sua utilizao, contudo, vem sendo diminuda. Em 1972, foi projetada a linguagem C. Seu principal objetivo era o desenvolvimento de sistema. Essa linguagem foi uma evoluo da linguagem B e ALGOL 68 e possua um poderoso conjunto de operadores, mas uma fraca verificao de tipo. Foi difundida atravs do sistema operacional UNIX. Outras linguagens descendentes do ALGOL foram: Modula-2: Era formada por PASCAL mais alguns mdulos e tambm algumas caractersticas de baixo nvel para programao de sistemas. Modula-3: Era formada por Modula-2 e acrescentada de classes, tratamento, excees e concorrncia. Oberon: Tem suporte a programao orientada objeto e foram eliminadas algumas caractersticas do modula-2.

22

Linguagens de Programao e suas Aplicaes

Delphi (Borland): Utiliza o Pascal mais suporte para orientao objeto e mais elegante e seguro que C++. Em 1972, foi projetada a linguagem PROLOG, linguagem de programao que se enquadra no paradigma de Programao em Lgica Matemtica. de uso geral e especialmente associada com a inteligncia artificial e lingstica computacional. Tambm nessa mesma data, foi projetado o SMALLTALK, que foi a primeira linguagem de programao completamente orientada ao objeto e a pioneira no uso de formulrios para desenvolvimento de sistemas. Em 1985 foi projetada a linguagem C++ nos laboratrios Bell por Stroustrup baseado em C e SIMULA. Com o tempo foram adicionadas novas caractersticas na linguagem, como: classes, funes virtuais, sobrecarga de operadores, herana mltipla, templates e tratamento de excees. Em 1992, foi projetada a linguagem EIFFEL por Bertrand Meyer. Essa linguagem utilizou conceitos de SIMULA 67 e uma linguagem mais simples do que C++, porm menos popular. J em 1995, foi desenvolvida pela Sun a linguagem JAVA, baseada em C++. Suas principais caractersticas so as seguintes: Suporta Orientao objeto Contm referncias, mas no ponteiros. (Tornando seu uso mais simples) Utiliza mquina virtual. (Multiplataforma) Com essa linguagem podem ser desenvolvidos projetos para web, dispositivos mveis e desktop. Agora que conhecemos um pouco mais sobre as linguagens de programao iremos passar para um prximo nvel que como programar de um modo mais estruturado e organizado. Esse assunto ser abordado nos prximos tpicos. 2. Trabalhando com vetores, procedimentos e funes Nesse tpico ser feita uma reviso sobre arrays (vetores) e os procedimentos e funes (Subprogramas) para mais adiante comearmos a estudar esse novo paradigma, que a orientao objeto. Aconselho vocs, por enquanto, a utilizarem o Turbo Pascal para desenvolvimento dos exemplos dos programas que sero vistos a seguir. 2.1 Arrays O array um tipo de dado que em seu contedo pode conter n valores da mesma espcie e est associado a um conjunto de espaos referentes ao seu tipo de dado. J uma varivel, est associada a um espao de memria referente ao seu tipo de dado. Para entendermos melhor, vamos visualizar a imagem abaixo.

Linguagens de Programao e suas Aplicaes

23

Figura 6 Ento, pessoal, eu pergunto a vocs: por que e para que utilizar os vetores? Ser que existe uma razo para a criao dos vetores? Lgico que existe uma razo para a criao dos vetores. Exemplo: O professor da disciplina Linguagens de programao quer guardar as notas, calcular a mdia das notas e imprimir as notas que ficaram acima da mdia geral de todos os alunos da disciplina. Digamos que na disciplina estejam matriculados 50 alunos. Se no existissem os vetores, teramos que declarar 50 variveis! Mas como ns podemos utilizar os vetores, ser criada somente uma varivel.

Figura 7 Para desenvolver esse problema acima, ns teremos que criar laos de repetio (For e while) para poder gravar e ler as informaes desses vetores. Entretanto, antes de desenvolvermos esse problema, vamos conhecer um pouco mais sobre a sintaxe dos vetores.

24

Linguagens de Programao e suas Aplicaes

Sintaxe: <nome do vetor>: array [1..<n de posies>] of <tipo>; EX.: notas:array [1..50] of real; Referncia: <nome do vetor>[<indice>]; EX: notas[5] := 9.5; Mais Exemplos: notas := 5; //ERRO Adicionando e lendo no vetor: For i := 1 to 50 do begin writeln(notas[i]); end; for i := 1 to 50 do begin writeln(notas[i]); end; Outro ponto importante sobre os vetores a questo do overflow, que acontece quando acessamos uma posio do vetor acima do seu tamanho. Por exemplo: um vetor tem o tamanho cinco e ns acessamos a posio seis; isso no ser possvel, pois ns iremos estourar o vetor acessando uma posio inexistente. //Exemplo de Overflow Program Overflow; Var vetor : array[1..5] of real; i : integer; Begin For i:= 1 to 5 do begin Readln(vetor[i]); End; Writeln(vetor[6]); // ERRO End. Agora que conhecemos mais sobre os vetores vamos desenvolver o problema que a figura 2.1 ilustra. Vamos seguir as seguintes etapas para comearmos o desenvolvimento do problema: 1. Declarar as variveis; 2. Fazer a lgica para guardar as cinqenta notas; 3. Desenvolver o clculo da mdia; 4. Imprimir na tela todas as notas acima da mdia da turma.

Linguagens de Programao e suas Aplicaes

25

program notasMedia; var notas : array[1..50] of real; soma, media : real; i : integer; Begin //Varivel criada para fazer somatrio soma := 0; //Lao para gerar as notas e calcular o somatrio For i := 1 to 50 do begin writeln(Entre com a nota ,i); readln(notas[i]); soma := soma + notas[i]; end; //Clculo da mdia media := soma/40; writeln(A mdia das notas e ,media); //Imprimindo todas as notas acima da mdia for i:= 1 to 50 do begin if (notas[i] > media) then begin writeln(nota[i]); end; end; end. Mais um ponto importante dos vetores pesquisar se uma determinada informao est contida nele. Para fazer esse tipo de pesquisa, basta criar um lao e comparar se a informao pesquisada igual informao contida no vetor. Trecho de cdigo que faz pesquisa nos vetores: readln(nota); for i:= 1 to 5 do begin If (notas[i] = nota) then begin writeln(ACHOU); end; end; Agora que relembramos os vetores vamos resolver a seguinte questo: 1. Deseja-se publicar o nmero de acertos de cada aluno em uma prova em forma de testes. A prova consta de 30 questes, cada uma com cinco alternativas identificadas por A, B, C, D e E. Para isso so dados: a. Carto gabarito; b. Nmero de alunos da turma; c. Carto de respostas para cada aluno, contendo o seu nmero e suas respostas.

26 Soluo:

Linguagens de Programao e suas Aplicaes

program Notas; type Vetor=array [1..30] of char; var n, i, Conta, Pontos: integer; Gabarito, Resp: Vetor; begin write (Digite o numero de alunos: ); readln (n); writeln (Digite o gabarito da prova:); for i:=1 to 30 do readln (Gabarito[i]); for Conta:=1 to n do begin Pontos := 0; writeln (Entre com as respostas do aluno ,Conta,: ); for i:=1 to 30 do begin readln (Resp[i]); if Resp[i] = Gabarito[i] then Pontos := Pontos+1 end; writeln (O aluno ,Conta, teve ,Pontos, pontos) end; end. 2.2 Procedimentos e funes - Subprogramas Os subprogramas servem para dividir os programas em partes que possuam uma determinada independncia. Nossos cdigos possuiro as seguintes caractersticas: Aumento da manutenibilidade do programa; facilidade na depurao de erros; aumento na legibilidade do programa; aumento no reuso do cdigo. Ao dividir um programa em subprogramas importante seguir as seguintes caractersticas: Alta coeso: cada mdulo deve fazer uma atividade bem especfica do programa. Baixo Acoplamento: independncia lgica dos mdulos. Em pascal, os subprogramas devem ser declarados depois das variveis. Para entendermos melhor, vamos examinar a estrutura abaixo. Figura 8

Linguagens de Programao e suas Aplicaes

27

Sabendo que existem o procedimento e funes, vamos comear estudando as funes. As funes so conhecidas no pascal como function e suas principais caractersticas so as seguintes: Retornam um nico valor. Deve ser declarado o tipo de todos os parmetros, o tipo de valor que a funo retorna, todas as variveis utilizadas no subprograma (variveis locais). Para utilizar a funo, basta colocar seu nome e seus parmetros corretamente. Uma funo pode ser chamada por outras funes. As linguagens de programao possuem vrias funes prdefinidas. Em pascal: inc(x); => Incrementa um nmero srq(x); => Quadrado de x sqrt(x); => Raiz quadrada de x sin(x); => seno do ngulo x As funes pr-definidas podem ser utilizadas diretamente em expresses. Exemplo: Delta:=sqrt(sqr(b)-4ac); // Frmula utilizada nas equaes do 2 grau Havendo necessidade, os programadores podem desenvolver suas prprias funes. Antes de comearmos a desenvolver nossas funes, vamos conhecer mais um pouco sobre a sintaxe das funes.

Figura 9 (Fig 09 Ade Funes) Uma funo pode ter um ou mais parmetros de entrada, mas possui somente um retorno, que o retorno desejado e obrigatrio das funes. Esse retorno pode ser chamado pelo prprio nome da funo

28

Linguagens de Programao e suas Aplicaes

ou pela palavra result. Agora, vamos construir nossa primeira funo. Na anlise combinatria, existe uma frmula que a combinao: Combinao: dados dois nmeros N e K, calcular a combinao. C n,k = n! / (k! (n-k)!) Podemos perceber que o fatorial se repete trs vezes nessa frmula, fazendo com que ns tenhamos que desenvolver a mesma lgica trs vezes. Para esse problema, contudo, existem os subprogramas. Iremos desenvolver uma funo abstrata que desenvolva o seguinte problema: Se existisse uma funo Fat(x) que calculasse o fatorial de um dado x, o problema seria resolvido da seguinte maneira: Cnk := fat(n) / (fat(k)* fat(n-k)) Sabendo que necessrio o desenvolvimento de uma funo que calcule o fatorial, vamos desenvolv-la. // Esse programa calcula a combinao de dois nmeros program Combinao; //Declarao das variveis var Cnk:real; N,K:integer; //Declarao das funes //Funo que calcula um fatorial entrado como parmetro function FAT(X:integer):integer; var I :integer; P:integer; begin P:=1; for I:= 1 to X do begin P:=P*I; end; FAT := P; //ou result := P; end; //Programa principal begin write (FORNECA O VALOR DE N: ); readln(N); write (FORNECA O VALOR DE K: ); readln(K); Cnk:= FAT(N) / (FAT(K) * FAT(N-K) ); Writeln(Cnk); end.

Linguagens de Programao e suas Aplicaes

29

Podemos utilizar tambm os tipos estruturados como parmetros. Por exemplo: program Exemplo; type VETOR=array[1..100] of integer; var W:VETOR; Function MAIOR(A:VETOR;T:integer):integer; Begin //Lgica para Calcular o maior elemento do vetor End; Begin writeln(maior(w,100)); End. Para colocar em prtica o assunto estudado, vamos resolver os seguintes problemas: 1. Escrever uma funo para calcular a potncia. Function potncia (x:integer;pot:integer): integer. 2. Escrever uma funo que concatene caracteres. Ex.: nome:=concatene(fabio, Coriolano); OBS.: Para concatenar duas strings basta fazer o seguinte: fabio + Coriolano. 3. Escrever uma funo que retorne a posio do maior elemento de um vetor. 4. Coloque todas essas funes em um mesmo programa e faa teste para todas elas. Agora vamos conhecer os procedimentos que so conhecidos no pascal por procedure. Seu uso bem similar a uma funo, mas com duas diferenas: O retorno s pode ser feito atravs de parmetros. Sua chamada feita de modo diferente das funes.

30

Linguagens de Programao e suas Aplicaes

A sintaxe dos procedimentos a seguinte:

Figura 10 Como podemos visualizar, os procedimentos no utilizam retorno como as funes, porm, podemos utilizar parmetros de entrada e sada que funcionam assim: Caso o programador deseje que o parmetro do seu procedimento tenha retorno, s colocar a palavra var antes do nome do parmetro. Exemplo: procedure concateneNome(var nome: String;concatene:String); //Usando o procedimento Var primeiroNome: String Begin ... primeiroNome := Fbio; concateneNome(primeiroNome, Coriolano); Writeln(O nome concatenado ficou assim: , primeiroNome); ... End; No exemplo acima, quando mandamos imprimir a varivel primeiroNome, ser impresso na tela Fbio Coriolano, pois ns estamos utilizando a palavra var no parmetro do procedimento. O parmetro nome do mtodo concateneNome um parmetro de retorno.

Linguagens de Programao e suas Aplicaes

31

Dados de retorno so guardados na memria e os demais dados so descartados depois do trmino do procedimento. Vamos desenvolver um problema que insira notas em um determinado vetor e imprima as notas desse vetor na tela. Para isso ser necessrio seguir os seguintes passos: 1. Criar um tipo de dado chamado vetorNotas; 2. Declarar as variveis necessrias para o uso do programa; 3. Criar o procedimento inseriNota, que ter dois parmetros, sendo um parmetro de entrada e de sada (Possuir a palavra var antes do nome do parmetro) que ser do tipo vetorNotas e outro somente de entrada que ser a nota que iremos inserir no vetor; 4. Construir o procedimento imprimir, que ter somente um parmetro de entrada, que ser do tipo de vetorNotas; 5. Por fim, desenvolver o programa principal, que far chamada aos procedimentos ditos acima; program Vetor; //Declarao do tipo de dados type VETORNOTAS=array[1..100] of real; //Declarao das variveis utilizadas nos programas var W: VETORNOTAS; Tam, i: integer; {Procedimento inseri um valor no vetor. A varivel vet ser um parmetro de entrada e sada, isso toda a alterao feita nesse vetor ser retornada ao programa proncipal} procedure inseri(var vet: VETORNOTAS;valor:real); var i:integer; begin Inc(Tam); vet[tam] := valor; end; {Procedimento imprimi os valores do vetor passado por parmetro} procedure imprimi(vet: VETORNOTAS); var i:integer; begin for i:= 1 to tam do begin Writeln(vet[i]); end; end; //Programa proncipal Begin //Inicializando o tamanho do vetor tam:= 0; for i:= 1 to 3 do inseri(w,i); imprimi(w); End.

32

Linguagens de Programao e suas Aplicaes

Para colocar em prtica o assunto estudado, vamos desenvolver os seguintes problemas: 1. Escreva um procedimento que insira as notas dos alunos da disciplina ICC em um vetor. 2. Escreva um procedimento que calcule a mdia das notas da turma da disciplina ICC. 3. Escreva um procedimento que aparea na tela o nome dos alunos que obtiveram nota maior que a mdia da turma. 2.3 Variveis Locais e globais As variveis locais so aquelas que so declaradas dentro do escopo das funes e procedimentos. As variveis globais so aquelas que so declaradas no escopo inicial do programa. Vejamos o exemplo abaixo para entendermos melhor sobre as variveis locais e globais. program VarLocalGlobal; var {a,b variveis Globais} a,b:integer; {a,b,c so variveis Locais do mtodo Teste, porm o parmetro a uma varivel de retorno } procedure Teste(var a: integer; b:integer); var c :integer; Begin writeln(a); a:= 5; c:= a; writeln(c); b:= 6; writeln(b); end; Begin a:= 100; b:= 101; Teste(a,b); writeln(a); writeln(b); End. Usar variveis locais tem algumas vantagens, pois aumenta a reusabilidade de um subprograma e possibilita maior controle sobre a lgica de programao.

Linguagens de Programao e suas Aplicaes

33

Exerccio
1) Por que dividir os programas em subprogramas? 2) Qual a diferena entre procedimento e funo? 3) Qual a diferena entre variveis Globais e locais?

3 Orientao a Objeto Nesse tpico, iremos estudar um novo paradigma de programao: a programao Orientada a Objetos (POO). Tratase de uma nova tecnologia de programao, que envolve conceitos radicalmente diferentes da programao convencional, como a procedural. Quando estamos desenvolvendo aplicaes utilizando esse novo paradigma, estamos criando objetos, os quais possuem informaes (caractersticas dos objetos) e operaes (operaes que o objeto pode realizar). Por exemplo, uma cadeira possui estilo, peso, posio, cor e peso suportado (caractersticas do objeto cadeira) e tambm possui algumas operaes como: mover a cadeira e sentar nela. Outro exemplo de um objeto: empregados de uma empresa possuem as seguintes caractersticas: nome, idade, sexo, salrio, dependentes, etc. Algumas possveis operaes dos empregados: ser promovido de cargo, efetuar o pagamento do salrio, registrar ou acrescentar dependentes, etc. Com isso, ns podemos perceber que os objetos so compostos por informaes e operaes. As informaes so caractersticas que um objeto possui - peso, tamanho, cor, etc. - e podem ser chamadas de atributos. Aps definir as informaes, necessrio definir as operaes.

Figura 11

34

Linguagens de Programao e suas Aplicaes

Antes de criarmos um objeto propriamente dito, precisa-se que se tenha uma definio do objeto, ou seja, Classe, a que o objeto ir pertencer. a partir das classes que podemos obter vrios objetos. Por isso dizemos que um objeto a instncia de uma classe. Em Pascal, para se desenvolver uma classe, utiliza-se a seguinte estrutura: type Nome_da_classe = class private {Declaraes privadas ser enxergada somente pela classe} public { Declaraes pblicas ser enxergada pela classe e por outros programas que faam chamada a essa classe } end; Para comearmos a desenvolver as classes, podermos nos ambientar com esta IDE (ambiente integrado de desenvolvimento) e para facilitar a programao, vamos instalar o Delphi 7 nas nossas mquinas, j que iremos trabalhar com vrios componentes dessa linguagem mais na frente. Desenvolveremos nosso primeiro objeto, mas antes disso, temos que criar nossa classe. Para que o projeto seja realizado com sucesso, vamos seguir os seguintes passos: Crie um projeto (console) no delphi e salve-o como o nome AppCadeira. o File > New > Other > Console Application Crie uma unit e salve-a com o nome UCadeira. o File -> New -> Unit Na unit Ucadeira, entre interface e implementation, copie o cdigo abaixo. Type TCadeira = class { Informaes } Cor: string; PesoCadeira: real; Estilo: string; EstaQuebrada: boolean; PesoSuportado: real; PesoPessoa: real; { Operaes } constructor create; procedure PessoaSenta(Peso: real); procedure PessoaLevanta; end; No mtodo create onde vo estar as informaes default do nosso objeto, isso quando criamos uma instncia de uma classe

Linguagens de Programao e suas Aplicaes

35

feito chamada ao mtodo create e so executados os comandos inseridos no mesmo. Aperte ctrl + shift + c e veja o que acontece. Caso d erro, verifique a sintaxe do seu programa. Implemente os mtodos com os cdigos: constructor TCadeira.create; begin Cor := padro; PesoCadeira := 50; Estilo := padro; EstaQuebrada := false; PesoSuportado := 120.0; PesoPessoa := 0.0; end; procedure TCadeira.PessoaLevanta; begin PesoPessoa := 0.0; end; procedure TCadeira.PessoaSenta(Peso: real); begin if (Peso + PesoCadeira) > PesoSuportado then begin EstaQuebrada := TRUE; end else begin PesoPessoa := PesoPessoa + Peso; end; end; Em AppCadeira, iremos fazer as instncias da classe e criar nosso primeiro objeto. Para criar a instncia de um objeto, s utilizar a sintaxe abaixo. Nome_do_Objeto := Nome_da_Classe.create; Copie o cdigo abaixo na aplicao principal do seu projeto. Esse cdigo possui a instncia da classe cadeira e a chamada de suas operaes.

36

Linguagens de Programao e suas Aplicaes

program AppCadeira; {$APPTYPE CONSOLE} uses SysUtils, UCadeira in UCadeira.pas; Var Cadeira: TCadeira; begin cadeira := TCadeira.create; cadeira.PessoaSenta(150); writeln(cadeira.PesoCadeira:5:2); if cadeira.EstaQuebrada then Writeln(esta quebrada ) else Writeln(nao esta quebrada); readln; end. 3.1 Modificadores de acesso So mtodos que o desenvolvedor utiliza para setar e buscar informaes dos atributos do objeto. Caso o programador queira modificar um atributo de determinado objeto, s chamar o mtodo set .Caso queira buscar a informao de um atributo, deve chamar o mtodo get. Visualize o exemplo abaixo. procedure SetCor(Pcor:String); begin cor:=Pcor; end; function getCor():String; begin result:=cor; end; Para entendermos melhor os get e set, vamos desenvolver o exemplo que chamaremos de objeto aluno. Objeto: Aluno Atributos: Nome Idade Sexo Ano de Entrada Ano de Sada Nmero de Matrcula

Linguagens de Programao e suas Aplicaes

37

Mtodos: 1. Crie um projeto no Delphi e salve-o como AppAluno. 2. Crie uma unit que se chame UAluno. 3. Em UAluno, crie uma classe que se chamar de TAluno. unit UAluno; interface Type TAluno = class public private end; implementation end. 4. Adicione os atributos pertencentes a esta classe. Esses atributos sero privados (s teremos acesso a eles dentro de UAluno), por isso adicionaremos esses atributos como private. 5. Desenvolva todos os modificadores de acesso necessrios, isto , todos os get e set para cada atributo da classe TAluno. Type TAluno = class public {operations} constructor create; function getNome():String; procedure setNome(pNome:String); function getIdade():real; procedure setIdade(pIdade:real); function getSexo():char; procedure setSexo(pSexo:char); function getNumeroMat():integer; procedure setNumeroMat(pMat:integer); function getAnoEntrada():String; procedure setAnoEntrada(pAnoEntrada:String); function getAnoSaida():String; procedure setAnoSaida(pAnoSaida:String); procedure showAtributos(); private { Informaes ou Atributos } nome:String; idade: real; sexo:char; numeroMat:integer; anoEntrada: String; anoSaida: String; end;

38

Linguagens de Programao e suas Aplicaes

6. Lembrando como se constri um get e um set. function TAluno.getSexo: char; begin result := sexo; end; procedure TAluno.setSexo(pSexo: char); begin sexo := pSexo; end; 7. Crie um mtodo ShowAtributo, que exibir na tela todos os atributos do aluno. 8. Utilize a tecla de atalho ctrl + shift + c para o prprio Delphi programar a estrutura do nosso programa. (Se der erro, verifique a sintaxe do cdigo) 9. O mtodo ShowAtributos dever ter a seguinte implementao: procedure TAluno.showAtributos; begin Writeln(O nome do aluno: ,getNome()); //Foi utilizado :5:2 para limitar as casas decimais Writeln(A idade do aluno: , getIdade():5:2); Writeln(O nome do sexo do aluno: ,getSexo()); Writeln(A matrcula do aluno: ,getNumeroMat()); Writeln(O ano de entrada do aluno: ,getAnoEntrada()); Writeln(O ano de sada do aluno: ,getAnoSaida()); end; 10. Em appAluno adicione a unit UAluno em suas uses, desenvolva a instncia da classe Taluno e faa chamada aos seus respectivos mtodos.

Linguagens de Programao e suas Aplicaes

39

Program AppAluno; uses UAluno in UAluno.pas; var aluno : TAluno; idade: real; sexo:char; numeroMat:integer; anoEntrada, anoSaida, nome: String; begin Writeln(ALUNO); aluno:= TAluno.create; writeln(entre com o nome do aluno); Readln(nome); aluno.setNome(nome); writeln(entre com a idade do aluno); Readln(idade) aluno.setIdade(idade); Writeln(entre com o sexo do aluno); Readln(sexo); aluno.setSexo(sexo); Writeln(entre com a matricula do aluno); Readln(numeroMat); aluno.setNumeroMat(numeroMat); Writeln(entre com o ano de entrada do aluno); Readln(anoEntrada); aluno.setAnoEntrada(anoEntrada); Writeln(entre com o ano de saida do aluno,); Readln(anoSaida); aluno.setAnoSaida(anoSaida); //Fazendo chamada ao mtodo que vai imprimir as informaes do aluno aluno.showAluno; Readln; End. 3.2 Operadores de visibilidade O Object Pascal tem trs especificadores de acesso bsicos: Private (privado) O atributo ou mtodo invisvel fora da unit ou programa onde a classe declarada. Em outras palavras, um mtodo privado no pode ser chamado de outro mdulo, e um atributo (propriedade) privado no pode ser acessado de outro mdulo, tambm. Public (pblico) define que membros da classe (atributos e mtodos) podem ser acessados livremente a partir de qualquer outra parte do programa.

40

Linguagens de Programao e suas Aplicaes

Protected (protegido) o membro visvel em qualquer parte do mdulo (unit) onde a classe declarada e de suas sub-classes (descendentes), independente da unit, onde essas sub-classes forem declaradas. 3.3 Property (propriedade) Com o property podemos encapsular os atributos de uma Classe, sobrecarregando as operaes de leitura e escrita. Para utilizar property, os campos (atributos) devem ser declarados como private, os mtodos como protected, e as propriedades (property) como public. A seguir, a declarao em Delphi. property Identificador : TIPO [read MtodoDeLeitura ou Campo] [write MtodoDeEscrita ou Campo]; onde, Identificador - representa a propriedade (property); TIPO - o tipo ou classe da propriedade; MtodoDeLeitura - o mtodo (ou campo) associado leitura da propriedade, correspondente a um mtodo get....; e, MtodoDeEscrita - o mtodo associado escrita da propriedade, correspondente a um mtodo set..... No exemplo a seguir, o atributo Mes tratado pela property pMes, usando um mtodo setMes para tratar a escrita do atributo. Type Data = class Private Mes, Dia, Ano: Integer; Public property pMes: integer read Mes write setMes; Protected procedure setMes(valor: integer); End; // na implementation: procedure Data.setMes (valor: integer); begin Mes := valor; // recebe o valor correto para mes. end; 3.4 Herana O Object Pascal permite que se defina um novo tipo de classe a partir de uma existente, atravs de herana. Para herdar de um tipo existente, preciso indicar o tipo da superclasse no incio da declarao da subclasse, conforme o exemplo abaixo.

Linguagens de Programao e suas Aplicaes

41

Primeiro iremos criar uma classe Animal, que ser a superclasse. Depois criaremos suas subclasses, que herdaro as caractersticas e operaes da classe Animal.

Figura 12 Para dar incio ao nosso primeiro programa utilizando herana, vamos desenvolver o problema acima. 1. Vamos construir uma unit e cham-la de UAnimal e, nela, criar uma classe com o nome de Animal. Type Animal = class Public Constructor Create; Function getTipo: String; procedure setTipo(pTipo: String); Function getSom: String; procedure setSom(pSom: String); Private Tipo: String; Som: String; End;

42

Linguagens de Programao e suas Aplicaes

2. Vamos criar todos os gets e sets necessrios da classe Animal. constructor Animal.Create; begin setTipo(Animal); end; function Animal.getSom: String; begin Result := Som; end; function Animal.getTipo: String; begin Result := Tipo; end; procedure Animal.setSom(pSom: String); begin Som := pSom; end; procedure Animal.setTipo(pTipo: String); begin Tipo := pTipo; end; 3. Agora iremos programar a subclasse Cao, que herdar de Animal, ou seja, essa classe poder ter acesso a todos os mtodos e atributos pblicos da sua classe Pai. Para isso deveremos inserir a classe Animal nas uses da classe co e utilizar a sintaxe correta de herana. //Fazendo chamada da classe Animal uses UAnimal; Type //Fazendo a sintaxe correta de herana Cao = class (Animal) Public Constructor Create; procedure setNome(pNome:String); function getNome:String; procedure Listar(); Private nome: String; End; 4. Vamos criar todos os gets e sets necessrios para a classe

Co.

Linguagens de Programao e suas Aplicaes

43

constructor Cao.Create; begin //Seta o tipo e o som do co no seu construtor (mtodos herdados de Animal) setTipo(Cao); setSom(AuAu); end; function Cao.getNome: String; begin Result := nome; end; procedure Cao.Listar; begin Writeln(O nome do cao e: ,getNome); Writeln(O cao emite o som: ,getSom); end; procedure Cao.setNome(pNome: String); begin nome := pNome; end; 5. Por fim, deveremos implementar a aplicao principal, que ir fazer chamada s classes que foram programadas anteriormente. program AppHeranca; {$APPTYPE CONSOLE} uses SysUtils, UAnimal in UAnimal.pas, UCao in UCao.pas; var UmCao: Cao; begin //Instnciando um cao UmCao := Cao.Create; //Setando o nome de um cao UmCao.setNome(Rex); //Listando as caractersticas do cao UmCao.Listar; readln; end.

Atividade complementar
1) Incremente o exemplo acima com as classes Gato e Porco, as quais herdaro da classe Animal. Na aplicao principal, faa instncias dessas classes e utilize todos os seus mtodos.

44

Linguagens de Programao e suas Aplicaes

2) Na mesma aplicao, crie um vetor de 5 posies para cada subclasse desenvolvida. Crie instncias desses vetores, sete todas as suas caractersticas e utilize seus mtodos. EX.: var caes : array [1..5] of Cao; nome :String; i:Integer; begin //Povoando um array de Caes for i := 1 to 5 do begin //instnciando cada posio do vetor caes[i] := Cao.Create; Writeln(Entre com o nome do cao: ); Readln(nome); caes[i].setNome(nome); end; //Listando um array de caes for i := 1 to 5 do begin caes[i].Listar; end;

Exerccios sugeridos
1) Defina uma superclasse pessoa que herde dela duas subclasses: aluno, professor. Siga os atributos e operaes a seguir e construa as classes, com seus respectivos mtodos. (Utilize Get e Set para todos os atributos das classes)

Linguagens de Programao e suas Aplicaes

45

OBS.: 1. Faz parte da questo a forma correta de definio de atributos, mtodos nas classes e o melhor uso possvel do paradigma Orientao Objeto. 2. Utilize arrays para cadastros tudo ficar na memria. 2. O que Orientao Objeto? 3. O que herana e qual o motivo de utilizarmos herana nas nossas aplicaes?

UNIDADE II
Conhecendo o Delphi, utilizando formulrios e componentes

Competncias e Habilidades
Compreender a evoluo histrica das Linguagens de Programao Conhecer os principais paradigmas de Linguagens de Programao e suas caractersticas. Capacitar a seleo de Linguagens de Programao, atravs da anlise de suas caractersticas. Utilizar adequadamente uma Linguagem de Programao. Utilizar o paradigma Orientao Objeto para desenvolver aplicaes. Conhecer a IDE Delphi para desenvolver aplicaes.

O que iremos aprender


Conceitos e paradigmas Notas histricas Trabalhando com vetores, procedimentos e funes Arrays Procedimentos e funes - Subprogramas Variveis Locais e globais Orientao a Objeto Modificadores de acesso Operadores de visibilidade Property (propriedade) Herana

Linguagens de Programao e suas Aplicaes

49

Vimos alguns paradigmas de programao comeando da procedural e parando na orientao objeto. Com esse conhecimento, estamos com maturidade suficiente para conhecermos melhor o Delphi e seus principais componentes. Ao utilizarmos essa IDE, iremos deixar a programao em console e vamos programar em formulrios (telas que ns estamos acostumados a visualizar nos sistemas comerciais, quando vamos fazer uma determinada compra). Porm, nesse curso, no iremos desenvolver aplicaes que utilizem banco de dados (ainda no temos o conhecimento necessrio de banco de dados nem tempo para abordar esse assunto no nosso curso). 4. Conhecendo melhor o Delphi O Delphi possui uma srie de ferramentas que auxiliam o desenvolvimento dos nossos programas: Forms, Object Inspector, Code Editor, Object TreeView, Main. Conheceremos cada uma dessas ferramentas, onde encontr-las e suas principais caractersticas. A Janela form onde construiremos nossas aplicaes, onde colocaremos botes, rtulos e outros componentes existentes no Delphi e onde ocorrer a interao Usurio-Computador.

Figura 13 A estrutura de codificao de uma Unit quando utilizamos forms fica da seguinte maneira:

50

Linguagens de Programao e suas Aplicaes

Na Janela Object inspector haver as propriedades e eventos dos componentes inseridos no prprio from.

Figura 14

Janela Code Editor onde fica o cdigo fonte de nossas aplicaes. Figura 15

Linguagens de Programao e suas Aplicaes

51

Na Janela Object TreeView, ser apresentado o diagrama dos componentes visuais do nosso projeto.

Figura 16 A Janela Main a janela principal que controla o funcionamento do delphi.

Figura 17 Um projeto em Delphi dividido em Units e em uma estrutura de arquivo, que est descrita abaixo.

4.5 Componentes visuais e no visuais Nesse ambiente de programao que estamos estudando, existem dois tipos de componentes: os visuais e no-visuais. Esses componentes esto divididos por tipos e, no curso, sero abordados os seguintes que se encontram nas seguintes paletas do Delphi: Standard, Additional, Win-32, System. Esses esto ilustrados na imagem abaixo.

Figura 19

52

Linguagens de Programao e suas Aplicaes

Na Paleta Standard, so 16 os componentes mais comuns nas Aplicaes, que so:

Na paleta Additional, existem 25 componentes, comuns nas aplicaes, mas com funes mais especializadas como na imagem abaixo.

J na paleta Sustm, so somente oito componentes, os quais permitem que sejam utilizadas algumas aplicaes do prprio sistema operacional. Conhecemos um pouco mais do Delphi e agora vamos criar nossa primeira aplicao utilizando formulrios. Na medida em que formos adicionando os componentes, conheceremos mais sobre eles. Vamos seguir o passo-a-passo abaixo para a construo do nosso programa. 1. Clique em File -> New -> Application (criamos uma aplicao no delphi). Figura 20

Linguagens de Programao e suas Aplicaes

53

2. Clique em File -> Save All (Para salvar o projeto na pasta desejada). 3. Salve a unit como UExemplo1.pas e o project como PrjExemplo1.dpr. (.pas so as unit onde adicionaremos nossos formulrios e .dpr o programa principal) 4. Na paleta Standard, adicione um button e um label no form. Para isso s dar um clique no componente e depois outro clique no formulrio. Podemos arrastar esses componentes para qualquer lugar do form.

Figura 21

Figura 22 5. No object inspector (caso no esteja encontrando esse objeto, clique no form e depois na tecla F11 do teclado) do form procure Height (Altura do form) e Width (Largura do Form), coloque respectivamente os nmeros 150 e 180 e mova os componentes inseridos no form para um lugar visvel. Figura 23

Figura 24

54

Linguagens de Programao e suas Aplicaes

6. No object inspector, altere o nome e o caption do From para frmExemplo1 e Exemplo1, respectivamente. 7. No object inspector, altere o caption e o nome do TButton e TLabel para clique, btnClique, no clicou, lblClique. 8. No object inspector do componente button, na aba event, d duplo clique na opo onclik do button e copie o cdigo abaixo. procedure TfrmExemplo1.btnCliqueClick(Sender: TObject); begin lblClique.Caption := Clicou no boto; end; 9. O formulrio dever ficar da seguinte maneira:

Figura 25 4.6 Gerenciando um Projeto no Delphi. No delphi, poderemos gerenciar nossos projetos da seguinte maneira: O Project Manager ajuda no gerenciamento dos nossos projetos. l que temos acesso a todos os formulrios do nosso projeto. Para acess-lo clique em: Veiw > Project Manager.

Figura 26 O Project Options controla quais forms sero criados automaticamente, especifica o ttulo dos projetos, altera os cones e seta o formulrio principal da aplicao. Para acess-lo, clique em Project > Option.

Linguagens de Programao e suas Aplicaes

55

Figura 27 4.7 Conhecendo melhor o Object Inspector Como sabemos, no Object Inspector em que esto contidas as propriedades e os eventos dos componentes do Delphi. Conheceremos mais sobre as principais propriedades e eventos desse objeto e, ao longo do curso, estudaremos propriedades e eventos especficos de alguns componentes. Nas propriedades, existem algumas caractersticas que so comuns entre os componentes e abaixo seguem as mais utilizadas.

Nos eventos, existem os mtodos comuns, que so: OnClick: ocorre quando o usurio clica o objeto. OndblClick: ocorre quando o usurio d um duplo clique. OnKeyDown: ocorre quando o usurio pressiona uma tecla, enquanto o objeto tem foco. OnKeyUp: ocorre quando o usurio solta uma tecla, enquanto o objeto tem o foco. OnKeyPress: ocorre quando o usurio d um clique numa tecla ANSI.

56

Linguagens de Programao e suas Aplicaes

OnMouseDown: ocorre quando o usurio pressiona o boto do mouse. OnMouseUp: ocorre quando o usurio solta o boto do mouse. OnMouseMove: ocorre quando o usurio move o ponteiro do mouse. Existem tambm alguns mtodos que utilizamos em linha de comando:

4.8 Manipulando excees Exceo um mecanismo que torna programas mais robustos ao adicionar a capacidade de manipular erros de software ou hardware. Try Determina o incio de um bloco de cdigo protegido. Except Delimita o final de um bloco de cdigo protegido e insere as instrues de manipulao. A sintaxe utilizada para manipular exceo a que segue abaixo. try edtResult.Text := floatToStr(soma(StrToFloat(edtNumero1. Text), StrToFloat(edtNumero2.Text))); except MessageDlg(Erro na entrada dos dados, mtError, [mbOk], 0); end; 4.5 Caixas de dilogo O Delphi oferece vrios comandos para exibio de mensagem em caixas de texto, como: MessageDlg, MessageBox , ShowMessage e outros. Essas caixas servem para exibir uma mensagem de erro, um aviso ou algum tipo de resultado.

Linguagens de Programao e suas Aplicaes

57

ShowMessage Mostra uma simples mensagem na tela. Sintaxe: ShowMessage(Voc est utilizando o showMessage); MessageDlg Exibe uma caixa de mensagens com algumas imagens especiais. Sintaxe: MessageDlg(<Mensagem>, <Tipo da caixa>, <Botes>, <Nmero de ajuda>); <Mensagem>: Simples mensagem a ser exibida (MSG). <Tipo da Caixa>: A imagem que ser exibida na caixa, existe 5 tipos (DlgType). Tipos de DlgType: - mtWarning : Perigo - mtError : Erro - mtInformation : Informao - mtConfirmation : Confirmao - mtCustom : No tem imagem <Botes>: Exibe o conjunto de botes que ser exibido na tela.(buttons) - mbYesNoCancel - mbYesAllNoAllCancel - mbOKCancel - mbAbortRetryIgnore - mbAbortIgnore O MessageDlg retorna o valor do boto selecionado pelo usurio. Os retornos podem ser desse tipo: mrOK, mrCancel, mrYes, mrAll, mrAbort mrIgnore, mrAbort. Exemplo: if MessageDlg(Erro na entrada dos dados, mtError, mbYesAllNoAllCancel, 2) = mrYes then ShowMessage(Voc clicou em YES); end; InputBox Caixa de dilogo com entrada de texto. Exemplo: nome := InputBox(Nome,entre com seu nome,); 4.8 Trabalhando com os componentes do Delphi Para aprendermos melhor sobre os componentes, iremos desenvolver aplicaes, utilizando as principais caractersticas de alguns componentes. Antes de comearmos a desenvolver nossos primeiros problemas, vamos aprender como fazer converso de valores no

58

Linguagens de Programao e suas Aplicaes

Delphi, que o famoso TypeCast. Siga a tabela abaixo para verificar os tipos de converso de valores.

Tabela ilustra alguns mtodos para converso de valores Abaixo seguem alguns exemplos de Type Cast. Var I: Integer; D: Double; S1, S2: string; begin D := 10.5; I := Trunc(D); S1 := FloatToStr(D); S2 := IntToStr(I); ShowMessage(S1 + #13 + S2); end;

Linguagens de Programao e suas Aplicaes

59

Comearemos com os componentes Label, Edit e Button, que se encontram na paleta Standard. A aplicao dever ser um programa que concatene Strings. Vamos seguir os seguintes passos para desenvolver nosso programa: 1. Crie um projeto com o nome PrjConcatena 2. Modifique o name e o caption do form para Concatene e frmConcatene respectivamente. 3. Insira no form quatro Labels, dois Edits, dois Buttons.

Figura 29 4. Modifique o name e o caption de cada componente. Para o name, utilize o padro: Componente Label Button Edit Name lblNome btnConcatena edtNome

5. Fazendo as alteraes corretas, o formulrio ficar da seguinte maneira:

Figura 30 6. No evento onclick do boto de concatenar e de limpar, acrescente os seus devidos cdigos.

Exerccio sugerido
1) Crie um form para fazer a soma de dois nmeros inteiros. OBS.:Typecast. Utilize: Label, Button e edit.

Figura 31

60

Linguagens de Programao e suas Aplicaes

2) Faa um Form para calcular o salrio de um determinado funcionrio. Utilize nmeros reais. Obs. : Para esse exemplo, utilize o seguinte cdigo para fazer converso de valores str(<valor Real>:8:2,<String>)

Figura 32 3) Desenvolva uma Calculadora Conforme o form a seguir. Obs.: Tab Order: Coloca a ordem em que o usurio acessar os componentes visuais, quando apertar a tecla Tab do teclado. Para encontrar essa opo, s clicar com o boto direito do mouse em cima do form.

Figura 33 Os prximos componentes que estudaremos sero GroupBox, CheckBox, RadioGroup, Panel. Todos eles se encontram na paleta Standard. Para conhecermos esses componentes iremos criar uma aplicao lanchonete. Para isso vamos seguir os passos abaixo. 1. Crie um novo projeto no Delphi. 2. Insira um GroupBox para depois inserir o CheckBox, caso contrrio os componentes no estaro vinculados. Figura 34

Linguagens de Programao e suas Aplicaes

61

3) Salve a unit como ULanchonete e o project PrjLanchonete. 4) A nossa aplicao funcionar da seguinte maneira: O usurio escolher os ingredientes e a carne do sanduche, depois clicar em nomear e a aplicao retornar o nome do sanduche. 5) No componente RadioGruop, vamos na propriedade items do object Inspector e adicionaremos os nomes: Hambrguer de carne Hambrguer de Chester Hambrguer de Peru Peito de Frango

Figura 35 6) Agora vamos mudar as propriedades Caption e name dos componentes. Se colocarmos antes do caption, o caractere & e a primeira letra ficam sublinhados; quando o programa estiver em execuo, poderemos fazer chamada ao componente, se acionarmos a letra no teclado.

62

Linguagens de Programao e suas Aplicaes

Figura 36 7) Modifique a font de todos os objetos para Arial 10 negrito. 8) PnlMens: Propriedade Align = AlBotton; Font = Negrito Itlico. 9) FrmSand: Quando o mouse passar sobre o formulrio, dever passar a mensagem no panel: Informe os ingredientes e o tipo da carne. Para saber se o mouse passou pelo componente s utilizar o evento OnMouseMove. procedure TfrmSand.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin pnlMens.Caption := Informe os ingredientes e o tipo da carne; end; 10) gpbIngred: Quando o mouse passar sobre o GroupBox, dever passar a mensagem no painel: Selecione os ingredientes do sanduche. 11) lblSand: Font = negrito itlico. 12) BtnFinalizar: Quando clicar nesse boto ir finalizar a aplicao. 13) Quando o mouse passar sobre o btnFinalizar dever passar a mensagem no painel: clique para finalizar aplicao. procedure TfrmSand.btnFinalizarClick(Sender: TObject); begin Application.Terminate; end; procedure TfrmSand.btnFinalizarMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin pnlMens.Caption := clique para finalizar aplicao; end;

Linguagens de Programao e suas Aplicaes

63

14) BtnNome: Quando clicar nesse boto, aparecer o nome do Sanduche. Quando o mouse passar sobre o btnNome, dever passar a mensagem no painel: clique para aparecer o nome do sanduche. 15) Para aparecer o nome do sanduche, vocs devero concatenar os ingredientes que forem selecionados pelo usurio. Regra: x - salada ou Ovo (ser o que o usurio tiver selecionado) tipo de carne que o usurio selecionar. Ex: x salada Burger x egg Peru x salada egg - Peru 16) Utilize esse cdigo para saber se o checkBox est selecionado: if (chkOvo.Checked) then lblSand.Caption := lblSand.Caption + - Egg; 17) Utilize esse cdigo para saber qual item do RadioGroup foi selecionado: if (rdgCarne.ItemIndex = 0) then lblSand.Caption := lblSand.Caption + - Burger; Obs.: Os itens do RadioGroup so um vetor de string, sendo que cada linha tem uma posio comeando de zero. 18) Para inserir algum caracter no Panel s: pnl.caption = Alguma coisa;

Figura 37

Agora vamos conhecer mais quatro componentes que auxiliam bastante no desenvolvimento de aplicaes: ComboBox, Image, ListBox e o MainMenu. Comearemos com o comboBox que se encontra na paleta Standard e funciona como uma lista de itens. Podemos adicionar

64

Linguagens de Programao e suas Aplicaes

itens Utilizando a propriedade Items do object inspector ou, dinamicamente, atravs do comando abaixo que sempre insere no final da lista. ComboBox1.Items.Add(123 testando); ComboBox1.Items.Add(321 testando);

Figura 38 Ainda no ComboBox, para acess-lo, utilizamos o cdigo abaixo. ItemIndex Serve para saber qual o ndice que o usurio acessou. ComboBox1.Items.Strings[ComboBox1.ItemIndex]) Serve para acessar um determinado ndice da lista. if ComboBox1.ItemIndex = 0 then ShowMessage(ComboBox1.Items.Strings[ComboBox1. ItemIndex]); Outro componente que bastante utilizado e muito parecido com o comboBox o listBox - lista de ndice, s que sua forma diferente de um comboBox. O listBox est situado na paleta Standard e costuma-se dizer que esse componente uma caixa de itens. ListBox1.Items.Add(123 testando); ListBox1.Items.Add(321 testando);

Figura 39 Existe tambm um componente, em que podemos inserir imagem nele, chamado Image e est situado na paleta additional. O seu funcionamento se d assim: TImage - exibe uma imagem. Strech - redimensiona uma imagem para o tamanho de um TImage. Ler uma imagem: Picture. Ler uma imagem de modo dinmico: Image1.Picture. LoadFromFile(C:/Fotos/imagem.jpg );

Linguagens de Programao e suas Aplicaes

65

Figura 40 Existe tambm um componente que cria um menu para nossas aplicaes, o MainMenu. Esse componente representa a barra de menu de um formulrio.

Figura 41 Suas principais propriedades so as seguintes: Items - um objeto do tipo TMenuItem, que descreve os itens do menu; atravs desta propriedade que se tem acesso informao associada aos itens do menu. Name - nome de identificao interna do menu. Figura 4.33 Ilustra o Object Inspectro do MainMenu Figura 42 Podemos tambm inserir objetos nos nossos componentes. Por exemplo: existe um objeto cliente que possui suas caractersticas e operaes; depois que instanciarmos e dermos caracterstica a esse objeto, ele pode ser inserido em um componente. Para inserir um objeto em um componente utilizamos o cdigo: procedure TfrmAdd.btnCreateClick(Sender: TObject) ; var cliente: TCliente; begin ... lbClients.AddItem(cliente.getName, cliente) ; ... end; Quando utilizamos o cdigo acima, o primeiro parmetro uma String e o segundo um object; inserimos o nome que aparecer no componente, que o atributo nome do objeto cliente e objeto cliente por inteiro. Lembrando tambm: lbClients do tipo List. Para acessar um objeto em um componente utilizamos o cdigo:

66

Linguagens de Programao e suas Aplicaes

procedure TfrmAdd.btnCreateClick(Sender: TObject) ; var Cliente: TClient; begin ... Cliente := lbClients.Items.Objects [lbClients.ItemIndex] as TClient; lblName.Caption := Name: + Cliente.getName; end; Nesse cdigo, primeiro, criamos um varivel cliente do tipo de uma classe TClient, acessamos o ndice desejado e, por ltimo, utilizamos o cdigo lbClients.Items.Objects para ter acesso ao objeto. O retorno desse mtodo do tipo Object, e para transformlo no tipo cliente, necessrio fazer typeCast que funciona as TCliente (tipo da classe que queremos o retorno). Para remover um objeto de um componente, necessrio utilizar o cdigo abaixo. procedure TfrmAdd.btnCreateClick(Sender: TObject) ; var cliente: TClient; begin ... lbClients.DeleteSelected; ... end; Nesse cdigo removemos o objeto do ndice que foi selecionado.

Linguagens de Programao e suas Aplicaes

67

Exerccio para conhecimento


1) Construa um mtodo para cada tipo de mensagem ilustrada abaixo.

Figura 43 2) Criando o programa Editor de texto 1. Carregue o Delphi. 2. Insira os componentes e altere suas propriedades, conforme mostrado a seguir. 3. Componente: Memo1(Guia Standard) Altere as propriedades Align: alClient Lines: D um duplo clique, remova o texto e clique no boto OK. ScrollBars: ssBoth 4. Componente: Panel1(Guia Standard) Altere as propriedades Align: alTop Caption: deixe em branco

68

Linguagens de Programao e suas Aplicaes

5. Componente: BitBtn1(Guia Additional) Altere as propriedades Caption: deixe em branco Glyph: Clique em Load e selecione o arquivo C:\Arquivos de programas\Arquivos comuns\Borland Shared\ Images\Buttons\fldropen.bmp. Coloque este boto sobre o componente Panel1 6. Componente: BitnBtn2(Guia Additional) Altere as propriedades Caption: deixe em branco Glyph: Clique em Load, selecione o arquivo C:\Arquivos de programas\Arquivos comuns\Borland Shared\ Images\Buttons\filesave.bmp. Coloque este boto sobre o componente Panel1. 7. Componente: OpenDialog1(Guia Dialogs) Altere as propriedades DefaultExt: TXT Filter: (FilterName)Arquivo de Texto, (Filter)*.txt 8. Componente SaveDialog1(Guia Dialogs) Altere as propriedades DefaultExt: TXT Filter: (FilterName)Arquivo de Texto, (Filter)*.txt 9. D um clique duplo no componente BitBtn1 e digite o cdigo abaixo. {Verifica se o componente OpenDialog1 pode carregar o arquivo} WITH OpenDialog1 DO IF Execute THEN BEGIN {Carrega o arquivo no componente Memo1} Memo1.Lines.LoadFromFile(Filename); END; 10.D um clique duplo no componente BitBtn2 e digite o cdigo abaixo. {Verifica se o componente SaveDialog1 capaz de salvar o arquivo} WITH SaveDialog1 DO IF Execute THEN

Linguagens de Programao e suas Aplicaes

69

BEGIN {Salva o arquivo} Memo1.Lines.SaveToFile(Filename); END; 11.Salve o projeto, clique no boto Run ou pressione a tecla F9 para rodar o programa. Faa os testes necessrios. 3) Desenvolva uma aplicao que faa um cadastro e a listagem de uma pessoa. Alm de criar um formulrio (UFrmPessoa), dever ser criada uma classe Pessoa(UPessoa) (em outra Unit) com todos os atributos da ilustrao abaixo.

O Formulrio servir como interao com o usurio, e o objeto Pessoa receber os dados que o usurio entrar na aplicao. Use o Componente OpenDialog para abrir uma imagem a ser inserida no TImage. Crie um boto, que ao clic-lo, o usurio escolha o caminho da foto desejado. Crie um boto INSIRA. Adicione um componente ListBox para ser inserido um objeto pessoa quando o usurio clicar em INSIRA. (O nmero da matrcula do usurio dever ser criado automaticamente) lbPessoa.AddItem(Pessoa.getnome,Pessoa); Insira um Edit para poder pesquisar uma determinada pessoa. Crie um boto ALTERAR. Ao clicar duas vezes no ListBox, dever aparecer as caractersticas do objeto pessoa nos componentes acima. Caso a pessoa edite os dados e clique no boto ALTERAR, dever tambm editar automaticamente os dados do listBox do objeto. Crie um boto, que ao clic-lo, apague o objeto selecionado do componente ListBox. Crie um boto Limpar, o qual ir esvaziar todos os componentes, menos o ListBox.

70

Linguagens de Programao e suas Aplicaes

OBS.: 1. Lembre que dever ser adicionado a Unit UPessoa na Unit UFrmPessoa (Para UfrmPessoa ter acesso ao mtodo de UPessoa). 2. No objeto Pessoa, o atributo Imagem dever ser do tipo String e conter o endereo da imagem. (Ex.: C:/Fotos/imagem.jpg).

Figura 44

Potrebbero piacerti anche