Manual básico de Turbo Pascal 7

97
Manual básico de Turbo Pascal 7.0 Este manual está hecho con la intención de que aprendas el lenguaje pascal sin complicaciones ni gastar dinero en ello después de aprender este lenguaje podrás aprender cualquier otro con facilidad ó si eres alguien con conocimientos de programación se te facilitara el manejo de el lenguaje te recomiendo que pongas todos los códigos aquí mostrados y que realices los ejercicios recomendados por tu cuenta primera mente y después ver las soluciones del manual si tu programa funciona bien pero es diferente al del manual no te preocupes es normal en la programación cada quien usa su lógica mientras el programa realice lo solicitado esta perfecto así que podrás ser tan creativo(a) como quieras si no logras resolver el problema a la primera no te preocupes en la programación la mayoría de las

Transcript of Manual básico de Turbo Pascal 7

Page 1: Manual básico de Turbo Pascal 7

Manual básico de Turbo Pascal 7.0

Este manual está hecho con la intención de que aprendas el lenguaje pascal sin complicaciones ni gastar dinero en ello después de aprender este lenguaje podrás aprender cualquier otro con facilidad ó si eres alguien con conocimientos de programación se te facilitara el manejo de el lenguaje te recomiendo que pongas todos los códigos aquí mostrados y que realices los ejercicios recomendados por tu cuenta primera mente y después ver las soluciones del manual si tu programa funciona bien pero es diferente al del manual no te preocupes es normal en la programación cada quien usa su lógica mientras el programa realice lo solicitado esta perfecto así que podrás ser tan creativo(a) como quieras si no logras resolver el problema a la primera no te preocupes en la programación la mayoría de las veces no se logran las cosas a la primera así que se paciente y buena suerte si tienes alguna duda o mejora sobre el manual escribe al correo: [email protected].

Page 2: Manual básico de Turbo Pascal 7

Capitulo 1.

1. Reglas básicas del lenguaje.1.1 estructura de programas las estructuras de los

programas. Son muy importantes ya que sin ellas no funcionan en pascal la estructura básica es:program nombre_del_programa;uses librerías;varvariable:tipo;begincódigo_fuente;end.El código fuente siempre debe ir limitado por un begin y un end al inicio y fin respectivamente el end que limita el código fuente deber tener un “.” Más adelante se especificara el por que.

1.2 Comandos básicos del programa.Para compilar un programa ó como común mente se le conoce hacer que corra presiona ctrl+f9.“program” esta instrucción se pone en la parte superior del programa antes que nada para poner el nombre del programa o su función en el nombre o función del programa no pueden ir espacios en blanco por que se recomiendo poner guiones bajos en lugar de ellos (espacios en blanco) ejemplo de uso:Program Perimetro_de_triangulos;“Clrscr” (clear screen ó limpiar pantalla en español) esta instrucción borra lo escrito en la pantalla cuando se ejecuta el programa y llega a esta línea de instrucción ejemplo de uso: clrscr;“write” la instrucción write se usa para escribir en la pantalla algún mensaje o texto en especifico también se usa la variante writeln que da un salto de línea antes de imprimir el texto se ponen un paréntesis y comillas simples para indicar que ese texto no cambiara es algo diferente con variables ejemplos de uso:Básico ó solo texto:

Page 3: Manual básico de Turbo Pascal 7

Writeln(‘hola mundo , 30’);

Con variables:Cant = 20; Writeln(“hola grupo”,cant);“textcolor()” la función textcolor sirve para poner el texto de un color especifico en una sección del programa pueden ponerse los colores por su nombre o su equivalente numérico e pascal ejemplo:Textcolor(pink); ó textcolor(1);Distinción de letras: en turbo pascal es lo mismo las letras en mayúsculas que en minúsculasejemplo PROGRAM=program=PrOgRam.“textbackground()” funciona igual que el textcolor solo que esta función cambia el color del fondo pero no el del texto.

1.3 variables, tipos de variables y su declaración.¿Qué son las variables? Son valores que pueden cambiar durante la ejecución del programa.Tipos de variables: los tipos de variables son el tipo de valor que contendrán las variables a continuación pongo una tabla de las variables y su tipo en pascal estas son las más utilizadas:

Tipo variable. Rango. Descripción.Char Carácter del código ascii Almacena solo 1 carácter.Byte 0 a 255 Almacena 1 numero.Integer -32,768 a 32,767 Solo números enteros.Real 1E-38 a 1E+38 Usa notación científica.Boolean True ó False Valores: V ó F.Shortint -128 a 127 Solo enteros.Word 0 a 65,535 Almacena 1 valor.Longint -2,147,483,648 a 214,748,364 Solo números enteros.String Cadena de 255 caracteres Hasta 255 caracteres.

Declaración de variables las variables de declaran después de las bibliotecas usando la palabra reservada “var ” después de esa palabra reservada se pueden declarar las variables se declaran poniendo el nombre(s) de la(s) variables seguido de dos puntos “:” y el tipo de variables después del tipo de variables se pone un “;” como a cada instrucción ejemplo:Var nombre:string(255);

1.4 Librerías en pascal.Las librerías en pascal se usan para poder utilizar instrucciones o palabras reservadas en especifico por ejemplo: para usar la instrucción clrscr se debe declarar la librería crt las librerías se declaran debajo el título del programa y

Page 4: Manual básico de Turbo Pascal 7

bajo la palabra reservada “uses” como lo indique en el subtema 1.1 cabe indicar que en un programa en pascal se pueden utilizar más de 1 librería a la vez a usaremos algunas de estas librerías a lo largo del manual pero no todas después de terminar el manual serán capaces de aprender y usar las demás librerías por su cuenta.

A continuación pongo una tabla con las librerías que se usan en pascal:

Librería. Funciones que permite.Crt Pantalla y teclado del PASCAL de Turbo que

maneja la unidad.

Dos Interface Turbo Pascal MS-DOS.

Graph Unidad para manipular los gráficos de la pantalla compatible con TP(turbo pascal).

Objects Objetos básicos compatible con TP(turbo pascal).

Math Rutinas adicionales matemáticas ejemplo: sqrt (raíz cuadrada).

Printer Provee de acceso a la impresora.

Strings Rutinas para el manejo de cadenas.

Baseunix Funcionalidad Básica de Linux.

System Funciones para la manipulación de archivos en Pascal

1.5 Funciones aritméticas en pascal.Las funciones aritméticas en pascal ayudan desempeñando una determinada tarea a continuación pondré una tabla que muestre las funciones y sus tareas:

Función. Sintaxis o modo de uso. Tarea a desempeñar.Div 5 div 2=2 Regresa el entero de la /.Mod 5 mod 2=5 Regresa el residuo en entero.abs Abs(-5)=5 Obtiene valor absoluto.trunc Trunc(7.5)=7 Trunca la parte decimalround Round(8.6)=9 Redondea al número mas

cercano.sqrt Sqrt(9)=3 Obtiene raíz cuadrada.sin Sin(30)=0.5 Función trigonométrica seno.cos Cos(30)=0.866025403784438 Función trig. Coseno.tan Tan(30)=0.5 Función trig. Tangente.cot Cot(30)= 1.73205 Función trig. Cotangente.sec Sec(30)= 1.1547 Función trig. Secante.csc Csc(30)=2 Función trig. Cosecante.random Random(10)=numero al azar Toma números al azar.

Nota: en la función random puede usarse la instrucción randomize para que no repita valores.

Page 5: Manual básico de Turbo Pascal 7

1.6 Ejemplos programas con los conocimientos vistos hasta ahora, ejercicios recomendados para probar sus avances y posibles soluciones.

1.6.1 Ejemplos de los programas con los conocimientos vistos hasta ahora.Primer ejemplo: programa que calcule el perímetro de una figura.

program perimetro_de_figuras;uses crt;varlado,num_lados,perimetro : integer; {al poner más de una variable del}begin {mismo tipo puedes poner “,” entre} clrscr; {ellas y poniendo “{}” se ponen como} lado :=20; {comentarios lo que escribas dentros el compilador} num_lados :=4; {no lo tomara en cuenta} perimetro := lado * num_lados; write('el perimetro de la figura es :',perimetro); readln;end.

Segundo ejemplo: programa que imprima hola mundo con asteriscos a los lados.program hola_mundo;usescrt;begin clrscr; writeln('*********'); writeln('*hola mundo*'); write('*********'); readln;end.

1.6.2 Ejercicios recomendados para probar su avance de conocimientos.

Page 6: Manual básico de Turbo Pascal 7

Ejercicio 1: crear un programa que imprima en pantalla un triangulo de asteriscos.

Ejercicio 2: crear un programa que imprima tu nombre(s), apellido paterno, apellido materno y escuela separados por un renglón.

1.6.3 Posibles soluciones.Ejercicio 1:program triangulo_de_asteriscos;uses

crt;begin

clrscr;writeln(‘*’);writeln(‘**’);writeln(‘***’);readln;{se pone esta ultimalinea para que puedas ver el programa

cuando oprimas enter se quitara}end.

Ejercicio 2: program Ejercicio_2;uses crt;begin

clrscr;writeln('tu(s) nombres');writeln('apellido paterno');writeln('apellido materno');writeln('nombre de tu escuela');readkey;

end.

1.7 Uso de la instrucción read, la variante readln y la variante readkey.La instrucción read y su variante readln se usan para entrada de datos pueden ser desde el teclado o de programa a archivo por ahora veremos la primera función (entrada de datos desde el teclado) más adelante usaremos la segunda

Page 7: Manual básico de Turbo Pascal 7

(de programa a archivos) ya que es más compleja y sería muy difícil entenderla por ahora para el uso de la instrucción read y su variante readln se necesitan variables que almacenen los datos a manejar en el programa la variante readkey se usa para el mismo propósito que las instrucciones readln y read solo que con readkey toma solo 1 carácter a la vez a continuación pongo un ejemplo: program para_calcular_edad;

uses crt;var a :integer;begin clrscr; write('cuantos años tienes?-->'); readln(a); write ('tienes',a,'años'); readkey;end.

1.7.1 Ejercicios recomendados y posibles soluciones.1.7.1.1 Ejercicios recomendados.

Ejercicio 1: hacer un programa que eleve al cubo un numero.Ejercicio 2: hacer un programa que sume, reste, multiplique, y divida 2 números dados por el usuario.Nota: cabe mencionar que las funciones matematicas básica en turbo pascal se hacen con sus respectivos simbolos(+,-,*,/) ejemplo:5*5=10, 5/5=1, 5+5=10 y 5-5=0

1.7.1.2 Posibles soluciones.Ejercicio 1:program programa_que_eleva_al_cubo_un_numero;{este es el nombre del programa}uses crt;var {estas son las variables que se usaran en el programa y su tipo de variable} a,b : integer;begin {inicio del programa} clrscr;{limpia la pantalla al correr el programa}

Page 8: Manual básico de Turbo Pascal 7

write('escribe un numero');{escribe ese texto en la pantalla de programa} readln(a);{lee el numero que da el usuario (la variante a)} b:=a*a*a;{es la formula para tener el valor de b} writeln('el resultado es',a,'es',a*a*a);{escribe ese texto y el resultado de b} readln;end.{fin del programa}

