sábado, 31 de março de 2007

Sibelius - writing, playing, printing and publishing music notation

O Sibelius é um software para edição de partituras semelhante ao Encore (visto no post anterior). Na minha opinião ele é muito mais amigável e muito mais funcional que a maioria dos seus concorrentes. Ele esta na versão 4, as imagens que coloquei ainda são da versão 2.

Estou escrevendo mais uma composição do Helio Delmiro, para colocar no blog dele. Escolhi fazer com o Sibelius para matar a saudade, faz tempo que eu não o utilizo. Chamada, parceria com Paulo Cezar Pinheiro, foi gravada no disco do Tamba Trio, 1975 pela RCA Victor. Esse disco é maravilhoso!

Voltando ao Sibelius ... Para começar, vc praticamente não precisa usar o mouse para utilizá-lo. Muitas funcionalidades dele seguem a mesma linha do Encore. Portanto, não vou repetir coisas sobre armadura, fórmula de compasso e etc. Basta um olhada nos menus cujo os títulos sejam sugestivos para o que vc deseja e pronto, tudo é muito intuitivo.

Para escolher um determinado tipo de barra de compasso, por exemplo: No Menu Create na segunda opção "Barline", vc pode escolher, dentre os possíveis tipos, e definir aonde inicia e termina um retornelo.


O que for referente a parte textual de uma partitura, no Menu Create, a opção "Text" serve pra definição de título da partitura, compositor e informações adicionais.

Nem tudo é fácil de se achar por aqui, escrever uma quiáltera pode dar um pouco de dor de cabeça se vc não tiver muita prática com esse tipo de aplicativo. Essa opção fica meio escondida. No Menu Create, opção "Tuplet", é aode vc pode criar as mais variadas formas de quiálteras


No menu File, a opção para plug-ins merece um pouco de atenção. Muitas funcionalidades interessantes podem e dever adicionadas, as quais podem ser acessadas ali.

O Sibelius tb é mais flexível para exportação. Embora, na minha opinião, ainda deixe a desejar, pelo menos vc pode gerar um arquivo html. Além disso, para formatos de imagens ele apresenta uma série de opções.




Uma opção para publicação no site da Sibelius. Não sei até que ponto isso pode ser interessante.

Segue algumas dicas do que achei mais importante destacar sobre usabilidade:

Para adicionar compassos “Ctrl + B”

Para executar o que foi escrito “p”

Para pausar o que está sendo executado tb “p”

Com as teclas Up, Down, Left e Right (setas) vc seleciona cada figura rítmica existente no compasso e assim sucessivamente, de compasso em compasso, vc pode percorrer a partitura inteira. A figura abaixo, Keypad, exibe os símbolos relacionados as teclas numéricas a direita do seu teclado.

Para altera o valor da nota selecionada: Com as setas up (para cima) e dow (para baixo) vc muda a altura da nota, exemplo: supondo que estou com uma nota do3, colcheia, se eu pressionar a seta up, imediatamente a nota sobe para ré3, o efeito sonoro tb será ouvido. Fazendo isso com o Ctrl pressionado, a nota se desloca uma oitava no sentido da tecla Up ou Dow. Outras alterações são feitas a través do teclado numérico, keypad na estrema direita do seu teclado (onde se encontra a tecla Nun Lock).

0: Alterna entre som e silencio para a fura selecionada

Del: Aumenta a nota de mais a sua metade, ponto de aumento = Nota + Nota/2

Enter: Liga a nota seleciona com a sua, diretamente, sucessora.

1:Fusa – figura com o valor de 1/32 da Semibreve (figura 1/1).

2: Semicolcheia - figura com o valor de 1/16 da Semibreve (figura 1/1).

3: Colcheia - figura com o valor de 1/8 da Semibreve (figura 1/1).

4: Semínima - figura com o valor de 1/4 da Semibreve (figura 1/1).

