Turbo Pascal 7.0

Es la ultima emisiol creada por "Borland" para plataforma modo texto e incorpora un E.I.D (Entorno Integrado de Desarrollo) que permite editar mas de un programa a la vez, ompila, Depura, Ejecuta, Ejecuta paso a paso, etc.

El entorno es se carga de dos maneras: TURBO.EXE (Pa ra PC sin memoria Extendoda), o TPX.EXE (Para PC com memoria extendida).

El entorno es muy amigable contiene una barra de menu y una de edicion multiple. A los distitas ventanas de edicion se accede con la tecla ALT + el numero de ventanacs con F6, se compila con la tecla ALT+F9 , se chequea con la tecla F9 y con ALT + la tecla resaltada las demas cosas.


Reglas de codificasion

Palablas reserbadas son aquellas que utilizan exlusibamente el lenguaje para identificar parte de un programa o secuensia por lo tanto no puede ser identificado por ninguna otra cosa.

  1. Cada instruccion termina con punto (.).
  2. Una monoisncripcion termina co n punto y coma (;).
  3. No nesesita que una instrucion ocupe una instruccion.
  4. Es indistinto escrivir con mayusculas o minusculas;
  5. Cada programa inicia con begin y termina con end.
  6. Para una mejor comprencion del codigo fuente se sigue la tecnica de identificasion.

Estructuras de programacion de pascal

Progarm <Identificador>

Uses <Unidades>;

Prosedure <Prosedimientos>

Function <Funciones>

Type <Tipos de datos (creados por el usuario)>;

Const <Definicion de constantes>;

Var <Definicion de variables>;

Begin

<Sentensias>

End.

Ademas un programa puede tener subprogramas llamados prosedimientos (Palabla reservada Prosedures) Que guarda la misma estructura que un programa y puede usar funciones definidas por el usuario (Palabla reserbada Function).

Reglas de identificacion

  1. Los identificadores no pueden empezar con numeros o espasion o caracteres espesiales. Si quieren ponesr espasios en blanco lo pueden remplasar con un guion.

  2. los identificadores pueden tener como minimo un caracter y 64 como maximo.

  3. El mismo programa no puede haver 2 identificadores.

  4. Se recomienda que el identificador tenga de nombre la funcion que cumpla el programa

Constantes y variables

Las constantes son areas de memoria a la que se la ssigna un nombre y un valor. Ese valor permanese inalteradamente mientras la ejecusion del programa y se podra haser referencia cada vez que se nesesite a travez de su identificador.

El area de declaracion de constante comiensa con la palabra (CONST). La declaracion de la constante implica un identificador el signo igual "=" y el valor que se le va a asignar. (El tipo de dato es autodefinido).

<ID1> = <VALOR>

<ID2> = <VALOR>

EJEMPLO:

meses = 12,

Horas = 24,

Cartel = 'hola';

Las varibles son areas de memoria que se conservan bajo un identificador. El valor de esta area puede puede cambiarse durante la ejecusion del programa (El cmbio puede produsirse por una asignacion o por una entrada de datos). La declaracion de la bariable comiensa con la palabra reservada (VAR). Cuenta con uno o mas identificadores separados por comases seguido de dos puntos ":" y la descripcion del tipo de datos que contendra la variable (Los tipos de datos pueden ser definidos por el usuario o predefinidos)

EJEMPLO:

<ID1> : <TD1>

A:real;

<ID1>,<ID2>,<ID3>: <TD2>

B,C;D:char;

Tipos de datos pre definidos

Turbo pascal prove de 5 tipos pre-definidos de enteros y ellos son:

Tipo
Rango
SHORTINT
-128 ..127
INTEGER
-2147483648 .. 214748647
LONGINT
-214748348 .. 214748367
BYTE
0 .. 255
WORD
0.. 65535

Un tipo real tiene un subconjunto de valores que tienen un subconjunto de numeros reales los cuales pueden ser representados en notasion en punto flotante con determinados numeros de dijitos.

Tipo
Rango
REAL
2.910 E -39 .. 1.710 E 38
SINGLE
1.510 E -45 .. 3.410 E 38
COMP
-2 E 63 +1 .. 2 E 63 - 1
DOUBLE
5.010 E -324 .. 1.710 E 308
EXTENDED
.910 E -4932 .. 1.110 E 4932

 

Un tipo ordinal usa el codigo ASCII y estos pueden ser:

Tipo
Rango
CHAR
1 caracter
SRTING
255 caracteres

Operadores

Operador
Descripcion
=
Igual
<>
Distinto o No igual
>
Mayor
<
Menor
>=
Mayor igual
<=
Menor igual

Operadores aritmeticos

Operador
Descripcion
+
Mas
-
Menos
*
Multiplicasion
/
Divicion
MOD
Modulo
DIV
Divicion entera

