miércoles, 7 de marzo de 2012

PROGRAMAS EN PASCAL

Estos son unos cuantos programas para Pascal:

Suma
 program suma;
uses crt;
var a,b,c:real;
begin
     clrscr;
     write ('¨¿Cuál es la primera cantidad?');
     read (a);
     clrscr;
     write ('¨¿Cuál es la segunda cantidad?');
     read (b);
     clrscr;
     c:=a+b;
     write ('El resultado es:',c:5:2);
     writeln;
     writeln;
     read (c);
     write('¨¿Deseas hacer otra suma?')
     until r=s
     repeat
     end.

Resta
program resta;
uses crt;
var a,b,c:real;
begin
     clrscr;
     write ('¨¿Cuál es la primera cantidad?');
     read (a);
     clrscr;
     write ('¨¿Cuál es la segunda cantidad?');
     read (b);
     clrscr;
     c:=a-b;
     write ('El resultado es:',c:5:2);
     writeln;
     writeln;
     read (c);
end.

Multiplicación
program multip;
uses crt;
var a,b,c: real;
begin
     clrscr;
     write ('¨¿Cuál es la primera cantidad?');
     read (a);
     clrscr;
     write ('¨¿Cuál es la segunda cantidad?');
     read (b);
     clrscr;
     c:=a*b;
     write ('El resultado es:',c:5:2);
     writeln;
     writeln;
     read (c);
end.

División
program division;
uses crt;
var a,b,c:real;
begin
     clrscr;
     write ('¨¿Cuál es la primera cantidad?');
     read (a);
     clrscr;
     write ('¨¿Cuál es la segunda cantidad?');
     read (b);
     clrscr;
     c:=a/b;
     write ('El resultado es:',c:5:2);
     writeln;
     writeln;
     read (c);
end.


Área de un cuadrado
program areacuad;
uses crt;
var l,m,a:real;
begin
     clrscr;
     write ('¨¿Cuánto mide el primer lado?');
     read (l);
     clrscr;
     write ('¨¿Cuánto mide el segundo lado?');
     read (m);
     clrscr;
     a:=l*m;
     write ('El resultado es:',a:5:2);
     writeln;
     writeln;
     read (a);
end.

Àrea de un rectángulo
program arearec;
uses crt;
var h,b,a:real;
begin
     clrscr;
     write ('          ESTE PROGRAMA TE SIRVE PARA CALCULAR');
     write (                     ' EL AREA DE UN RECTANGULO');
     write ('                                     introduce la altura :  ');
     read (h);
     clrscr;
     write ('introduce la base :  ');
     read (b);
     clrscr;
     a:=h*b;
     write (' el área es : ',a:5:2);
     writeln;
     writeln;
     read (a);
     end.


Área de un triángulo
program areatri;
uses crt;
var b,h,a:real;
begin
     clrscr;
     write ('¨¿Cuánto mide la base?');
     read (b);
     clrscr;
     write ('¨¿Cuánto mide la altura?');
     read (h);
     clrscr;
     a:=(b*h)/2;
     write ('El resultado es:',a:5:2);
     writeln;
     writeln;
     read (a);
end.

Área de un círculo
program areacirc;
uses crt;
var r,ac:real;
const pi=3.1416;
begin
     clrscr;
     write ('ESTE PROGRAMA SIRVE PARA CALCULAR EL µREA DE UN CÖRCULO');
     write ('¨¿Cuánto mide el radio del círculo?');
     read (r);
     clrscr;
     ac:=pi*(r*r);
     write ('El  área es:',r:5:2);
     writeln;
     writeln;
     read (r);
end.

Nombre
program nombre;
var a,b,c:string;
begin
write ('Dame tu(s) nombre(s):');
readln (a);
write ('Dame tu apellido paterno:');
readln (b);
write ('Dame tu apellido materno:');
readln (c);
write ('Tu nombre es:');
write (a,b,c);
writeln;
writeln;
end.

Reloj primero
program reloj2;
var hora,
    minuto,
    segundo:integer;
begin
    for hora:=0 to 23 do
    for minuto:=0 to 59 do
    for segundo:=0 to 59 do
    begin
    write (hora,':',minuto,':',segundo);
    if hora < 7 then
    writeln('de la madrugada')
    else if (hora>=7)and(hora<12)then
    writeln ('de la mañana');
    else if (hora>=12)and(hora<20)then
    writeln (' de la tarde');
    else writeln('de la noche');
    end;
    end.

Reloj segundo
program reloj;
uses crt;
var h,m,s:integer;
begin
clrscr;
for h:=0 to 23 do
for m:= 0 to 59 do
for s:=0 to 59 do
begin
clrscr;
write(h,':',m,':',s,':');
 if h < 7 then
