viernes, 28 de octubre de 2011

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

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.

jueves, 20 de octubre de 2011

Tipos de variables en pascal

TIPOS DE VARIABLES EN PASCAL 
Los tipos de variable en PASCAL le permiten al compilador reservar el espacio en bytes necesario para almacenar un determinado dato, también le sirven para determinar durante la ejecución de un programa que datos se pueden almacenarse en dicha variable. 

TIPOS DE VARIABLE NUMÉRICA
Para muchos programas se necesitan variables que sean capaces de almacenar números, PASCAL nos permite declarar distintos tipos de variables numéricas, algunos son: 

VARIABLE TIPO INTEGER
Una variables de tipo INTEGER puede manipular números entre -32768..32767 ocupando dos bytes para representarlos. EJEMPLO: Un ejemplo de como se declaran variables enteras es:
VAR
dato, mes :INTEGER; 

VARIABLE TIPO LONGINT 
Una variable de tipo LONGINT puede manipular numeros entre -2,147,483,648 .. 2,147,483,647 ocupando 4 byte para almacenarlos.
EJEMPLO: Un ejemplo de como se declaran variables LONGINT es:
VAR
ferma, y :LONGINT; 

DATOS TIPO REAL 
Diremos que un dato es de tipo real cuando necesitamos manipular con el datos como 2.5, 0.012, 34.56 etc.
PASCAL reconoce los siguientes tipos datos como reales:

VARIABLES TIPO REAL
Puede puede manejar, datos numéricos llamados de punto flotante, que se caracterizan por tener mantisa (parte fraccionaria) multiplicada por una potencia de 10. El número de dígitos que maneja en su mantisa se llama cifras significativas una variable tipo real puede manejar 11 cifras significativas en su mantisa y el rango de exponentes entre: 10-39 .. 10+38, para su representación real ocupa 6 bytes de memoria.
El rango de números es: 2.9*10-39 .. 1.7*1038

VARIABLES DE TIPO CARACTER
En muchos programas necesitamos tener sitios en memoria que puedan almacenar datos que son un solo carácter como 'A', 'a',....,'Z','z','0'...'9' o secuencias de caracteres como 'NANA'o 'Calle 40 d 30-200' para esos casos necesitamos variables que sean de tipo CHAR o STRING. 

VARIABLE TIPO CHAR
Una variable de tipo CHAR es aquella que va almacenar datos que están en el conjunto de los caracteres ASCII de un computadora.
Una variable CHAR se gasta un byte para la representación en memoria de uno de ellos.Utilice estos tipos de variables cuando necesite en un programa almacenar una letra del alfabeto, o un carácter como #, $, %, &, *, + etc, en general cualquier carácter de la tabla ASCII.
EJEMPLO: El siguiente es un ejemplo de la declaración de dos variables CHAR.
VAR
letra, resp :CHAR;

VARIABLE DE TIPO STRING
Una variable de tipo String puede almacenar una cadena de caracteres.
Se gasta tanto espacio en memoria como caracteres se quiera que el computador pueda almacenar de la cadena.
EJEMPLO: El siguiente es un ejemplo de la declaración de dos variables STRING.
VAR
nombre :STRING[10];
ciudad :STRING[7];

El diagrama muestra como estan las variables despues de una operación de lectura o de asignación como la siguiente.
nombre:=' LYNA JUAN ';
ciudad:='MEDALLO'; 

VARIABLES DE TIPO BOOLEAN 
Una variable de tipo BOOLEAN es aquel que puede almacenar en memoria los valores TRUE, FALSE.
Una variable BOOLEAN no se puede utilizar en instrucciones de lectura como READ o READLN.

martes, 18 de octubre de 2011

Estructura general de un programa en pascal

