Sei sulla pagina 1di 11

1.- Métodos de Programación 1.1 Tipos de Datos y Características

El tipo de un dato es el conjunto de valores que puede tomar durante el programa. Si se le intenta dar un valor fuera del conjunto se producirá un error.

La asignación de tipos a los datos tiene dos objetivos principales:

Por un lado, detectar errores en las operaciones Por el otro, determinar cómo ejecutar estas operaciones

De Pascal se dice que es un lenguaje fuertemente tipeado. Esto quiere decir que todos los datos deben de tener un tipo declarado explícitamente, y además que existen ciertas restricciones en las expresiones en cuanto a los tipos de datos que en ellas intervienen.

Una ventaja de los lenguajes fuertemente tipeados es que se gasta mucho menos esfuerzo en depurar (corregir) los programas gracias a la gran cantidad de errores que detecta el compilador.

Los tipos de datos, como casi todos los objetos de Pascal, se pueden declarar. La declaración de tipos ya se comentó en el tema correspondiente a la estructura de un programa.

Tipos estáticos

Casi todos los tipos de datos son estáticos, la excepción son los punteros y no se tratarán debido a su complejidad.

Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar durante la ejecución del programa. Es decir, una vez declarada una variable de un tipo determinado, a ésta se le asigna un trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuír.

Tipos dinámicos

Dentro de esta categoría entra sólamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en tus programas. Con ellos puedes manejar el tamaño de tus variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando.

Los punteros quizás sean el concepto más complejo a la hora de aprender un lenguaje de programación, sobre todo si es el primero que aprendes. Debido a esto, no lo trataremos. Además, lenguajes que están muy de moda (por ejemplo Java) no permiten al programador trabajar con punteros.

Tipos simples

Como su

nombre indica son

los tipos

básicos en Pascal.

Son

los más

sencillos y los más fáciles de aprender. Por todo esto, serán en los que nos centremos.

Los tipos simples más básicos son: entero, lógico, carácter y real. Y la mayoría de los lenguajes de programación los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.

Tipos estructurados

Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a colecciones de elementos.

Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array, colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.

Tipos ordinales

Dentro de los tipos simples, los ordinales son los más abundantes. De un tipo se dice que es ordinal porque el conjunto de valores que representa se puede contar, es decir, podemos establecer una relación uno a uno entre sus elementos y el conjunto de los números naturales.

Dentro de los tipos simples ordinales, los más importantes son:

El tipo entero (integer) El tipo lógico (boolean) El tipo carácter (char)

Tipos no-ordinales

Simplificando, podríamos reducir los tipos simples no-ordinales al tipo real. Este tipo nos sirve para declarar variables que pueden tomar valores dentro del conjunto de los números reales.

A diferencia de los tipos ordinales, los no-ordinales no se pueden contar. No se puede establecer una relación uno a uno entre ellos y los número naturales. Dicho de otra forma, para que un conjunto se considere ordinal se tiene que poder calcular la posición, el anterior elemento y el siguiente de

un elemento cualquiera del conjunto.¿Cuál es el sucesor de 5.12? Será 5.13, o 5.120, o 5.121, ...

Los tipos básicos que nos interesan:

Después de ver una de las posibles clasificaciones para los tipos de datos, pasemos a ver los que nos interesan: los tipos simples. Realmente de los tipos simples veremos los más básicos, que son: integer, boolean, char y real. Además, también hablaremos un poco de las cadenas de caracteres, los llamados strings.

nota: a continuación sólo se comentará qué es cada tipo, no se explicará su declaración, esto puedes verlo si vas a la sección correspondiente.

EL TIPO INTEGER (ENTERO)

El tipo de datos entero es un tipo simple, y dentro de estos, es ordinal. Al declarar una variable de tipo entero, estás creando una variable numérica que puede tomar valores positivos o negativos, y sin parte decimal.

Este tipo de variables, puedes utilizarlas en asignaciones, comparaciones, expresiones aritméticas, etc. Algunos de los papeles más comunes que desarrollan son:

Controlar un bucle Usarlas como contador, incrementando su valor cuando sucede algo Realizar operaciones enteras, es decir, sin parte decimal.

EL TIPO BOOLEAN (LÓGICO)

El tipo de datos lógico es el que te permite usar variables que disponen sólo de dos posibles valores: cierto o falso. Debido a esto, su utilidad salta a la vista, y no es otra que variables de chequeo. Nos sirven para mantener el estado de un objeto mediante dos valores:

si/no cierto/falso funciona/no funciona on/off