Ejercicio 2: program dado_2_numeros_sumarlos_restarlos_multiplicarlos_dividirlos;uses crt;var{estas son las variables que se usaran durante el programa y su tipo de variable} a,b,c,d,e,f : real;begin{inicio del programa} clrscr;{limpia la pamtalla} writeln('escribe un numero');{escribe es texto en el programa} readln(a);{lee el primer numero entregado por el usuario(variante a)} writeln('escribe otro numero');{escribe ese texto en el programa} readln(b);{lee la segunda variante entragada por el usuario} c:=a+b;{es la formula para sacar el resultado de c} writeln('el resultado de la suma es',c);{escribe ese texto en la pantalla y el resultado de c} d:=a-b;{es la formula para sacar el valor de d} writeln('el resultado de la resta es',d);{escribe ese texto en la pantalla y el resultado de d} e:=a*b;{es la formula de e} writeln('el resultado de la multiplicasion es',e);{escribe ese texto en la pantalla y el resultado de e} f:=a/b;{es la formula de f} writeln('el resultado de la division es',f);{escribe ese texto en la pantalla y el resultado de f} readln;end.{fin del programa}

2. La instrucción gettime.2.1 La instrucción gettime se usa para obtener la fecha y hora del sistema por lo

tanto la hora y fecha que se usen en el programa serán las mismas que tenga su equipo en ese momento para usarla se deben usar el tipo de variables

Page 9: Manual básico de Turbo Pascal 7

“Word” además de la librería “dos” se deben usar 8 variables del tipo Word las cuales sean de preferencia h, m, s, cs, a, mes, d, ds que representan hora, minuto, segundo, centésima de segundo, año, mes, día y día de la semana respectivamente ejemplo:program programa_que_obtiene_la_fecha_hora_del_sistema;uses dos, crt;var h,m,s,cs,a,mes,d,ds :word;begin clrscr; gettime(h,m,s,cs); getdate(a,mes,d,ds); writeln('la hora actual es: ',h,':',m,':',s,':',cs); writeln('la fecha actual es: ',a,' ',mes,' ',d,' ',ds); readln;end.

3. Sentencia decisiva if - then.Esta sentencia se usa para tomar decisiones en un programa por ejemplo si quisiéramos un programa para una discoteca que identificara si alguien puede pasar o no a la discoteca tendría que cumplir una condición para hacerlo si no se tomara otra u otras acciones para usar la sentencia decisiva se tiene la siguiente estructura: If (condicion) thenBeginCódigo;End;Cabe notar que en el end de este caso se usa con “;” porque eso indica que es el fin de la sentencia decisiva más no el del programa aun que también esta la sentencia “else” esta sentencia se utiliza cuando no se cumple la condición del if y queremos que se ejecute otra cosa cuando así sea usando el mismo ejemplo de la discoteca si el cliente fuera mayor de edad el programa lo dejaría entrar pero si no lo es no lo dejaría entrar cabe decir que si es solo una línea de instrucción la que se pondrá en el if pueden omitirse el begin y el end también los simbolos comparativos que se pueden usar en esta función son <(menor que),>(mayor que),<>(diferente) también se pueden utilizar las palabras reservadas “and” y “or” en las condiciones del if para usar más de 1 condición en 1 solo if se deben encerrar cada condición en un paréntesis y utilizar la palabra “and” u “or ” según se requiera si se requiere

Page 10: Manual básico de Turbo Pascal 7

mas de una línea de código en el if se debe poner el begin y end pero si se usara el end en ese caso no se le pondría ni “;” ni “.” para que quede más claro el tema del if pondré un ejemplo a continuación:program decir_si_una_persona_es_menor_o_mayor_de_edad;uses crt;var edad : integer;begin clrscr; writeln('escribir la edad'); readln(edad); if edad>17 then writeln('es mayor de edad pasas') else writeln('es menor de edad'); readln;end.

3.1 if anidados.Se le llama if anidados cuando en un código se encuentran if dentro de otros, aun que también se pueden poner ifs dentro de un else ejemplo:program programa_que_mide_rangos;{NOMBRE DEL PROGRAMA}uses crt;var {ESTA ES LA VARIABLE Y SU TIPO} a : integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPAR PANTALLA} writeln('escribe un numero del uno al 100');{IMPRIMIR PANTALLA} readln(a); {LEER LA VARIABLE A} if a<20 then {SI A ES MENOR QUE 20 ENTONSES} begin writeln('es menor DE 20');{IMPRIMIR EN PANTALLA} end else {SI NO SE CUMPLE LA PRIMERA OPCION} if a>80 then {SI A ES MAYOR A 80 ENTONSES} begin writeln('es mayor que 80');{IMPRIMIR EN PANTALLA}

Page 11: Manual básico de Turbo Pascal 7

end; readln;{PRESIONARENTER PARA SALIR}end.{FIN DEL PROGRAMA}

3.2 Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que identifique si una persona es mayor o menor de edad y decida si puede entrar a un antro de adultos.Ejercicio 2: crear un programa que identifique entre 2 números cual es mayor y cual es menor.Ejercicio 3: crear un programa que dados 2 números siempre muestre el resultado de dividir el mayor entre el menor.Ejercicio 4: crear un programa que de 3 opciones al usuario (sumar, restar y multiplicar)

Posibles soluciones:Ejercicio 1.program decir_si_una_persona_es_menor_o_mayor_de_edad;uses crt;var edad : integer;begin clrscr; writeln('escribir la edad'); readln(edad); if edad>17 then writeln('es mayor de edad pasas') else writeln('es menor de edad no pasas'); readln;end.

Ejercicio 2.program numeros_mayor_o_menor;{ESTE ES EL NOMBRE DEL PROGRAMA}uses crt;var {ESTAS SON LAS VARIABLES Y SU TIPO} a,b :integer;begin {INICIO DEL PROGRAMA}

Page 12: Manual básico de Turbo Pascal 7

clrscr; {LIMPIAR PANTALLA} writeln('escribe un numero');{IMPRIMIR EN PANTALLA} readln(a); {LEER LA VARIABLE A} writeln('escribe otro numero');{IMPRIMIR EN PANTALLA} readln(b); {LEER LA VARIEBLE B} if a>b then {LA PRIMERA OPCION DEL PROGRAMA (SI A ES MAYOR QUE B ENTONSES)} writeln('este numero es mayor',a){IMPRIR EN PANTALLA} else {SI NO SE CUMPLE LA PRIMERA OPCION ENTONSES} writeln('este numero es mayor',b); {IMPRIME EN LA PANTALLA} readln; {PRESIONE CUAL QUIER TECLA PARA SALIR}end. {FIN DEL PROGRAMA}

Ejercicio 3.program dados_dos_numeros_dividir_siempre_el_mayor_entre_el_menor;uses crt;var a,b,c,d : real;begin clrscr; writeln('escribe el primer numero'); readln(a); writeln('escribe el segundo numero'); readln(b); c:=a/b; d:=b/a; if a>b then writeln('el resultado es',c) else writeln('el resltado es',d); readln;end.

Ejercicio 4:program programa_de_confusion;{NOMBRE DEL PROGRAMA}uses crt;

Page 13: Manual básico de Turbo Pascal 7

var {ESTAS SON LAS VARIABLES Y SU TIPO}a,b,c,d,e,f : integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR LA PANTALLA} writeln('que operacion quieres 1)multiplicar2)sumar 3)restar');{IMPRIMIR EN PANTALLA} readln(a); {LEER LA VARIABLE A} writeln('escribe el primer numero');{IMPRIMIR EN PANTALLA} readln(b); {LEER LA VARIABLE B} writeln('escribe el segundo numero');{IMPRIMIR EN PANTALLA} readln(c); {LEER LA VARIABLE C} begin if a=1 then{SI A ES IGUAL A 1 ENTONSES} d:=c*b;{FORMULA PARA SACAR EL VALOR DE D} writeln('el resultado de la multiplicasion es',d);{IMPRIMIR EN PANTALLA} end; begin if a=2 then{SI A ES IGUAL A 2 ENTONSES} e:=c+b;{FORMULA PARA SACAR EL VALOR DE E} writeln('el resultado de la suma es',e);{IMPRIMIR EN PANTALLA} end; begin if a=3 then{SI A ES IGUAL A 3 ENTONSES} f:=b-c;{FORMULA PARA SACAR EL VALOR DE F} writeln('el resultado de la resta es',f);{IMPRIMIR EN PANTALLA} end; readln;{PRESIONAR ENTER PARA SALIR}end.{FIN DEL PROGRAMA}

4. Sentencia decisiva case – of.Esta sentencia se utiliza cuando hay varias opciones ya que sería muy tedioso y confuso usar muchos if la sentencia case pose la siguiente estructura:Case (condición) ofOpciones: acciones;End;Para que quede más claro el tema de la sentencia decisiva case dejo el siguiente ejemplo:program programa_que_dise_el_dia_de_la_semana;{NOMBRE DEL PROGRAMA}

Page 14: Manual básico de Turbo Pascal 7

uses {LA BIBLIOTECA} crt; var {LAS VARIABLES Y SU TIPO} dia_de_la_semana : char;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR PANTALLA} writeln('escribe un numero del 1 al 7');{IMPRIMIR EN PANTALLA} readln(dia_de_la_semana); {LEER EL NUMERO ENTREGADO POR EL USUARIO} case dia_de_la_semana of {SENTENCIA CASE SE USA PARA QUE IMPRIMA EL RESULTADO SEGUN CORRESPONDA} '1' : writeln('hoy es lunes'); {IMPRIME EN LA PANTALLA EL RESULTADO QUE CORRESPONDE ALA TECLA QUE PRESIONO EL USUARIO} '2' : writeln('hoy es martes'); '3' : writeln('hoy es miercoles'); '4' : writeln('hoy es jueves'); '5' : writeln('hoy es viernes'); '6' : writeln('hoy es sabado'); '7' : writeln('hoy es domingo') end;{FIN DE LA SENTENCIA CASE} readln;{OPRIMIR CUALQUIER TECLA PARA SALIR}end.{FIN DEL PROGRAMA}

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que cuando el usuario de un número entre 1 y 12 muestre el mes correspondiente a ese número.Ejercicio 2: crear un programa que dados 2 números por el usuario le permita escoger si serán: sumados, restados, multiplicados ó divididos.

Posibles soluciones.Ejercicio 1:program programa_que_dise_el_mes_del_ano;{NOMBRE DEL PROGRAMA}

uses {LA BIBLIOTECA} crt; var {LAS VARIABLES Y SU TIPO} a : integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR PANTALLA} writeln('escribe un numero del 1 al 12'); {IMPRIMIR EN PANTALLA} readln(a); {LEER LA VARIABLE ENTREGADA POR EL USUARIO}

Page 15: Manual básico de Turbo Pascal 7

case a of {INICIO DE LA SENTENCIA CASE QUE IMPRIME EL RESULTADO QUE CORRESPONDA} 1 : writeln('enero'); {ESTOS SON LOS RESULTADOS QUE SE LE ENTREGAN AL USUARIO SEGUN EL VALOR DE LA VARIABLE 2 : writeln('febrero'); QUE EL ENTREGO} 3 : writeln('marzo'); 4 : writeln('abril'); 5 : writeln('mayo'); 6 : writeln('junio'); 7 : writeln('julio'); 8 : writeln('agosto'); 9 : writeln('septiembre'); 10 : writeln('octubre'); 11 : writeln('noviembre'); 12 : writeln('diciembre'); end; {FIN DE LA SENTENCIA CASE} readln;{OPRIMIR CUALQUIER TECLA PARA SALIR}end.{FIN DEL PROGRAMA}