writeln (' Por la madrugada')
 else if(h >=7 ) and ( h<12) then
writeln (' Por la mañana')
 else if (h >=12) and (h<20) then
writeln (' Por la tarde')
else writeln ('Por la noche');
delay(1000);
end;
end.

miércoles, 12 de octubre de 2011

PASCAL

Definición
El lenguaje de programación en Pascal, es un lenguaje de alto nivel, y de proposito general, lo cual quiere decir que se puede utilizar para cualquier tipo de propósitos. El lenguaje de programación en Pascal se considera un lenguaje estructurado, sencillo y practico para todos aquellos usuarios que se inician en el mundo de la programación, ya que fue creado con fines de aprendizaje.

Al ser Pascal un lenguaje estructurado, sirve de base para cualquier otro lenguaje de alto nivel, por estas caracteristicas es utilizado en las universidades e institutos de educacion para inicializar a los futuros ingenieros en sistemas o informatica.

El lenguaje de programación Pascal, es idoneo en el estudio y definicion de las estrucuras de datos, su facil definicion lo hace manejable para un programador novato.

Con la programación en Pascal, se pueden realizar desde programas formales, rutinas, utilitarios, hasta cualquier clase de video juegos.

Programación en Pascal es un lenguaje de sintaxis sencilla, muy estructurado y que comprueba exhaustivamente todo tipo de datos.

El mejor de los propósitos de programación en Pascal es que enseña buenas formas de programación, con lo cual se utiliza mucho en la enseñanza, por todos los motivos nominados anteriormente, por su sencillez, su estructuración y su facilidad de lectura y entendimiento.
Existen varios dialectos locales de programación en Pascal, entre ellas el Turbo Pascal, el cual acepta intrucciones de Pascal.

Partes de un programa en Pascal

Un programa en Pascal consta de las siguientes partes:

Una cabecera, precedida por una palabra reservada y un identificador, a saber:

Program IdProg;

Variables en pascal

Para declarar variables en pascal se usa la siguiente instrucción:
  • Nombre:tipo
Los tipos mas comnunes de variables en pascal son:

1.- Enteras.

Integer: -32768 a 32767 (más utilizado)
Word: 0 a 65535
Shortint: -128 a 127
Byte: 0 a 255
Longint: -2*10.9 a 2*10.9


Ejemplo: var entero:integer value 0;


2.- Decimales.
Real (más utilizado)
Single
Double
Extended
Comp


Ejemplo: var decimal:real value 3.45;


3.- Caracteres.
Char('c')


Ejemplo: var caracter:char value 'c';


4.- Cadena de caracteres.
String ('máx. 255 caracteres')


Ejemplo: var cadena:string value 'Cadena de caracteres';


5.- Boleanos.
Boolean que tiene dos únicos valores: True/False


Ejemplo: var booleano:boolean value true;

Operadores en pascal


Operador de asignación. Asignación de valores en pascal:

Decimal := 7.5; {de tipo real}
Letra := ’a’; {de tipo char }
Cadena := ’Hola’; {de tipo string}
Cierto := trae; {de tipo boolean}


Operadores Aritméticos. Se usan para realizar operaciones en pascal:


a + b Suma a y b
a - b Resta a y b
a * b Multiplica a y b
a / b División de a y b
a div b División entera de a y b
a mod b Resto de la división de a y b
Navegación

Expresiones
Una expresión es una combinación de valores y operaciones que, al ser evaluados, entregan un valor.
Algunos elementos que pueden formar parte de una expresión son: valores literales (como 2, 'hola', true o 5.7), variables, operadores y llamadas a funciones.
Por ejemplo, la siguiente expresión 4 * 3 - 2 entrega el valor 10 al ser evaluada.
El valor de la expresión n div 7 + 5 depende del valor que tiene la variable n en el momento de la evaluación.
Una expresión está compuesta de otras expresiones, que son evaluadas recursivamente hasta llegar a sus componentes más simples, que son los literales y las variables.
Por ejemplo, en la expresión:
b * b - 4 * a * c
las subexpresiones que son evaluadas son las siguientes:
b * b
b
4 * a * c
4 * a
4
a
c
Ejercicio: ¿por qué no a * c?

Operadores

Un operador es un símbolo en una expresión que representa una operación aplicada a los valores sobre los que actúa.
Los valores sobre los que actúa un operador se llaman operandos. Un operador binario es el que tiene dos operandos, mientras que un operador unario es el que tiene sólo uno.
Por ejemplo, en la expresión 2.0 + x el operador + es un operador binario que representa la suma, y sus operandos son 2.0 y x.
Los operadores en Pascal se pueden clasificar en: aritméticos, relacionales y lógicos.

