Vous êtes sur la page 1sur 16

Instituto Tecnológico de Piedras Negras

Algoritmo y Programación
Unidad 3. Introducción a la Programación de un Lenguaje Estructurado
3.1 Introducción y estructura del entorno de un lenguaje de programación.

Se llama programación a la implementación de un algoritmo en un determinado


lenguaje de programación, para realizar un programa.
Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han
de seguirse para resolver un problema.
Programa (Software) es una secuencia de instrucciones que una computadora
puede interpretar y ejecutar. El proceso de creación de software es materia de
ingeniería informática.
Según Nikklaus Wirth un programa está formado por algoritmos y estructura de
datos.
Se han propuesto diversas técnicas de programación, cuyo objetivo es mejorar tanto
el proceso de creación de software como su mantenimiento. Entre ellas se pueden
mencionar las programaciones lineales, estructurada modular y orientada a objetos.
Características generales que debe reunir una programa y que influyen en su
calidad :
Legibilidad: el programa deber ser claro y sencillo de tal forma que se facilite su
lectura y compresión.
Portabilidad: debe permitir su codificaciones en distintos lenguajes y su instalación
de distintos sistemas
Modificabilidad: el programa ha de facilitar su mantenimiento es decir las
modificaciones y actualizaciones necesarias para adoptarlo a una nueva situación.
Eficiencia: se deben aprovechar al máximo los recursos del ordenador minimizando
la memoria utilizada y el tiempo de proceso o ejecución siempre que no sea a costa
de las anteriores características.
Fases para la resolución del problema con una computadora
Análisis comprender y definir el problema
Desarrollo de solución o algoritmo; es la esencia lógica de pasos para resolver el
problema
Trascripción de la solución a un lenguaje de programación
Prueba seguir los pasos para planificar que la solución resuelve verdaderamente el
problema.

3.2 Estructura básica de una programación.


La estructura exacta de un programa depende del lenguaje que utilicemos y el
entorno en el cual lo creemos. Sin embargo, hay algunos principios generales:
Un cargador- todo programa necesita ser cargado en la memoria por el sistema
operativo. De esto se encarga el intérprete.
Definición de los datos- la mayoría de los programas operan con datos y por lo tanto
en el código fuente debemos definir que tipo de datos vamos a utilizar en el
programa. Esto se realiza de manera diferente en los distintos lenguajes. Todos los
lenguajes que usaremos tienen la posibilidad de crear una nueva definición de datos
simplemente al utilizar los datos.

Instrucciones- son la parte central del programa. Las instrucciones manipular los
datos que hemos definido. Realizan cálculos muestran los resultados etc.
La Mayoría de programas siguen una de dos estructuras:

1.- Programas de lotes


Estos se ejecutan típicamente desde una línea de comando o automáticamente
desde otra aplicación y tienden al siguiente patrón
Inicialización interna de los datos
Lectura de los datos ingresados
Procesamiento de los datos
Visualización o ejecución de los resultados

2.- Programas controlados por eventos


La mayor parte de las interfaces responden a eventos
Los programas controlados por eventos son generalmente así:
Inicialización interna de los datos
Espera de los eventos
Identificación de los eventos y actuación en consecuencia

Estructura Básica de un programa en C/C++:


La estructura de un programa es una cuestión que puede ser abordada desde varios
puntos de vista, consideremos para su estudio solo este caso. .
1. Componentes lógicos se refiere a los diversos elementos que componen
una aplicación, desde los más complejos hasta los más simples. Si comparamos
un programa con un edificio, los elementos irían desde el edificio como un todo, a
los ladrillos (sus elementos más pequeños).

2. Estructura lógica. Desde el punto de vista lógico, puede considerarse que los
programas comprenden dos tipos de elementos diferentes: estructuras de datos y
algoritmos. O dicho en otras palabras: datos, e instrucciones para su manipulación.
Su representación codificada adopta dos formas: una entendible por la máquina
(ejecutable y ficheros de datos) y otra entendible por el humano (fuente). Para el
conjunto de ambas puede considerarse una escala conceptual que, si vamos de lo
general a lo particular, podemos representarla como sigue:

•Aplicación: •Comprende ejecutables y datos. Puede haber múltiples ficheros de


