Ementário

  • O ambiente de desenvolvimento

  • A linguagem Pascal, Programação Orientada a Objetos

  • Visual Components Library

  • Banco de dados: abordagem I e II

  • Componentes QuickReport

  • Dynamic Link Library

  • Help

  • InstallShield Express

  • Delphi e Pascal Avançado

  • Programando para Internet

Subprogramas

  • Em geral:

    • problemas complexos = programas complexos
  • Mas sempre é possível dividir:

    • problemas grandes e complicados em problemas menores e de solução mais simples
  • Programa complexo = Subprograma 1 + Subprograma 2 + ... + Subprograma N

Definição

  • Um subprograma, é um nome dado a um trecho de um programa mais complexo e que, em geral, encerra em si próprio um pedaço da solução de um problema maior - o programa a que ele está subordinado.

  • São sinônimos: Módulo, Subrotina e Subalgoritmo e são conceitos da ciência conhecida com engenharia de software.

Método de Refinamentos Sucessivos

  • dividir uma subrotina em outras tantas quantas forem necessárias, buscando uma solução mais simples de uma parte do problema maior

  • técnica de programação estruturada

    • dividir-para-conquistar

Em Resumo

  • subdivisão de programas complexos

    • facilita o entendimento (partes independentes)
  • estruturação de programas

    • detecção de erros e documentação de sistemas
  • modularização de sistemas

    • manutenção de software e a reutilização de subprogramas

Subprogramas (ou subrotinas)

  • trecho de código (módulo, rotina, processo):

    • procedure
    • function (retorna valor)
  • unit

    • biblioteca, ou unidade de códigos: conjunto de procedure’s e function’s

Estrutura de subprogramas

  • um cabeçalho, onde estão definidos o nome e o tipo do subprograma (procedure ou function), bem como os seus parâmetros e declarações locais (uses, const, type, var e subprogramas subordinados);

  • um corpo, onde se encontram as instruções (comandos) do subprograma.

Procedimento (procedure)

  • são subrotinas, que realizam uma tarefa e não retornam valor

Manipulação de procedimentos

  • O procedimento é uma parte separada do programa, e somente é executado quando o seu nome é chamado dentro do programa principal ou por outro subprograma que esteja em execução.

  • O nome de um procedimento é um identificador pelo qual ele será referenciado numa sentença de chamada (ou ativação).

  • Ao término do procedimento o controle de execução é devolvido ao módulo chamador.

Função (function)

  • são muito semelhantes a procedimentos, a única diferença é que as funções retornam com um valor através do seu nome

Manipulação de funções

  • A função funciona de forma similar ao funcionamento de um procedimento, com a diferença de que uma função sempre retorna com um valor através do seu nome.

  • A função é executada e, ao seu término, o trecho do comando que a invocou é substituído pelo valor da expressão atribuído ao nome da função.

Conceitos

  • O escopo de uma variável ou sua abrangência está vinculada a sua visibilidade (Global ou Local) em relação aos subprogramas de um programa, sendo que a sua visibilidade está relacionada a sua hierarquia.

  • Variável Global: pode ser usada pelo programa e por todos os subprogramas

  • Variável Local: pode ser usada somente pelo subprograma em que ela foi definida e pelos seus descendentes

Comunicação entre Subprogramas

  • Parâmetros são canais pelos quais se estabelece uma comunicação bidirecional entre um subprograma e o módulo chamador (o programa principal ou outro subprograma).

  • Dados são passados pelo módulo chamador ao subprograma, ou retornados por este ao primeiro por meio de parâmetros.

Parâmetros

  • são variáveis opcionalmente passadas a um subprograma

  • uma procedure ou function podem ter zero ou mais parâmetros

  • são definidos no cabeçalho do subprograma

Tipos de parâmetros

  • Parâmetros Formais são os nomes simbólicos introduzidos no cabeçalho dos subprogramas. Dentro de um subprograma trabalha-se com estes nomes da mesma forma como se trabalha com variáveis locais ou globais.

  • Parâmetros Reais (ou argumentos) são aqueles que se associam aos parâmetros formais quando da chamada de um subprograma.

Finalidade dos parâmetros

  • Através da passagem de parâmetros é feita a transferência de informações entre os módulos sejam: constantes, variáveis, ou expressões, ao invés de somente o valor de variáveis globais.

  • Esta utilização formaliza a comunicação entre módulos.

  • Existem dois tipos de passagem de parâmetros:

    • Tipo Valor ou Constante (cópia)
    • Tipo Variável ou Referência

Parâmetros por valor

  • os parâmetros reais (módulo chamador) são calculados e os parâmetros formais (subprograma) correspondentes recebem uma cópia dos valores resultantes

  • a variável passada se comporta como uma variável local, ou seja, alterações nos parâmetros formais não afetam os parâmetros reais

Parâmetros por referência (var)

  • Os parâmetros reais (módulo chamador) compartilham seu espaço de memória com os parâmetros formais (subprograma).

  • Portanto, alterações nos parâmetros formais afetam os parâmetros reais.

  • O subprograma recebe uma referência à variável passada ou, em outras palavras, a própria variável.