Operadores logicos

Operador
Descripcion
NOT
NO
AND
Y
OR
O

Asignasiones

Son cambios internos que permiten en cambiar el valor a una variable.

El el diagrama de flujo se representa como una caja donde se ubica la variable y el valor asignado. El valor que se le otorga a una variable en literal, otra variable, una constante, un resultado de una operacion o una funcion.

Esto en pascal el operador para asignar es el dos punto mas igual ":=". Entonses se pone la variable a asignar el dos punto igual y el valor que queremos que tome.

Ejemplo:

<LITERALl> a:=0;

<VAR> a:=b;

<CONSTANTE> a:=meses;

<FUNCION> a:=sqr(b);

<OPERADOR> a:=b+(c*2);

NOTA: (Siempre se asigna de derecha a izquierday nunca se puede asignar una constantes por que ocasionaria un error semantico, solo se asignan variables);

Entradas y salidas

La entrada son cuando nosotros ingresamos un dato y las salidas es cundo la computadora nos da el resultado.

La entrada se realiza mediante la palabra reservada Read o Readln, la que devemos usar para una entrada de datos es Readln por que si usamos la otra cuando queremos haser otra entrada con otra variable usara la misma cambiando el programa y solo se usa Read para entradas de datos mediante archivos que veremos mas adelante.

La sintaxis de una entrada es:

Readln(a);

Con eso ingresaremos un dato en a, (Es fasil no).

Otra entrada entrada es la readkey es diferente a la entrada readln por que esta es para ingresar sola mente una tecla a la vez o sea una variable char. Esta entrada no esta en lo estandar de pascal que es muy redusido por eso cuando uno quiere ingresar esta estrada previamente se tiene que usar la unidad crt, (USES CRT; )

Las salidas tienen como read dos formas Writeln o Write estas hasen la misma funcion solo con la diferencia que writeln baja de renglon y write no, esto se usa segun la nesesidad.

La sintaxis es:

Write(a);

Esta mostrara el valor de "A" pero le podemos agragar texto tambien.

Write('Ingrese un numero');

En este caso cuando agregamos texto lo ponemos entre comillas simples. Pero en otro caso lo podemos combinar;

Write('El resultado es ',a ,' metros');

Veran que este caso la variable se encuentra estre texto y esta separada por comas y el texto, asi es como deve estar.

Ejemplo de un programa con entrada y salidas:

Program Entradas_y_salidas;

var a:string;

begin

Write('Ingrese una cadena ');

Readln(a);

Writeln('La cadena es ');

readln;

end.

Esto ejecutandose se ve:

Ingrese una cadena hola

La cadena es hola

Desiciones

Las desiciones se utilizan para obtener valores verdaderos o falsos segun lo que queremos desidir, esto nos sirve para cambiar el camino de la programacion segun las diferentes prosesos que podamos hacescomo por ejemplo si queremos ver si un numero es positivo o negativo.

Esta desision en pascal se llaman IF que tradusido es SI y su sintaxis es la siguiente;

Readln(A);

If A > 0 then

write('el numero es positivo');

end;

Esta es una desicion simple pero hay desisiones mas complejas y estas se llaman desiciones anidadas y estas se pueden anidar cunatas beses puedan pero cuidado que se puede pones muy defisil si anidan mucho.Estan se llaman asi por que son desiciones compuestas, y esta es su sintaxis.

Readln(A);

If A > 0 then

begin

Writeln('El numero es positivo');

end

else

begin

Writeln('El numero es negativo');

end;

end;

Vieron que algunas cosas cambiaron como aparesio un begin y end esto es para diferenciar la distintas desiciones y diempre el untimo end que es el end final va con punto y coma . Diran si esto es obligatorio "SI" pero siempre hay una esepcion cuando hay una sola linea dentro del if como en el primer caso.

Desisiones multiples

Las desisiones multiples son como los IF pero ellos van directamente a la sentensia llamada , ademas son mas ordenados y mas fasiles de usar a la hora de tener muchas opciones y su sintaxis es:

op:=readkey;

case espresion of

'desicion':sentensia;

'desicion':sentensia;

end;

Ejemplo:

var op:char;

begin

write('Ingrese una opcion');

write('A.suma');

write('B.resta');

op:=readkey;

case op of

'A','a':begin

....

end;

'b','B':begin

....

end;

else

write('Apreto otra tecla que no esta en el menu ');

end;

Siclos Repetitivos

Los siclos repetitivos son parte de la programacion estructurada. Estos nos permiten no repetir tantas veses lo mismo y ademas como sabemos en un programa se nesesitan mas de una vez comprobar algo o conprobar lo mismo para diferentes variables, esto es como un if pero antes de comprovarlo y listo cundo termina buelbe a empesar cuantas veses nosotros queramos. En estos siclos podemos encontrar el FOR, REPEAT, WHILE

