Palabras reservadas de Pascal
|
and |
else |
mod |
real |
|
array |
end |
nil |
set |
|
begin |
file |
not |
then |
|
boolean |
for |
of |
to |
|
case |
function |
or |
type |
|
const |
goto |
packed |
until |
|
char |
if |
procedure |
var |
|
div |
in |
program |
while |
|
do |
integer |
record |
with |
|
downto |
label |
repeat |
|
Tipos de datos
|
byte |
boolean |
longint |
|
char |
single |
double |
|
integer |
string |
|
|
real |
word |
|
constantes
basicamente
Pascal maneja dos tipos de constantes : de caracteres string y numericas
De
caracteres string que se hallan encerrados o delimitados por el carácter
comillas . El tamaño de su longitud depende del compilador. Cualquier carácter
puede puede formar parte de la constante
numericas : En Pascal
estamdar estan conformadas por digitos, el punto decimal y un signo . los dos
ultimos componentes dependen del tipo de constante.
La
declaracion de variables presenta el siguiente prototipo :
const
variable=valor ;
un
ejemplo de esto podria ser :
const
pi=3.14 ;
radio = 20.8 ; titulo = ‘codigo’ ;
Identificadores
Las
reglas para los identificadores en Pascal Son :
Operadores
* Multiplicacion
/ Division real
div division entera
mod residuo de division
entera
+ adicion, union de
conjuntos
- substraccion, diferencia de conjuntos
= igual
< > no igual
< menor
> mayor
< = menor o igual
> = mayor o igual
in mienbro de conjunto
not negacion logica
or disyuncion logica
and conjuncion logica
(de mayor a menor)
|
Precedencia |
operadores |
|
4 |
not |
|
3 |
* / div mod and |
|
2 |
+ - or |
|
1 |
= <> > >= <= |
Las
reglas de evaluacion de una expresion es :
Control de flujo
Secuencias
En
Pascal una secuencia en un numero finito de sentencias.
Sentencias
condicionales
En
Pascal las sentencias condicionales son el if y case (similar con
el swicht en C/C++)
if
La
sintaxis en pascal de esta sentencia es la siguiente :
if
condicion then instrucción 1
else
instrucción 2 ;
La
condicion debe ser de tipo buleano, si el resultado es verdadero se ejecuta la
instrucción 1, si es falso se ejecutara la instrucción 2 . Si es requerido ejecutar
mas de una instrucción, se debera hacer el uso de una instrucción compuesta.
Para satisfacer los requerimientos de sintaxis.
Por
ejemplo :
if
z=2
then begin
z :=k*t ;
y :=m
end
else begin
b := a ;
z :=k+b
end ;
case
Permite
seleccionar de un cojunto de alternativas una de ellas, en base al valor de una
variable de tipo enumerado.
Iteraciones
En
pascal estan tres sentencias de iteracion : while, repeat y for
repeat
esta
sentencia consta de dos partes :
La
sintaxis de la instrucción es la siguiente :
repeat
instruccion1 ;
instruccion2 ;
..........
until
condicion ;
while
su
forma general es :
while condicion do begin
instruccio1 ;
instrucción
2 ;
instruccion
end ;
for
Su
forma general es :
for
variable de control
{ :=
valor inicial to valor final}
{ :=
valor inicial downto valor final}
do
instrucción ;
La
sentencia for con las opciones to downto implican en su orden, un aumento o
disminucion de uno con respecto a su valor inicial. El limite de la iteracion
del bloque de instrucciones vendra dado por el valor final
Los
valres inicial y/o final podrian ser expresiones cuyo resultado sea un entero.
La
opcion to, el valor inicial tiene que ser menor o a lo sumo igual a su valor
final.
Com
la opcion downto , el valor inicial debe ser mayor o a lo sumo igual que el
final
Por
ejemplo ;
N :=20 ;
J=10 ;
For I := J to N do
A :A+1 ;
Variables
Las
variables en Pascal se deben definir siempre al principio del programa, en una
parte destinada a esto..
Por
ejemplo :
Program
hola ;
type
.........
var
i,j,k :integer ;
x,y
:real ;
Pascal
posee variables globales y son accesibles por cualquier modulo del programa, su
ciclo de vida es todo el programa.
Tambien
existen variables locales al procedimiento o funcion, tienen existencia propia,
cuando el modulo , procedimiento o funcion es invocado y permanecen con vida
hasta su terminacion, su visibilidad es unicamente para ese modulo.en la cual
la variable existe.
Estructuras
Son
manejadas con la misma logica de otros lenguajes.
Su
prototipo es :
type
nombre
del tipo de registro = record
v1,v2
tipo v ;
v3
tipo w ;
end ;
var
variable :registro ;
En
esta declaracion se especifica en la parte var si hay variables de tipo
estructurado.
Un
ejemplo de una estructura podria ser :
type
registro = record
codigo : integer ;
nombre : array[1..35] of
char
end ;
var
estudiante :registro ;
Para
que la estructura estudiante pueda accesar a alguno de sus componentes se
escribe :
estudiante.
variable que se halla en la estructura.
Otro
tipo de estructura en Pascal son los conjuntos. Hay que tener en cuenta que en
los conjuntos se tiene que trabajar con la logica de estos.
Un
conjunto se define como una colección de objetos que pertenecen a un mismo tipo
base asociado al conjunto.
Un
ejemplo puede ser :
type
frutas=(Pera,Lulo) ;
f=set of frutas ;
var
b :f ;
Tipos definidos por el usuario
Tipo
enumerado
Es u
tipo de dato enumerado no estandar y definido por el programador, el cual esta
constituido por una serie de valores a los que el sistema de Pascal les asigna
un ordenamiento lineal, para asi poderlos identificar internamente.
Las
variables asociadas a un tipo enumerado solo pueden almacenar valores que
conforman el tipo.
El
protoyipo para un tupo enumerado es :
type
te =
(valor1,valor2...,valorn)
var
v1 :te ;
Procedimientos y funciones
Procedimientos
un
procedimiento es un programa que puede entregar mas de un valor al
procedimiento, funcion o programa que lo activa.
Un
procedimiento en Pascal se define de la siguiente forma :
procedure
nombre del procedimiento (lista de parametros formales que necesita) ;
declaracion
de variables locales al procedimiento si lo requiere
begin
Instruccines
del procedimiento
end ;
Si
el procedimiento no declara variables locales , significa que va a trabajarcon
variables globales, que son definidas en cualquier bloque externo que lo
contenga.
La
llamada a un procedimiento es :
nombre
del procedimiento (parametros actuales si los requiere) ;
Funciones
Una
funcion es un programa que solo entrega un valor al programa , funcion o
procedimiento que la invoca.
La
declaracion de una funcion es :
function
nombre de la funcion (parametros formales si los requiere) : tipo
resultante ;
var
declaracion
de variables locales si lo requiere;
begin
instrucciones
end ;
La
llamada a una funcion se hace en la siguiente forma :
identificador :=
(parametros actuales si los tiene) ;
El
identificador y el nombre de la funcion deben ser de tipos compatibles.
Sustitucion
por valor
Este
tipo de sustitucion de parametros se representa cuando en la definicion de los
parametros formales no se antepone la palabra var a la definicion del
parametro. Cuando este tipo de sustitucion se presenta, el valor del parametro
actual es evaluado y colocado en el parametro formal, o sea que se asegura que
el valor almacenado en el parametro formal no sea cambiado durante la ejecucion
de la rutina.
Ejemplo :
.......
procedura
a (i,j,k :integer) ;
.......
end ;
.......
a (5,w,t) ;
.......
Es
bueno recalcar entonces que todo cambio efectuado en los parametro formales en
el procedimiento no afectara a ninguna variable que lo invoca, o esa que dichos
parametros formales son variables locales al procedimiento.
Sustitucion
por referencia
Este
tipo de sustitucion de parametros se presenta cuando en la definicion de
parametros formales en la rutina, se le antepone al parametro la palabra var.
Cuando se presenta este tipo de sustitucion el parametro actual le envia su
direccion al parametro formal, luego el contenido del parametro actual puede
ser modificado si su correspondiente parametro formal es modificaf\do en la
rutina.
Ejemplo :
...........
procedure
B (var t,w : integer) ;
.....
end ;
begin (*principal*)
......
B (l,m) ;
Las
variables l,m podran ser alteradas en su contenido en el procedimiento B.
Entrada y salida
Las instrucciones
read y write son las instrucciones de entrada y salida asociadas con los medio
estandar del instema : Input y output (entrada y salida ) los cuales
dependiendo del equipo, se asociarian a dispositivos como : terminal, un
archivo local , impresora, etc.
La
instrucción de entrada posee la siguiente sintaxis :
read
(input,lista de identificadores) ;
que
es lo mismo que
readln
(lista de identifiadores).
Un
ejemplo de esto podria ser :
readln(a,c,d,...,n) ;
La
instrucción de salida posee la siguiente sintaxis :
write
(output lista de variables)
que
es lo mismo que
writeln
(lista de variables) ;
Un
ejemplo de esto podria ser :
writeln(a,c,d,...,n) ;
Cabe
la pena recordar que en las instrucciones read y write aunque estan asociadas a
un input y a un output estandar, estos pueden ser asignados a otros
dispositivos, según las necesidades del programador.
Lenguaje C (turboC/C++3.1)
Tokens
Palabras claves ( reservadas) de C
|
Las 32 palabras clave definidas por
el estándar ANSI |
|||
|
auto |
double |
int |
struct |
|
break |
else |
long |
switch |
|
case |
enum |
register |
typedef |
|
char |
extern |
return |
union |
|
const |
float |
short |
unsigned |
|
continue |
for |
signed |
void |
|
default |
goto |
sizeof |
volatile |
|
do |
if |
static |
while |
Tipos de datos
Tipos de datos básicos
|
Tipo |
Tamaño en bits |
Rango |
|
char |
8 |
0 a 255 |
|
int |
16 |
-32768 a 32767 |
|
float |
32 |
3.4E-38 a 3.4E+38 |
|
double |
64 |
1.7E-308 a 1.7E+308 |
|
void |
0 |
sin valor |
A
excepción del tipo void , los tipos de datos básicos pueden ser
precedidos por varios modificadores. Un modificador altera el
significado del tipo base para que se ajuste más a cada necesidad. Los
modificadores son :
signed
unsigned
long
short
Los
modificadores signed, short, long y unsigned se
pueden aplicar a los tipos base entero y carácter . Sin embargo , long también
se pude aplicar a double.
Todas las combinaciones posibles de los tipos
básicos y los modificadores de C
|
Tipo |
Tamaño en bits |
Rango |
|
char |
8 |
-128a 255 |
|
unsigned char |
8 |
0 a 255 |
|
signed char |
8 |
-128 a 127 |
|
int |
16 |
-32768 a 32767 |
|
unsigned int |
16 |
0 a 65535 |
|
signed int |
16 |
-32768 a 32767 |
|
short int |
16 |
-32768 a 32767 |
|
unsigned short int |
16 |
0 a 65535 |
|
signed short int |
16 |
-32768 a 32767 |
|
long int |
32 |
-2147483648 a 2147483647 |
|
unsigned long int |
32 |
0 a 4294967295 |
|
signed long int |
32 |
-2147483648 a 2147482647 |
|
float |
32 |
3.4E-38 a 3.4E+38 |
|
double |
64 |
1.7E-308 a 1.7E+308 |
|
long double |
64 |
1.7E-308 a 1.7E+308 |
Constantes
Las
constantes en C se refieren a valores fijos que no pueden ser alterados por el
programa . Pueden ser de cualquier tipo de datos.
C
admite otro tipo de constante, además de los tipos de datos predefinidos . Se
trata de la cadena. Una constante de cadena siempre está encerrada entre
comillas dobles.
Identificadores
La
longitud de un identificador en C puede variar entre uno y 32 caracteres. El primer
carácter debe ser una letra o un símbolo de subrayado y los caracteres
siguientes pueden ser letras, números o símbolos de subrayado . C permite
también usar el símbolo $ en un nombre de un identificador , pero no se trata
de algo estándar, siendo recomendable no hacerlo.
En C
las minúsculas y las mayúsculas se tratan como distintas. Por ejemplo hola,
Hola y HOLA son tres identificadores distintos. Un identificador
no puede ser igual que una palabra clave de C y no debe tener el mismo nombre
que alguna función ya escrita o que se encuentre en la biblioteca de C
Operadores
En C
hay tres clases generales de operadores : aritméticos, relacionales y
lógicos
Operadores aritméticos
|
operador |
acción |
|
- |
resta, también menos monario |
|
+ |
suma |
|
* |
multiplicación |
|
/ |
división |
|
% |
División en módulo |
|
-- |
decremento |
|
++ |
incremento |
Es
de recordar que cuando se aplica una división a un entero o a un carácter ,
cualquier resto es suprimido. Por ejemplo 10/3 el resultado será 3 en división
entera.
El
operador % proporciona el resto de una división entera. Por ello no
puede aplicarse a tipos de coma flotante
Incremento
y decremento
El
operador "++" (incremento) añade 1 a su operando y "--"
(decremento) le resta 1. Por lo tanto las siguientes operaciones son
equivalentes :
x=x+1 ;
es
lo mismo que
++x ;
También
x =
x-1 ;
es
lo mismo que
--x :
En
estas operaciones es lo mismo poner ++x ; y x++ ; (para el decremento
) y es lo mismo --x ; y x-- ; (para el decremento)
Pero
no es lo mismo cuando se usan los operadores en una expresión . Cuando un
operador de incremento o decremento precede al operando, C lleva a cabo la
operación de incremento o decremento antes de usar el valor del operando. Por
ejemplo :
x =
4
y =
++x ;
En
este caso, se pone a y en 11. Pero, si se escribe el código como
x =
10 ;
y =
x++ ;
y
toma el valor de 10. Es de mucha importancia tener en cuenta que en ambos
casos x queda como 11 ; la diferencia está en cuándo cambia el
valor.
Precedencia
de los operadores aritméticos.
Mayor
++ --
-(monario)
/ %
Menor
+ -
Operadores
relacionales y lógicos
El
terminode operador relacional se refiere a la relación entre unos
valores y otros . En el termino operador lógico la palabra lógico se
refiere a las formas en que esas relaciones pueden conectaese entre sí
siguiendo las reglas de la lógica formal.
En
los operadores lógicos se trabaja el 0 como falso y el 1 como
verdadero
Operadores relacionales
|
operador |
acción |
|
> |
mayor |
|
>= |
mayor o igual |
|
< |
menor |
|
<= |
menor o igual |
|
== |
igual |
|
!= |
no igual |
Operadores lógicos
|
operador |
acción |
|
&& |
y |
|
|| |
o |
|
! |
no |
Tanto
los operadores relacionales como los lógicos tienen un nivel de precedencia
menor que los aritméticos. Esto significa que una expresión como 10>3+2 se
evalúa como si hubiera escrito 10>(1+12)
Precedencia
relativa entre los operadores relacionales y lógicos
Mayor
!
>=
< <=
== !=
&&
Menor
||
Como
en el caso de las expresiones aritméticas , se pueden usar paréntesis para
alterar el orden natural de evaluación en una expresión relacional o lógica.
Por ejemplo :
!1
&&0
Es
falso , porque primero se evalúa ! y luego se evalúa &&.
Sin embargo cuando se usan paréntesis en la misma expresión el resultado es
verdadero :
!(1&&0)
Operador ?
C
contiene un operador muy conveniente para sustituir ciertas sentencias de la
forma if-then-else. El operador ternario ? toma la forma general :
Exp1 ?
Exp2 :Exp3 ;
donde
Exp1 , Exp2 y Exp3 son expresiones.
El
operador ? funciona de la siguiente forma : evalúa
Exp1 . Si es cierta, evalúa Exp2 y toma ese valor para la
expresión. Si Exp1 es falsa, evalúa Exp3 tomando su valor para
expresión. Por ejemplo :
x=10 ;
y=
x>9 ? 100 : 200
En
este ejemplo, a y se le asigna el valor de 100, si x hubiera sido
menor que 9, y habría recibido el valor de 200
Los
operadores de puntero & y *
Un
puntero es la dirección de memoria de una variable. Una variable puntero es una
variable específicamente declarada para contener un puntero a su tipo
específico.
El
primer operador de punteros es &, un operador monario que devuelve
la dirección de memoria del operando. Por ejemplo :
m =
&cont ;
coloca
en m la dirección de la memoria de la variable cont. Esta es la
dirección de la posición interna en la computadora de la variable. No !
tiene nada que ver con el valor de cont.
El
segundo operando de puntero es * , el complementario de &. Es
un operador monario que devuelve el valor de la variable ubicada en la
dirección que se especifica.
Para
declarar una variable como puntero se pone :
tipo
de dato *nombre de la variable
Por
ejemplo : char *cadena ;
En
este ejemplo hay que aclarar que cadena no es un carácter, sino un
puntero a un carácter
La
coma como operador
Como
operador, la coma encadena varias expresiones. La parte izquierda del operador
coma siempre se evalúa como void. Esto significa que la parte derecha se
convierte en el valor de la expresión total separada por coma. Por
ejemplo :
x =
(y=3, y+1) ;
Primero
se asigna el valor de 3 a y y luego se asigna el valor de 4 a x .
Los paréntesis son necesarios debido a que el operador coma tiene menor
precedencia que el operador de asignación.
Los
operadores . y ®
Los
operadores . (punto) y ® (flecha) referencian
elementos individuales de las estructuras y de las uniones. Las estructuras
y las uniones son tipos de datos compuestos que se pueden referenciar
bajo un solo nombre.
El
operador punto se usa cuando se trabaja realmente con la estructura o la unión
.
El
operador flecha se usa cuando es usa un puntero a una estructura o a una unión.
Por ejemplo, dada la estructura :
struct
empleado{
char
nombre[70] ;
int edad ;
float sueldo ;
}emp ;
Se usa
el siguiente código para asignar el valor 500,55 al elemento sueldo de
la estructura emp
emp.sueldo
= 500,55 ;
Sin
embargo, la misma asignación usando un puntero a la estructura emp sería
emp® sueldo=500,55 ;
Operadores
[ ] y ( )
En C
, los paréntesis son operadores que aumentan la precedencia de las operaciones
que la contienen.
Los
corchetes sirven para la indexación de arrays.
Operador
=
Es
un operador binario que sirve en C para las asignaciones .
Su
asociatividad a diferencias de todos los operadores binarios es de derecha a
izquierda.
Cuando
el operador = es subsiguiente a un operador binario sirve para abreviar
expresiones tales como :
x =
x+10 ;
puede
escribirse como
x+=10 ;
Asociatividad
de los operadores en C
Los
operadores del lenguaje C los operadores binarios a excepción del operador =
poseen una asociatividad de izquierda a derecha y los operadores monarios *,&
y el operador ternario ? se asocian de derecha a izquierda.
Precedencia
de los operadores de C
Mayor
( ) [ ] ®
! ++
-- * &
* /
%
+ -
<
<= > >=
== !=
&&
||
?
= +=
-= *= /=
Menor
,
Control de flujo
Secuencias
Las
secuencias en C, son un numero finito de sentencias. Por ejemplo :
#include
<stdio.h>
void main (void){
int a=10 ;
printf("%d",a) ;
}
Decisiones
En C
una prueba condicional da un resultado cierto cuando arroja un numero distinto
de cero y falso cuando es cero.
C
soporta dos tipos de datos condicionales : if y switch.
Además , el operador ? que es una alternativa de if en
ciertas ocasiones.
if
La
forma general de la sentencia if es :
if
(expresión) sentencia ;
else
sentencia ;
Si
la expresión es cierta se ejecuta la sentencia o el bloque de sentencias que es
el objetivo de if ; en cualquier otro caso se ejecuta la sentencia
o el bloque de sentencias que constituye el objetivo de else. Por
ejemplo :
#include
<stdio.h>
void main (void){
int numero=321 ;
int
intento ;
printf("adivine
el numero") ;
scanf("%d",&intento) ;
if(intento==numero)
printf("correcto) ;
else
printf("mala suerte") ;
}
operador ?
Se
puede usar el operador ? para reemplazar las sentencias if/else
con la forma general :
if(condición)
expresión
else
expresión
La
restricción clave es que el objetivo de if y del else deben ser
expresiones simples - no otra sentencia de C. La ? tiene la forma
general
Exp1 ?
exp2 : Exp3
Si
desea ver un ejemplo de este operador se puede remitir a la parte del trabajo
donde se tratan los operadores de C.
switch
Esta
sentencia compara sucesivamente una variable con una lista de constantes
enteras o de caracteres. Cuando se encuentra una correspondencia se ejecuta una
sentencia o bloque de sentencias. La forma general de la sentencia switch
es la siguiente :
switch (variable){
case constante1 :
secuencia
de sentencias
break ;
case
constante2 :
secuencia
de sentencias
break ;
.
.
default :
secuencia
de sentencias
}
donde
la sentencia default se ejecuta si no se encuentra ninguna
correspondencia
Hay
tres cosas importantes que se deben saber de la sentencia switch :
3 Si
se utilizan Constantes de tipo carácter en la sentencia switch, se
convierte automáticamente a sus
valores.
Un
ejemplo de swith puede ser :
void menu (void){
char
c ;
printf("1.se
calculan derivadas \n") ;
printf("2.
Se calculan integrales) ;
c=getche() ;
switch(c){
case ’1’ :
derivar() ;
break ;
case ‘2’ :
integrar() ;
break ;
default :
print("ninguna
opción seleccionada") ;
}
}
Iteraciones
Las
sentencias de iteración(bucles) son for,while y do.
For
La
forma general de la sentencia for es
for(inicialización