Cátedra de COMPUTACIÓN Carreras: Licenciatura en Matemática – Profesorado en Matemática Equipo docente: César Orsetti – María del Carmen Varaldo _________________________________________________________ APUNTES DE CÁTEDRA: STRINGS DEFINICIÓN DE TIPO STRING type nombre = string [14]; linea = string [80]; significa que nombre es una tira de 14 caracteres como máximo linea es una tira de 80 caracteres como máximo FORMA GENERAL T1=string; o T2=string [ long ]; donde 1≤ long ≤ 255 En el primer caso se reserva memoria para una cadena de hasta 255 caracteres EXPRESIONES STRINGS Pueden ser: i) constantes strings, ii) variables strings, iii) funciones, iv) operadores. El signo más puede ser usado para concatenar strings. Si la longitud del resultado es mayor que 255 ocurre un RUN-TIME error. EJEMPLOS: ´TURBO ´ + ´PASCAL´ = ´TURBO PASCAL´ ´123´ + ´.´ + ´456´ = ´123.456´ ´A´ + ´B´ + ´C´ + ´D´ = ´ABCD´ Otra operación que se puede hacer con strings es ordenarlas alfabéticamente. Se emplean para ello las operaciones de relación. Por ejemplo las comparaciones o relaciones siguientes: ´abcd´ = ´abcd´ ´amld´ < ´bbbb´ ´abc´ > ´aba´ ´jkl´ ≠ ´jlm´ son todas verdaderas. SENTENCIA DE ASIGNACIÓN variable := expresión ; HOJA 1 - STRINGS EJEMPLOS: i) ii) var c1, c2 : char; entonces valen var c1,c2 : char; st : string [4]; entonces valen c1 := ´d´; c2 := c1; c1 := ´f´; st[1] := ´3´; st[2] := c1; c2 := st [1]; str[4] := st[3]; iii) var palabra : string [4]; entonces vale palabra := ´abcd´; o bien for i := 1 to 4 do palabra[i] := ´ ´; iv) var pal1, pal2 : string[10]; entonces valen pal1 := ´**********´; pal2 := pal1; PROCEDIMIENTOS PARA STRINGS (suministrados por TURBO PASCAL): DELETE: Borra una substring de una string. DELETE ( S , Index , Count ); Observaciones: S es una variable tipo string; Index y Count son expresiones tipo enteras. Se borran Count caracteres de S comenzando desde la posición Index-ésima. Si Index es mayor que la longitud de S, no se borra ningún carácter. Si Index + Count > long(S) se suprimen sólo los caracteres contenidos en S. Si Index ∉ 1..255 se produce un RUN-TIME error. Ejemplo: Si S tiene el valor ´ABCDEFG´ entonces DELETE(S,2,4) dará a S el valor ´AFG´ DELETE(S,2,10) dará a S el valor ´A´ INSERT: Inserta una substring en una string. INSERT (Source, S, Index); Observaciones: Source es una expresión tipo string. S es una variable tipo string de cualquier longitud. Index es una expresión tipo entera. Insert inserta Source en S a partir de la posición Index-ésima. Si la string resultante tiene más de 255 caracteres, los caracteres excedentes se truncan. Si Index ∉ 1..255, se produce un RUN-TIME error. Ejemplo: Si S tiene el valor ´ABCDEFG´ entonces INSERT(´XX´,S,3) dará a S el valor ´ABXXCDEFG´ HOJA 2 - STRINGS STR: Convierte un valor numérico en su representación como string. STR (X [: Width [: Decimals ] ], S); Observaciones: X es una expresión tipo entera o tipo real. Width y Decimals son expresiones tipo enteras. S es una variable tipo string. Str convierte X a su representación string, de acuerdo a los parámetros de formato Width y Decimals. Ejemplo: Si I toma el valor 1234 entonces STR ( I:5, S) dará a S el valor ´ 1234´ Si X toma el valor 2.5 E4 entonces STR (X:10, S) dará a S el valor ´ 2.5E04´ y STR (X:10:1, S) dará a S el valor ´ 25000.0´ Si no se especifica el campo los números se ajustan a izquierda. VAL: Convierte el valor string en su representación numérica. VAL (S, V, Code); Observaciones: S es una expresión de tipo string. V es una variable de tipo entero o real. Code es una variable de tipo entera. S debe ser una sucesión de caracteres que formen un nùmero completo con signo según las reglas numéricas del Pascal. Val connvierte a S en su representación numérica y guarda el resultado en V. Si la string es de alguna manera inválida, el índice del carácter extraño es guardado en Code; en caso contrario Code toma el valor 0. Ejemplo: Si S=´234´ entonces VAL (S, V, Code) dará a V el valor 234 y a Code. el valor 0. Si S=´12x´ entonces VAL (S, V, Code) dará a Code el valor 3. Si S=´2.5E4´ entonces VAL (S, X, Code) dará a X el valor 25000 y a Code el valor 0. FUNCIONES PARA STRINGS (suministradas por TURBO PASCAL): CONCAT: Concatena una sucesión de strings. CONCAT (S1 [ , S2, .... SN ]) ; Observaciones: Cada parámetro es una expresión tipo string. El resultado es una concatenación de todos los parámetros string. Si long ( resultado ) > 255 entonces se truncan los caracteres excedentes. El operador + se puede usar para obtener el mismo resultado. Ejemplo: Si S1=´ABX´ y S2=´JKL´ entonces CONCAT ( S1, S2) devuelve el valor ´ABXJKL´. HOJA 3 - STRINGS COPY: Devuelve una substring de una string. COPY ( S, Index, Count) ; Observaciones: S es una expresión tipo string. Index y Count son expresiones tipo enteras. Copy devuelve una string que contiene Count caracteres comenzando por el carácter Index-ésimo de S. Si Index > long(S), Copy devuelve una string vacía. Si Index + Count > long (S) entonces sólo se devuelven los caracteres restantes de la string. Si Index ∉ 1.. 255 se produce un RUN-TIME error. Ejemplo: Si S=´ABCDEFG´ entonces COPY (S ,3, 2) devolverá como valor ´CD´ COPY (S, 4, 10) devolverá como valor ´DEFG´ COPY (S, 4, 2) devolverá como valor ´DE´. LENGTH: Devuelve la longitud dinámica de una string. LENGTH ( S) ; Observaciones: Devuelve la longitud de la string S. Ejemplo: Si S = ´123456789´ entonces LENGTH ( S ) devolverá como valor 9. POS: Busca una substring dentro de una string. POS ( Substr , S); Observaciones: Substr y S son expresiones tipo string. Pos busca Substr en S, y devuelve un valor entero que es el índice del primer carácter de Substr en S. Si no se encuentra Substr, Pos devuelve cero. Ejemplo: Si S = ´ABCDEFG´ entonces POS ( ´DE´, S ) devolverá el valor 4, POS (´H´, S) devolverá el valor 0. Bibliografía: 1) “Manual Turbo Pascal 7.0” - Borland 2) “Programación en Turbo Pascal – Versiones 5.5, 6.0 y 7.0” – Luis Joyanes Aguilar HOJA 4 - STRINGS