For

El siclo repetitivo es uno de los mas fasiles de usar, este tiene la propiedad que se repite cuantas veses nosotros queramos, " dira si eso lo sijo antes" pero en este le diremos directamaente si lo queremos repetir 5,4,6 o 410 veses sin problemas solo hay que espesificarlo de la siguiente forma.

Su sintaxis es la siguiente:

FOR I := 1 to 10 DO

Begin

...

end;

Esto se dise hasi, "I" es igual a 1 a 10, esto quiere desir que se repetira 10 veses, por que la variable inicial que en este caso es 1 y la final es 10 y cuando "I" llege contando a 10 finalizara, diran ¿porque ? por que las variables inisial y la final son como una contadora.

Ejemplo:

Program Para;

var a,b:integer;

begin

write('Ingrese un valor para multiplicar');

read(a);

For b := 1 to 10 do

begin

c:=a*b;

writeln(a,'Por ',b,'Es ',c)

end;

readln();{este readln es para dar una pausa a la ejecusion}

end.

En dos se veria

Ingrese un valor para multiplicar 2

2 Por 1 Es 2

2 Por 2 Es 4

2 Por 3 Es 6

2 Por 4 Es 8

2 Por 5 Es 10

2 Por 6 Es 12

2 Por 7 Es 14

2 Por 8 Es 16

2 Por 9 Es 18

2 Por 10 Es 20

Repeat

El siclo repeat tiene como propiedad que repite algo hasta que sea verdadero y tambien se repite porlomenos una vez o sea que cuando programemos sea nesesario que se repita porlomenos una vez o que esto no modifique el programa por que puede causar errores semanticos en el programa. Si no desea que ocurra eso use el siclo while aunque no se confie mucho en este siclo.

Su Sintaxis es:

Repeat

.....

until a >= 10 ;

Es to se repetira hasta que a sea Igual o mayor a 10 o sino solo segira repitiendo hasta que el valor sea verdadero.

NOTA: cuidado cuando usamos acumuladoras o contadoras que el valor que llege a tomar en un siclo repetitivo llegue a ser verdadero.

Nota 2: Cuando use este tipo de siclos repetitivos usa en el prinsipio del porgrama "variable":=0 paraponer limpiar las variables despues que se allan acumulado los datos en la repetisiones anteriores para no traer errores .

Ejemplo:

Program ejemplo_repetir;

Var a,b,c:integer;

begin

b=0;

write('Ingrese un valor para multiplicar');

read(a);

repeat

b:=b+1;

c:= a*b;

writeln(a,'Por ',b,'Es ',c);

until a = 10;

readln(); {este readln es para dar una pausa a la ejecusion}

end.

En dos se veria

Ingrese un valor para multiplicar 2

2 Por 1 Es 2

2 Por 2 Es 4

2 Por 3 Es 6

2 Por 4 Es 8

2 Por 5 Es 10

2 Por 6 Es 12

2 Por 7 Es 14

2 Por 8 Es 16

2 Por 9 Es 18

2 Por 10 Es 20

While

Este siclo es como es repeat pero alreves esto quiere desir que tiene la propiedad que se finaliza cuando sea falso, no se ejecuta porlomenos una vez solo cuando la condision sea falsa y se tiene que reitera abajo la entrada del while como en el ejemplo.

Su Sintaxis es:

while a ='f' do

begin

......

end;

NOTA: Cuidado en este siclo ponerle pundo y coma al final de la expresion Do.

Nota 2: Cuando use este tipo de siclos repetitivos usa en el prinsipio del porgrama "variable":=0 paraponer limpiar las variables despues que se allan acumulado los datos en la repetisiones anteriores para no traer errores .

Ejemplo

Program Mientras;

var
c:integer;
edad,s,suma:real;
n:string;
begin
c:=0;
edad:=0;
writeln('ingrese su nombre ');
readln(n);
writeln('ingrese la edad ');
readln(edad);
while edad < 21 do
begin
suma:=suma+edad;
c:=c+1;
writeln('ingrese su nombre ');
readln(n);
writeln('ingrese la edad ');
readln(edad);
end;
s:=suma/c;
writeln('el poromedio es ',s:2:2);
readln
end.

En dos se veria

ingrese su nombre Nahuel

ingrese la edad 18

ingrese su nombre Pedro

ingrese la edad 17

ingrese su nombre Juan

ingrese la edad 21

el poromedio es 18.66

Con estos siclos puedes hacer muchas cosas, entonses a practicarlos para poder manejarlos mejor y provarlos para entender lo ya dicho antes.

Manejo de Cadenas