Operadores lógicos

Los operadores lógicos son los que tienen valores lógicos (verdadero y falso) como operandos y como resultado. Los dos valores lógicos posibles son True (verdadero) y False (falso).
Hay tres operadores lógicos:
  • and (en español: «y») representa la conjunción lógica;
  • or (en español: «o») representa la disyunción lógica.
  • not (en español: «negación») representa la negación lógica.
Los operadores and y or son binarios, mientras que not es unario.
La siguiente tabla muestra todos los resultados posibles de las operaciones lógicas. Las primeras dos columnas representan los valores de los operandos, y las siguientes tres, los resultados de las operaciones.
p
q
p and q
p or q
not p
True
True
True
True
False
True
False
False
True

False
True
False
True
True
False
False
False
False


Operadores aritméticos

Los operadores aritméticos son los que representan operaciones numéricas. Tanto sus operandos como sus resultados son valores numéricos.
Algunos operadores aritméticos binarios son:
  • la suma +;
  • la resta -;
  • la multiplicación *;
  • la división real /;
  • la división entera div (cuociente de la división);
  • el módulo mod (resto de la división).
Los operadores +, - y * pueden tener como operandos números enteros o reales. Si tienen al menos un operando real, el resultado es real.
La división real / siempre entrega como resultado un real. Por ejemplo:
4 / 2      {→ 2.0}
5 / 2      {→ 2.5}
5.1 / 2.2  {→ 2.31818181818}
1 / 4.0    {→ 0.25}
La división entera div tiene operandos enteros y resultado entero. El resultado es el cuociente de la división, es decir, no tiene decimales:
4 div 2   {→ 2}
5 div 2   {→ 2}
22 div 7  {→ 3}
El módulo mod entrega el resto de la división:
4 mod 2      {→ 0}
5 mod 2      {→ 1}
1849 mod 10  {→ 9}
Una relación entre div y mod que siempre se cumple es:
(a div b) * b + (a mod b) = a

Operadores relacionales

Los operadores relacionales son los que permiten comparar valores. Sus operandos son cualquier cosa que pueda ser comparada, y sus resultados siempre son valores booleanos.
Algunos operadores relacionales son:
  • el igual a =;
  • el distinto a <>;
  • el mayor que >;
  • el mayor o igual que >=;
  • el menor que <;
  • el menor o igual que <=;

Precedencia de operadores

La precedencia de operadores es una regla que especifica en qué orden deben ser evaluadas las operaciones de una expresión.
En Pascal, la precedencia está dada por la siguiente lista, en que los operadores han sido listados en orden de mayor a menor precedencia:
  • not
  • *, /, div, mod, and
  • +, -, or
  • <, <=, >, >=, <>, =
Esto significa, por ejemplo, que las multiplicaciones se evalúan antes que las sumas, y que las comparaciones se evalúan después de las operaciones lógicas.
Operaciones que están en un mismo nivel son evaluadas en el orden en que aparecen en la expresión, de izquierda a derecha:
15 * 12 mod 7     {→ 5  pues es igual a (15 * 12) mod 7}
Para forzar un orden de evaluación distinto a la regla de precedencia, deben usarse paréntesis:
15 * (12 mod 7)   {→ 75}
Hay que tener en consideración las reglas de precedencia, pues aplicarlas de manera incorrecta puede conducir a resultados incorrectos. En algunos casos, el programa ni siquiera compilará. Por ejemplo, la siguiente expresión es inválida:
a < b and c < d
pues and tiene mayor prioridad que <, así que la primera subexpresión que se evaluará será b and c, que es incorrecta pues b y c deben ser números, y < opera sólo sobre valores booleanos. La siguiente expresión es correcta:
(a < b) and (c < d)

Mod Modulo (residuo de la división entera)Ejemplos:

Expresión Resultado

7 / 2 3.5

12 mod 7 5

4 + 2 * 5 14

Comparación. Para comparar elementos, devuelven true si es verdadero
y sino false.

a <> b a es mayor que b
a = b a es igual que b
a >= b a es mayor o igual que b
a <= b a es menor o igual que b a <> b a es distinto de b

Operadores lógicos.

OR OR lógico a OR b Devuelve true si alguna de las dos es true
AND AND lógico a AND b Devuelve true únicamente si las dos son true

AND_THEN a AND_THEN b Lo mismo que el and lógico solo que si a no se cumple
no se comprueba la sentencia b.

OR_ELSE a OR_ELSE b Lo mismo que el or lógico solo que si a es true
no se comprueba la sentencia b.