ambos tipos (ficheros de datos y ejecutables)
•Programa: •Parte de una aplicación (código) que puede cargarse y ejecutarse
independientemente.
•Fichero fuente: •Se llaman así (abreviadamente) los ficheros que contienen el
código fuente (ficheros .C / .CPP) escrito por el programador
•Función: Una parte de un programa (subrutina) con un nombre, que puede ser
invocada (llamada a ejecución) desde otras partes tantas veces como se desee.
Opcionalmente puede recibir valores (argumentos); se ejecuta y puede devolver un
valor
•Bloque: •Lista, que puede estar vacía, de sentencias delimitadas
•Sentencia: •Las sentencias se componen de una o varias expresiones y tienen
sentido computacional completo
•Expresión: •Las expresiones son secuencias de tokens (operadores, operandos y
elementos de puntuación) que especifican una computación; tienen sentido
computacional en sí mismas. Son los bloques de computación más simples con los
que se construye un programa [6 §5] aunque no pueden ejecutarse separadamente
sino cuando forman una sentencia. Nota: la diferencia entre sentencia y expresión
es algo arbitraria.

3.3 Tipos de Datos


Existen muchas clasificaciones para los tipos de datos, y dependiendo de la fuente
que mires, te mostraran una u otra.
Ha continuación tienes una de las posibles clasificaciones;

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 disminuir.

Tipos dinámicos
Dentro de esta categoría entra solamente 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

3.4 Identificadores
En los lenguajes informáticos, los identificadores son elementos textuales (también
llamados símbolos) que nombran entidades del lenguaje. Algunas de las de
entidades que un identificador puede denotar son las variables, las constantes, los
tipos de dato, las etiquetas, las subrutinas, los paquetes y las subrutinas
(procedimientos y funciones).
En muchos lenguajes algunas secuencias tienen la forma léxica de un identificador
pero son conocidos como palabras clave (o palabras reservadas). Lo habitual es
que si un identificador se corresponde con una palabra clave o RESERVADA, éste
ya no pueda utilizarse para referirse a otro tipo de entidades como variables o
constantes (en unos pocos lenguajes, como PL/1, esta distinción no está del todo
clara).

3.5 Almacenamiento, direccionamiento y representación en memoria.


Hay dos clases, almacenamiento primario, que son los que usa la CPU directamente
(memoria principal, memoria caché, etc) y el almacenamiento secundario, a los
cuales la CPU no accede directamente, sino que deben almacenarse previamente
en uno primario. Son de almacenamiento secundario los discos magnéticos,
ópticos, cintas magnéticas, tambores magnéticos, etc. El almacenamiento de datos
puede usarse también para copias de seguridad, ver backup. Con el correr de los
años, el almacenamiento de datos informáticos ha ido bajando de precio.
DIRECCIONAMIENTO
Los llamados Modos de direccionamiento son las diferentes maneras de especificar
en informática un operando dentro de una instrucción (lenguaje ensamblador).
Cómo se especifican e interpretan las direcciones de memoria según las
instrucciones. Pueden ser:

Inmediato: En la instrucción está incluido directamente el operando.


Directo: El campo de operando en la instrucción contiene la dirección en memoria
donde se encuentra el operando.
Indirecto: El campo de operando contiene una dirección de memoria, en la que se
encuentra la dirección efectiva del operando.
Absoluto: El campo de operando contiene una dirección en memoria, en la que se
encuentra la instrucción.
De registro: Sirve para especificar operandos que están en registros.
Indirecto mediante registros: El campo de operando de la instrucción contiene un
identificador de registro en el que se encuentra la dirección efectiva del operando.
De desplazamiento: Combina el modo directo e indirecto mediante registros
De pila: Se utiliza cuando el operando está en memoria y en la cabecera de la Pila.
• REPRESENTACION DE MEMORIA
Podemos representar a las colas de dos formas :
Como arreglos
Como listas ordenadas
En esta unidad trataremos a las colas como arreglos de elementos, en donde
debemos definir el tamaño de la cola y dos apuntadores, uno para accesar el primer
elemento de la lista y otro que guarde el último.
En lo sucesivo, al apuntador del primer elemento lo llamaremos F, al del último
elemento A y MAXIMO para definir el número máximo de elementos en la cola.
COLA (DEFINICION)
Una cola es una estructura de almacenamiento, donde la podemos considerar como
una lista de elementos, en la que éstos van a ser insertados por un extremo y serán
extraídos por otro. Las colas son estructuras de tipo FIFO (first-in, first-out), ya que
el primer elemento en entrar a la cola será el primero en salir de ella. Existen
muchísimos ejemplos de colas en la vida real, como por ejemplo: personas
esperando en un teléfono público, niños esperando para subir a un juego mecánico,
estudiantes esperando para subir a un camión escolar, etc.