Ejercicio 2:program programa_que_suma_resta_multiplica_y_divida;{NOMBRE DEL PROGRAMA}uses {LA BIBLIOTECA} crt; var {LA VARIABLES Y SU TIPO} a,b,c,d,e,f:integer; g :real; opc:integer;begin {INICIO DEL PROGRAMA} clrscr; writeln('elige una opcion 1)suma 2)resta 3)multiplica 4)divida');{IMPRIMIR EN PANTALLA} readln(opc); {LEER LA VARIABLE ENTREGADA POR EL USUARIO} writeln('escribe el primer numero'); {IMPRIMIR EN PANTALLA} readln(a); {LEER LA VARIABLE ENTREGADA POR EL USUARIO} writeln('escribre el segundo numero'); {IMPRIMIR EN PANTALLA} readln(b); {LEER LA VARIABLE ENTREGADA POR EL USUARIO} d:=a+b;{LA FORMULA PARA SACAR EL VALOR DE D}

Page 16: Manual básico de Turbo Pascal 7

e:=a-b;{LA FORMULA PARA SACAR EL VALOR DE E} f:=a*b;{LA FORMULA PARA SACAR EL VALOR DE F} g:=a/b;{LA FORMULA PARA SACAR EL VALOR DE G} case opc of {INICIO DE LA SENTENCIA CASE} 1: writeln('el resultado es ',d); {IMPRIMIR EN PANTALLA EL RESULTADO QUE CORRESPONDA ALA VARIABLE ENTREGADA POR EL USUARIO} 2: writeln('el resultado es ',e); 3: writeln('el resultado es ',f); 4: writeln('el resultado es ',g) end; {FIN DE LA SENTECIA CASE} readln; {OPRIMIR CUALQUIER TECLA PARA SALIR}end. {FIN DEL PROGRAMA}Nota: como ya habras notado no es lo mismo 1 que ‘1’ ya que el compilador toma a 1 como el numero y a ‘1’ como parte de un texto cuando pones las comillas indicas que es una cadena o carácter.

5. Sentencia repetitiva while – do.Una sentencia repetitiva también conocida como bucle ó ciclos son sentencias que sirven para repetir cierta cantidad de veces una o más acciones en específico esta es la primera de 3 sentencias repetitivas que veremos y su estructura es la sig.:While (condición) doBeginCódigo;End;Este ciclo continuara ejecutándose mientras la condición que tiene sea verdadera cuando no lo sea dejara de ejecutarse y el programa pasara a la siguiente sección del código. Ejemplo:program programa_que_muestra_en_la_pantalla_la_numeracion_del_1_al_20;{NOMBRE DEL PROGRAMA}uses {LA BIBLIOTECA} crt;var {LAS VARIABLES Y SU TIPO} a: integer;b: integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR PANTALLA} writeln('este programa muestra los numeros del 1 al 20'); {IMPRIMIR EN PANTALLA} while b<20 do {INICIO DEL CICLO DE REPETICION Y SI CONDICION}

Page 17: Manual básico de Turbo Pascal 7

begin b:=b+1; {FORMULA PARA SACAR EL VALOR DE B} writeln('el resultado es',b) {IMPRIMIR EN PANTALLA} end; {FIN DEL CICLO DE REPETICION} readln; {PRESIONAR ENTER PARA SALIR}end. {FIN DEL PROGRAMA}

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que muestra la numeración del 20 al 1.Ejercicio 2: crear un programa que dados n números muestra su suma.Ejercicio 3: crear un programa que saque el factorial de un numero dado por el usuario el factorial es la suma de la multiplicación de un numero por sus predecesores y se representa con un signo de exclamación ejemplo: 5!= 5*4*3*2*1=120.Nota: cuando se te trabe el programa en una parte del ciclo o se repita muchas veces y no puedas controlarlo presiona ctrl+pausa.

Posibles soluciones.Ejercicio 1:program DEL_20_AL_1; {NOMBRE DEL PROGRAMA}uses {BIBLIOTECA} crt; var {LAS VARIABLES Y SU TIPO} a : integer; b : integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR PANTALLA} writeln('numeracion del 20 al 1 ');{IMPRIMIR EN PANTALLA} b:=21; {EL VALOR DE B} while b>1 do {INICIO DEL CICLO DE REPETICION Y SU CONDICION} begin b:=b-1; {FORMULA PARA OBTENER EL VALOR DE B DURANTE EL CICLO} writeln('resultado' ,b); {IMPRIMIR EN PANTALLA} end; {FIN DEL CICLO DE REPETICION} readln; {PRESIONAR CUALQUIER TECLA PARA SALIR} end. {FIN DEL PROGRAMA}

Ejercicio 2:program programa_que_suma_hasta_n_numeros; {NOMBRE DEL PROGRAMA}uses {LA BIBLIOTECA}

Page 18: Manual básico de Turbo Pascal 7

crt;var {LAS VARIABLES Y SU TIPO} n,a,b,c : integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR PANTALLA} writeln('cuantos numeros deseas sumar?'); {IMPRIMIR EN PANTALLA} readln(n); {LEER LA VARIABLE N} a:=0; {EL VAOR DE A} b:=0; {EL VALOR DE B} writeln('teclea los numeros que quieres sumar'); {IMPRIMIR EN PANTALLA} while a<n do {INICIO DEL CICLO DE REPETICION Y SU CONDICION} begin read(c); {LEER LA VARIABLE C} b:=b+c; {FORMULA PARA OBTENER EL VALOR DE B DURANTE EL CICLO} a:=a+1; {FORMULA PARA OBTENER EL VALOR DE A DURANTE EL CICLO} readln end; {FIN DEL CICLO DE REPECION} writeln('el resultado de la suma es ',b); {IMPRIMIR EN PANTALLA} readln; {PRESIONAR CUALQUIER TECLA PARA SALIR}end. {FIN DEL PROGRAMA}

Ejercicio 3:program programa_que_da_el_factorial_de_un_numero; {NOMBRE DEL PROGRAMA}uses {LA BIBLIOTECA} crt;var {LAS VARIABLES Y SU TIPO} a,b,c,d:integer;begin {INICIO DEL PROGRAMA} clrscr; {LIMPIAR PANTALLA} writeln('este programa saca el factorial de un numero'); {IMPRIMIR EN PANTALLA} writeln('escribe el numero del que deseas obtener el factorial');{IMPRIMIR EN PANTALLA} readln(a); {LEER LA VARIABLE A} b:=1; {VALOR DE B} while a> 1 do {INICIO DEL CICLO REPETITIVO Y SU CONDICION} begin b:=b*a;{FORMULA PARA OBTENER EL VALOR DE B DURANTE EN CICLO}

Page 19: Manual básico de Turbo Pascal 7

a:=a-1; {FORMULA PARA OBTENER EL VALOR DE A DURANTE EL CICLO} writeln('el resultado es ',b);{IMPRIMIR EN PANTALLA} end;{FIN DEL CICLO REPETITIVO} readln; {PRESIONAR ENTER PARA SALIR}end. {FIN DEL PROGRAMA}

6. Sentencia repetitiva repeat.La sentencia repetitiva o bucle repeat es muy similar al bucle while solo tienen la diferencia en que la condición esta al final del ciclo y el ciclo repear no usa ni begin ni end por que su estructura no lo necesita ya que es esta:RepeatCódigoUntil (condición);Para que quede más claro este tema pondré un ejemplo:program programa_que_muestra_la_numerasion_del_1_al_20;uses crt;var a :integer;begin clrscr; writeln('este programa muestr la numeracion del 1 al 20'); a:=0; repeat a:=a+1; writeln('el rersultado es', a); until a=20; readln;end.

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que haga la suma de n números dados por el usuario.Ejercicio 2: crear un programa que muestra la tabla de multiplicar que el usuario quiera.Ejercicio 3: crear un programa que muestre la numeración desde el 1 hasta n.

Posibles soluciones.Ejercicio 1:program la_suma_de_n_numeros;

Page 20: Manual básico de Turbo Pascal 7

uses crt;vara,b,n,c:integer;begin clrscr; writeln('cuantos numeros deseas sumar?'); readln(n); a:=0; b:=0; writeln('teclea los numeros que quieres sumar'); repeat read(c); b:=b+c; a:=a+1; until a=n; writeln('el resultado de la suma es ',b); readln; readln;end.

Ejercicio 2:program tablas;uses crt;var a,b,c : integer;begin clrscr; writeln('escribe que tabla de multiplicar quieres'); readln(c); writeln(''); repeat writeln(a); b:=b+1; a:=c*b; until b=11;

Page 21: Manual básico de Turbo Pascal 7

readln;end.

Ejercicio 3:program programa_Que_muestra_la_numersion_de_1_hasta_n_numeros;uses crt;var n: integer; a : integer;begin clrscr; writeln('hasta que numero quieres llegar '); readln(n); repeat a:=a+1; writeln(a); until a=n; readln;end.

Page 22: Manual básico de Turbo Pascal 7

7. Sentencia repetitiva for – to – do.La sentencia repetitiva for es la única que es automática ya que se especifica exactamente cuántas veces se repetirá el ciclo auntomatica mente ira aumentando el contador en 1 y su estructura es esta:For (variable:=valor inicial)to (valor final)doBeginCódigo;End;Ejemplo de uso del ciclo for:program programa_que_muestra_la_numeracion_del_1al_20;uses crt;vara,b,c:integer;beginfor a:=1 to 20 dobegin writeln('resultado',a) end; readln;end.Nota: es los ciclos se puede usar la función delay(parámetro); que hace que se realicen las instrucciones dentro del ciclo más lento el parámetro son milésimas de segundo de retraso para el ciclo.

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que muestre la suma de 1 hasta n.Ejercicio 2: crear un programa que haga la comparación de n números y muestre cual es el valor mayor.

Posibles soluciones.program programa_que_muestra_la_suma_de_n_numeros_dados_por_el_ususario;uses crt;var a,b,c,n,e:integer;begin clrscr;

Page 23: Manual básico de Turbo Pascal 7

writeln('cuantos numeros deseas sumar?'); readln(n); writeln('escribe tus numeros'); a:=0; b:=0; e:=0; for a:=0 to n do readln(c); b:=b+c; a:=a+1; writeln('el resultado de la suma es ',b); readln;end.

Ejercicio 2:program programa_que_calcula_cual_valor_es_menor;uses crt;var mayor,menor,contador,num,valor : integer;begin clrscr; writeln('cuantos numeros quieres comparar'); readln(num); contador:=1; mayor:=0; menor:=0; for contador:=num to num do clrscr; writeln('introduce el ',contador,' ,numero,:'); readln(valor); if valor>mayor then mayor := valor else menor:=valor; contador:=contador+1; writeln('el mayor es',mayor,'y el menor es', menor); readln;

Page 24: Manual básico de Turbo Pascal 7

end.

Ejemplo extra este es un ejemplo de inter faz grafica en pascal:program pruebas; uses crt; var x,y:integer; a,b,c:real; z:char; begin textmode(co80); repeat textcolor(0);textbackground(green);clrscr; for x:=27 to 56 do begin for y:=2 to 6 do begin gotoxy(x,y);write(CHR(219)); end; end; textcolor(4); for x:=25 to 55 do begin for y:=1 to 5 do begin gotoxy(x,y);write(CHR(219)); end; end; textcolor(2);textbackground(4); gotoxy(31,2);write('Universidad de Colima'); gotoxy(28,3);write('Bachillerato T‚cnico No. 16'); gotoxy(27,4);write('Tercer Semestre Programaci¢n');textcolor(1); for x:=1 to 80 do begin gotoxy(x,25);write(CHR(219)); end; for x:=30 to 50 do begin

Page 25: Manual básico de Turbo Pascal 7

