Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Libro pascal, Monografías, Ensayos de Informática

Libro teorico y practico de la utilizacion del lenguaje de programacion : Pascal

Tipo: Monografías, Ensayos

2014/2015

Subido el 30/10/2015

jose_cabrera
jose_cabrera 🇻🇪

1 documento

1 / 185

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Notas para los cursos de
Computación y Programación
con el lenguaje Pascal
Néstor Aguilera
Año 2007
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Libro pascal y más Monografías, Ensayos en PDF de Informática solo en Docsity!

Notas para los cursos de

Computación y Programación

con el lenguaje Pascal

Néstor Aguilera

Año 2007

    1. Preliminares Índice de cuadros v
    • 1.1. Temas que vemos
    • 1.2. Organización y convenciones que usamos
    • 1.3. Ideas y consejos sueltos
    • 1.4. Por qué Pascal
    • 1.5. Sobre la versión
    1. El primer contacto
    • 2.1. Un poco —muy poco— sobre cómo funciona la computadora
    • 2.2. Programas: edición, compilación, ejecución
    • 2.3. El puntapié inicial
    • 2.4. Comentarios Bibliográficos
    1. Tipos de datos elementales
    • 3.1. Tipos, variables e identificadores
    • 3.2. Tipos numéricos: entero y real
    • 3.3. Readln
    • 3.4. Funciones numéricas
    • 3.5. La codificación de enteros y reales
    • 3.6. Variables lógicas
    • 3.7. Caracteres
    • 3.8. Comentarios Bibliográficos
    1. Tomando control
    • 4.1. If
    • 4.2. Begin-end
    • 4.3. While
    • 4.4. Repeat
    • 4.5. For
    • 4.6. Ingresando muchos datos: eoln
    • 4.7. Read
    • 4.8. Comentarios Bibliográficos
    1. Aplicaciones
    • 5.1. Cálculo numérico elemental
      • 5.1.1. Mezclando números grandes y pequeños
      • 5.1.2. Métodos iterativos: puntos fijos
      • 5.1.3. El método babilónico
    • 5.2. Números enteros Pág. ii
      • 5.2.1. Algoritmo de Euclides
      • 5.2.2. Ecuaciones diofánticas
      • 5.2.3. Números de Fibonacci
    • 5.3. Comentarios Bibliográficos
    1. Arreglos
    • 6.1. Dimensionamiento de arreglos
    • 6.2. Búsqueda Lineal
    • 6.3. Polinomios
    1. Funciones y Procedimientos
    • 7.1. Funciones
    • 7.2. El método de la bisección
    • 7.3. Procedimientos
    • 7.4. Pasando por valor o por referencia
    • 7.5. Comentarios Bibliográficos
    1. Todos juntos: arreglos, funciones y procedimientos
    • 8.1. Definiendo nuestros propios tipos de datos: type
    • 8.2. Ingreso e impresión de arreglos
    • 8.3. La caja de herramientas
    • 8.4. Arreglos multidimensionales
    • 8.5. Strings
    • 8.6. Manejo elemental de archivos de texto
    • 8.7. Comentarios Bibliográficos
    1. Números Aleatorios y Simulación
    • 9.1. Números aleatorios
    • 9.2. Aplicaciones
    1. Búsqueda y clasificación
    • 10.1. Búsqueda lineal con centinela
    • 10.2. Búsqueda binaria
    • 10.3. Métodos elementales de clasificación
    • 10.4. Registros (records)
    • 10.5. Comentarios Bibliográficos
    1. Recursión
    • 11.1. Funciones y procedimientos definidos recursivamente
    • 11.2. Los Grandes Clásicos de la Recursión
    • 11.3. Comentarios Bibliográficos
    1. Objetos combinatorios
    • 12.1. Pilas y colas
    • 12.2. Generando Subconjuntos
    • 12.3. Caminante, no hay caminos...
    • 12.4. Generando permutaciones
    • 12.5. Objetos combinatorios generados al azar
    1. Árboles binarios ordenados
    • 13.1. Comentarios Bibliográficos
    1. Grafos Índice general Pág. iii
    • 14.1. Representación de grafos en la computadora
    • 14.2. Recorriendo un grafo
    • 14.3. Recorrido en profundidad y a lo ancho
    • 14.4. Grafos con pesos
    • 14.5. Camino más corto: Dijkstra
    • 14.6. Mínimo árbol generador: Prim
    • 14.7. Comentarios Bibliográficos
  • A. Programas mencionados
    • Problema 2.2: holamundo
    • Problema 3.2: sumardos
    • Problema 3.4: leerentero
    • Problema 3.5: raiz
    • Problema 3.6: segundos
    • Problema 3.10: enteroareal
    • Problema 3.17: positivo
    • Problema 3.19: caracteres1
    • Problema 4.2: valorabsoluto
    • Problema 4.4: comparar
    • Problema 4.5: caracteres2
    • Problema 4.11: resto
    • Problema 4.12: tablaseno1
    • Problema 4.13: gauss
    • Problema 4.16: cifras
    • Problema 4.17: epsmin
    • Problema 4.18: potencia
    • Problema 4.23: eolnprueba
    • Problema 4.24: eco
    • Problema 4.25: sumardatos
    • Problema 4.27: palabras
    • Problema 5.11: babilonico
    • Problema 5.13: euclides
    • Problema 6.1: unidades
    • Problema 6.2: renglon
    • Problema 6.3: busquedalineal
    • Problema 7.2: potencias
    • Problema 7.3: biseccion
    • Problema 7.6: tablaseno2
    • Problema 7.7: intercambio
    • Problema 8.8: deconsolaaarchivo
    • Problema 8.8: dearchivoaconsola
    • Problema 9.1: dado
    • Problema 9.2: dados
    • Problema 13.1: arbolbinario
  • B. Breve referencia de Pascal
    • B.1. Operadores
      • B.1.1. Aritméticos
      • B.1.2. Relacionales
      • B.1.3. Lógicos
      • B.1.4. Precedencia
    • B.2. Identificadores estándares
    • B.3. Nombres reservados Pág. iv
  • C. Algunas notaciones y símbolos usados
    • C.1. Lógica
    • C.2. Conjuntos
    • C.3. Números: conjuntos, relaciones, funciones
    • C.4. Números importantes en programación
    • C.5. Generales
  • Bibliografía
  • Índice alfabético
  • 2.1. Esquema de transferencia de datos en la computadora. Índice de figuras
  • 2.2. Bits y byte.
  • 2.3. Esquema del desarrollo de un programa.
  • 2.4. Esquema del programa ejecutable en la memoria.
  • 3.1. Datos de tipos elementales en la memoria.
  • 3.2. Los datos con sus identificadores.
  • 3.3. Esquema de la densidad variable.
  • 5.1. Gráficos de y = cos x y y = x.
  • 5.2. Aproximándose al punto fijo de cos x.
  • 6.1. Esquema del arreglo v guardado en memoria.
  • 6.2. Aproximación de sen x mediante un polinomio.
  • 7.1. Una función continua con distintos signos en los extremos.
  • 7.2. Programa, funciones y procedimientos en la memoria.
  • 7.3. Intercambio de los valores de u y v.
  • 10.1. Ordenando por conteo.
  • 10.2. Esquema del registro de tipo complejo en memoria.
  • 11.1. Contando la cantidad de caminos posibles.
  • 11.2. Las torres de Hanoi.
  • 13.1. Una estructura «lineal».
  • 13.2. Un árbol binario ordenado.
  • 13.3. Disposición del arreglo de registros luego de ingresar los datos.
  • 13.4. Disposición del árbol binario luego de ingresar los datos.
  • 13.5. Los registros de la figura 13.4 «proyectados».
  • 13.6. Los registros con índices para la estructura de árbol binario.
  • 14.1. Un grafo con 6 vértices y 7 aristas.
  • 14.2. Un grafo no conexo y un árbol.
  • 14.3. Un grafo con pesos en las aristas.
  • 4.1. Prueba de escritorio Índice de cuadros
  • 8.1. Estructura de un programa Pascal.
  • 8.2. Diferencias entre el estándar y Turbo Pascal.
  • 10.1. Comparación de algoritmos de clasificación.
  • 14.1. Esquema del algoritmo recorrer
  • 14.2. Esquema del algoritmo de Dijkstra.
  • 14.3. Esquema del algoritmo de Prim.