3.6 Proposición de asignación.


La forma de una proposición de asignación es: a = b donde b es una expresión
permitida, y a es el nombre de la variable donde se dejará el valor resultante de
evaluar b.
Por expresión permitida se entiende a aquella expresión matemática que ocupa las
operaciones y funciones nombradas como existentes, y escritas de la forma que
para ellas se señala, respetando así la sintaxis en cada instrucción.
El signo igual, " = ", de a = b tiene el sentido de asignar a la variable a el valor que
resulte de evaluar la expresión permitida b. Es decir, a = b. Que no es la misma
definición usada en matemáticas para el signo: = .

El computador, al ejecutar una proposición de asignación evalúa la expresión del


lado derecho del signo igual con los valores que en ese momento tengan las
variables ahí ocupadas. Así, la expresión entregará valores probablemente distintos
en las diversas ocasiones que por programa se evalúe esa expresión. Las
siguientes son proposiciones de asignación correctas,
A = 2.5 TO = 1 + XT I = I + 1 Y no son correctas las siguientes:

A + B = C 20 = 16.2 + 3.8 AL = (AT+3.4) / 110.302

3.7 operadores operando y expresiones.


En todos los lenguajes de programación se utilizan operadores para efectuar
operaciones aritméticas. Combinando las variables y constantes en expresiones
aritméticas por medio de funciones adecuadas. Una expresión es un conjunto de
datos o funciones unidos por operadores aritméticos, los cuales son: SUMA,
RESTA, MULTIPLICACION, DIVISION, EXPONENCIAL Y MODULO.

OPERADOR LOGICO
En ocasiones en los programas se necesitan realizar comparaciones entre distintos
valores, esto se realiza utilizando los operadores relaciones, los cuales son: Mayor
que, menor que, menor igual que, mayor igual que, igual a, distinto a o diferente de.

OPERANDO.
Referente a la parte de la instrucción de lenguaje máquina de la computadora que
designa la dirección de los datos con los que se debe operar.

EXPRESIONES.
Las expresiones son combinaciones de constantes, variables, símbolos de
operación, paréntesis y nombres de funciones especiales. Por ejemplo:
a + (b + 3) / c
Cada expresión toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecución de las operaciones indicadas. Una
expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en: Aritméticas, Relacionales, Lógicas.

3.8 prioridad de operadores evaluación de expresiones


Se llama prioridad al orden en el que se evalúa una expresión. 4D tiene una
estricta prioridad izquierda-a-derecha. Por ejemplo: 3+4*5 devuelve 35 porque la
expresión es evaluada como 3+4, dando 7, el cuál es multiplicado por 5,
resultando 35. Se pueden utilizar paréntesis para cambiar la prioridad izquierda-a-
derecha. Por ejemplo:
3+(4*5) devuelve 23 porque se evalúa primero la expresión (4*5), por estar entre
paréntesis. El resultado es 20, lo cual es añadido el 3, dando el resultado final 23.
Se pueden insertar paréntesis dentro de otros grupos de paréntesis. Es necesario
asegurarse de que cada paréntesis izquierdo tiene su correspondiente derecho. La
falta o el uso incorrecto de los paréntesis pueden provocar resultados inesperados
o expresiones no válidas.

EVALUACIÓN DE EXPRESIONES
Cuando en una expresión concurre más de una operación, los paréntesis
indicarán prioridad, es decir, la operación encerrada entre paréntesis se realizará
en primer lugar. Además, algunos operadores tendrán preferencia sobre otros. Por
ejemplo, en la operación a + b / c, primero se realizará b / c y posteriormente se le
sumará a. En caso de que el programador quiera que se sume primero a y b para
posteriormente dividir por c, tendríamos que hacer (a + b) / c. Si todos los
operadores de una expresión tienen la misma prioridad, la operación se hará de
izquierda a derecha, salvo cuando tengamos exponenciales, en tal caso, el orden
será de derecha a izquierda, por ejemplo, al hacer 2**3**2 resulta el valor 2**9 =
512.