NOT Niega una sentencia.


IdProg tiene como propósito identificar con un nombre apropiado el sentido del programa, es decir, cuál es el proceso que lleva a cabo.

Un área de definiciones y declaraciones de objetos diversos, cada una representada por medio de una palabra reservada, que establece una sección, en el cuál existe una cierta libertad para el orden, salvo que obligatoriamente debamos escribir alguna sección antes de otra, por motivos de que un identificador antes de poder utilizarlo debe estar previamente definido. Las secciones son las siguientes:

uses
{lista de Id.de unidades}
const
{lista de Id. constantes}
type
{lista de tipos}
procedure
{Módulo procedimiento}
function
{Módulo función}
var {Ubicadas en el Segmento de Datos}
{lista de variables globales}

y un bloque principal, encerrado entre las palabras reservadas:

begin
sentencia1;
sentencia2;
.
sentencian
end.

Una palabra reservada en Pascal cumple un propósito específico, por lo tanto nunca debe ser utilizada para que cumpla otro rol. Las palabras que aparecen en negrita en el esquema anterior son palabras reservadas.
Un identificador es una palabra creada por el usuario y sirve para definir nombres de unidades, constantes con nombres, tipos, campos de registros, nombres de procedimientos, funciones y variables.Un identificador jamás puede ser una palabra reservada, por lo dicho en el apartado anterior.

En la sección uses definimos las unidades que se van a incorporar a nuestro programa. Una unidad es un conjunto de objetos previamente compilados y cuyo código se agrega al código de nuestro programa, solo el programa principal y sus módulos desarrollados deberán ser compilados. Una unidad compilada tiene extensión .TPU, mientras que el archivo de código fuente tiene la misma extensión que el programa .Pas. Los objetos que componen una unidad son los mismos objetos vistos en el esquema previo, vale decir, otras unidades, constantes con nombre, tipos, procedimientos, funciones y variables.

Funciones predefinidas en Pascal
Pascal provee un conjunto de funciones que pueden ser llamadas dentro de una expresión.
Las llamadas a funciones se hacen poniendo el nombre de la función, y luego su argumento entre paréntesis:
Abs(-2)
Exp(4.5)
Más adelante aprenderemos a crear nuestras propias funciones.
Funciones matemáticas
Las funciones matemáticas de Pascal son:
Abs(x): valor absoluto;
Exp(x): exponencial ex ;
Ln(x): logaritmo natural;
Sin(x): seno;
Cos(x): coseno;
ArcTan(x): arcotangente;
Sqr(x): cuadrado;
Sqrt(x): raíz cuadrada.
Una función que opera sólo sobre valores enteros es Odd(n), que entrega True si n es impar.

Funciones de conversión de real a entero
Existen dos funciones para convertir un número real a un entero:
Trunc(x): truncamiento (elimina los decimales), y
Round(x): redondeado (aproxima al entero más cercano).
Algunos ejemplos:
Round(5.4)  {→  5}     Trunc(5.4)  {→  5}
Round(5.7)  {→  6}     Trunc(5.7)  {→  5}
Round(2.0)  {→  2}     Trunc(2.0)  {→  2}
Round(-8.4) {→ -8}     Trunc(-8.4) {→ -8}
Round(-8.6) {→ -9}     Trunc(-8.6) {→ -8}
Funciones sucesor y predecesor
En tipos de datos para cuyos valores tenga sentido, las funciones Succ y Pred permiten obtener respectivamente el sucesor y el predecesor de un valor.
Por ejemplo:
Succ(10)    {→ 11}     Pred(10)   {→ 9}
Succ('y')   {→ 'z'}    Pred('y')  {→ 'x'}
Succ(False) {→ True}   Pred(True) {→ False}
Succ(-5)    {→ -4}     Pred(-5)   {→ -6}
Generalmente, ambas funciones son inversas una de la otra, y en la mayoría de los casos se cumplen estas relaciones:
Succ(Pred(x)) = x
Pred(Succ(x)) = x
Ejercicio: ¿cuándo no se cumplen?
Funciones de mapeo de caracteres
Los caracteres (valores de tipo Char) son representados internamente en el computador como números enteros. Para ello, tiene que haber un mapeo que asocie cada símbolo a un número. El ejemplo más conocido de eso es el código ASCII, que mapea los números del 0 al 127 a caracteres.
Este mapeo es accesible desde Pascal usando las siguientes funciones:
Ord(c) entrega el número asociado al caracter c;
Chr(n) entrega el caracter asociado al número n.
Ambas funciones son inversas mutuas:
Ord(Chr(n)) = n
Chr(Odr (c)) = c

Referencias