EL TIPO REAL (REAL)

Como ya has visto, Pascal soporta el conjunto entero de números. Pero no es el único, también te permite trabajar con números pertenecientes al conjunto real.

El tipo de datos real es el que se corresponde con los números reales. Este es un tipo importante para los cálculos. Por ejemplo en los estadísticos, ya que se caracterizan por tratar fundamentalmente con valores decimales.

nota: Aunque pueda que estés acostumbrado

a escribir

con

coma

los

decimales, te advierto que en Pascal y en todos los lenguajes de

programación se escribe con un punto. Por ejemplo: 3.1416

LOS TIPOS CHAR Y STRING (CARÁCTER Y CADENA)

Con el tipo carácter puedes tener objetos que representen una letra, un número, etc. Es decir, puedes usar variables o constantes que representen un valor alfanumérico. Pero ojo, cada variable sólo podrá almacenar un carácter.

Sin embargo, con las cadenas de caracteres (strings) puedes contener en una sola variable más de un carácter. Por ejemplo, puedes tener en una variable tu nombre.

2.1 – Operaciones: Tipos y Características

En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores, esto se realiza utilizando los operadores relaciones, los cuales se listan a continuación:

Operador Significado < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que = Igual a <> Distinto a, diferente de

OPERADORES ARITMETICOS Y DE ASIGNACION:

A continuación se explican los tipos de operadores (aritméticos y de asignación) que permiten realizar operaciones matemáticas en lenguaje C.

“Operadores aritméticos”

Existen dos tipos de operadores aritméticos Los binarios:

+

Suma

-

Resta

*

Multiplicación

/

División

 

%

Módulo (resto)

y los unarios:

 

++

Incremento (suma 1)

-

-

Decremento (resta 1)

-

Cambio de signo

Su sintaxis es:

binarios:

<variable1><operador><variable2

unarios:

<variable><operador> y al revés, <operador><variable>. “Operadores de asignación”

La mayoría de los operadores aritméticos binarios explicados con anterioridad tienen su correspondiente operador de asignación:

=

Asignación simple

+=

Suma

-=

Resta

*=

Multiplicación

/=

División

%=

Módulo (resto)

Con estos operadores se pueden escribir, de forma más breve, expresiones del tipo:

n=n+3 se puede escribir n+=3 k=k*(x-2) lo podemos sustituir por k*=x-2 “Jerarquía de los operadores”

Será importante tener en cuenta la precedencia de los operadores a la hora de trabajar con ellos:

( ++, - -

)

Mayor precedencia

*, /, % +, -

Menor precendencia

Las operaciones con mayor precedencia se realizan antes que las de menor precedencia.

Si en una operación encontramos signos del mismo nivel de precedencia, dicha operación se realiza de izquierda a derecha. A continuación se muestra un ejemplo sobre ello:

a*b+c/d-e

  • 1. a*b resultado = x

  • 2. c/d resultado = y

  • 3. x+y resultado = z

  • 4. z-e

Fijarse que la multiplicación se resuelve antes que la división ya que está situada más a la izquierda en la operación. Lo mismo ocurre con la suma y la resta.

1.3- Algoritmos como métodos de programación

El computador

es

una máquina que

por

sola

no puede hacer

nada,

necesita ser programada, es decir, introducirle instrucciones u órdenes que le digan lo que tiene que hacer. Un programa es la solución a un problema

inicial, así

que

todo

comienza

allí:

en

el

Problema.

El

proceso

de

programación es el siguiente: Dado un determinado problema el

programador debe idear una solución y expresarla usando un algoritmo

(aquí

es donde entra

a jugar);

luego de

esto, debe codificarlo

en

un

determinado lenguaje de programación y por último ejecutar el programa en el computador el cual refleja una solución al problema inicial. Esto es a grandes rasgos lo que hace el programador de computadores.

La parte que corresponde a este manual es la de: “Dado un determinado

problema debemos ALGORITMO!”.

idear

una

solución

y

expresarla

usando

un

Metodología

para

la

solución

de

problemas

por

medio

de

computadora

DEFINICIÓN DEL PROBLEMA

Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

ANÁLISIS DEL PROBLEMA

Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:

Los datos de entrada. Cuál es la información que se desea producir (salida) Los métodos y fórmulas que se necesitan para procesar los datos.

Una recomendación muy práctica es el de colocarse en el lugar de la computadora y analizar qué es lo que se necesita que se ordene y en qué secuencia para producir los resultados esperados.