Las Cadenas o en ingles (STRING), pueden ser manejados con funciones que pascal tiene definidas para modificar cadenas ya existentes al gusto del programador, nos podemos encontrar con la funcion Delete, Concat, Pos, Copy, length Insert, con esta breve pero consisa introduccion veremos a continuacion la sintaxis de cada una.

Delete

Delete esta funcion como su nombre lo indica en ingles borra parte de la cadena que le hemos indicado con un valor inicial hasta un valor final.

Delete (var s: string, Inicio:integer, fin: integer);

Ejemplo

Var s:string;

begin

s:="Programar lo mas mejor ";

delete(s,18,6);

write(s);

end.

En dos se veria

Programar lo mas

Pos

Pos retorna en forma numerica el lugar donde se encuntra el caracter que le pedimos buscar y su sintaxis es.

pos("caracter a buscar", var s:string);

Ejemplo

var s:string;

bagin

s:="palabra a buscar";

writeln("la letra a se encuentra el la posicion", pos("a",s));

end.

En dos se veria

la letra a se encuentra en la posicion 2

Concat

Concat concatena dos strings o sea une dos cadenas y su sintaxis es:

concat('cadena1',cadena2');

Ejemplo

var s:string;

begin

s:= concat('hola ','amigos');

writeln(s);

end.

En dos se veria

hola amigos

NOTA: Esta funcion no sirve de mucho por que hay formas mas fasiles de concatenar texto y esta es:

S:= 'hola '+'amigos';

Copy

Copy como la funcion dise en ingles copia una parte de la cadenay su sintaxis es:

copy(cadena,de_donde,hasta):

Ejemplo

var s:string

begin

s:='cadena original ');

s:=copy(s,4,6);

writeln('s);

end.

En dos se veria

ena

Vectores

Las matrises son como variables que tienen una cantidad de variables internas o sea antes de usar muchas variables usamos una. La Matris se representa de la sigiente manera:

8 20 9 4 5 9

Estas variavles se llaman array sirven para no escrivir una sierta cantidad de variables del mismo tipo se usa una solo arreglo como veremos mas adelante. Su sintaxis es:

var a:array [1..50] of string;

NOTA:Siempre entre corchetes tiene que ir el rrango en este caso 1 hasta 50, que despues se usara de sub indise

Ejemplo

var

promedio:array [1.3] of integer;

begin

write('Ingrese 3 notas para promediarlas');

for a:=1 to 3 do

begin

readln(promedio[a]);

end;

a:=promedio[1]+promedio[2]+promedio[3]/3);

write('El promedio es ",a);

end.

Con este ejemplo te tubo que quedar un poco claro ¿no?, este es un ejemplo bastante basico pero los array se usan es situasiones que las variables se tienen que almasenar en gran cantidad pero no se tiene que destruir ninguan de esa informasion.Tambien se puede usar los subindises numericos para relasionarlos con algo por ejemplo como hice en el ejemplo los relasione con las notas (el subindise 1 tara laprimer nota en 2 tara la segunda y 3 tara la tersera );

Matrises

Las marises funcionan de la misma manera que los vectores pero estas estos antes de tenes filas solas tinen filas y columnas esto es así por que son vectores de vectores y le dan la fonra de un cuadro como este:

4
10 11
5 1 20
9 7 0

Ejemplo 1

var a:= array[1..4] of array [1..3] of real;

De otra forma mas sensilla de haser lo mismo es:

Ejemplo 2

var a:= array[1..4,1..3] of real;

Ejemplo

var a:= array [1..2,1..2] of real;

c:real;

io:char;

begin

write('Ingrese el impuesto a pagar del departamento ');

readln(c);

write('Ingrese el departamento, 1,2,3,4');

op:=readkey;

case op of

'1':a[1,1]:=c;

'2':a[1,2]:=c;

'3':a[2,1]:=c;

'3':a[2,2]:=c;

end;

end.

NOTA: Emos visto que para ingresar el dato tenemos que ingresar el indise y el sub indise que le dan la posicion a la matriz.

type

Los tipos son usados para haser "nuevos tipos de variables "lo digo entre comillas por que en realidad es para juntar algo en un solo tipo es el podemos hacer un tipo de una matriz definida o hase tipos con las estasiones ej (otoño, invierrno, primavera, verano). si no entendieron nada a continuasion veremos su sintaxis y la aclarasion de todo esto.

type

vector =array [1..20] of real;

var a:vector;

Entonses aqui emos creado un tipo llamado vector que en realidad es un vector de uno a veinte y este lo podemos usar cunatas veses queramos con el nombre vector siembre y cundo sea nesesario usar un vector de esas caracteristicas por que no queremos derochar mucha memoria.A hora bien veremos otro ejemplo:

type

estacion :(otoño,invierno,primavera,verano),

fruta:(manzana,frutilla,naranja,pera);

var

a:fruta;

b:estacion;

begin

a:=manzana;

b:=verano;

end.