Pág. 2 Preliminares

A veces hay texto intercalado entre los problemas, por lo que para indicar el fin del enunciado de un problema está el signo $, que puede leerse como «la cortamos acá». Intercalados entre texto y enunciados de problemas, hay algunas notas y comentarios, en tipo de letra más chico para no distraer demasiado del texto principal, y puede omitirse su lectura. En los comentarios, en itálica, se hacen referencias históricas, orientadoras, curiosidades, etc. Son de la forma Esto es un comentario. Por otra parte, las notas son en general de índole más técnica, y son de la forma

  • Esto es una nota. Los nombres de los programas aparecen con otro tipo de letra, así, mientras que lo que escribiremos en la computadora está indicado en «monotipo», así, algunas veces entre comillas dobles, para recalcar algún fragmento o tratando de evitar confusiones, «como éste», reservando las comillas simples para carac- teres, como ‘ a ’, que imitando la usanza en Pascal. También algunas veces los espacios en blanco de un texto se ponen de esta forma para distinguirlos. Siguiendo la tradición norteamericana, la computadora expresa los números poniendo un «punto» decimal en vez de la «coma», y para no confundirnos seguimos esa práctica. Así, 1. 589 es un número entre 1 y 2 , mientras que 1589 es un número entero, mayor que mil. A veces dejamos pequeños espacios entre las cifras para leer mejor los números, como en 123 456. 789. También se hace complicado trabajar con tildes (como en «á») o virgulillas (como en «ñ») al escribir los programas o mostrar resultados por pantalla, de modo que en la escritura de códigos los obviaremos (escribiendo «a» o «ni», y «paragüero» quedará como paraguero ). En fin, en el texto indicamos con el pulsado de la tecla «retorno» (o return en teclados ingleses) para iniciar un nuevo renglón. Dependiendo del sistema operativo, es posible que debas pulsar en cambio la tecla «intro» (o enter en inglés).