La estructura de un programa codificada en pascal debe ser la que se indica a continuación y no deberá alterar el orden de las secciones porque se perderían los lineamientos de programación estructurada.Program nombre(i,o);
               Uses  <librería>;
               Label  <declaración de etiquetas>;
               Const  <declaración de constantes>;
               Type  <declaración de datos definidos por el usuario>;
               Var  <declaración de variables>;
               Procedure  <declaraciones de procedimientos>;
               Function  <declaraciones de funciones>
Begin
           <bloque de instrucciones>
End.

Pascal

El PASCAL es un lenguaje de programación de alto nivel y de propósito general
que ha derivado del ALGOL-60 y fue diseñado para enseñar técnicas de programación
estructurada. Es de alto nivel porque su repertorio de instrucciones lo hacen próximo a
los lenguajes humanos y a los procesos humanos de pensamiento. Sus instrucciones o
sentencias se componen de expresiones de apariencia algebraica y de ciertas palabras
inglesas como BEGIN, END, READ, WRITE, IF, THEN, REPEAT, WHILE, DO.

Es de propósito general como el BASIC, el COBOL, el FORTRAN, el PL/I;
porque no está enfocado a un tipo especifico de aplicaciones.

Pero el PASCAL, a diferencia de otros lenguajes, contiene algunos rasgos
singulares que han sido diseñados para estimular el uso de la "programación
estructurada", un enfoque ordenado y disciplinado de la programación que conduce a
la obtención de programas claros, eficientes y libres de errores. Por ello, el PASCAL se
utiliza ampliamente en la enseñanza de la informática.

Con PASCAL no sólo se dispone de un lenguaje de programación, sino que
además se adquiere una metodología para el diseño y escritura de programas.

El nombre PASCAL fue elegido en honor de Blaise Pascal (1623-1662), brillante
científico y matemático francés entre cuyos logros se encuentra la invención de la
primera máquina de calcular mecánica.

El PASCAL fue desarrollado inicialmente a principios de los años 70 por Niklaus
Wirth, en la Universidad Técnica de Zurich, Suiza. El propósito original de Wirth fue
crear un lenguaje de alto nivel para enseñar programación estructurada.

La definición original del lenguaje debida a Wirth se suele conocer como
PASCAL estándar o " PASCAL estándar según definición de Jensen y Wirth " (4) .Pero
en la actualidad el término " PASCAL estándar " resulta ambiguo porque hoy existen
varios estándares diferentes.

La mayor parte de las implementaciones actuales se diferencian algo de la
definición original de Wirth. La Organización Internacional de Normas (ISO/DIS 7185)
ha propuesto un estándar europeo. También se desarrolla un estándar americano muy
parecido bajo los auspicios conjuntos del Instituto Nacional Americano de Normas
(ANSI, comité X3J9, plan BSR X3.97-1983) y del Instituto de Ingenieros Eléctricos y
Electrónicos ( IEEE ).

El PASCAL se usa hoy ampliamente en los Estados Unidos de América y en
Europa, como lenguaje de enseñanza y como lenguaje de propósito general para una
gran variedad de aplicaciones diferentes. Su uso se esta generalizando en ordenadores
grandes y pequeños. Efectivamente el PASCAL ha llegado a ser muy popular entre
usuarios de ordenadores personales, hasta el punto de que se especula sobre si podrá
llegar a sustituir al BASIC como lenguaje dominante en los microprocesadores en un
próximo futuro. Otros lenguajes como el FORTRAN y el COBOL, muy arraigados en
los ámbitos científico y comercial, han ido adoptando algunas de las estructuras de
datos y estructuras lógicas del PASCAL y son cada vez más parecidos.Es el resultado
de una tendencia generalizada hacia la práctica de la programación estructurada. Hoy es
frecuente oir hablar de FORTRAN estructurado, COBOL estructurado. Sin embargo,
en el PASCAL es donde se encuentra la vía más natural hacia el método estructurado y,
además, mantiene características diferenciadoras como la recursividad y las estructuras
de datos dinámicas.