for y:=10 to 19 do begin gotoxy(x,y);write(CHR(219)); end; end; textcolor(14);textbackground(1); gotoxy(39,12);write('RAIZ'); gotoxy(37,15);write('CUADRADO'); gotoxy(35,18);write('Opci¢n..[ ]'); repeat gotoxy(44,18);z:=upcase(readkey); until ((z='R') or (z='C') or (z='S') or (z=CHR(27))); IF z='R' then begin gotoxy(7,12);write('RAIZ'); gotoxy(7,15);write('Ingrese n£mero '); read(a); b:=SQRT(a); gotoxy(7,17);write('El resultado es ',b:6:3); readkey; end; IF Z='C' THEN BEGIN gotoxy(7,12);write('CUADRADO'); gotoxy(7,15);write('Ingrese n£mero '); read(a); b:=SQR(a); gotoxy(7,17);write('El resultado es ',b:6:3); readkey; end; for x:=1 to 15 do begin gotoxy(x,y);write(CHR(219)); end; textcolor(14);textbackground(1); gotoxy(40,17);write('ozmar humberto ugarte saucedo'); gotoxy(42,19);write('ya esta'); gotoxy(35,18);write('Opci¢n..[ ]');

Page 26: Manual básico de Turbo Pascal 7

until ((z='S') or (z=CHR(27))); end.

8. Procedimientos.Los procedimientos ayudan para dividir un gran problema en pequeños sub-problemas usando la palabra procedure puedes crear un código que contenga 1 o más procedimientos separados del código fuente y usar lo que se llaman variables locales(que funcionan solo dentro del procedimiento donde se usan) ó variables universales(funcionan en el código fuente y en el procedimiento que sea) a continuación les dejo un ejemplo de uso de procedimientos:program calcular_las_4_operaciones_basicas;{nombre del programa}uses crt; {la biblioteca} var{declaracion de variables} num1,num2,opc:integer; res:real; procedure suma;{sentencia procedure} begin{inicio de la sentencia procedure} writeln('escribe tu primer numero');{imprimir en pantalla} readln(num1);{leer la variable num1} writeln('escribe tu segundo numero');{imprimir en pantalla} readln(num2);{leer la variable num2} writeln('el resultado de la suma es',num1+num2);{imprimir en pantalla} end;{fin de la sentencia procedure} procedure resta;{sentencia procedure} begin{inicio de la sentencia procedure} writeln('escribe tu primer numero');{imprimir en pantalla} readln(num1);{leer num1} writeln('escribe tu segundo numero');{imprimir en pantalla} readln(num2);{leer num2} res:=num1-num2;{valor de res} writeln('el resultado de la resta es',res);{imprimir en pantalla} end;{fin de le sentencia procedure} procedure multiplicasion;{sentencia procedure} begin{inicio de la sentencia procedure} writeln('escribe tu primer numero');{imprimir en pantalla} readln(num1);{leer num1} writeln('escribe tu segundo numero');{imprimir en pantalla} readln(num2);{leer num2}

Page 27: Manual básico de Turbo Pascal 7

res:=num1*num2;{leer la variable res} writeln('el resultado de la multiplicasion es',res);{imprimir en pantalla} end;{fin de la sentencia procedure} procedure division;{inicio de la sentencia procedure} begin{inicio de la sentencia procedure} writeln('escribe tu primer numero');{imprimir en pantalla} readln(num1);{leer la variable num1} writeln('escribe tu segundo numero');{imprimir en pantalla} readln(num2);{leer num2} res:=num1/num2;{valor de res} writeln('el resultado de la divisuion es',res);{imprimir en pantalla} end;{fin de la sentencia procedure} begin{inicio del programa} clrscr;{limpiar pantalla} writeln('que quieres hacer 1)suma 2)resta 3)multioplicasion 4)division');{imprimir en pantalla} readln(opc);{leer opc} if opc=1 then{inicio de la sentencia if} begin{inicio de la sentecia if} suma;{procedure suma} end;{fin del if} if opc=2 then{condidcion del if} begin{inicio del if} resta;{procedure resta} end;{fin del if} if opc=3 then{condicion del if} begin{inicio del if} multiplicasion{procedure multiplicasion} end;{fin del if} if opc=4 then{condicion del if} begin{inicio de la sentencia if} division;{procedure division} end;{fin del if} readln;{pulsar enter para salir} end.{fin del programa}

Page 28: Manual básico de Turbo Pascal 7

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que cambie el color de fondo a la elección del usuario dándole a escoger 3 colores distintos.

Posibles soluciones.program cambio;{nombre del programa} uses{la biblioteca} crt; var{las variables y su tipo} color,x,y:integer; z:char; procedure color1;{sentencia procedure} begin{inicio del procedure} textbackground(green);clrscr;{cambiar color del fondo y limpiar pantalla} end;{fibn del procedure} procedure color2;{sentencia procedure} begin{inicio dela sentencia procedure} textbackground(red);clrscr;{cambiar el color de fonfo} end;{fin dela sentencia procedure} procedure color3;{sentencia procedure} begin{inicio del procedure} textbackground(blue);clrscr;{cambiar el color de fondo} end;{fin de la sentencia procedure}begin{inicio del programa} clrscr;{limpiar pantalla} writeln('que color deseas 1)verde 2)rojo 3)azul');{imprimir en pantalla} readln(color);{leer la variable color} if color=1 then{sentencia if} begin{inicio del if} color1;{procedure color 1} end;{fin del if} if color=2 then{sentencia if} begin{inicio de la sentencia if} color2;{procedure color 2} end;{fin del if} if color=3 then{sentencia if} begin{inicio del sentencia if} color3;{procedure 3} end;{fin del if}

Page 29: Manual básico de Turbo Pascal 7

readln;{presionar enter para salir} end.{fin del programa}

9. Funciones.Las funciones son muy similares a los procedimientos salvo que en funciones se usa la recursividad como veremos más adelante y en funciones se pueden enviar y recibir para metros ejemplo de uso de funciones:program factorial_de_un_numero; {nombre del programa}uses {la biblioeca} crt;var {declaracion de variables} i,num,fac:integer;{las variables y su tipo} function factorial(fac:integer):integer; {funcion} begin {inicio de funcion} clrscr; {limpiar pantalla} writeln('dame un numero'); {imprimir en pantalla} readln(num); {leer la variable num} fac:=1; {valor de fac} repeat {inicio del cilo repeat} i:=i+1; {valor de i} fac:=fac*i; {formula para obtener el valor de fac} until i=num; {fin de el ciclo repeat} writeln(fac); {imprimir en pantalla} end; {fin de funcion} begin {inicio del programa} writeln(factorial(num)); {imprimir en pantalla} readln;{preionar enter para salir} end. {fin del programa}

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que dados los catetos de un triangulo rectángulo muestre la medida de la hipotenusa usando el teorema de Pitágoras c^2=a^2+b^2.Ejercicio 2: crear un programa que muestre la suma de 1 hasta n números.

Page 30: Manual básico de Turbo Pascal 7

Posibles soluciones.Ejercicio 1:program hipotenusa_de_un_triangulo;{nombre del programa}uses {la biblioteca} crt;var {declaracion de variables} d,c,b,a,c1,c2,h:real; {las variables y su tipo} function hipotenusa(d:real):real;{function} begin{inicio de function} clrscr;{limpiar pantalla} writeln('dame el cateto opuesto de tu triangulo');{imprimir en pantalla} readln(c1);{leer c1} writeln('dame el cateto adiasente de tu triangulo');{imprimir en pantalla} readln(c2);{leer c2} a:=sqr(c1);{valor de a} b:=sqr(c2);{valor de b} c:=a+b; {valor de c} d:=sqrt(c);{valor de d} writeln(d);{imprimir en pantalla} end;{fin de function} begin{inicio del programa} writeln(hipotenusa (d));{imprimir en pantalla} readln;{presionar enter para salir} end.{fin del programa}

Ejercicio 2:program suma_de_1_hasta_n_numeros;{nombre del programa}uses {la biblioteca} crt; var {declaracion de variables} num,c,a,b:integer;{las variables y su tipo} function suma (a:integer):integer;{function} begin {inicio de function} clrscr;{limpiar pantalla} writeln('hasta que numero quiere llegar?');{imprimir pantalla} readln(num);{leer num} repeat{incio de el ciclo repeat} a:=b+1;{valor de a}

Page 31: Manual básico de Turbo Pascal 7

b:=a;{valor de b} c:=a+c;{valor de c} until a=num;{fin del cilo repeat} writeln(c);{imprimir c} end;{fin de function} begin{inicio del programa} writeln(suma(a));{imprimir en pantalla} readln;{resionar enter para salir} end.{fin del programa}

10. Recursividad.La recursividad en una herramienta muy útil en la programación que consiste en que entre 1 o más funciones se llamen entre sí simultáneamente para realizar un tarea específica la condición en la recursividad es que las funciones solo se llamen mientras sea necesario ya que podrían ciclarse un problema muy común en la programación que consiste en que ya sea en ciclos o en la recursividad se repitan infinitas veces ó más de las necesarias la acción esperada dejare un ejemplo para quede más claro el tema:

PROCEDURE Infinito; Begin Writeln('a'); Infinito End; BEGIN Infinito; Writeln('FIN del programa')END.El programa no terminara hasta que llene la memoria por que no tiene ninguna condición de detenerse.PROCEDURE Finito(c:integer); Begin Writeln(c); c=c+1; if c<=9 then Finito(c) End; BEGIN Finito(1); Writeln('FIN del programa');END.

Page 32: Manual básico de Turbo Pascal 7

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que calcule el factorial de un numero usando recursividad.Posibles soluciones. program PruebaDeFactorial;

var

numero: integer;

function factorial( num : integer) : integer;

begin

if num = 1 thenfactorial := 1 (* Aseguramos que tenga salida siempre *)

else

factorial := num * factorial( num-1 ); (* Caso general *)

end;

begin

writeln( 'Introduce un número entero (no muy grande) ;-)' );

readln(numero);

writeln( 'Su factorial es ', factorial(numero) );end.

11. Vectores y matrices (vectores bidimensionales).Hasta ahora se ha visto como manejar y guardar variables pero se deben declara una variables por valor pero habrá ocasiones en las que se deban manejar muchas variables en un solo programa para eso existen los vectores son variables que pueden guardar hasta n valores y son muy fáciles de manejar ya que se refiere con el mismo nombre solo se diferencia un valor de otro por un subíndice sea: valor [1...10] (un vector de 10 espacios) donde 5 es el valor guardado en el tercer espacio nos referimos a él como valor [3] ósea en el vector “valor” en la posición 3 claro que para seleccionar la posición del vector deseada usaremos una variable y no subíndices cabe decir que un vector solo puede almacenar valores de un solo tipo el tipo del que sea declarado el vector puedes imaginarte un vector como una línea recta dividida en cuadro donde se guardan los valores también deben saber que cuando declaras un vector en pascal debes especificar cuantos espacios tendrá el vector pondré un ejemplo para que este más claro el tema así podrán ver como se declara un vector:

Page 33: Manual básico de Turbo Pascal 7

program programa_que_calcula_el_promedio_de_n_numeros;{nombre del programa} uses{la biblioteca} crt; type{declaracion del vector} vector=array[1..10]of integer; var{declaracion de variables} a,b,d,n,i,cantidad:integer;{las variables y su tipo} c:real; promedio:vector; begin{inicio del programa} clrscr;{limpiar pantalla} writeln('cuantos numero usaras?');{imprimir en pantalla} readln(cantidad);{leer la variable cantidad} repeat{inicio del ciclo repeat} writeln('dame un numero');{imprimir en pantalla} readln(n);{leer la variable n} clrscr;{limpiar pantalla} b:=b+n;{valor de b} i:=i+1;{valor de i} until i=cantidad;{fin del ciclo until} c:=b/i;{valor de la variable c} writeln('el promedio total es :',c);{imprimir en pantalla} readln;{presionar enter para salir} end.{fin del programa}

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que dados n valores los invierta es decir que el primero sea el ultimo y el ultimo el primero, el segundo sea el penúltimo y el penúltimo el segundo así sucesiva mente.Ejercicio 2: crear un programa que dado un vector con n números sume los valores del vector y muestre el resultado.