1.3. Ideas y consejos sueltos

Uno puede darse una idea de cómo cocinar mirando un libro de cocina, pero seguramente la experiencia es mucho más completa y satisfactoria si se tienen los ingredientes, las cacerolas y la misma cocina. Del mismo modo, se puede apreciar qué es la programación mirando un libro, pero vas a sacar mucho más provecho si disponés además de una computadora y un compilador Pascal con los que trabajar. En programación es muy importante copiar (y tomar ideas y estructuras de) programas ya hechos. Idealmente cuando trabajes con los contenidos de este libro copiarás (preferentemente de un diskette o de internet) los programas presentados, y harás variaciones o copiarás partes de uno o más de ellos para resolver problemas. Con ese propósito incluí muchos programas completos que sirven como base. Unos cuantos no están completos (pero funcionan), y tendrás que completar o cambiar partes para llegar a algo satisfactorio. En todos los casos traté de poner programas claros (que se entiendan) antes que eficientes. Muchos principiantes se ponen ansiosamente a escribir o copiar un programa sin tener un plan específico, quizás por su experiencia previa con la computado-

1.4. Por qué Pascal Pág. 3

ra. Una buena parte de los problemas que aparecen no son sencillos de resolver, y seguramente no se resuelven probando con distintos «botones» (¡no hay me- núes!). Inclusive hay varios problemas que no necesitan de la computadora. Al principio el curso parece (y es) fácil y muchos estudiantes se dejan estar, pero ya hacia el final del capítulo 3 las cosas se ponen más movidas y es difícil de recuperar el tiempo perdido: es importante que mantengas el ritmo del curso que, un poco más o un poco menos, es de un capítulo por semana. Si querés sacar provecho del curso, muchas veces vas a tener que usar lápiz y papel para trazarte un plan de resolución antes de copiar o modificar los pro- gramas, pero para eso debés entender primero qué es lo que hacen las distintas partes y —por sobre todo— a dónde se quiere llegar. La adquisición de conocimientos no es gratuita y requiere esfuerzo y tiempo, y las equivocaciones forman parte inevitable de este proceso: ¡habrá que estar dispuesto a pasar un buen rato en la silla! Aún cuando no podamos resolver un problema en programación o en mate- máticas, es poco útil que alguien nos cuente la solución si antes no hemos hecho un trabajo propio: de este modo podremos apreciar, e inclusive criticar, la que nos proponen. En algunos problemas se incluyen sugerencias para la resolución, que están puestas como orientación cuando estés «perdido». La recomendación es tapar la sugerencia, y recurrir a ella en segunda instancia o cuando ya hayas resuelto el problema para ver si hay otras posibilidades de resolución. Esto nos trae al tema de que tanto en programación como en matemáticas, no hay una única forma de hacer los programas o resolver los problemas. Lo presentado es sólo una posibilidad. A algunos les parecerá que las sugerencias son oscuras o escasas, a otros les parecerá que el material presentado es excesivo, y habrá otros que que- rrán resolver más problemas. A todos les recomendamos los libros de Engel [3], Wirth [11, 12] —autor del lenguaje que usamos, Pascal— y Jensen y Wirth [4] para temas específicos de Pascal, que forman la base sobre la cual está hecho este libro. Finalmente, cuando estés perdido con alguna definición, consultá el apéndi- ce B para referencias de Pascal, o el apéndice C para notaciones y definiciones de matemáticas, o el índice alfabético al final.(1)