DISEÑO DEL ALGORITMO Las características de un buen algoritmo son:

Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones.

Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema.

Debe ser finito en tamaño y tiempo de ejecución.

Diseño del Algoritmo Prueba de escritorio o Depuración

Se denomina prueba de escritorio a la comprobación que se hace de un algoritmo para saber si está bien hecho. Esta prueba consiste en tomar datos específicos como entrada y seguir la secuencia indicada en el algoritmo hasta obtener un resultado, el análisis de estos resultados indicará si el algoritmo está correcto o si por el contrario hay necesidad de corregirlo o hacerle ajustes.

1.4- Diagramas de Flujo

Un diagrama de flujo es una representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin de proceso.

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término. Además, todo camino de ejecución debe permitir llegar desde el inicio hasta el término.

Las siguientes son acciones previas a la realización del diagrama de flujo:

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueño o responsable del proceso, los dueños o responsables del proceso anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.

Definir qué se espera obtener del diagrama de flujo.

Identificar quién lo empleará y cómo.

Establecer el nivel de detalle requerido.

Determinar los límites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

Establecer

el

alcance

del

proceso

a

describir. De esta manera

quedará fijado el comienzo y el final del diagrama. Frecuentemente el

comienzo es la salida del proceso proceso siguiente.

previo y

el

final

la entrada

al

Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.

Si el nivel de detalle definido incluye actividades menores, listarlas también.

Identificar y listar los puntos de decisión.

 

Construir

el

diagrama

respetando

la

secuencia

cronológica

y

asignando los correspondientes símbolos.

 

Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

Tipos de Diagramas de Flujo:

Formato vertical: En él el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.

Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.

Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.

Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

1.5- Procesos interactivos y por lotes Se conoce como sistema por lotes (batch processing), o modo

1.5- Procesos interactivos y por lotes

Se conoce como sistema por lotes (batch processing), o modo batch, a la ejecución de un programa sin el control o supervisión directa del usuario (que se denomina procesamiento interactivo). Este tipo de programas se caracterizan porque su ejecución no precisa ningún tipo de interacción con el usuario.

Generalmente, este tipo de ejecución se utiliza en tareas repetitivas sobre grandes conjuntos de información, ya que sería tedioso y propenso a errores realizarlo manualmente. Un ejemplo sería el renderizado de los fotogramas de una película.

Los programas que ejecutan por lotes suelen especificar su funcionamiento mediante scripts o guiones (procedimientos) en los que se indica qué se quiere ejecutar y, posiblemente, qué tipo de recursos necesita reservar.

Los sistemas por lotes son el mecanismo más tradicional y antiguo de ejecutar tareas. Se introdujeron alrededor de 1956 para aumentar la capacidad de proceso de los programas. En la actualidad, los trabajos por lotes son ampliamente utilizados en supercomputadores, como Magerit.Este procesamiento se dio en la segunda generacion de computadoras.

El extremo opuesto al procesamiento por lotes es el procesamiento interactivo: programas que precisan la interacción con el usuario (petición de datos, elección de opciones) para funcionar. Cada tipo de proceso es diferente y más adecuado en unas situaciones que en otras.

En un sistema por lotes existe un gestor de trabajos, encargado de reservar y asignar los recursos de las máquinas a las tareas que hay que ejecutar. De

esta forma, mientras existan trabajos pendientes de procesamiento, los recursos disponibles estarán siempre ocupados ejecutando tareas.

Si el sistema está bien planificado, se alcanzan tiempos de ejecución muy altos, ya que los recursos disponibles están siendo utilizados casi continuamente. Además, el Sistema Operativo puede ser muy simple ya que las tareas son completamente secuenciales por lo que se reduce la necesitad de utilizar esquemas Round Robin o similares.

Ventajas:

Permite compartir mejor los recursos de un ordenador entre muchos usuarios, al no competir por éstos de forma inmediata.

Realiza el trabajo en el momento en el que los recursos del ordenador están menos ocupados, dando prioridad a tareas interactivas.

Evita desaprovechar los recursos del ordenador sin necesidad de interacción y supervisión humanas continuas.

En ordenadores caros o supercomputadores, ayuda a amortizar el coste manteniendo altos índices de utilización.

Inconvenientes:

El principal inconveniente

de

la ejecución

por lotes frente

a

la

ejecución interactiva es que hay que conocer y planificar cuidadosamente la tarea a realizar. Al carecer de supervisión por parte del usuario, cualquier tipo de error puede producir resultados inútiles o, simplemente, inexistentes ...