Posibles soluciones.Ejercicio 1:program programa_que_invierte_los_valores_de_un_vector;{nombre del programa} uses crt; {la biblioteca} type

Page 34: Manual básico de Turbo Pascal 7

vector=array [1..100] of integer; {declaracion del vector} var{declaracion de variables} ronda:vector; cantidad,cont1,cont2,temp1,temp2,numero:integer;{declaracion de variables} begin{inicio del programa} clrscr;{limpiar pantalla} Write('Cantidad de numeros: ');{imprimir en pantalla} readln(cantidad);{leer la variable cantidad} for cont1:=1 to cantidad do{ciclo for} begin{inicio del ciclo for} Write('numero ',cont1,': ');{imprimir en pantalla} Readln(ronda[cont1]);{leer el vector ronda} end;{fin del ciclo for} write('numeros originales: ');{impimir en pantalla} for cont1:=1 to cantidad do{inicio del ciclo for} begin{iniciar ciclo for} if cont1=cantidad then{sentencia if} begin{inicio de la sentencia if} write(ronda[cont1],'.');{imprimir en pantalla} end{fin de la sentencia if} else{sentencia else} begin{inicio de la sentencia else} write(ronda[cont1],', ');{imprimir en pantalla} end;{fin de la sentencia else} end;{fin del ciclo for} write('numeros invertidos: ');{imprimir en pantalla} for cont1:=1 to cantidad do{ciclo for} begin{inicio del ciclo for} if cont1=cantidad then{sentencia if} begin{inicio de la sentencia if} ronda[cont1]:=ronda[cont1]*-1;{formula de ronda} write(ronda[cont1],'.');{imprimir ronda} end{fin del if} else{sentencia else} begin{inicio de la sentencia else} ronda[cont1]:=ronda[cont1]*-1;{formula para ronda} write(ronda[cont1],', ');{imprimir ronda} end;{fin de la sentencia else}

Page 35: Manual básico de Turbo Pascal 7

end;{fin del cilo for} readln;{presionar enter para salir}end.{fin del programa}

Ejercicio 2:program programa_que_suma_2_vectores;{nombre del programa}uses{la biblioteca} crt; type{declaracion del vetor} vector1=array [1..100]of integer; vector2=array [1..100]of integer; var{declaracion de variables} a,b,c,d,e,i,f:integer;{las variables y su tipo} begin{inicio del programa} clrscr;{limpiar pantalla} writeln('cuantos numeros usaras en el primer vector');{imprimir en pantalla} readln(a);{leer la variable a} repeat{inicio del cilo repeat} writeln('dame el valor ',i,' del primer vector');{imprimir en pantalla} readln(b);{leer la variable b} c:=b+c;{valor de c} i:=i+1;{valor de i} until i=a;{fin del ciclo repeat} writeln('el resultado del primer vector es :',c);{imprimir en panatalla} writeln('cuantos numeros usaras en el segundo vector');{imprimir en pantalla} readln(d);{leer la variable d} repeat{ciclo repeat} writeln('dame el valor ',e,' del segundo vector');{imprimir el cilo repeat} readln(f);{leer la variable f} f:=f+f;{valor de f} e:=e+1;{valor de e} until e=d;{fin del ciclo repeat} writeln('el resultado del segundo vector es: ',f);{imprimir en pantalla} writeln('el resultado de la suma de los 2 vectores es',f+c);{imprimir en pantalla} readln;{presionar enter para salir} end.{fin del programa}

Page 36: Manual básico de Turbo Pascal 7

11.1 Vectores bidimensionales o matrices.Los vectores bidimensionales o matrices son como los vectores normales salvo que estos son mucho más grandes se usan para manejar cantidades de variables muy grandes puedes imaginarte un vector bidimensional como una cuadricula o una tabla de Excel se declaran algo diferentes a los vectores normales pero al igual que los vectores normales debes especificar cuantos espacios tendrá pondré un ejemplo para que puedas entenderlo más fácilmente:program matrizes;uses crt;type matriz=array[1..10,1..10]of integer; var pocicion:matriz; x,y,sumatotal:integer; begin for y:=1 to 10 do begin for x:=1 to 10 do begin pocicion[x,y]:=random(11); end; end; textcolor(green); for y:=1 to 10 do begin for x:=1 to 10 do begin sumatotal:=sumatotal+pocicion[x,y]; end; end; writeln('el resultado es:',sumatotal); readln; end.

Page 37: Manual básico de Turbo Pascal 7

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que dada uno matriz con n elementos muestre cual es numero más grande en la matriz.Ejercicio 2: crear un programa que creer valores al azar para llenar una matriz y haga la sumatoria de todos los valores de la matriz nota: la función que crea números al azar es random(parámetro) donde el parámetro es el numero limite al que puede llegar la función es decir que usa números desde 1 hasta el parámetro.

Posibles soluciones.program matrizes2;uses crt;type matriz=array[1..10,1..10]of integer; var pocicion:matriz; x,y,mayor,actualx,actualy:integer; begin randomize; for y:=1 to 10 do begin for x:=1 to 10 do begin pocicion[x,y]:=random(12); end; end; for y:=1 to 10 do begin for x:=1 to 10 do begin if pocicion[x,y] > mayor then begin mayor:=pocicion[x,y]; actualx:=x; actualy:=y; end; end; end;

Page 38: Manual básico de Turbo Pascal 7

textcolor(red); writeln('el numero mayor de toda la matriz fue:',mayor); writeln('esta la pocicion',x,' ',y); readln; end.

Ejercicio 2:program matrizes3;uses crt; type matriz=array[1..10,1..10]of integer; vector=array[1..100]of integer; var pocicion:matriz; avector:vector; x,y,contador:integer; begin for y:=1 to 10 do begin for x:=1 to 10 do begin contador:=contador+1; pocicion[x,y]:=random(101); avector[contador]:=pocicion[x,y]; end; end; textcolor(blue); for x:=1 to contador do begin writeln(avector[x]); end; readln; end.

Page 39: Manual básico de Turbo Pascal 7

12. Cadenas.En programación se le conoce como cadenas a las palabras en las que se maneja un programa en pascal existe la variable string (cadena en ingles) que puede almacenar hasta 255 caracteres por variable se puede especificar cuantos caracteres usaremos por variable o solo declarar las variables como string y automáticamente se podrán usar los 255 caracteres por defecto y también pueden ser tratadas como vectores en el sentido que para hacer referencia a un elemento de la cadena con un subíndice a continuación les dejo un ejemplo del uso de cadenas para que se aclare el tema:Program programa_que_calcula_la_cantidad_de_palabras_en_una_cadena;usescrt; {la biblioteca}var {la declaracion de variables}i,g:integer; {las variables y su tipo}a,b,c,d:string[255];begin {inicio del programa}clrscr;{limpiar pantalla}writeln('escribe algo');{imprimir en pantalla}readln(a);{leer la variable a}for i:=1 to length(a) do{ciclo for}begin {inicio del ciclo for}if a[i]=' ' then{sentencia if}begin {inicio de la sentencia if}g:=g+1;{variable g}end;{fin del if}end;{fin del for}g:=g+1;{valor de g}writeln('el numero total de palabras es:',g);{imprimir en pantalla}readln;{presionar enter para salir}end.{fin del programa}

12.1 Funciones especiales de las cadenas.Las cadenas tienen funciones especiales que solo funcionan en ellas por su naturaleza por ejemplo la función upcase que convierte las letras a mayúsculas y otras funciones que pondré a continuación en la siguiente tabla:

Función. Sintaxis. Explicación.Length Length(cadena) Indica cuatos caracteres tiene la

cadena.

Page 40: Manual básico de Turbo Pascal 7

Operador + Cad1+cad2=cad3 Une las cadenas.Concat. Cad=concat(c1,c2,c3,c4) Une varias cadenas.Copy. C1=copy(cadena,inicio,cantidad); Copea una parte de una cadena.Insert. Insert(cad1,cad2,posicion) Inserta una cadena en otra.Delete. Delete(cad,inicio,cantidad) Elimina una parte de la cadena.Upcase. Upcase(cad1[n]) Convierte a mayúscula una letra

a la vez.Str. Str(valor,cadena) Convierte un numero a cadena.Val. Val(cad,num,código) Cadena contiene la cadena que

será procesada, Num es la variable de tipo numérico donde se guardará el valor de la cadena y Código es una variable de tipo entero (Integer) que contendrá el valor de 0 si no hubo errores y un valor diferente en caso de que no se haya podido convertir la cadena, el valor de Código representa la posición de la cadena donde ocurrió el error.

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que muestre cuantas letras minúsculas hay en una cadena de n caracteres.Ejercicio 2: crear un programa que muestre cuantos espacios en blanco hay en una cadena de n caracteres.Ejercicio 3: crear un programa que ponga todas las letras a mayúsculas en una cadena de n caracteres.Ejercicio 4: crear un programa que busque y remplace un carácter en una cadena de n caracteres las veces que el carácter mencionado se repita el carácter reemplazado y el carácter que reemplazara deberán ser dados por el usuario.

Posibles soluciones.Ejercicio 1:program programa_que_calcula_el_numero_de_letras_minusculas_en_una_cadena;{nombre del programa}uses

Page 41: Manual básico de Turbo Pascal 7

crt;{la biblioteca} var{declaracion de variables} i,g:integer;{las variables y su tipo} a,b,c,d:string[255]; begin{inicio del programa} clrscr;{limpiar pantalla} writeln('escribe algo');{imprimir en pantalla} readln(a);{leer a} g:=1;{variable g} for i:=1 to length(a) do{ciclo for} begin{inicio del ciclo for} if a[i]>#99 then{sentencia if} begin{inicio de la sentencia if} if a[i]<#123 then{sentencia if} begin{inicio de la sentencia if} g:=g+1;{valor de g} end;{fin del if} end;{fin del if} end;{fin del ciclo for} writeln('el numero total de letras minusculas es:',g);{imprimir en pantalla} readln;{presionar enter para salir} end.{fin del programa}Ejercicio 2:program calcula_espacios_en_blanco;{nombre del programa}uses{la biblioteca}crt;var{declaracion de variables}i,g:integer;{las variables y su tipo}a,b,c,d:string;begin{incio del programa}clrscr;{limpiar pantalla}writeln('escribe algo');{imprimir en pantalla}readln(a);{leer a}b:=' ';{valor de b}for i:=1 to length(a) do{ciclo for}begin{inicio del ciclo for}if a[i]=b then{sentencia if}begin{inicio del ciclo if}

Page 42: Manual básico de Turbo Pascal 7

g:=g+1;{valor de g}end;{fin del if}end;{fin del ciclo for}writeln('el total de espacios en blanco es:',g);{imprimir en pantalla}readln;{presionar enter para salir}end.{fin del programa}

Ejercicio 3:program cadenamayuscula;{nombre del programa}uses{la biblioteca} crt; var{declaracion de variables} i:integer;{las variables y su tipo} a,b,c,d:string[255]; begin{inicio del programa} clrscr;{limpiar pantalla} writeln('escribe algo');{imprimir en pantalla} readln(a);{leer la variable a} for i:=1 to length(a) do{ciclo for} begin{inicio del ciclo for} a[i]:=upcase(a[i]);{comvierte los caracteres de a a mayusculas} end;{fin del ciclo for} writeln(a);{imprimir a} readln;{presionar enter para salir} end.{fin del programa}

