Você está na página 1de 4

APIB-12

STRINGS (Cadeias de Carateres)


So estruturas que permitem armazenar um conjunto de carateres. Estes
conjuntos de carateres podem ter no mximo 255 e podem conter carateres
alfabticos, numricos e smbolos. As cadeias de carateres podem ser utilizadas
como vetores de caracteres (array of char), por serem conjuntos de dados do
mesmo tipo (char), permitindo efetuar operaes sobre cada um dos seus
caracteres individualmente.
Vamos supor que desejamos declarar uma varivel para armazenar o nome de uma
pessoa. Como um nome constitudo por caracteres, a declarao poderia ser:
Var nome: array [1..100] of char;

Esta declarao informa o computador para reservar 100 espaos em memria do


tipo char , para armazenar o nome da pessoa.
J

100 elementos

Na declarao entre parnteses retos colocado o nmero mximo de elementos


do array. Neste caso, como no sabemos antecipadamente qual vai ser o tamanho
do nome, colocamos um nmero grande.
Exemplo 1: Dado o nome de uma pessoa, determinar o nmero de vogais contidos no nome.

Para determinar o nmero de vogais vamos utilizar um contador. A cada passo


vamos comparando os caracteres um por um e quando encontrar uma vogal vamos
acrescentar 1 ao contador. Para verificar cada caracter dentro do array, vamos
tambm precisar de um contador.
Para evitar inserir o nome carcter a carcter, declaramos a varivel nome, na
forma de string (funciona como um array de caracteres, mas permite ler o nome
de uma s vez).
Program Vogais;
Var nome : string[100];
contador, i : integer;
Begin
contador:= 0;
Readln (nome);
For i:=1 to 100 do
Begin
if (nome[i] = 'a') then
if (nome[i] = 'e') then
if (nome[i] = 'i') then
if (nome[i] = 'o') then
if (nome[i] = 'u') then
End;
Writeln ('O nmero de vogais :
end.
FM2014

contador:=contador
contador:=contador
contador:=contador
contador:=contador
contador:=contador

+
+
+
+
+

1;
1;
1;
1;
1;

', contador);

APIB-12
Exerccio:

Modifica o cdigo anterior de forma a contar cada uma das cinco vogais contidas
num nome.
Na tabela seguinte, mostra-se um conjunto de funes internas disponibilizadas
pelo Pascal para manipulao de strings (algumas funes podero no estar
disponveis em alguns compiladores de Pascal):
Funes Pascal para manipulao de strings
RESULTADO
(TIPO)

FUNO

DESCRIO

Length

Nmero de carateres existentes numa string

Upcase

Transforma um carcter em maiscula

Concat

Faz a concatenao (juno) de duas ou mais strings (str1, str2, ...,


strn)

string

Pos

D a posio ocupada numa string pelo primeiro carcter de uma


sub-string

byte

Copy

Faz a cpia de uma sub-string (substr) de acordo com a posio


(pos) do incio e do nmero de carateres a copiar (num).
Exclui uma parte de uma string (str) passada como parmetro, de
acordo com a posio do incio (pos e nmero de carateres
indicados (num)
Insere uma sub-string (substr) dentro de uma string (str), numa
posio (pos) indicada.
Converte uma string num valor numrico. Se o contedo da string
no puder ser convertido, uma varivel (erro) guarda o valor
correspondente posio em que ocorreu o primeiro erro. Caso no
ocorra erro, guarda o valor zero.

Delete
Insert

Val

Str

Converte um valor numrico (num) numa string (str)

Chr

Devolve o carcter correspondente ao cdigo ASCII do num


indicado

Ord

FM2014

Devolve o cdigo ASCII correspondente ao carcter indicado.

Byte
(entre 0 - 255)
char

string
string
string

integer

string
char
byte
(entre 0 - 255)

APIB-12
Exemplos de utilizao
UPCASE (ch : char) : char;
letra := 'a';
maiusc := upcase (letra);
writeln (maiusc); {ser exibida a letra 'A' (maiscula)}

CONCAT (str1 , str2 , ... , strn : string) : string;


pal1 := 'TURBO';
pal2 := 'PASCAL';
uniao := concat (pal1,' ',pal2);
writeln (uniao); {ser exibido a string 'TURBO PASCAL'}

POS (substr , str : string) : byte;


frase := 'VAMOS ESTUDAR MAIS';
pesq := 'ESTU';
posicao := pos (pesq,frase);
writeln (posicao); {ser exibido o valor 7}

COPY (str:string; pos:byte; quant:byte) : string;


frase := 'VAMOS ESTUDAR MAIS';
pedaco := copy(frase,7,4);
writeln (pedaco); {ser exibido a string 'ESTU'}

DELETE (var str:string; pos:byte; quant:byte);


frase := 'TURBO PASCAL 7.0';
delete (frase,7,7);
writeln (frase); {ser exibido a string 'TURBO 7.0'}

INSERT (substr:string; var str:string; pos:byte);


frase := 'INFORMATICAS';
insert ('APLICACOES',frase,10);
writeln (frase); {ser exibido a string 'APLICACOESINFORMATICAS'}

VAL (str:string; var num:integer|real; var erro:integer);


codigo := '017348';
val (codigo,numero,erro);
writeln (numero); {ser exibido
writeln (erro); {ser exibido o
codigo := 'ABCD1';
val (codigo,numero,erro);
writeln (numero); {ser exibido
writeln (erro); {ser exibido o

FM2014

o valor 17348}
valor 0}

o valor 0}
valor 1}

APIB-12
STR (num [:tam [:dec]]; var str:string);
numero := 12.3;
str (numero:6:2,conv);
writeln (conv); {ser exibido a string ' 12.30'}

CHR (codigo:byte) : char;


codigo := 65;
caracter := CHR(codigo);
writeln (caracter); {ser exibido o caracter 'A'}

ORD (caracter:char) : byte;


caracter := 'A';
codigo := ORD(caracter);
writeln (codigo); {ser exibido 65}

REF: Tabela de cdigos ASCII.

http://www.asciitable.com/

FM2014

Você também pode gostar