1.4. Por qué Pascal

Desde cierto punto de vista, Pascal es un lenguaje obsoleto. Fue popular en la década de 1980 con el auge de la computadoras personales, pero prácticamen- te no se usa profesionalmente en la actualidad. No tiene —en su estándar— facilidades gráficas, las rutinas de entrada y salida no son muy flexibles, e in- clusive no tiene incorporadas rutinas de números aleatorios como usaremos en el curso. En fin, muchas veces su sintaxis hace que debamos hacer rodeos para expresar algo. Los lenguajes de moda en estos días —como Java— ofrecen un paradigma más alejado de los algoritmos de matemáticas, estando más bien dirigidos a las aplicaciones informáticas. Pascal fue creado como lenguaje para la enseñanza de la programación es- tructurada por N. Wirth, siguiendo ideas del lenguaje Algol, nombre derivado de ALGOrithmic Language , que expresa bien el propósito con el que fue creado.

(1) (^) Donde nunca se encuentra lo que uno busca, como en las guías telefónicas.

Capítulo 2

El primer contacto

2.1. Un poco —muy poco— sobre cómo funciona

la computadora

Conceptualmente, la computadora es una máquina que toma o accede a datos, los procesa y devuelve resultados. Los datos o entradas y los resultados o salidas pueden ser simples como números o letras, o mucho más complicados como una matriz o una base de datos,(1)^ que podemos esquematizar como

entrada procesamiento salida

En el modelo de computadora con el que trabajaremos (o de von Neumann), pensaremos que el procesamiento está a cargo de una única unidad, llamada CPU por Central Processing Unit o Unidad Central de Procesamiento, que accede los datos y retorna los resultados secuencialmente, es decir, de a uno por vez, y los datos a los que accede se guardan en una lugar denominado memoria.

John von Neumann (1903–1957) se interesó inicialmente en lógica, teoría de conjuntos, de la medida, y mecánica cuántica, tocando luego temas de aná- lisis funcional, teoría ergódica, siendo fundador de la teoría de juegos. En sus últimos años también tuvo influencia decisiva en ecuaciones en derivadas par- ciales y en teoría de autómatas, en la que sintetizó sus conocimientos e ideas de lógica y grandes computadoras electrónicas.

En los programas que haremos normalmente nos comunicaremos con la computadora entrando los datos con el teclado y recibiendo los resultados en la pantalla, refiriéndonos en general como terminal o consola al conjunto com- binado de teclado y pantalla. Estos datos que entramos o recibimos no son directamente procesados por la CPU, sino que son transferidos a o desde la memoria mediante la misma CPU u otro procesador dedicado. Un esquema del movimiento de datos entre periféricos (consola, discos, im- presora, etc.), memoria y CPU está indicado en la figura 2.1. Nos imaginaremos que la memoria, en donde se almacenan los datos, está constituida por muchas cajitas pequeñas llamadas bits por binary digit o dígito binario, en cada una de las cuales sólo se puede guardar un 0 o un 1. Puesto que esta caja es demasiado pequeña para guardar información más complicada