Ejercicio 4:program programa_que_busca_y_remplasa_un_caracter;{nombre del programa}uses{la biblioteca}crt;var{declaracion de variables}i:integer;{las variables y su tipo}a,b,c,d:string;begin{inicio del programa}clrscr;{limpiar pantalla}writeln('escribe algo');{imprimir en pantalla}readln(a);{leer la varible a}

Page 43: Manual básico de Turbo Pascal 7

writeln('dame un caracter para eliminar de la primera cadena que me diste');{imprimir en pantalla}readln(b);{leer b}writeln('dame un caracter para reemplasar el valor eliminado');{imprimir en pantalla}readln(c);{leer la variable c}for i:=1 to length(a) do{ciclo for}begin{inicio del ciclo for}if a[i]=b then{sentencia if}begin{inicio de la sentencia if}delete(a,i,1);{fucion delete}insert(c,a,i);{funcion insert}end;{fin de la sentenci if}end;{fin del ciclo for}writeln(a);{imprimir en pantalla}readln;{presionar enter para salir}end.{fin del programa}

Page 44: Manual básico de Turbo Pascal 7

13. Pilas.Hasta ahora se ha mostrado métodos para el almacenamiento de datos pero ahora utilizaremos el manejo de datos las pilas utilizan el método F.I.L.O. (First In Last Out) el primero en entrar el último en salir este tema no es complicado por lo que pondré un ejemplo y recomiendo ustedes traten de hacer el mismo ejemplo con sus propios medios.program menu_pop_push_salir;{nombre del programa}uses crt; {la biblioteca}typevector=array[1..100]of longint; {declaracion del vector}var{declaracion de variables }a,b,c,d,i,tope,max,dato:integer;{las variables y su tipo}casilla:vector;begin{inicio del programa}clrscr;{limpiar pantalla}repeat{inicio del ciclo repeat}writeln('1)push 2)pop 3)salir');{imprimir pantalla}readln(a);{leer a}if a=3 then{sentencia if}begin{inicio de la sentencia if}writeln('presiona un caracter no numerico para salir');{imprimir en pantalla}end;{fin de la senencia if}writeln('cuantos numeros usaras');{imprimir en pantalla}readln(max);{leer la variable max}for tope:=1 to max do{ciclo for}begin{inicio del ciclo for}writeln('dame un numero');{imprimir en pantalla}readln(casilla[tope]);{leer vector}end;{fin del ciclo for}if a=1 then{sentencia if}begin{inicio de la sentenci if}writeln('que numero deseas insertar');{imprimir en pantalla}readln(casilla[tope]);{leer vector}tope:=tope+1;{valor de tope}for tope:=1 to tope do{ciclo for}begin{inicio del ciclo for}writeln(casilla[tope]);{imprimir vector}

Page 45: Manual básico de Turbo Pascal 7

end;{fin del ciclo for}end;{fin de la sentencia if}if a=2 then{sentencia if}begin{inicio de la sentecia if}d:=casilla[tope];{valor de d}tope:=tope-1;{valor de tope}for tope:=1 to tope do{ciclo for}begin{inicio del ciclo for}writeln(casilla[tope]);{imprimir vector}end;{fin del ciclo for}end;{fin de la sentencia if}until a=3;{fin del ciclo repeat}readln;{presionar enter para salir}end.{fin del programa}

14. Colas.Este temas es también un método de tratamiento de datos colas usa el método F.I.F.O. (First In First Out) el primero en entrar el primero en salir este tema es igualmente fácil que el anterior recomiendo igualmente observar el ejemplo y tratar de hacerlo por sus propios medios.program menu_colas;{nombre del programa}uses crt;{la biblioteca}type{declaracion del vector}casilla=array[1..100] of longint;{la variable vector declarado}var{declaracion de variables}a,b,c,final,max,frente:longint;{las variables y su tipo}vector:casilla;begin{inicio del programa}clrscr;{limpiar pantalla}repeat{inicio del ciclo repeat}writeln('que deseas hacer? 1)insertar 2)eliminar 3)salir');{imprimir en panatalla}readln(a);{leer a}writeln('cuantos numeros usaras?');{imprimir en pantalla}readln(max);{leer max}for b:=1 to max do{declaracion del ciclo for}begin {inicio del ciclo for}writeln('dame el numero');{imprimir en pantalla}

Page 46: Manual básico de Turbo Pascal 7

readln(vector[b]);{leer el vector}end;{fin del ciclo for}if a=1 then{sentencia if}begin{inicio de la sentencia if}writeln('que valor deseas agregar?');{imprimir en pantalla}readln(vector[b]);{leer el vector}b:=b+1;{valor de b}for b:=1 to b do{ciclo for}begin{inicio del ciclo for}writeln(vector[b]);{imprimir en pantalla}end;{fin del ciclo for}end;{fin del ciclo repeat}if a=2 then{sentencia if}begin{inicio de la sentencia if}for b:=2 to max do{ciclo for}begin{inicio del ciclo for}writeln(vector[b]);{imprimir en pantalla}end;{fin del ciclo for}end;{fin de la sentenci if}if a=3 then{sentencia if}begin{inicio de la sentenci if}writeln('escribe un caracter no numerico para salir men');{imprimir en pantalla}readln(c);{leer c}end;{fin del if}until a=3;{fin del ciclo repeat}readln;{presionar enter para salir}end.{fin del programa}

Page 47: Manual básico de Turbo Pascal 7

15. Métodos de ordenamiento Bubble sort.El método de ordenamiento bubble sort sirve para acomodar datos ya sea de mayor a menor o al revés siendo este método de ordenamiento el mas simple y tardado a continuación les pongo un ejemplo de uso del bubble sort:program ordena_un_vector_por_ordenacion_de_la_burbuja;{nomvre del programa}uses crt,dos;{las bibliotecas}type vector=array[1..100]of integer;{declaracion del vector} var lista:vector; i,f,auxiliar:integer; h,m,s,cs:word;begin{inicio del programa principal}clrscr;{limpiar pantalla}randomize;gettime(h,m,s,cs);writeln('la hora actual es :',h,':',m,':',s);for i:=1 to 100 dobeginlista[i]:=random(100);{se crean numeros al azar entre 100 y 1}end;

for i:=2 to 100 do{inicio del bubble sort}beginfor f:=100 downto i dobeginif lista[f-1] > lista[f] thenbeginauxiliar:=lista[f-1];lista[f-1]:=lista[f];lista[f]:=auxiliar;end;end;end;{fin del bubble sort}for i:=1 to 100 dobeginwriteln('el numero en al posicion ',i,' es: ',lista[i]);delay(100);

Page 48: Manual básico de Turbo Pascal 7

end;getTime(h,m,s,cs);writeln('la hora es:',h,m,s,cs);readln;end.{fin del programa}

16. Quick sort.El quick sort o el método de ordenamiento rápido es el más rápido de todos y lo que hace es tomar un valor al azar y pone los valores menores a, el de un lado y los mayores de otro y los junta al final a continuación un ejemplo de su uso:program ordena_un_vector_por_quickshort;{inicio del programa}usescrt,dos;{las bibliotecas}typevector=array[1..100] of integer;mayor=array[1..100] of integer;menor=array[1..100] of integer;{declaracion de vectores}varpilamayor:mayor;pilamenor:menor;{declaracion de variables}i,top,izquierda,derecha,auxiliar,ini,fin,pos:integer;h,m,s,cs:word;band:boolean;lista:vector;procedure reduceinterativo(ini,fin,pos:integer);{procedimiento para ordenar el vector}beginizquierda:=ini;derecha:=fin;pos:=ini;band:=true;while band=true dobeginwhile (lista[pos]<=lista[derecha]) and (pos<>derecha) dobeginderecha:=derecha-1;end;if pos=derecha then

Page 49: Manual básico de Turbo Pascal 7

beginband:=false;endelsebeginauxiliar:=lista[pos];lista[pos]:=lista[derecha];lista[derecha]:=auxiliar;pos:=derecha;while (lista[pos] >= lista[izquierda]) and (pos<>izquierda) dobeginizquierda:=izquierda+1;end;if pos=izquierda thenbeginband:=false;endelsebeginauxiliar:=lista[pos];lista[pos]:=lista[izquierda];lista[izquierda]:=auxiliar;pos:=izquierda;end;end;end;end;{fin del procedure}

procedure interativo;{procedure para acomodar los numeros}begintop:=1;while top>0 dobeginini:=pilamenor[top];fin:=pilamayor[top];top:=top-1;reduceinterativo(ini,fin,pos);if ini<(pos-1) then

Page 50: Manual básico de Turbo Pascal 7

begintop:=top+1;pilamenor[top]:=ini;pilamayor[top]:=pos-1;end;if fin>(pos+1) thenbegintop:=top+1;pilamenor[top]:=pos+1;pilamayor[top]:=fin;end;end;end;{fin del procedure}

begin{inicio del programa principal}clrscr;randomize;gettime(h,m,s,cs);writeln('la hora actual es :',h,':',m,':',s,':',cs);for i:=1 to 100 dobeginlista[i]:=random(100);end;interativo;for i:=1 to 100 dobeginwriteln(lista[i]);end;gettime(h,m,s,cs);writeln('la hora actual es:',h,':',m,':',s,':',cs);readln;end.{fin del programa principal}

Page 51: Manual básico de Turbo Pascal 7

17. Registros.Hasta ahora se ha visto como manejar gran cantidad de datos y como ordenarlos para este tema veremos otras instrucciones nuevas como la instrucción record donde pondremos variables del tipo y nombre que necesitemos pero haremos referencias a ellas mediante propiedades ejemplo:program menu_contactos;{nombre del programa}usescrt;{la libreria}type{declaracion del registro y las variables dentro de el}contacto=recordnombre:string[100];direccion:string[255];cel:string[255];end;{fin de la declaracion de el registro}contactos=array [1..100] of contacto;{vector}var{declracion de variables}a:char;lista:contactos;i,cuantos,b,c,d,e:integer;{las variables y su tipo}begin{inicio del programa}repeat{ciclo repeat}clrscr;{limpiar pantalla}writeln('que desehas hacer?');{imprimir en pantalla las opciones que tiene el usuario}writeln('1)agregar contacto 2)buscar contacto 3)eliminar contacto 4)reportes 5)salir');readln(a);{le la opcion que escogio el usuario}if a='1' then{procedimiento en caso que el usuario eliga la primera opcion}beginwriteln('cuantos contactos usaras');readln(cuantos);for i:=1 to cuantos do{solicita al usuario los datos y los guarda en un vector}beginwriteln('dame el nombre del contacto',i);readln(lista[i].nombre);writeln('dame la direccion del contacto',i);readln(lista[i].direccion);writeln('dame el numero de celular del contacto',i);

Page 52: Manual básico de Turbo Pascal 7