Parâmetros por referência (var)

  • Com esse tipo de passagem de parâmetros, o subprograma pode alterar diretamente a variável passada.

  • Para especificar a passagem por referência, deve-se usar a palavra-chave var antes do nome do parâmetro.

Resumo- ativando rotinas

Unidade de códigos (unit)

  • biblioteca, conjunto de subprogramas (procedures e/ou functions) destinados a solucionar uma série de tarefas bastante corriqueiras

    • verificação CPF e CNPJ
    • valor por extenso
    • operações com data
    • ...

Objetivo das bibliotecas (unit’s)

  • reutilização de código

  • aumentar com o passar do tempo acrescentando de novos subprogramas de uso comum

  • no desenvolvimento de novos sistemas, procura-se ao máximo basear sua concepção em subprogramas já existentes na biblioteca, de modo que a quantidade de software realmente novo que deve ser desenvolvido é minimizada

Pascal, Estrutura básica de uma Unit (2/2)

  • a primeira linha da unit identifica o nome da unit

  • deve ser um identificador válido na linguagem Pascal

  • deve ser igual ao nome dado a unit na hora da gravação

  • unit Geral; Geral.Pas

  • unit OpData; OpData.Pas

Cláusula Interface (1/2)

  • começa com a palavra interface e termina imediatamente antes da palavra-chave implementation

  • contém a definição de todos os tipos, constantes, variáveis, procedures e functions que devem ser "visíveis" (ou acessíveis) para outras units que se referenciem a esta

  • somente o que estiver definido na parte interface pode ser acessado por outras units

Cláusula Interface (2/2)

  • units listadas na cláusula uses da interface são geralmente adicionadas pelo próprio Delphi, para fazer referência a units do sistema (predefinidas)

  • raramente é necessário adicionar manualmente nomes de units a cláusula uses. Para se referenciar a outras units, altera-se a cláusula uses na parte implementation.

Cláusula Implementation

  • contém todo o código das procedures e functions da unit

  • pode conter também declarações de variáveis e constantes, mas estas só serão "visíveis" pelo código desta unit. Nenhuma outra unit pode ter acesso às variáveis e constantes declaradas aqui.

  • as units listadas nessa cláusula são geralmente adicionadas pelo programador, manualmente, ou usando o comando File | Use unit.

Compilação de unit’s

  • As units não são programas, portanto, não devem ser executadas (run).

  • As units devem ser compiladas da mesma maneira que os programas, destinando o resultado da compilação para disco (Compile - Destination).

  • Uma vez compiladas, as units serão armazenadas pelo Turbo Pascal em um arquivo do mesmo nome que a unidade fonte, porém com terminação TPU (Turbo Pascal Unit).

Utilização de unit’s

  • ao necessitar de algum procedimento ou função contido na unidade, deve-se chamá-la através da cláusula uses

    • uses Crt, Geral;
  • a unit deverá estar presente no diretório onde o programa, que for utilizá-la, for compilado ou no diretório padrão do Turbo Pascal (tp/units)

Delphi, Unidade de códigos (unit)

  • as Units contêm praticamente todo o código de um aplicativo no Delphi

  • as Units geralmente são associadas a formulários, mas podem ser criadas de forma totalmente independente

    • bibliotecas de códigos (reutilização)
  • File | New | Unit

File | New | Unit

Cláusula Initialization

  • é opcional, e deve ser usada para declarar e inicializar variáveis

  • o código nesta parte é executado antes de qualquer outro código na unit

  • se um aplicativo tiver várias units, a parte initialization (se houver) de cada unit é executada antes de qualquer outro código na unit

Cláusula Finalization

  • é opcional, e o código nessa parte é executado logo antes do término do aplicativo

  • essa parte é geralmente usada para realizar "operações de limpeza", como recuperar memória e outros recursos, ao final da execução do aplicativo

Unidades e escopo

  • Em pascal as unidades são a chave para o encapsulamento e visibilidade.

  • O escopo de um identificador (tal como uma variável, procedimento, função ou tipo de dados) é a parte do código à qual o identificador está acessível:

    • Variáveis locais
    • Variáveis globais ocultas
    • Variáveis globais

Exemplos de escopos de identificadores:

  • Exemplos de escopos de identificadores:

  • unit NomedaUnit;

  • interface

  • uses A, B, C; { outras unidades que são referenciadas }

  • type, const, var { declarações exportadas, ou globais }

  • procedure MeuProcedimento;

  • implementation

  • type, const, var { declarações globais ocultas, visível somente nesta unit }

  • procedure MeuProcedimento;

  • type, const, var { declarações locais, válidas somente

  • para o procedimento }

  • begin

  • end;

  • end.

Private, Protected e Public

  • Private

    • não são acessíveis de fora da unidade do form.
  • Protected:

    • somente o form atual e seus descendentes podem acessar os elementos.
  • Public:

    • são livremente acessíveis em todas as unit’s do projeto.

Published

  • um elemento publicado não somente está disponível em tempo de execução, mas também em tempo de projeto

  • componentes do Delphi têm uma interface publicada que é usada pelo Object Inspector

  • default

Comentários