(1) (^) Es como pensar en una máquina de hacer chorizos: ponemos los ingredientes (mezcla, tripa, etc.), y después de dar vuelta la manija tenemos los chorizos.

Pág. 6 El primer contacto

(procesamiento)

memoria (datos)

CPU

impresora

pantalla teclado

discos

otros

consola

Figura 2.1: Esquema de transferencia de datos en la computadora.

que «sí/no» o «blanco/negro», los bits se agrupan en cajas un poco más gran- des llamadas bytes , que generalmente tienen 8 bits, conceptualmente alineados, puesto que queremos que 00001111 sea distinto de 11110000. Ver esquema en la figura 2.2.

un byte ︷ ︸︸ ︷ 1 0 1 0 1 0 0 1

bits

Figura 2.2: Bits y byte.

Problema 2.1. Suponiendo que un byte tenga 8 bits: a ) ¿Cuántas «ristras» distintas de 0 y 1 puede tener? Sugerencia : hacer la cuenta primero para un byte de 1 bit, luego para un byte de 2 bits, luego para un byte de 3 bits,... b ) Si no importara el orden de los bits que forman el byte, y entonces 00001111 , 11110000 , 10100101 fueran indistinguibles entre sí, ¿cuántos elementos dis- tintos podría contener un byte? Sugerencia : si el byte tiene 8 bits puede ser que hayan 8 ceros y ningún uno, o 7 ceros y 1 uno, o... $

A su vez, para las computadoras más recientes, estas unidades resultan dema- siado pequeñas para alimentar a la CPU, por lo que los bits o bytes se agrupan formando cajas de, por ejemplo, 32 , 64 o 128 bits (usualmente potencias de 2 ), siempre conceptualmente alineadas.

2.2. Programas: edición, compilación, ejecución

Por supuesto, queremos que la computadora «haga algo» con los datos que le damos, pero tenemos que darle instrucciones sobre cómo hacerlo. El conjunto de instrucciones y datos para realizar determinada tarea es lo que llamaremos programa , y los mismos programas pueden considerarse como un tipo especial de datos. En particular, el sistema operativo de la computadora es un programa que alimenta constantemente a la CPU, y le va a indicar, por ejemplo, que ejecute o corra nuestro programa, leyendo las instrucciones que contiene. Los lenguajes de programación son abstracciones que nos permiten escribir las instrucciones de un programa de forma que un ser humano puede entender más fácilmente que ristras de ceros y unos. Las instrucciones para la máquina

Pág. 8 El primer contacto

programa ejecutable instrucciones

datos

Memoria

Figura 2.4: Esquema del programa ejecutable en la memoria.