readln(lista[i].cel);end;end;if a='4' then{procedimiento en caso de que el usuario eliga la opcion 4}beginfor i:=1 to cuantos dobegin{imprime todos los datos dados por el usuario}writeln('el nombre del contacto ',i,' es:',lista[i].nombre);writeln('la direccion del contacto ',i,' es:',lista[i].direccion);writeln('el numero de cel del contacto ',i,' es',lista[i].cel);readln;end;end;if a='3' then{procedimiento en caso de que el usuario eliga la opcion 3}beginwriteln('dame el nombre del contacto que deseas eliminar');readln(b);c:=b+1;d:=b-1;for i:=1 to d do{imprime todos los contactos menos el eliminado}beginwriteln('el nombre del contacto ',i,' es;',lista[i].nombre);writeln('la direccion del contacto ',i,' es:',lista[i].direccion);writeln('el numero de cel del contacto ',i,' es',lista[i].cel);end;for i:=c to cuantos dobeginwriteln('el nombre del contacto ',i,' es;',lista[i].nombre);writeln('la direccion del contacto ',i,' es:',lista[i].direccion);writeln('el numero de cel del contacto ',i,' es',lista[i].cel);readln;end;end;if a='2' then{procedimiento en caso de que el usuario eliga la opcion 2}beginwriteln('dame el numero del usuario que deseas buscar');readln(b);for i:=b to b do{busca entre todos los contactos al solicitado}

Page 53: Manual básico de Turbo Pascal 7

beginwriteln('el nombre del contacto ',i,' es: ',lista[i].nombre);writeln('la direccion del contacto ',i,' es: ',lista[i].direccion);writeln('el celular del contacto ',i,' es: ',lista[i].cel);readln;end;end;until a='5';{fin del ciclo repeat}readln;{presionar enter para salir}end.{fin del programa}donde la variable contacto = a un registro donde tenemos variables de diferentes tipos y hacemos referencia a ellas por medio de propiedades como contacto.nombre donde contacto es registro y nombre una de sus propiedades y variables.

18. Archivos secuenciales.En este tema veremos como guardar los datos utilizados en un archivo .txt o un .dat o como usar los datos que están dentro de una de ellos para manjar los con nuestro código fuente ejemplo:program menu_contactos;{nombre del programa}usescrt;{la libreria}type{declaracion del registro y las variables dentro de el}contacto=recordnombre:string[100];direccion:string[255];cel:string[255];end;{fin de la declaracion de el registro}contactos=array [1..100] of contacto;{vector}var{declracion de variables}a:char;lista:contactos;i,cuantos,b,c,d,e:integer;{las variables y su tipo}begin{inicio del programa}repeat{ciclo repeat}clrscr;{limpiar pantalla}writeln('que desehas hacer?');{imprimir en pantalla las opciones que tiene el usuario}

Page 54: Manual básico de Turbo Pascal 7

writeln('1)agregar contacto 2)buscar contacto 3)eliminar contacto 4)reportes 5)salir');readln(a);{le la opcion que escogio el usuario}

if a='1' then{procedimiento en caso que el usuario eliga la primera opcion}beginwriteln('cuantos contactos usaras');readln(cuantos);for i:=1 to cuantos do{solicita al usuario los datos y los guarda en un vector}beginwriteln('dame el nombre del contacto',i);readln(lista[i].nombre);writeln('dame la direccion del contacto',i);readln(lista[i].direccion);writeln('dame el numero de celular del contacto',i);readln(lista[i].cel);end;end;if a='4' then{procedimiento en caso de que el usuario eliga la opcion 4}beginfor i:=1 to cuantos dobegin{imprime todos los datos dados por el usuario}writeln('el nombre del contacto ',i,' es:',lista[i].nombre);writeln('la direccion del contacto ',i,' es:',lista[i].direccion);writeln('el numero de cel del contacto ',i,' es',lista[i].cel);readln;end;end;if a='3' then{procedimiento en caso de que el usuario eliga la opcion 3}beginwriteln('dame el nombre del contacto que deseas eliminar');readln(b);c:=b+1;d:=b-1;for i:=1 to d do{imprime todos los contactos menos el eliminado}beginwriteln('el nombre del contacto ',i,' es;',lista[i].nombre);writeln('la direccion del contacto ',i,' es:',lista[i].direccion);

Page 55: Manual básico de Turbo Pascal 7

writeln('el numero de cel del contacto ',i,' es',lista[i].cel);end;for i:=c to cuantos dobeginwriteln('el nombre del contacto ',i,' es;',lista[i].nombre);writeln('la direccion del contacto ',i,' es:',lista[i].direccion);writeln('el numero de cel del contacto ',i,' es',lista[i].cel);readln;end;end;if a='2' then{procedimiento en caso de que el usuario eliga la opcion 2}beginwriteln('dame el numero del usuario que deseas buscar');readln(b);for i:=b to b do{busca entre todos los contactos al solicitado}beginwriteln('el nombre del contacto ',i,' es: ',lista[i].nombre);writeln('la direccion del contacto ',i,' es: ',lista[i].direccion);writeln('el celular del contacto ',i,' es: ',lista[i].cel);readln;end;end;until a='5';{fin del ciclo repeat}readln;{presionar enter para salir}end.{fin del programa}

como habrás notado use una sentencia que no se ha utilizado antes que es reset() la cual sirve para abrir un archivo externo sin borrar su contenido existen más sentencias similares las pondré a continuación en una tabla:

Sentencia. Sintaxis. Efecto.Reset. Reset(archivo) Abre un archivo externo ya

sea .txt ó .dat sin borrar su contenido pero si este archivo no existe no funcionara.

Rewrite. Rewrite(archivo) Funciona para crear o usar un archivo externo ya sea .txt ó .dat si el archivo no existe lo crea pero si

Page 56: Manual básico de Turbo Pascal 7

existe borra el contenido que tiene.

Assing. Assing(registro,archivo) Asigna los datos de un registro a un archivo ya sea .txt ó .dat para su úso.

Appened. Appened(archivo) Abre un archivo para agregarle datos

Close. Close(archivo) Cierra un archivo externo ya sea .txt ó .dat es importante cerrar los archivos antes de terminar el código.

Nota: en este tema usare instrucciones como “eof” ó “eoln” como condiciones en los ciclos estas instrucciones quieren decir “end of file” y “end of line” también se puede usar un not antes de las instrucciones mencionadas ejemplo: while not eof do para que el ciclo se ejecute mientras no sea el fin del archivo ó mientras no sea el fin de la línea puedes decidir entre un archivo .txt y un .dat cambiando la extencion .txt por un .dat.

Ejercicios recomendados y posibles soluciones.

Ejercicio 1: crear un programa que muestre cuantas veces se repite cada carácter del código ASCII los caracteres deben ser ingresados por medio de un archivo .txt.

Ejercicio 2: crear un programa que lea la frase hola de un archivo .txt y lo guarde en otro.

Ejercicio 3: crear un programa que lea carácter por carácter de un archivo .txt y los muestre mientras corre el programa.

Ejercicio 4: crear un programa que lea el contenido de un archivo .txt y los pase a otro en mayúsculas.

Posibles soluciones.

Ejercicio 1:

program ultimo;{nombre del programa}

uses

crt;{la libreria}

type{declaracion del vector}

contador = array [1..257] of integer;

Page 57: Manual básico de Turbo Pascal 7

var{declaracion de variables}

frase:text;

palabra:char;

c1:contador;

i,f:longint;

begin{inicio del programa}

for i:=1 to 256 do

begin {reinicia los valores del vector}

c1[i]:=0;

end;

clrscr;{limpiar pantalla}

assign(frase,'ec.txt');{assingo el archivo externo a una variable para manegarlo}

reset(frase);{abre el archivo externo}

while not eof(frase) do{mientras no sea el fin del archivo hacer}

begin

read(frase,palabra);

i:= ord(palabra);

c1[i]:=c1[i]+1;{lee letra por letra lo que hay en el archivo externo}

write(palabra);

end;

close(frase);{cierra el archivo externo}

for i:=1 to 225 do

begin

delay(100);

Page 58: Manual básico de Turbo Pascal 7

writeln('el caracter ',chr(i),' se repite: ',c1[i], 'veces');{este ciclo for muestra cuantas veces se repitieron los caracteres}

end;

readln;

end.{fin del programa}

Ejercicio 2:

program hola;{NOMBRE DEL PROGRAMA}

uses

crt;

var {DECLARACION DE VARIABLES}

frase,frase2:text;

letra:char;

begin{INICIO DEL PROGRAMA}

clrscr;{LIMPIAR PANTALLA}

assign(frase,'FRASE.txt');{ASIGNA EL ARCHIVO EXTERNO A UNA VARIABLE}

assign(frase2,'salida.txt');{ASIGNA EL ARCHIVO EXTERNO A UNA VARIABLE}

reset(frase);{ABRE EL ARCHIVO EXTERNO}

rewrite(frase2);{ABRE EL ARCHIVO EXTERNO}

while not eof(frase) do{MIENTRAS NO SEA EL FIN DEL ARCHIVO}

begin

while not eoln(frase) do{MIENTRAS NO SEA EL FIN DEL RENGLON}

begin

read(frase,letra);{LEER EL ARCHIVO EXTERNO LETRA POR LETRA}

write(frase2,letra);{LO ESCRIBE EN EL OTRO ARCHIVO LETRA POR LETRA}

Page 59: Manual básico de Turbo Pascal 7

end;{FIN DEL PRIMER CICLO}

readln(frase);{LEE EL PRIMER ARCHIVO}

writeln(frase2);{LO ESCRIBE EN EL OTRO}

end;{FIN}

close(frase);{CIERRA EL ARCHIVO}

close(frase2);{CIERRA EL ARCHIVO}

readln;{PRESIONA ENTER PARA SALIR}

end.{FIN DEL PROGRAMA}

Ejercicio 3:

program leer_un_archivo_caracter_por_caracter;{NOMBRE DEL PROGRAMA}

uses

crt;{LA LIBRERIA}

var{DECLARACION DE VARIABLES}

palabraa:text;

letra:char;

i:longint;

begin{INICIO DEL PROGRAMA}

clrscr;{LIMPIAR PANTALLA}

assign(palabraa,'palabra.txt');{ASIGNA EL ARCHIVO EXTERNO A UNA VARIABLE}

reset(palabraa);{ABRE EL ARCHIVO EXTERNO}

while not eof(palabraa) do{MIENTRAS NO SEA EL FIN DEL ARCHIVO HACER}

begin{INICIO}

read(palabraa,letra);{LEE EL ARCHIVO EXTERNO CARACTER POR CARACTER}

Page 60: Manual básico de Turbo Pascal 7

writeln(letra);{IMPRE EN LA PANTALLA CARCTER POR CARACTER}

end;{FIN DEL CICLO}

close(palabraa);{CIERRA EL ARCHIVO EXTERNO}

readln;{PRESIONAR ENTER PARA SALIR}

end.{FIN DEL PROGRAMA}

Ejercicio 4:

program programa_que_copea_el_contenido_de_un_texto_a_otro_en_mayusculas;{NOMBRE DEL PROGRAMA}

uses

crt;{LA BIBLIOTECA}

var{DECLARACION DE VARIABLES}

frase,frase2:text;

letra, a:char;

begin{INICIO DEL PROGRAMA}

clrscr;{LIMPIAR PANTALLA}

assign(frase,'cuarto.txt');{ASIGNA EL ARCHIVO EXTERNO A UNA VARIABLE}

assign(frase2,'s.txt');{ASIGNA EL ARCHIVO EXTERNO A UNA VARIBLE}

reset(frase);{ABRIR EL PROGRAMA}

rewrite(frase2);{ABRIR EL PROGRAMA}

while not eof(frase) do{MIENTAS NO SEA EL FIN DEL ARCHIVO HACER}

begin

while not eoln(frase) do

begin

read(frase,letra);

Page 61: Manual básico de Turbo Pascal 7

letra:=UpCase(letra);{LEE , PASA A MAYUSCULA Y ESCRIBE EL TEXTO EN OTRO ARCHIVO}

write(frase2,letra);

end;

readln(frase);

writeln(frase2);

end;

close(frase);{CIERRA EL ARCHIVO EXTERNO}

