Apendice A

  • Uploaded by: Tiago Caetano
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Apendice A as PDF for free.

More details

  • Words: 5,398
  • Pages: 19
APÊNDICE

A

ESPECIFICAÇÕES DA LINGUAGEM ALGORÍTMICA UPSAM 2.0

SUMÁRIO A.1 A.2 A.3 A.4 A.5

A.1

Elementos da linguagem Operadores Estrutura de um programa Estruturas de controle Programação modular

A.6 A.7 A.8 A.9

Arquivos Variáveis dinâmicas Programação orientada a objetos Conjuntos de palavras reservadas e símbolos reservados

ELEMENTOS DA LINGUAGEM

A.1.1

Identificadores

Podem ser formados com qualquer caractere alfabético regional (não necessariamente ASCII padrão), dígitos (0-9) e o símbolo de sublinhado (_), devendo começar sempre por um caractere alfabético. Os nomes dos identificadores são sensíveis a maiúsculas e recomendamos que seu comprimento não ultrapasse os 50 caracteres.

A.1.2

Comentários

Existem dois tipos de comentários. Comentários somente de uma linha utilizarão barra dupla inclinada (//); este símbolo servirá para ignorar tudo o que apareça até o final da linha. Comentários multilinha poderão ocupar mais de uma linha utilizando os caracteres { e }, que indicarão respectivamente o início e o final do comentário. Todos os caracteres incluídos entre esses dois símbolos serão ignorados.

A.1.3

Tipos de dados padrão

Dados numéricos • Inteiros. Consideramos inteiro qualquer valor numérico sem parte decimal, independentemente de sua grandeza. Para a declaração de um tipo de dado inteiro, utilizamos a palavra reservada inteiro. • Reais. Consideramos real qualquer valor numérico com parte decimal, independentemente de uma grandeza ou precisão. Para a declaração de um tipo de dado real, utilizamos a palavra reservada real. 

mmFundamentos de programação – Algoritmos, estruturas de dados e objetos Dados lógicos Utilizamos a palavra reservada lógico em sua declaração. Dados de tipo caractere Utilizamos a palavra reservada caractere em sua declaração. Dados de tipo cadeia Utilizamos a palavra reservada cadeia em sua declaração. A não ser que indiquemos o contrário, consideram-se cadeias de comprimento variável. As cadeias de caracteres são consideradas como um tipo de dado padrão, mas estruturado (poderá ser considerado como um array de caracteres).

A.1.4

Constantes de tipos de dados padrão

Numéricas inteiras São compostas pelos dígitos (0...9) e os sinais + e – utilizados como prefixos. Numéricas reais Os números reais em vírgula fixa utilizam o ponto como separador decimal, além dos dígitos (0...9), e o caractere de sinais (+ e –). Nos reais em vírgula flutuante, a matriz poderá utilizar os dígitos (0...9), o caractere de sinais (+ e –) e o ponto decimal (.). O expoente irá separar-se da matriz mediante a letra E e a matriz estará formada pelo caractere de sinais e os dígitos. Lógicas Somente poderão conter os valores verdade (verdadeiro) e falso. De caractere Qualquer caractere válido do conjunto de caracteres utilizado, delimitados por separadores ‘ ou “. De cadeia Seqüência de caracteres válidos do conjunto de caracteres utilizados, delimitados pelos separadores ‘ ou “.

A.2

OPERADORES Operadores aritméticos Operador

Significado

- - + * / div mod **

Menos unitário Subtração Mais unitário (soma) Multiplicação Divisão real Divisão inteira Resto da divisão inteira Exponencial

Especificações da linguagem algorítmica UPSAM 2.0mm

O tipo de dado de uma expressão aritmética depende do tipo de dado dos operandos e do operador. Com os operadores +, -, * e ^, o resultado será inteiro se os operandos forem inteiros. Se algum dos operandos for real, o resultado será de tipo real. A divisão real (/) devolve sempre um resultado real. Os operadores mod e div devolvem sempre um resultado tipo inteiro. Operadores de relação Operador

Significado

= < > <= >= < >

Igual a Menor que Maior que Menor que ou igual a Maior que ou igual a Diferente de

Os operandos devem ser do mesmo tipo e o resultado será de tipo lógico. Operadores lógicos Operador

Significado

não e ou

Negação lógica Multiplicação lógica (verdadeiro se os dois operandos forem verdadeiros) Soma lógica (verdadeiro se algum dos operando for verdadeiro)

Os operandos devem ser de tipo lógico e devolvem um operando do mesmo tipo. Operadores de cadeia Operador

Significado

+ &

Concatenação de cadeias Concatenação de cadeias

Trabalham com operandos do tipo cadeia ou caractere e o resultado sempre será de tipo cadeia. Prioridade básica de operadores Primários Unitário Multiplicativos Aditivos De cadeia De relação

( ) [ ] Parênteses em expressões ou em chamadas a procedimentos ou funções. Colchetes em índices de arrays. -, +, não *, /, div, mod, e Exponencial ** +, -, ou &, + =, <, >, <=, >=, <>

Prioridade avançada de operadores1 Os operadores são mostrados em ordem decrescente de prioridade de cima para baixo. Os operadores do mesmo grupo têm a mesma prioridade (precedência) e são executados da esquerda para a direita ou da direita para a esquerda de acordo com a associatividade.

  Essas regras de prioridade se ajustam a linguagens de programação modernas como C++, Java ou C#.

1

mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

Operador

Significado

Associatividade

( ) ( ) [ ] .

Parênteses Chamada à função Subíndice Acesso a membros de um objeto

Dir-Esq Dir-Esq Dir-Esq Dir-Esq

+ + - -

Prefixo incremento Prefixo decremento

Dir-Esq Dir-Esq

+ - ! ~ (tipo) novo (new)

Mais unitário Menos unitário Negação lógica unitária Complemento bit a bit unitário Modelo unitário Criação de objetos

Dir-Esq Dir-Esq Dir-Esq Dir-Esq Dir-Esq Dir-Esq

* / % + -

Produto Divisão Porcentagem Soma Subtração

Esq-Dir Esq-Dir Esq-Dir Esq-Dir Esq-Dir

<< >> >>>

Deslocamento bit a bit para a esquerda Deslocamento bit a bit para a direita com extensão de sinal Deslocamento bit a bit para a direita enchendo com zeros

Dir-Esq Dir-Esq Dir-Esq

< <= > >= instância_de (instance_of)

Menor que Menor que ou igual a Maior que Maior que ou igual a

Esq-Dir Esq-Dir Esq-Dir Esq-Dir

Verificação de tipo de objeto

Esq-Dir

= = ! =

Igualdade Desigualdade

Esq-Dir Esq-Dir

&

AND (Y) bit a bit

Esq-Dir

^

OR (ou) exclusivo bit a bit

Esq-Dir

|

OR (ou) inclusivo bit a bit

Esq-Dir

&&

AND (E) lógico

Esq-Dir

||

OR (ou) lógico

Esq-Dir

?:

Condicional ternário

Dir-Esq

= += -= *= /= % = & =

Atribuição Atribuição de soma Atribuição de subtração Atribuição de produto Atribuição de divisão Atribuição de módulo Atribuição AND bit a bit

Dir-Esq Dir-Esq Dir-Esq Dir-Esq Dir-Esq Dir-Esq Dir-Esq (continua)

Especificações da linguagem algorítmica UPSAM 2.0mm

(continuação)

Operador

Significado

Associatividade

^= |= <<= >>= >>>=

Atribuição OR exclusive bit a bit Atribuição OR inclusive bit a bit Atribuição de deslocamento para a esquerda bit a bit Deslocamento direito bit a bit com atribuição de extensão de sinal Deslocamento direito bit a bit com atribuição de extensão a zero

Dir-Esq Dir-Esq Dir-Esq Dir-Esq Dir-Esq

A.3

ESTRUTURA DE UM PROGRAMA algoritmo <nome_do_algoritmo> //Seções de declarações [const //declarações de constantes] [tipos //declarações de tipos] [var //declarações de variáveis] //Corpo do programa início ... fim

A.3.1

Declarações de tipos de dados estruturados

Arrays array[...] de : <nome_de_tipo> é um subintervalo com o índice do limite inferior e o limite superior. Por exemplo, array [5..20] de inteiro declararia um array de 16 elementos inteiros. Podem aparecer vários separadores por

vírgulas para declarar arrays de mais de uma dimensão. é o identificador de qualquer tipo de dado padrão ou definido pelo usuário. <nome_do_tipo> é um identificador válido que será utilizado para referenciar o tipo de dado. O acesso a um elemento de um array se realizará indicando-se seu índice entre colchetes. O índice será uma expressão inteira. Registros registro : <nome_de_tipo> : <nome_do_campo> ... fim_registro é o identificador de qualquer tipo de dado padrão ou definido pelo usuário. <nome_do_tipo> é um identificador válido que se utilizará para referenciar o tipo de dado. <nome_do_campo> é um identificador válido que se utilizará para referenciar o campo do registro.

O acesso a um campo de uma variável de tipo registro será realizado utilizando-se o caractere ponto (.), por exemplo, MeuRegistro.MeuCampo.

mmFundamentos de programação – Algoritmos, estruturas de dados e objetos Arquivos seqüenciais arquivo_s de : <nome_do_tipo> é o identificador de qualquer tipo de dado padrão ou definido pelo usuário. <nome_do_tipo> é um identificador válido que se utilizará para referenciar o tipo de dado.

Arquivos diretos arquivo_s de : <nome_do_tipo> é o identificador de qualquer tipo de dado padrão ou definido pelo usuário. <nome_do_tipo> é um identificador válido que se utilizará para referenciar o tipo de dado.

A.3.2

Declaração de constantes

É realizada dentro da seção de declarações de constantes. <nome_de_constante> = <expressão> <nome_de_constante> é um identificador válido que se utilizará para referenciar a constante. <expressão> é uma expressão válida. O tipo da constante será o tipo de dado que a expressão devolve.

A.3.3

Declaração de variáveis

É realizada dentro da seção de declarações de variáveis. : <nome_de _variáveis> [= <expressão>]... é o identificador de qualquer tipo de dado padrão ou definido pelo usuário. <nome_de_variável> é um identificador válido que se utilizará para referenciar a variável. Em uma

declaração é possível declarar várias variáveis separadas por vírgulas. É possível inicializar a variável na declaração, <expressão> é uma expressão válida do tipo de dado da variável.

A.3.4

Biblioteca de funções

Funções aritméticas Função

Significado

abs(x) aleatório( ) arctan(x) cos(x) inteiro(x) exp(x) 1n(x) log10(x) raiz2(x) sen(x) trunc(x)

Devolve o valor absoluto da expressão numérica x. Devolve um número aleatório real maior que ou igual a 0 e menor que 1. Devolve o arco tangente de x. Devolve o cosseno de x. Devolve o primeiro valor inteiro menor que a expressão numérica x. Devolve o valor ex. Devolve o logaritmo neperiano de x. Devolve o logaritmo em base 10 de x. Devolve a raiz quadrada de x. Devolve o seno de x. Trunca (elimina os decimais) da expressão numérica x.

Funções de cadeia Função

Significado

comprimento(c) posição(c, sc) subcadeia(c, ini[, long])

Devolve o número de caracteres da cadeia c. Devolve a posição da primeira aparição da subcadeia sc na cadeia. Devolve uma subcadeia da cadeia c formada por todos os caracteres a partir da posição ini. Incluindo-se o argumento long, devolve só os primeiros long caracteres a partir da posição ini.

Especificações da linguagem algorítmica UPSAM 2.0mm

Funções de conversação de número da cadeia Função

Significado

código(car) caractere(x) valor(©)

Devolve o código ASCII de um caractere car. Devolve o caractere correspondente ao código ASCII x. Converte a cadeia c em um valor numérico. Caso o conteúdo da cadeia c não possa converter-se em um valor numérico (contém caracteres alfabéticos, sinais de pontuação inválidos etc.), devolve 0. Converte a cadeia o valor numérico x.

cadeia(x)

Funções de informação Função

Significado

tamanho_de()

Devolve o tamanho em bytes da variável.

A.3.5

Procedimentos de entrada e saída

ler(<lista_de_variáveis>) lê uma ou mais variáveis do teclado do sistema. escrever(<lista _de_ expressões>) escreve uma ou mais expressões no console do sistema.

A.3.6

Instrução de atribuição ← <expressão>

Primeiro avalia o valor da expressão e o atribui à variável. A variável e a expressão devem ser do mesmo tipo de dado.

A.4

ESTRUTURAS DE CONTROLE

A.4.1

Estruturas seletivas

Estrutura seletiva simples e dupla se <expressão_lógica> então [se_não ] fim_se

Estrutura seletiva múltipla conforme_seja <expressão> fazer <lista_de_valores> : ... [se_não fim_conforme

mmFundamentos de programação – Algoritmos, estruturas de dados e objetos <expressão> pode ser qualquer expressão válida. <lista_de_valores> será um ou mais valores separados por vírgulas do mesmo tipo que <expressão>.

A estrutura verifica se o valor da expressão coincide com alguns dos valores da primeira lista de valores, se isso ocorre, realiza as ações correspondentes e o fluxo de controle sai da estrutura; caso contrário, avalia a lista seguinte. As ações da cláusula se_não serão executadas se nenhum valor coincidir com a <expressão>.

A.4.2

Estruturas repetitivas

Estrutura enquanto enquanto <expressão_lógica> fazer fim_enquanto

Estrutura repetir repetir até_que <expressão_lógica>

Estrutura desde desde até [incremento | decremento ] fazer fim_desde pode ser qualquer variável cujo valor possa ser incrementado ou decomposto, ou seja, todas as numéricas, as de tipo caractere e as lógicas. é uma expressão com o primeiro valor que a variável do laço recebe. Deve ser do mesmo tipo que a variável do laço. é uma expressão com o último valor que a variável do laço recebe. Deve ser do mesmo tipo que a variável do laço. O laço finaliza quando a variável recebe um valor maior que esse valor inicial. é uma expressão com o valor no qual se irá incrementar ou decompor a variável do laço ao final de cada iteração.

A.5

PROGRAMAÇÃO MODULAR

A.5.1

Questões gerais

O escopo das variáveis declaradas dentro de um módulo (procedimento ou função) é local, e o tempo de vida dessa variável será o tempo de execução do módulo.

A.5.2

Procedimentos

Declaração procedimento <nome_procedimento> ([<lista_parâmetros_formais>]) [declarações locais] início ... fim_procedimento

Especificações da linguagem algorítmica UPSAM 2.0mm

<nome_procedimento> deve ser um identificador válido. <lista_parâmetros_formais> são um ou mais grupos de parâmetros separados por ponto-e-vírgula.

Cada grupo de argumentos se define da seguinte forma: {E | E/S} : lista_de_parâmetros> E indica que a passagem de parâmetro se realiza por valor. E/S indica que a passagem de parâmetro se realiza por referência. é um tipo de dado padrão ou definido previamente pelo usuário. <lista_de_parâmetros> é um ou mais identificadores válidos separados por vírgulas.

Chamada a procedimentos [chamar_a] <nome_procedimento>([<lista_parâmetros_atuais>])

A lista de parâmetros atuais pode ser uma ou várias variáveis ou expressões separadas por vírgulas que devem coincidir em número, ordem e tipo com a lista de parâmetros formais da declaração.

A.5.3

Funções

Declaração :função < nome_função>([<lista_parâmetros_formais>]) [declarações locais] início ... devolver(<expressão>) fim_função é um tipo de dado padrão ou definido previamente pelo usuário. Trata-se do tipo de dado que devolve a função. <nome_função> deve ser um identificador válido. <lista_parâmetros_formais> pode ser um ou mais grupos de parâmetros separados pelo ponto-evírgula. Cada grupo de argumentos se define da seguinte forma: {E | E/S} : <lista_de_parâmetros> E indica a passagem de parâmetros realizada por valor. E/S indica a passagem de parâmetros realizada por referência. é um tipo de dado padrão ou definido previamente pelo usuário. <lista_de_parâmetros> pode ser um ou mais identificadores válidos separados por vírgulas. <expressão> é o valor de retorno da função. Deve coincidir com o tipo de dado da declaração.

Chamada a funções <nome_função>([<lista_parâmetros_atuais>])

A lista de parâmetros atuais é uma ou várias variáveis ou expressões separadas por vírgulas que devem coincidir em número, ordem e tipo com a lista de parâmetros formais da declaração. Devolvendo um valor e não existindo funções que não devolvem valores (funções void de C ou Java), a chamada deve ser sempre feita dentro de uma expressão.

10mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

A.6

ARQUIVOS

A.6.1

Arquivos seqüenciais

Abertura do arquivo abrir(,<nome_arquivo>) é uma variável do tipo arquivo seqüencial. <modo_abertura> indica o tipo de operação que será realizada com o arquivo. No caso de arquivos

seqüenciais será: • leitura, coloca o ponteiro no registro seguinte, no começo do arquivo e somente realiza operações de leitura. O arquivo deve existir previamente. • escrita, coloca o ponteiro no registro seguinte, no começo do arquivo e somente realiza operações de escrita. Se o arquivo não existe, primeiro cria um arquivo vazio. Se o arquivo existe, subrescreve os dados que contém. • acrescentar, coloca o ponteiro no registro seguinte, na marca de final de arquivo e somente realiza operações de escrita. <nome_arquivos> é uma expressão de cadeia com o nome que o sistema dará ao arquivo.

Fechamento de arquivo fechar(<lista_variáveis_tipo_arquivo>)

Fecha o arquivo ou arquivos abertos previamente. Entrada/saída ler(,

Ler do arquivo aberto para leitura representado por o registro seguinte. O tipo da variável deve coincidir com o tipo base do arquivo definido na declaração do tipo de dado. escrever(, <expressão>)

Escreve o valor da expressão no arquivo aberto para escritura e representado pela variável de tipo arquivo. O tipo da expressão deve coincidir com o tipo base do arquivo definido na declaração do tipo de dado.

A.6.2

Arquivos de texto

Considera-se o arquivo de texto como um tipo especial de arquivo composto de caracteres ou cadeias. A declaração de um tipo de dado de tipo arquivo de texto seria, portanto: arquivo_s de caractere : <nome_tipo> arquivo_s de cadeia : <nome_tipo>

A leitura de um caractere único em um arquivo de texto pode ser feita da forma escrever() que leria o caractere seguinte do arquivo. A leitura de uma variável de tipo cadeia (ler()) leria todos os caracteres até o final da linha. A escrita de dados em um arquivo de texto também poderá ser feita caractere por caractere (escrever ()) ou linha por linha (escrever ()).

Especificações da linguagem algorítmica UPSAM 2.0mm11

A detecção do final da linha em um arquivo de texto quando lemos caractere por caractere será efetuada com a função fdl: fdl()

A função fdl devolve o valor lógico verdade se o último caractere lido é o caractere de fim de linha.

A.6.3

Arquivos diretos

Abertura do arquivo abrir(,<nome_arquivo>) é uma variável de tipo arquivo direto. <modo_abertura> indica o tipo de operação que será realizada com o arquivo. No caso de arquivos

diretos, será: • leitura, coloca o ponteiro no registro seguinte, no começo do arquivo e somente realiza operações de leitura. O arquivo deve existir previamente. • escrita, coloca o ponteiro no registro seguinte, no começo do arquivo e somente realiza operações de escrita. Se o arquivo não existe, primeiro cria um arquivo vazio. Se o arquivo existe, sobrescreve os dados que contém. • leitura/escrita, coloca o ponteiro no começo do arquivo e permite operações tanto de leitura como de escrita. <nome_arquivo> é uma expressão de cadeia com o nome que o sistema dará ao arquivo.

Fechamento do arquivo fechar(<lista_variáveis_tipo_arquivo>)

Fecha o arquivo ou arquivos abertos previamente. Acesso seqüencial ler(, )

Ler do arquivo aberto para leitura representado por o registro seguinte. O tipo da variável deve coincidir com o tipo base do arquivo definido na declaração do tipo de dado. escrever(, <expressão>)

Escreve o valor da expressão no arquivo aberto para escrita e representado pela variável de tipo arquivo. O tipo da expressão deve coincidir com o tipo base do arquivo definido na declaração do tipo de dado. Acesso direto ler(, <posição>, )

Lê o registro situado na posição relativa <posição> e guarda seu conteúdo na variável. escrever(, <posição>, )

Escreve o conteúdo da variável na posição relativa <posição>.

12mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

A.6.4

Considerações adicionais

Detecção do final do arquivo Ao fechar um arquivo aberto para escrita, colocamos depois do último registro a marca de fim de arquivo. A função fda permite detectar se chegamos a tal marca. fda()

Devolve o valor lógico verdade quando tentamos fazer uma leitura seqüencial depois do último registro. Determinar o tamanho do arquivo A função lda devolve o número de bytes do arquivo. lda(<nome_arquivo>) <nome_arquivo> é o nome do arquivo físico. Para determinar o número de registros de um arquivo, pode ser utilizada a expressão: lda(<nome_arquivo>) / tamanho_de()

Outros procedimentos apagar(<nome_arquivo>)

Elimina do disco o arquivo representado pela expressão de cadeia <nome_arquivo>. O arquivo deve estar fechado. renomear(<nome_arquivo>,<novo_nome>)

Muda o nome do arquivo <nome_arquivo> pelo de <novo_nome>. O arquivo deve estar fechado.

A.7

VARIÁVEIS DINÂMICAS Declaração de tipos de dados dinâmicos ponteiro_a : <nome_do_tipo>

Declara o tipo de dado <nome_do_tipo> como um ponteiro a variáveis de tipo . O valor constante nulo indica uma referência a um ponteiro nulo. Referência ao conteúdo de uma variável dinâmica

Nomeação e liberação de memória com variáveis dinâmicas reservar()

Reserva espaço na memória para uma variável do tipo de dado do ponteiro e faz com que a variável dinâmica aponte esta zona. liberar()

Libera o espaço de memória apontado pela variável dinâmica. Essa variável fica com um valor indeterminado.

Especificações da linguagem algorítmica UPSAM 2.0mm13

A.8

PROGRAMAÇÃO ORIENTADA A OBJETOS

A.8.1

Classes e objetos

Declaração de uma classe classe <nome_de_classe> //Declaração de atributos //Declaração de construtores e métodos fim_classe <nome_de_classe> é um identificador válido.

Declaração de tipos de referências <nome_de_classe> : <nome_de_referência> <nome_de_classe> é o nome de uma classe previamente declarada. <nome_de_referência> é um identificador válido que será utilizado para referenciar um objeto dessa

classe. A declaração de uma referência a uma classe será feita na sessão de declarações de variáveis ou tipos de dados de um algoritmo, ou dentro da sessão de variáveis de outra classe. Instanciação 2 de classes novo <nome_de construtor>([<argumentos_construtores>])

A declaração novo reserva espaço para um novo objeto da classe a que pertence o construtor e devolve uma referência a um objeto dessa classe. <nome_de_construtor> terá o mesmo nome da classe a que pertence. A ativação do construtor pode levar argumentos para a inicialização de atributos (veja mais adiante no item de construtores). A instanciação pode ser efetuada em uma sentença de atribuição. MeuObjeto ← novo MinhaClasse(arg1, arg2, arg3) //Dentro do código executável

Referência a membros de uma classe NomeReferência.nomeDeMembro //Para atributos NomeReferência.nomeDeMembro ([listaParamAtuais]) //Para métodos

Construtores construtor <nome_de_classe>[<lista_parâmetros_formais>]) //Declaração de variáveis locais início //Código do construtor fim_construtor

Existe um construtor por omissão sem argumentos que ativamos mediante <nome_de_classe( )>. Como os métodos, admite-se a sobrecarga dentro de construtores distinguindo-se os diferentes construtores por ordem, número e/ou tipo de seus argumentos. Uma vez que a missão de um construtor é inicializar uma instância de uma classe, a <lista_parâmetros_formais> somente inclui argumentos de entrada, pelo que se pode omitir a forma em que passam os argumentos.   Criação de instâncias.

2

14mmFundamentos de programação – Algoritmos, estruturas de dados e objetos Destrutores Não consideramos a existência de destrutores. As instâncias são consideradas destruídas quando é perdida uma referência a elas (coleta de lixo). Visibilidade das classes Consideramos todas as classes como públicas, ou seja, é possível acessar os membros de qualquer classe declarada em qualquer momento. Referência à instância de dentro da declaração de uma classe É possível fazer referência a uma instância de dentro de uma classe com a palavra reservada instância que devolve uma referência à instância da classe que realizou a ativação do método. Desta forma instância. UmAtributo faria referência ao valor do atributo UmAtributo dentro da instância atual.

A.8.2

Atributos

Declaração de atributos A declaração dos atributos de uma classe será realizada dentro da sessão de declarações var dessa classe. const [privado|público|protegido]:<nome>= var [privado|público|protegido] [estático] : <nome_atributo> [ = ] ... <nome_atributo> pode ser qualquer identificador válido. pode ser qualquer tipo de dado padrão, definido pelo usuário ou outra classe declarada

anteriormente. É possível dar um valor inicial ao atributo mediante uma expressão de inicialização que deverá ser do mesmo tipo de dado que o atributo. As constantes são membros estáticos, se ligam em tempo de compilação e indicam que o valor não pode ser modificado. Visibilidade dos atributos Por omissão, os atributos privados são considerados, ou seja, somente são acessíveis pelos membros da classe. Para que possam ser utilizados pelos membros de outras classes, utilizaremos o modificador público. O modificador protegido é usado para que apenas possam ser utilizados pelos membros de sua classe e pelos das classes de suas filhas. Atributos de classe (estáticos) Um atributo que tenha o modificador estático não pertence a nenhuma instância da classe, ele será comum a todas elas. Para fazer referência a um atributo de uma classe, será utilizado o nome da classe seguido do nome do atributo (MinhaClasse.MeuAtributoEstático). Atributos constantes O modificador const permite criar atributos constantes que não se modificarão durante o tempo de vida da instância.

Especificações da linguagem algorítmica UPSAM 2.0mm15

A.8.3  Métodos Declaração de métodos A declaração de métodos será realizada dentro da classe depois da declaração de atributos sem indicar nenhuma sessão especial. [estático] [abstrato] [público|privado|protegido] método <nome_do_método>(<lista_de_parâmetros_formais>) //declaração de variáveis início //Código [devolver(<expressão>)] fim_método <nome_do_método> é um identificador válido. é qualquer tipo de dado padrão, estruturado ou uma referência a um objeto. A declaração devolver é utilizada para indicar a data de retorno que devolve a função que deve coincidir com o tipo de retorno que aparece na declaração. Se o método não devolve valores, será utilizada a palavra reservada nada e não aparecerá a palavra devolver.

A lista de parâmetros formais será declarada da mesma maneira como nos procedimentos e funções. A passagem de argumentos será realizada como nos procedimentos e funções normais. As variáveis locais serão declaradas na sessão var entre o cabeçalho do método e seu corpo. Visibilidade dos métodos3 Por omissão, os métodos são considerados como públicos, ou seja, é possível acessá-los de qualquer lugar do algoritmo. Para que possa ser utilizado só por membros de sua classe, será utilizado o modificador privado, no caso dos procedimentos, ou privada, no caso das funções. O modificador protegido ou protegida será utilizado para que só possa ser utilizado pelos membros de sua classe e pelos de suas classes filhas. Métodos estáticos Um método que tenha o modificador estático ou estática não pertence a nenhuma instância da classe, mas será comum a todas elas. Para fazer referência a um método de uma classe, será utilizado o nome da classe seguido do nome do método (MinhaClasse.MeuMétodoEstático( )). Sobrecarga de métodos É permitida a sobrecarga de métodos, ou seja, a declaração de métodos com o mesmo nome mas com funcionalidades diferentes. Para que na ativação se possa distinguir entre os métodos sobrecarregados, o número, a ordem ou o tipo de seus argumentos deve mudar. Ligação de métodos A ligação de chamada de um método com o método correspondente sempre é feita de maneira dinâmica, isto é, em tempo de execução, com o qual se permite a existência de polimorfismo.

  É recomendado usar apenas um método e, portanto, os modificadores serão privados ou protegidos.

3

16mmFundamentos de programação – Algoritmos, estruturas de dados e objetos

A.8.4

Herança

classe herda_de[<especificador_acesso>]<superclasse> é um identificador válido. <superclasse> é uma classe declarada anteriormente. [<especificador_acesso>] estabelece o tipo de herança (pública,

protegida ou privada).

Omitindo-se, podemos supor ser pública. Com o especificador de acesso omitido, a classe derivada: • Herda todos os métodos e atributos da superclasse acessíveis (atributos públicos e protegidos e métodos públicos e protegidos) presentes somente na superclasse. • Sobrescreve todos os métodos e atributos da superclasse acessíveis (atributos públicos e protegidos e métodos públicos e protegidos) presentes em ambas as classes. • Acrescenta todos os métodos e atributos presentes somente na classe derivada. É possível acessar atributos da superclasse ou executar seus métodos mediante a palavra reservada super. • Referência a um membro da superclasse super.nomeMembro( ). • Referência ao construtor da superclasse: super( ). Classes e métodos abstratos Classes nas quais alguns ou todos os membros não têm implementação, porque não podem instanciar-se diretamente. Servirão de classe base para classes derivadas. abstrata classe

Aqueles métodos sem implementação poderiam ser declarados sem início nem fim de método. abstrata TipoDado: método NomeMétodo ([paramFormais])

Nesses casos, as classes filhas deveriam implementar o método. Herança múltipla classe herda_de [<especificador_ de_acesso>]<superclasse1> ... [<especificador_de_acesso>]<superclasseN> //membros ... fim_classe

A.9

CONJUNTOS DE PALAVRAS RESERVADAS E SÍMBOLOS RESERVADOS símbolo, palavra

Tradução/Significado

- - & fl  * . .

Menos um (negativo) Subtração Concatenação Operador de atribuição Referência a uma variável apontada Multiplicação Qualificador de acesso a registros ou a membros de uma classe Separador de decimais (continua)

Especificações da linguagem algorítmica UPSAM 2.0mm17

(continuação)

símbolo, palavra

Tradução/Significado

/ // [ ] ^ {

Divisão real Comentário de uma linha só. Ignora tudo aquilo aparece depois da linha Índice de array Exponencial Início do comentário multilínea. Ignora tudo aquilo que aparece até achar o caractere de final de comentário (}) Fim de comentário multilínea. Ignora tudo aquilo que aparece a partir do caractere de início do comentário ({) Aspa simples, delimitador de dados de tipo caractere ou cadeia Aspa dupla, delimitador de dados de tipo caractere ou cadeia Mais unário (positivo) Soma Concatenação Menor que Menor que ou igual a Diferente de Igual a Maior que Maior que ou igual a Abre um arquivo Devolve o valor absoluto da expressão numérica x Declaração de métodos abstratos (sem implementação) Devolve um número aleatório real maior que ou igual a 0 e menor que 1 programa, início do pseudocódigo Modo de abertura de um arquivo Devolve o arco tangente de x Declaração de arquivos diretos Declaração de arquivos seqüenciais Declaração de arrays Apaga um arquivo do disco string Converte a cadeia para o valor numérico de x char Devolve o caractere que corresponde ao código ASCII de x Fecha um arquivo Fecha um ou mais arquivos abertos Início da declaração de uma classe Devolve o código ASCII do caractere car Início da sessão de declarações de constantes Declaração de atributos constantes na definição de classes Início da declaração de um construtor Devolve o cosseno de x Decremento de estruturas repetitivas desde Início de estrutura repetitiva desde, for Indica o valor de retorno de uma função Divisão inteira Expoente Passagem de argumentos por valor Passagem de argumentos por referência integer, int, long, byte etc. Devolve o primeiro valor inteiro menor que a expressão numérica x

} ’ ” + + + < <= < > = > >= abrir abs(x) abstrato aleatório( ) algoritmo somar arctan(x) arquivo_d arquivo_s array apagar cadeia cadeia(x) caractere caractere(x) fechar fechar classe código(car) const const construtor cos(x) decremento desde devolver div e e e/s inteiro inteiro(x)

(continua)

18mmFundamentos de programação – Algoritmos, estruturas de dados e objetos (continuação)

símbolo, palavra

Tradução/Significado

então escrever escrita estático exp(x) falso fda fdl fin fim_classe fim_construtor fim_desde fim_função fim_enquanto fim_procedimento fim_registro fim_conforme fim_se função fazer até até_que herda_de incremento início instância lda leitura leitura/escritura ler liberar ln(x) log10(x) comprimento(c) chamar_a enquanto mod nada não novo

then Escreve uma ou mais expressões em dispositivo de saída (console, arquivo etc.) Modo de abertura de um arquivo Declaração de atributos ou métodos de classe ou estáticos Devolve o valor ex Falso, false Fim de arquivo Fim de linha Fim de algoritmo Final de declaração de uma classe Fim da declaração de um construtor Fim de estrutura repetitiva desde Fim da declaração de uma função Fim da estrutura repetitiva enquanto Final de um procedimento Fim da declaração de registro Fim de estrutura seletiva múltipla end if, fim de estrutura seletiva simples Início da declaração de uma função do to Fim da estrutura repetitiva repetir Indica que uma classe derivada herda membros de uma superclasse Incremento em estruturas repetitivas desde início do código executável de um algoritmo, módulo, construtor etc. Referência à instância atual da classe de onde aparece Devolve o comprimento em bytes de um arquivo Modo de abertura de um arquivo Modo de abertura de um arquivo Ler uma ou mais variáveis de um dispositivo de entrada (console, arquivo etc.) Libera o espaço atribuído a uma variável dinâmica Devolve o algoritmo neperiano de x Devolve o algoritmo em base 10 de x Devolve o número de caracteres da cadeia c Instrução de chamada a um procedimento while, início da estrutura repetitiva enquanto Módulo da divisão inteira Tipo de retorno de métodos que não devolvem valores, void Not Reserva espaço em memória para um objeto de uma classe e devolve uma referência desse objeto Constante de ponteiro nulo Operação lógica “ou” , “or” Devolve a posição da primeira aparição da subcadeia sc na cadeia Modificador de acesso privado a um atributo ou método Início da declaração de um procedimento Modificador de acesso a um atributo ou método que permite o acesso aos membros de sua classe e das classes filhas Modificador de acesso público a um atributo ou método Declaração de tipos de dados de alocação dinâmica Devolve a raiz quadrada de x

nulo ou posição(c,sc) privado procedimento protegido público ponteiro_a raiz2(x)

(continua)

Especificações da linguagem algorítmica UPSAM 2.0mm19

(continuação)

símbolo, palavra

Tradução/Significado

real registro renomear repetir reservar conforme_seja sen(x) se se_não subcadeia (c,ini[,long])

float, double, single, real etc. record, início da declaração de registro Troca o nome de um arquivo repeat, início da estrutura repetitiva repetir Reserva espaço em memória para uma variável dinâmica Início de estrutura seletiva múltipla, case, select case, switch Devolve seno de x Início de estrutura seletiva simple/doble, if else Devolve uma subcadeia da cadeia c formada por todos os caracteres a partir da posição ini. Se for incluído o argumento long, devolve somente os primeiros long caracteres, a partir da posição ini Permite acesso a membros da superclasse Devolve o tamanho em bytes da variável x Início da seção de declarações de tipos de dados Trunca (elimina os decimais) da expressão numérica x Converte a cadeia c a um valor numérico. Se o conteúdo da cadeia c não pode converter-se em um valor numérico (contém caracteres alfabéticos, sinais de pontuação inválidos etc.), devolve 0 Inicio da seção de declarações de variáveis, ou da declaração de atributos de uma classe Verdadeiro, true Operação lógica “e”, “and”

super tamanho_de(x) tipos trunc(x) valor(c) var verdade e

Related Documents

Apendice A
August 2019 17
Apendice A
June 2020 12
Apendice
July 2020 19
Apendice
November 2019 32
Apendice
June 2020 20
Apendice
November 2019 35

More Documents from "Leonard D"

June 2020 10
Apendice A
June 2020 12
June 2020 10
June 2020 8
Trabbenchmark
June 2020 8
June 2020 6