3.9 elaboración de programa.


En esta fase se establece el producto a desarrollar, siendo necesario especificar los
procesos y estructuras de datos que se van a emplear. Debe existir una gran
comunicación entre el usuario y el analista para poder conocer todas las
necesidades que precisa la aplicación.
Diseño
En esta fase se alcanza con mayor precisión una solución optima de la aplicación,
teniendo en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos,
comunicaciones, etc…) y los recursos lógicos. (sistema operativo., programas de
utilidad, bases de datos, etc…)
Las fases o etapas:
• Análisis.
• Diseño.
• Codificación o construcción.
• Implantación o explotación.
• Mantenimiento

Explotación
En esta fase se realiza la implantación de la aplicación en el sistema o sistemas
físicos donde van a funcionar habitualmente y su puesta en marcha para comprobar
el buen funcionamiento.

Actividades a tener en cuenta o realizar:

• Instalación del/los programa/s.


• Pruebas de aceptación al nuevo sistema.
• Conversión de la información del antiguo sistema al nuevo (si hay una aplicación
antigua)
• Eliminación del sistema anterior.

Mantenimiento:
Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de
solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad de
que ciertas aplicaciones necesiten reiniciar el ciclo de vida.

Tipo de mantenimiento:
Mantenimiento correctivo: Consiste en corregir errores no detectados en pruebas
anteriores y que aparezcan con el uso normal de la aplicación. Este mantenimiento
puede estar incluido en la garantía o mantenimiento de la aplicación.

Codificación
Consiste en traducir los resultados obtenidos a un determinado lenguaje de
programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de
carga. Se deben de realizar las pruebas necesarias para comprobar la calidad y
estabilidad del programa.

3.10 pruebas y depuración


Los errores humanos dentro de la programación de computadoras son muchos y
aumentan considerablemente con la complejidad del problema. El proceso de
identificar y eliminar errores, para dar paso a una solución sin errores se le llama
Depuración.

La Depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de
la solución, por ello se debe considerar con el mismo interés y entusiasmo.

Resulta conveniente observar los siguientes principios al realizar una depuración,


ya que de este trabajo depende el éxito de nuestra solución.

a) Trate de iniciar la prueba de un programa con una mentalidad saboteadora,


casi disfrutando la tarea de encontrar algún error.

b) Sospeche de todos los resultados que le arroje la solución, con lo cual deberá
verificar todos.

c) Considerar todas las situaciones posibles normales y aún algunas de las


anormales.

Codificación.
La codificación es la operación de escribir la solución del problema (de acuerdo a la
lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones
detalladas en un código reconocible por la computadora, la serie de instrucciones
detalladas se le conoce como programa fuente, el cual se escribe en un lenguaje de
programación o lenguaje alto nivel.
Existen diversos tipos de lenguaje de alto nivel, de acuerdo al tipo de problema que
se desea resolver, clasificándose en problemas: matemáticos, científicos,
administrativos o comerciales.

Documentación.
Es la guía o comunicación escrita en sus variadas formas, ya sean en enunciados,
procedimientos, dibujos o diagramas. A menudo un programa escrito por una
persona, es usado por muchas otras. Por ello la documentación sirve para ayudar
a comprender o usar un programa o para facilitar futuras modificaciones
(mantenimiento).
La documentación debe presentarse en tres formas, externa, interna y al usuario
final. La primera debe estar integrada por los siguientes elementos:

a) Descripción del problema.

b) Nombre del autor.

c) Diagrama de flujo y/o pseudocódigo.

d) Lista de variables y constantes.

e) Codificación del programa.

En lo referente a la documentación interna, ésta lo constituyen los comentarios o


mensajes que agregan al código, para hacer más claro el entendimiento del
proceso.
A la documentación para el usuario se le conoce como manual del usuario.
En este manual no existe información de tipo técnico, sino la descripción del
funcionamiento del programa.

Vous aimerez peut-être aussi