close(frase2);{CIERRA EL ARCHIVO EXTERNO}

readln;{PRESIONAR ENTER PARA SALIR}

end.{FIN DEL PROGRAMA}

19. Archivos aleatorios.Se les llama archivos aleatorios por que a diferencia del tema anterior en este podríamos usar los datos del archivo de manera aleatoria por ejemplo si creamos una agenda con la función de buscar buscaremos lo que el usuario nos indique y podría no ser el primer contacto ejemplo:program agenda;uses crt;typecontactos=recordnombre:string[100];direccion:string[255];cel:string[255];end;lista = array [1..100] of contactos;vartexto:char;archivo:text;i,f,c,d,e:integer;decicion:char;contacto:lista;begin

Page 62: Manual básico de Turbo Pascal 7

assign(archivo,'hhh.txt');append(archivo);

repeatclrscr;writeln('que deseas hacer?');writeln('1)agregar contactos 2)reporte 3)buscar 4)eliminar 5)salir');readln(decicion);

if decicion='1' thenbeginwriteln('cuantos contactos usaras?');readln(c);for i:=1 to c dobeginwriteln('escribe el nombre del contacto ',i);readln(contacto[i].nombre);writeln('escribe la direccion ',i);readln(contacto[i].direccion);writeln('escribe el numero de celular ',i);readln(contacto[i].cel);end;for i:=1 to c dobeginwriteln(archivo,contacto[i].nombre);writeln(archivo,contacto[i].direccion);writeln(archivo,contacto[i].cel);end;end;

if decicion='2' thenbeginfor i:=1 to c dobeginwriteln('el nombre del contacto ',i,' es ',contacto[i].nombre);writeln('la direccion del contacto ',i,' es ',contacto[i].direccion);writeln('el celular del contacto ',i,' es ',contacto[i].cel);readln;

Page 63: Manual básico de Turbo Pascal 7

end;end;

if decicion='3' thenbeginwriteln('dame el numero del contacto que deseas buscar');readln(f);for i:=f to f dobeginwriteln(contacto[i].nombre);writeln(contacto[i].direccion);writeln(contacto[i].cel);readln;end;end;

if decicion='4' thenbeginwriteln('dame el numero del contacto que deseas eliminar');readln(f);d:=f-1;e:=f+1;for i:=1 to d dobeginwriteln(contacto[i].nombre);writeln(contacto[i].direccion);writeln(contacto[i].cel);end;for i:=e to c dobeginwriteln(contacto[i].nombre);writeln(contacto[i].direccion);writeln(contacto[i].cel);readln;end;end;until decicion='5';close(archivo);

Page 64: Manual básico de Turbo Pascal 7

readln;end.

Ejercicios recomendados y posibles soluciones.Ejercicio 1: crear un programa que almacene los datos de una tienda departamental.

Posibles soluciones.program tienda;{titulo del programa}usescrt; {la biblioteca}typearticulo = record {declaracion del registro}na:string [50];pa:real;cae:integer;end;articulos =array[1..100] of articulo;{un vector del registro}var{declaracion de variables}lista:articulos;letra,opc:char; {las variables y su tipo}i,f,c,d,e:integer;archivo:text;begin{inicio del programa}assign(archivo,'listado.txt');{asigno el archivo externo a una variable}textbackground(red);textcolor(green);repeat{inicio del ciclo repeat}clrscr;{limpiar pantalla}writeln('que deseas hacer?');writeln('1)agregar articulo 2)reporte de articulos 3)buscar un articulo 4)eliminar 5)salir');readln(opc); {solicito la decicion del usuario}if opc='1' thenbeginappend(archivo);writeln('cuantos articulos agregaras?');readln(c);for i:=1 to c dobegin

Page 65: Manual básico de Turbo Pascal 7

writeln('escribe el nombre del articulo');readln(lista[i].na); {se agregan articulos al vector y al archivo externo}writeln(archivo,lista[i].na);writeln('escribe el precio del articulo');readln(lista[i].pa);writeln(archivo,lista[i].pa);writeln('escribe la cantidad de existencia del articulo');readln(lista[i].cae);writeln(archivo,lista[i].cae);end;close(archivo);end;if opc='2' thenbeginfor i:=1 to c dobeginwriteln('el nombre del articulo ',i,' es ',lista[i].na); {muestra el reporte de todos los articulos}writeln('el nprecio del articulo es ',i,' es ',lista[i].pa);writeln('la cantidad de ese articulo en la tienda es ',lista[i].cae);readln;end;end;if opc='3' thenbeginwriteln('dame el numero del articulo que deseas buscar');readln(e);for i:=e to e dobeginwriteln('el nombre del articulo ',i,' es ',lista[i].na);writeln('el precion del articulo ',i,' es ',lista[i].pa);writeln('la cantidad de existencia de ese producto es ',lista[i].cae);readln;end;end; {busca el archivo que quiere el usuario}if opc='4' thenbegin

Page 66: Manual básico de Turbo Pascal 7

writeln('dame el numero del articulo que deseas eliminar');readln(f);e:=f-1;d:=f+1;rewrite(archivo);for i:=1 to e dobeginwriteln('el nombre del articulo ',i,' es ',lista[i].na);writeln(archivo,lista[i].na);writeln('el precion del articulo ',i,' es ',lista[i].pa);writeln(archivo,lista[i].pa);writeln('la cantidad de existencia de ese producto es ',lista[i].cae);writeln(archivo,lista[i].cae);readln;end; {elimina una articulo del vector y del archivo}for i:=d to c dobeginwriteln('el nombre del articulo ',i,' es ',lista[i].na);writeln(archivo,lista[i].na);writeln('el precion del articulo ',i,' es ',lista[i].pa);writeln(archivo,lista[i].pa);writeln('la cantidad de existencia de ese producto es ',lista[i].cae);writeln(archivo,lista[i].cae);readln;end;close(archivo);end;until opc='5'; {fin del ciclo repeat}readln;{presionar enter para salir}end.{fin del programa}

Page 67: Manual básico de Turbo Pascal 7

20. Búsqueda de archivos (secuenciales).En este tema veremos cómo buscar datos en archivos externos por método secuencial ósea recorriendo todos los datos hasta encontrar el deseado a continuación muestro un ejemplo:program programa_que_busca_secuensial_mente;{NOMBRE DEL PROGRAMA}usescrt; {LA BIBLIOTECA}typevector=array[1..20]of integer; {DECLARACION DEL VECTOR}varlista:vector;i,f,auxiliar,buscado:integer;{DECLARACION DE VARIABLES}opc:char;begin{INICIO DEL PROGRAMA}writeln('deseas dar los 20 datos o lo creo aleatoriamente? 1)si 2)no');readln(opc);if opc='1' then{DECIDE SI ES USUSRI QUIERE DAR LOS NUMEROS SE CREAN AL AZAR}beginfor i:=1 to 20 dobeginreadln(lista[i]);end;end;if opc='2'thenbeginfor i:=1 to 20 do{SE CREAN LOS NUMEROS AL SI EL USUARIO LO ELIJE ASI}beginlista[i]:=random(100);end;end; for i:=2 to 20 do begin for f:=20 downto i do begin if lista[f-1] > lista[f] then{SE ORDENAN LOS VALORES POR EL METODO DE LA BURBUJA} begin

Page 68: Manual básico de Turbo Pascal 7

auxiliar:=lista[f-1]; lista[f-1]:=lista[f]; lista[f]:=auxiliar; end; end; end; writeln('los valores estan acomodados que numero deseas buscar');{LEE EL VALOR A BUSCAR} readln(buscado); for i:=1 to 20 do{BUSCA EL VALOR INDICADO POR EL USUARIO EN TODO EL VECTOR} begin if lista[i]=buscado then begin writeln('el valor fue encontrado en la posicion:',i); end; end;readln;end.{FIN DEL PRIGRAMA}

21. Búsqueda de archivos (binaria).En este tema mostrare como hacer búsquedas en archivos por el método binario en este método se separan los datos en 2 partes y se busca hacia arriba o abajo según se necesite ejemplo:program busqueda_binaria;{NOMBRE DEL PROGRAMA}usescrt;{LA BIBLIOTECA}typevector=array[1..100]of integer;{DECLARACION DEL VECTOR}varlista:vector;central,i,f,primero,ultimo,auxiliar:integer;{DECLARACION DE VARIABLES}opc:char;encontrado:boolean;begin{INICIO DEL PROGRAMA}clrscr;randomize;

Page 69: Manual básico de Turbo Pascal 7

writeln('deseas darme los 20 valores o los creo al azar? 1)deseo agregarlos 2)crealos al azar');readln(opc);{SOLICITO AL USUARIO SI QUIERE ESCRIBIR LOS NUMEROS O LOS CREO ALEATORIA MENTE}if opc='2' thenbeginfor i:=1 to 20 dobeginlista[i]:=random(100);end;end;if opc='1' thenbeginfor i:=1 to 20 dobeginreadln(lista[i]);end;end; for i:=2 to 20 do{ORDENO LOS VALORES POR EL METODO DE LA BURBUJA} begin for f:=20 downto i do begin if lista[f-1] > lista[f] then begin auxiliar:=lista[f-1]; lista[f-1]:=lista[f]; lista[f]:=auxiliar; end; end; end;writeln('los valores ahora estan acomodados que valor deseas buscar?');readln(f);{SOLICITO EL VALOR A BUSCAR}primero:=1; ultimo:=20;encontrado:=false;while (primero<=ultimo) or (encontrado=false) do{CICLO QUE HACE LA BUSQUEDA BINARIA}begincentral:=(primero+ultimo) div 2;if f = lista[central] then

Page 70: Manual básico de Turbo Pascal 7

beginencontrado:=true;endelse if f > lista[central] thenbeginprimero:=central+1;endelsebeginprimero:=central-1;end;end;if encontrado=true thenbeginwriteln('el elemento buscado se encontro en la posicion:',central);endelsebeginwriteln('el elemento no se encontro');end;readln;end.{FIN DEL PROGRAMA}

Page 71: Manual básico de Turbo Pascal 7

Ejercicio recomendado final y posible solucion.Ejercicio: crear un programa que lea números de 1 ó más cifras de un archivo .txt y los escriba en otro archivo .txt en orden ascendente.

Posible solución.program examen;usescrt;typevector=array[1..100]of integer;varvec:vector;i,j,aux,f,d:integer;entrada,salida:text;frase,temporal:string;beginclrscr;assign(entrada,'num.txt');assign(salida,'ohus.txt');reset(entrada);rewrite(salida);d:=1; while not eof(entrada) do begin read(entrada,frase); end; for i:=1 to length(frase) do begin if frase[i]=' 'then begin j:=j+1; temporal:=copy(frase,d,i-d); val(temporal,vec[j],aux); d:=i; end;

end; j:=j+1; temporal:=copy(frase,d,length(frase)-d+1);

Page 72: Manual básico de Turbo Pascal 7

val(temporal,vec[j],aux); for i:=2 to j do begin for f:=j downto i do begin if vec[f-1]>vec[f] then begin aux:=vec[f-1]; vec[f-1]:=vec[f]; vec[f]:=aux; end; end; end; for i:=1 to j do begin write(salida,vec[i]); write(salida,' '); end;close(entrada);close(salida);end.

Page 73: Manual básico de Turbo Pascal 7

Comentarios finales.Espero te haya sido de ayuda este manual de turbo pascal si tienes alguna duda puedes escribir a mi correo: [email protected] o comentar en el blog también puedes poner un comentario de agradecimiento en el blog: http://turbopasc.blogspot.mx sin más que decir buena suerte.