programa mediante «program nombre(input,output)» y otras sentencias que iremos viendo.

  • Siguiendo el estándar Pascal. Muchos compiladores aceptan la omisión de (input, output), e inclusive algunos ignoran completamente esa parte. La segunda parte, a veces llamada principal , empieza con begin y termina con «end.» (punto «.» incluido), y entre ellos se ponen sentencias para realizar «acciones». En ambas partes, de declaraciones y principal, las sentencias se separan mediante «;». En cualquier lugar se pueden agregar comentarios, encerrados entre «(» y «)» que nos ayudan a entender lo que hicimos cuando volvemos a mirar después de un par de semanas.
  • También se pueden encerrar comentarios entre « { » y « } », pero no los usaremos a fin de seguir una sintaxis más parecida a otros lenguajes como C o Mathematica. Para evitar confusiones, normalmente se guarda el programa fuente en un archivo con el mismo nombre que en la sentencia «program nombre», y con extensión .p o .pas , para indicar que se trata de un programa Pascal. Así, gene- ralmente guardaremos el programa fuente de nombre pepe en el archivo pepe.p o pepe.pas. Al compilarlo (con éxito) se crea el ejecutable. Dependiendo del com- pilador y el sistema operativo, es posible que se cambie la extensión a .exe , de modo que obtenemos el archivo pepe.exe , pero también es posible que (salvo indicación en contrario) el nombre sea algo genérico como a.out.
  • O sea, la extensión para el ejecutable depende del sistema operativo y del compilador, y puede no existir. Asimismo, puede no existir la extensión para el programa fuente. La prueba de fuego es editar, compilar y ejecutar el primer programa. Sin embargo, los detalles de cómo realizar el ciclo de edición-compilación-ejecución dependen del sistema operativo y el compilador (la marca del compilador) que estemos usando, de modo que habrá que seguir las instrucciones de los manuales o pedir auxilio a algún conocido con este primer paso. Problema 2.2 (Hola Mundo). Copiar, compilar y ejecutar el programa ho- lamundo, guardándolo en disco o diskette como holamundo.pas.
  • Muchos compiladores, entre ellos el muy difundido Turbo Pascal, hacen que al ejecutar un programa como holamundo se abra una ventana distinta que se cierra automáticamente al finalizar la ejecución del programa. El proceso puede ser tan rápido que apenas nos damos cuenta de que ha sucedido algo. En estos casos es conveniente agregar un renglón con las instrucciones writeln(’ para fin’); readln al terminar el programa, antes de «end.» y agregando un «;» (punto y coma) al fin del renglón anterior. Otra posibilidad es aprender los comandos para poder pasar de una pantalla a otra.

2.3. El puntapié inicial Pág. 9

  • Turbo Pascal y otros compiladores similares crean un ejecutable que queda en memoria, y no guardan una copia en el disco salvo instrucción expresa. En la mayoría de los casos no nos va a interesar guardarla.

a ) Observar con cuidado los signos de puntuación y qué hace cada una de las instrucciones:

  • El renglón inicial que comienza con «program...», y que termina en «;». En este programa es la única sentencia de la parte declarativa.
  • El comentario inmediatamente después de «program...», explicando al que lee el programa fuente cuál es el propósito.
  • El cuerpo principal que empieza con begin y termina en «end.».
  • Hay tres sentencias en la parte principal, separadas por dos «;».
  • writeln escribe un renglón en la pantalla, y el texto a escribir se encierra entre «’» (comillas simples). Si no tiene argumentos, writeln escribe un renglón «vacío», i.e., sin caracteres. b ) Eliminar, repetir o cambiar las instrucciones. Por ejemplo: i ) eliminar el segundo writeln, ii ) y después también el tercero, iii ) cambiar writeln por WRITELN, y después por Writeln, iv ) cambiar «’Hola Mundo!’» por «’HOLA MUNDO!’», v ) modificar el programa para que se escriba «bye, bye» en vez de «y Chau!». c ) En general, al escribir el programa usamos sangrías , i.e., espacios al comien- zo de algunos de los renglones, y a veces renglones enteros en blanco, para resaltar la estructura del programa. Esto no es necesario, e inclusive podría escribirse el programa en un único renglón, y un espacio o varios no hacen diferencia: i ) Eliminar o agregar espacios al comienzo, en el medio y/o al final de algunos renglones, compilar el programa y verificar que se obtiene el mismo resultado. ii ) Agregar renglones en blanco o poner dos (o todos los que se quiera) renglones en uno solo, y verificar que se obtiene el mismo resultado (y recordar que «;» se usa en Pascal como en castellano: para separar sentencias).
  • A los fines del programa fuente, los espacios, tabulaciones (tecla tab o similar) y renglones son intercambiables (mientras no estén encerrados entre comillas simples).

d ) Agregar y/o eliminar comentarios. Por ejemplo, agregar el comentario «colorin, colorado» después de «writeln(’y Chau!’)», en el mismo renglón y/o en el siguiente. $

El uso de «;» en Pascal resulta un poco confuso al principio, pero debe tenerse en mente que se usa como «,» o «;» se usan al construir una oración en castellano: para separar sentencias. Del mismo modo, «.» (punto) en Pascal tiene el mismo sentido que el punto final en castellano. En cambio, «,» (coma) se usa en forma distinta, por ejemplo, para separar argumentos de funciones como se hace en matemáticas.