5: Mínima - figura com o valor de 1/2 da Semibreve (figura 1/1).

6: Semibreve - figura com o valor de 1/1.

7: Bequadro - Para remover o acidente.

8: Para acidentar a nota - Sustenido (#)

9: Para acidentar a nota - Bemol (b)

+: move o KeyPad para o próximo conjunto de figuras relacionadas ao teclado numérico

-: Retorna o KeyPad para o conjunto anterior de figuras relacionadas ao teclado numérico

O Space, aplica na próxima nota a figura que estiver selecionada no teclado numérico, keypad.

Se um compasso inteiro estiver selecionado com as teclas Up e Dow todas as notas são transpostas para a altura seguinte conforme a armadura.

Gosto bastante dese sofware.



Artigo completo (View Full Post)

terça-feira, 27 de março de 2007

Um site com artigos muito inteligentes

Olá a todos.

Navegando um pouco na net eu encontrei um site onde tem alguns artigos que eu achei muito interessantes. O site fala muito sobre cybercultura os pontos de vista do autor no mínimo valem a pena ler para ter uma opinião.

http://pointlesswasteoftime.com
^^ Pointless waste of time - o nome já é louco (o site é em inglês).

Eu recomendo conferir esses dois artigos:
Life After the Video Game Crash
A World of Warcraft World

Para o Gerson: Você vai se identificar muito com as idéias desse cara, principalmente neste segundo artigo.

Realmente vale a pena.

Abraços.

Artigo completo (View Full Post)

sexta-feira, 23 de março de 2007

POO - Polimorfismo

Olá a todos. Este é outro post falando das técnicas de programação orientada a objetos.

Polimorfismo é a técnica que permite implementar um método numa classe que tenha o comportamento diferente do método na sua classe ancestral. Podemos entender como um exemplo um objeto chamado Automóvel, que tem dois descendentes: Carro e Moto.

O Objeto Automóvel tem um método chamado ligar, que todo automóvel possui. Os objetos Carro e Moto também têm o método ligar, porém com implementações diferentes entre si.

Vamos fazer alguns códigos:

Delphi:

interface

type

TAutomovel = class
public
procedure Ligar;
end;


TCarro = class(TAutomovel)
public
procedure Ligar; override;
end;

TMoto = class(TAutomovel)
public
procedure Ligar; override;
end;

implementation

procedure TAutomovel.Ligar;
begin
{implementação do método Ligar da classe TAutomovel}
end;


procedure TCarro.Ligar;
begin
{a palavra chave inherited indica que este método vai incluir a
implementação do método do ancestral no ponto em que foi inserida}
inherited;

{implementação do método Ligar da classe TCarro}
end;


procedure TMoto.Ligar;
begin
{a palavra chave inherited indica que este método vai incluir a
implementação do método do ancestral no ponto em que foi inserida}
inherited;

{implementação do método Ligar da classe TMoto}
end;


Java:

class Automovel {
pubic void ligar() {
// implementação do método ligar da classe Automovel
}
}

class Carro extends Automovel {
public void ligar() {
// o método super() chama a implementação do método da classe
// ancestral no ponto em que foi iserido
super();

// implementação do método ligar da classe Carro
}
}

class Moto extends Automovel {
public void ligar() {
// o método super() chama a implementação do método da classe
// ancestral no ponto em que foi iserido
super();

// implementação do método ligar da classe Moto
}

}


C#

class Automovel {
public void ligar() {
// implementação do método ligar da classe Automovel
}
}

class Carro : Automovel {
public override void ligar() {
// a chamada a base. chama a implementação do método da classe
// ancestral no ponto em que foi iserido
base.ligar();

// implementação do método ligar da classe Carro
}
}

class Moto : Automovel {
public override void ligar() {
// a chamada a base. chama a implementação do método da classe
// ancestral no ponto em que foi iserido
base.ligar();

// implementação do método ligar da classe Moto
}
}


Outra forma de polimorfismo é quando a classe ancestral tem um método mas não faz nenhuma implementação, deixando-a por parte das suas classes descendentes. Este tipo de método é chamado abstrato. Neste caso a classe derivada é obrigada a fazer sua própria implementação do método.

Vou abrir um pequeno parêntesis para falar sobre 'abstratos' em POO.

Geralmente métodos e classes abstratas apenas repredentam a idéia e não a funcionalidade. Vamos a exemplos:

Classes abstratas não podem ser instanciadas.

O quê? Como assim? Por que ter classe se eu não posso instanciá-la?
Uma das principais vantagens de se usar classes abstratas é que nos permite introduzir comportamento comum aos descendentes.

Vamos a um exemplo prático: Figuras geométricas. O que é exatamente uma figura geométrica? Nós não temos uma resposta concreta porque figura geométrica é um objeto abstrato. Mas quanto a quadrado? Retângulo? Losango? Estes são figuras geométricas que podemos descrever claramente.

Todas as figuras geométricas têm um método chamado 'desenhar', mas as implementações são diferentes entre as figuras. É aí que entram a classe abstrata e o método abstrato.

Classes abstratas não podem ser instanciadas. Por um motivo bem simples: Porque são abstratas! Hehe... A classe só tem uma estrutura básica para servir de base para as suas classes descendentes.

Por exemplo, a classe FiguraGeometrica tem o método abstrato Desenhar, que aceita como argumentos as coordenadas de onde ele vai começar a ser desenhado (x e y). Todos os seus descendentes terão este método, mas cada um deles deve ter sua própria implementação.


Delphi

type
TFiguraGeometrica = class
public
procedure Desenhar(const x, y: Integer); virtual;
end;


TQuadrado = class(TFiguraGeometrica)
public
procedure Desenhar(const x, y: Integer); override;
end;

TLosango = class(TFiguraGeometrica)
public
procedure Desenhar(const x, y: Integer); override;
end;

...

procedure MontarFigura(Figura: TFiguraGeometrica; const x, y: Integer);
begin
Figura.Desenhar(x, y);
end;


Java

abstract class FiguraGeometrica {
abstract void desenhar(int x, int y);
}

class Quadrado extends FiguraGeometrica {
public void desenhar(int x, int y) {
// implementação do método desenhar do objeto Quadrado
}
}

class Losango extends FiguraGeometrica {
public void desenhar(int x, int y) {
// implementação do método desenhar do objeto Losango
}
}


...

void montarFigura(FiguraGeometrica figura, int x, int y) {
figura.desenhar(x, y);
}


C#

abstract class FiguraGeometrica {
public abstract void desenhar(int x, int y);
}


class Quadrado : FiguraGeometrica {
public override void desenhar(int x, int y) {
// implementação do método desenhar do objeto Quadrado
}
}

class Losano : FiguraGeometrica {
public override void desenhar(int x, int y) {
// implementação do método desenhar do objeto Losango
}
}


...

public void montarFigura(FiguraGeometrica figura, int x, int y) {
figura.desenhar(x, y);
}


Mas Felipeeee... que efeito prático isso vai ter na aplicação?

Desta forma nós evitamos redundância no nosso código, 'if' que não precisamos... Quando executamos o método MontarFigura nós passamos qualquer objeto derivado da classe FiguraGeometrica que, pelo fato dela ser abstrata (virtual em delphi) ela vai executar o método da classe derivada correspondente. Maneiro, né...

Esse post acabou sendo mais longo que eu esperava, mas espero que o conteúdo postado tenha sido bem absorvido. Abraços.

Artigo completo (View Full Post)

Mais uma novidade no layout

Olá a todos.

Este post é para informar a mais nova mudança no blog. Os posts na página principal (e dos labels também) só exibem os primeiros parágrafos.

Clicando no link do título do post ou no link 'Artigo completo' no final é possível ler o artigo todo.

Eu tive que alterar todos os post do blog para encaixar nesse novo modelo. O pessoal que posta também deve fazer nesse modelo para seguir este padrão. Quando a galera for criar um post já carrega o editor do post com o 'esqueleto' e as instruções.

Por favor me digam o que vocês acham desse novo layout.

Conto com vocês (1... 2... 3... << eu sei, foi tosco, foi mal).

Abraços.

Artigo completo (View Full Post)

quinta-feira, 15 de março de 2007

POO - Sobrecarga

Seguindo a linha de posts sobre programação orientada a objetos vamos ver mais uma técnica: sobrecarga.

Sobrecarga de método é uma técnica que permite a uma classe possuir mais de um método com um único nome, porém com comportamentos e assinaturas diferentes.

A assinatura do método é a forma com que ele é declarado: nome, parâmetros e tipo de retorno.

É muito comum confundir sobrecarga com polimorfismo. A diferença entre eles é que a sobrecarga consiste em implementações diferentes de um método na mesma classe, enquanto polimorfismo consiste em mudar o comportamento de um método de uma classe em classes descendentes – podendo ser somente estendido ou totalmente reimplementado.

Vamos a exemplos de sobrecarga:

C#:

class Sobrecarga {
public double area (double lado) {
return lado * lado;
}

public double area(double largura, double comprimento) {
return largura * comprimento
}
}

Dephi:

interface

type
TSobrecarga = class

function Area(ALado: Double): Double; overload;
function Area(ALargura: Double; AComprimento: Double): Double; overload;

end;


implementation

function TSobrecarga.Area(ALado: Double): Double;
begin
Result := ALado * ALado;
end;

function TSobrecarga.Area(ALargura, Acomprimento: Double): Double;
begin
Result := ALargura * AComprimento;
end;

Java:

public class Sobrecarga {
public double area(double lado) {
return lado * lado;
}

public double area(double largura, double comprimento) {
return largura * comprimento
}
}

Valeu a todos e comentem à vontade!

Artigo completo (View Full Post)

POO - Encapsulamento

Este post nos mostra uma parte muito importante em POO (na verdade é possivel utilizar isso em várias outras coisas): Encapsulamento

Encapsulamento é a técica que permite separar uma parte funcional de um objeto de sua interface de acesso. Isso proporciona ao utilizador total abstração da parte funcional, que ele não precisa saber. Vamos tomar como exemplo uma televisão. Nós que a utilizamos não precisamos entender do seu funcionamento interno para poder assistir. Basta saber como utilizar o controle remoto (a interface) para controlar a TV.

Uma das principais vantagem do encapsulamento é que as alterações feitas na parte encapsulada não afetam os utilizadores do objeto. Por exemplo: o técnico pode melhorar o mecanismo de exibição de imagem da TV que a forma de utilizar a TV ainda é a mesma de antes.

Encapsulamento também permite controle sobre o campo da classe de acordo com as regras de negócio. Um bom exemplo é um semáforo: É possível recuperar a cor atual, mas não é possível alterar livremente a cor - Isso será feito seguindo uma seqüência previamente definida na regra de negócio.

Nos exemplos abaixo vamos mostrar exemplos de classes com e sem encapsulamento.

Exemplos de classes sem encapsulamento:

Java:

class SemEncapsulamento {

public int semProtecao;

}


...


SemEncapsulamento se = new SemEncapsulamento();
se.semProtecao = 10;


Delphi:

type
TSemEncapsulamento = class

public
SemProtecao: Integer;
end;


...



SE := TSemEncapsulamento.Create;
SE.SemProtecao := 10;


A Implementação em C# é igual à do Java.

Neste tipo de implementação o campo de dados fica aberto ao utilizador da classe; Desta forma este campo pode ser modificado como o utilizador bem quiser; e isso dificulta muito o controle da classe sobre o próprio campo.

Agora a implementação com encapsulamento:

C#:

class ComEncapsulamento {
private int comProtecao;
public int ComProtecao {
get {
return this.comProtecao
}
set {
this.comProtecao = value;
}
}
}


...


ComEncapsulamento ce = new ComEncapsulamento();
ce.comProtecao = 10;


Java:

class ComEncapsulamento {

private int comProtecao;

public int getComProtecao {
return this.comProtecao;
}

public void setComProtecao(int value) {
this.comProtecao = value;
}

}


...


ComEncapsulamento ce = new ComEncapsulamento();
ce.setComProtecao(10);


Delphi:

interface

type
TComEncapsulamento = class

protected
FComProtecao: Integer;
published
property ComProtecao: Integer read FComProtecao write SetComProtecao;
end;

implementation

procedure TComEncapsulamento.SetComProtecao(Value: Integer);
begin
FComProtecao := Value;
end;


...


CE := TComEncapsulamento.Create;
CE.ComProtecao := 10;


Esta forma é mais organizada porque quem utiliza a classe não acessa diretamente o seu campo de dados (ele está num escopo fora de alcance do utilizador): agora isso será feito através das interfaces que a classe criou para leitura e modificação. Desta forma também é mais fácil fazer crítica de entrada antes de alterar o valor do campo interno. Quando não usamos encapsulamento a validação fica por conta do utilizador ou dentro dos métodos da classe que trabalham com os campos em questão; e com isso estamos transmitindo a responsabilidade à entidade errada – principalmente se a validação é feita fora da classe - e tornando as partes que deveriam ser independentes totalmente acoladas. No exemplo da TV nós teríamos que abrir a TV e usar o mecanismo interno dela para trocar o canal e, se o processo for complexo, nós teremos que fazer todo o processo por nós mesmos.

O encapsulamento de campos em Delphi e C# são totalmente transparentes do ponto de vista do utilizador da classe; já em Java nós conseguimos perceber claramente a manipulação através de métodos.

Encapsulamento é uma técnica muito importante para que no nosso código haja realmente a possibilidade de reaproveitamento. Abraços a todos e não deixem de comentar.

Artigo completo (View Full Post)

Delphi for PHP - Delphi? for PHP?

Olá a todos os queridos freqüentadores do nosso adorável blog xD

Como o título diz: Delphi? for PHP?

É... Este é um novo produto da empresa CodeGear que, segundo eles, vai revolucionar o desenvolvimento em PHP.

Quem desenvolve em PHP finalmente vai ter uma IDE realmente RAD. Pelo que vi no site tem até gerenciador de projetos e gerenciador de bancos de dados com recursos de arrastar e soltar.

Neste site eu encontrei algumas informações sobre o produto (além da página oficial, é claro) e até o preço de pré-venda: R$ 675,00 - até que não é caro.

Como sempre a galera do delphi tomando a dianteira. Eu também desenvolvo em PHP. Vou ver se baixo uma versão "Trial" (se houver alguma) e mandar pra galera o que eu acho da ferramenta.

Araços a todos e, como sempre, a seção de comentários é toda de vocês.

Artigo completo (View Full Post)

quarta-feira, 14 de março de 2007

ASCII

As tabelas mostradas neste post representam os 256 códigos usados nos computadores da família IBM. Esta tabela refere-se ao American Standard Code for Information Interchange (código padrão americano para troca de informações), que é um conjunto de números representando caracteres ou instruções de controle usados para troca de informações entre computadores entre si, entre periféricos (teclado, monitor, impressora) e outros dispositivos. Estes códigos tem tamanho de 1 byte com valores de 00h a FFh (0 a 255 decimal). Podemos dividir estes códigos em três conjuntos: controle, padrão e estendido.

Os primeiros 32 códigos de 00h até 1Fh (0 a 31 decimal), formam o conjunto de controle ASCII. Estes códigos são usados para controlar dispositivos, por exemplo uma impressora ou o monitor de vídeo. O código 0Ch (form feed) recebido por ima impressora gera um avanço de uma página. O código 0Dh (carriage return) é enviado pelo teclado quando a tecla ENTER é pressionada. Embora exista um padrão, alguns poucos dispositivos tratam diferentemente estes códigos e é necessário consultar o manual para saber exatamente como o equipamento lida com o código. Em alguns casos o código também pode representar um caracter imprimível. Por exemplo o código 01h representa o caracter J (happy face).

Os 96 códigos seguintes de 20h a 7Fh (32 a 127 decimal) formam o conjunto padrão ASCII. Todos os computadores lidam da mesma forma com estes códigos. Eles representam os caracteres usados na manipulação de textos: códigos-fonte, documentos, mensagens de correio eletrônico, etc. São constituídos das letras do alfabeto latino (minúsculo e maiúsculo) e alguns símbolos usuais.

Os restantes 128 códigos de 80h até FFh (128 a 255 decimal) formam o conjunto estendido ASCII. Estes códigos também representam caracteres imprimíveis porem cada fabricante decide como e quais símbolos usar. Nesta parte do código estão definidas os caracteres especiais: é, ç, ã, ü ...

Dec.

Hex.

Controle

0

00h

NUL (Null)

1

01h

SOH (Start of Heading)

2

02h

STX (Start of Text)

3

03h

ETX (End of Text)

4

04h

EOT (End of Transmision)

5

05h

ENQ (Enquiry)

6

06h

ACK (Acknowledge)

7

07h

BEL (Bell)

8

08h

BS (Backspace)

9

09h

HT (Horizontal Tab)

10

0Ah

LF (Line Feed)

11

0Bh

VT (Vertical Tab)

12

0Ch

FF (Form Feed)

13

0Dh

CR (Carriage Return)

14

0Eh

SO (Shift Out)

15

0Fh

SI (Shift In)

16

10h

DLE (Data Link Escape)

17

11h

DC1 (Device control 1)

18

12h

DC2 (Device control 2)

19

13h

DC3 (Device control 3)

20

14h

DC4 (Device control 4)

21

15h

NAK (Negative Acknowledge)

22

16h

SYN (Synchronous Idle)

23

17h

ETB (End Transmission Block)

24

18h

CAN (Cancel)

25

19h

EM (End of Media)

26

1Ah

SUB (Substitute)

27

1Bh

ESC (Escape)

28

1Ch

FS (File Separator)

29

1Dh

GS (Group Separator)

30

1Eh

RS (Record Separator)

31

1Fh

US (Unit Separator)




Caracter

Dec.

Hex.

32

20h

!

33

21h

"

34

22h

#

35

23h

$

36

24h

%

37

25h

&

38

26h

'

39

27h

(

40

28h

)

41

29h

*

42

2Ah

+

43

2Bh

,

44

2Ch

-

45

2Dh

.

46

2Eh

/

47

2Fh

0

48

30h

1

49

31h

2

50

32h

3

51

33h

4

52

34h

5

53

35h

6

54

36h

7

55

37h

8

56

38h

9

57

39h

:

58

3Ah

;

59

3Bh

<

60

3Ch

=

61

3Dh

>

62

3Eh

?

63

3Fh

@

64

40h

A

65

41h

B

66

42h

C

67

43h

D

68

44h

E

69

45h

F

70

46h

G

71

47h

H

72

48h

I

73

49h

J

74

4Ah

K

75

4Bh

L

76

4Ch

M

77

4Dh

N

78

4Eh

O

79

4Fh

P

80

50h

Q

81

51h

R

82

52h

S

83

53h

T

84

54h

U

85

55h

V

86

56h

W

87

57h

X

88

58h

Y

89

59h

Z

90

5Ah

[

91

5Bh

\

92

5Ch

]

93

5Dh

^

94

5Eh

_

95

5Fh

`

96

60h

a

97

61h

b

98

62h

c

99

63h

d

100

64h

e

101

65h

f

102

66h

g

103

67h

h

104

68h

i

105

69h

j

106

6Ah

k

107

6Bh

l

108

6Ch

m

109

6Dh

n

110

6Eh

o

111

6Fh

p

112

70h

q

113

71h

r

114

72h

s

115

73h

t

116

74h

u

117

75h

v

118

76h

w

119

77h

x

120

78h

y

121

79h

z

122

7Ah

{

123

7Bh

|

124

7Ch

}

125

7Dh

~

126

7Eh

127

7Fh

Ç

128

80h

ü

129

81h

é

130

82h

â

131

83h

ä

132

84h

à

133

85h

å

134

86h

ç

135

87h

ê

136

88h

ë

137

89h

è

138

8Ah

ï

139

8Bh

î

140

8Ch

ì

141

8Dh

Ä

142

8Eh

Å

143

8Fh

É

144

90h

æ

145

91h

Æ

146

92h

ô

147

93h

ö

148

94h

ò

149

95h

û

150

96h

ù

151

97h

ÿ

152

98h

Ö

153

99h

Ü

154

9Ah

¢

155

9Bh

£

156

9Ch

¥

157

9Dh

158

9Eh

ƒ

159

9Fh

ááááá

160

A0h

í

161

A1h

ó

162

A2h

ú

163

A3h

ñ

164

A4h

Ñ

165

A5h

ª

166

A6h

º

167

A7h

¿

168

A8h

169

A9h

¬

170

AAh

½

171

ABh

¼

172

ACh

¡

173

ADh

«

174

AEh

»

175

AFh

176

B0h

177

B1h

178

B2h

179

B3h

180

B4h

181

B5h

182

B6h

183

B7h

184

B8h

185

B9h

186

BAh

187

BBh

188

BCh

189

BDh

190

BEh

191

BFh

192

C0h

193

C1h

194

C2h

195

C3h

196

C4h

197

C5h

198

C6h

199

C7h

200

C8h

201

C9h

202

CAh

203

CBh

204

CCh

205

CDh

206

CEh

207

CFh

208

DOh

209

D1h

210

D2h

211

D3h

212

D4h

213

D5h

214

D6h

215

D7h

216

D8h

217

D9h

218

DAh

219

DBh

220

DCh

221

DDh

222

DEh

223

DFh

α

224

E0h

ß

225

E1h

Γ

226

E2h

π

227

E3h

Σ

228

E4h

σ

229

E5h

µ

230

E6h

τ

231

E7h

Φ

232

E8h

Θ

233

E9h

Ω

234

EAh

δ

235

EBh

236

ECh

φ

237

EDh

Î

238

EEh

239

EFh

240

F0h

±

241

F1h

242

F2h

243

F3h

244

F4h

245

F5h

÷

246

F6h

247

F7h

°

248

F8h

249

F9h

·

250

FAh

251

FBh

252

FCh

²

253

FDh

·

254

FEh

255

FFh


Entre os caracteres da tabela ASCII estendidos os mais úteis estão, talvez, os caracteres de desenho de quadro em linhas simples e duplas: os caracteres de B3h até DAh (179 a 218 decimal). Como a visualização deste conjunto é difícil, o desenho abaixo pode auxiliar nesta tarefa:

196 194 205 203

218 ┌ ┐ 191 201 ╔ ╗ 187

179 │ 186 ║

195 ├ ┤ 180 204 ╠ ╣ 185

197 206

192 └ ┘ 217 200 ╚ ╝ 188

193 202

209 210

213 ╒ ╕ 184 214 ╓ ╖ 183

198 ╞ ╡ 181 199 ╟ ╢ 182

216 215

212 ╘ ╛ 190 211 ╙ ╜ 189

207 208

Caracteres de desenho de quadro e seus respectivos códigos ASII.


Artigo completo (View Full Post)

 
BlogBlogs.Com.Br