Pero no desesperar: por el momento no es necesario entender todo lo que se hace.

Capítulo 3

Tipos de datos elementales

Recordemos que la información, incluyendo el programa ejecutable, se guar- da en un lugar de memoria, como ristras de ceros y unos. Como números y caracteres se representan de esta forma, la computadora al tomar un dato debe saber si se trata de uno u otro. Esto da lugar a distintos tipos de datos, como estudiamos en este capítulo.

3.1. Tipos, variables e identificadores

Supongamos que guardamos las letras siguiendo el orden del abecedario, ‘ a ’ como 0 , ‘ b ’ como 1 , ‘ c ’ como 10 , y así sucesivamente. Vemos que no podría- mos distinguir entre el par de letras «ba» y la única letra «c», pues ambas se representarían como 10. Para evitar esta confusión, se decide que todas las letras ocupen siempre el mismo espacio, por ejemplo un byte de 8 bits. De esta forma tendremos (ver el problema 2.1) 28 = 256 posibilidades para los caracteres, lo cual es suficiente para guardar las letras de nuestro alfabeto (pero no los de algunos alfabetos orientales). Habiendo decidido esto, nos toca ahora guardar números. Como antes, es conveniente guardar a todos los números en la misma cantidad de bits. Si usá- ramos 8 bits como hicimos para las letras, tendríamos sólo 256 números dispo- nibles, lo cual es bien pobre. Es conveniente que las «cajas» sean más grandes. Cuando la máquina lea estas cajas que guardan letras o números, tiene que saber cuántos bits juntos debe leer, e interpretar la ristra de bits según sea una letra o un número. Surgen así cuatro tipos elementales de datos, cada uno con distinta codificación interna:

  • boolean o lógica , para guardar los valores «true» (verdadero) o «false» (falso),
  • char para guardar caracteres, i.e., letras, signos de puntuación y otros que veremos más adelante,
  • integer para guardar números enteros, como 1 , 0 , − 5 , y
  • real para guardar números reales, i.e., números como 123. 456. Llamamos a las variables lógicas booleanas , en honor a G. Boole (1815– 1864), quien hizo importantes progresos al «algebrizar» la lógica.

En la figura 3.1 ilustramos algunas cajas con datos dentro de la memoria, con sus tipos correspondientes.

Pág. 12 Tipos de datos elementales

a 123.

verdadero 4321 98.

char integer real

boolean integer real

Figura 3.1: Datos de tipos elementales en la memoria.

Ahora tenemos el problema de cómo acceder a esas cajas que guardan carac- teres o números. Esto es sencillo: les ponemos nombres para identificarlas. Las cajas así nombradas se llaman variables pues podremos colocar en ellas datos distintos o (¡ejem!) variables y los nombres que reciben se llaman identificadores. En la figura 3.2 mostramos algunos nombres posibles para las cajas que mostramos en la figura 3.1.

a 123.

verdadero 4321 98.

codigo a x

fin m y

Figura 3.2: Los datos con sus identificadores.

Cuando redactamos el programa, debemos indicar al compilador los nombres y tipos de variables que usaremos, procedimiento llamado de declaración de variables. En el programa se pone una lista de variables y tipos después de la palabra clave «var». Una cosa trae a la otra, y tenemos el problema de que no podemos poner cualquier nombre. Por ejemplo, no es conveniente usar program o writeln que usa Pascal para instrucciones del lenguaje. Además, en Pascal hay nombres reservados , que no podemos usar como identificadores.

  • En la sección B.3 (pág. 168) está la lista completa de los nombres reserva- dos. Aparte de estas palabras prohibidas, los identificadores en Pascal pueden ser cualquier sucesión de letras mayúsculas o minúsculas y dígitos, pero
  • siempre tienen que empezar con una letra,
  • no pueden tener espacios entre medio,
  • ni pueden tener caracteres como $, _ («guión bajo»), +, etc.,
  • y por supuesto, dos variables distintas no pueden tener el mismo nombre. A diferencia de otros lenguajes (como C o Mathematica ), según el estándar