Está en la página 1de 20

Fundamentos de Programación

CONCEPTOS BÁSICOS
Una computadora es una máquina electrónica analógica o digital programable, que recibe y procesa
datos para convertirlos en información útil. Es una colección de circuitos integrados y otros
componentes relacionados que puede ejecutar algún proceso, con exactitud, rapidez y de acuerdo
a lo indicado por un usuario o automáticamente por un programa.

Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o
varias tareas en una computadora. Sin programas, las máquinas no pueden funcionar
correctamente. Al conjunto general de programas, se le denomina software y constituyen el soporte
lógico de las computadoras digitales.

Arquitectura de la computadora
La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental
de un sistema de computadora, o sea, es un modelo y una descripción funcional de los
requerimientos y las implementaciones de diseño para varias partes de una computadora, con
especial interés en la forma en que la unidad central de proceso (UCP) trabaja internamente y
accede a las direcciones de memoria.

Arquitectura de Von Neumann


Aunque las tecnologías empleadas en las computadoras digitales han cambiado mucho desde los
primeros modelos en los 40’s, la mayoría todavía utiliza la llamada Arquitectura de Von Neumann,
que describe una computadora con 4 secciones principales:

• La unidad aritmético lógica.


• La unidad de control.
• La memoria central, y
• Los dispositivos de entrada y salida (E/S).

Estas partes están interconectadas por canales de conductores denominados buses.

Unidad I Pag. 1
Fundamentos de Programación

En computación, la unidad aritmético lógica (ALU por sus siglas en inglés Arithmetic Logic Unit), es
un circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y
operaciones lógicas (si, y, o, no) y de comparación entre dos números.

Los microprocesadores modernos tienen dentro de ellos un ALU muy complejo y potente. De hecho,
un microprocesador de múltiples núcleos puede tener en cada núcleo múltiples unidades de
ejecución, cada una de ellas con múltiples ALU.

Muchos otros circuitos pueden contener en el interior una unidad aritmético lógica: unidades de
procesamiento gráfico (como NVIDIA y ATI), FPU como el viejo coprocesador matemático 80387, y
procesadores digitales de señales (como en las tarjetas de sonido Sound Blaster), lectoras de CD y
televisores de alta definición. Todos éstos tienen en su interior varias ALU potentes y complejas.

La unidad de control (UC) es uno de los tres bloques funcionales principales en los que se divide una
unidad central de procesamiento. Su función es buscar las instrucciones en la memoria principal,
decodificarlas y ejecutarlas. Funciona de esta manera: sigue la dirección de las posiciones en
memoria que contienen la instrucción que el computador va a realizar en ese momento; recupera
la información poniéndola en la ALU para la operación que debe desarrollar. Transfiere luego el
resultado a ubicaciones apropiadas en la memoria. Una vez que ocurre lo anterior, la unidad de
control va a la siguiente instrucción (normalmente situada en la siguiente posición, a menos que la
instrucción sea una instrucción de salto) informan al ordenador que la próxima instrucción estará
ubicada en otra posición de la memoria.

La memoria RAM es un conjunto de celdas de almacenamiento numeradas, puede ser reescrita


varios millones de veces, donde cada una es un bit o unidad de información. Las celdas contienen
datos e instrucciones necesarios para llevar a cabo los cálculos. El número de celdas varían mucho
de computador a computador.

Los dispositivos de Entrada/Salida sirven a la computadora para obtener información del mundo
exterior y/o comunicar los resultados generados por el computador al exterior.

COMPUTABILIDAD
El concepto de "computabilidad" es uno de los pilares fundamentales de la matemática moderna.
Se han elaborado diferentes teorías, todas ellas equivalentes, para precisar el concepto de
computabilidad.

El proceso de elaboración de la teoría de lo computable arranca y completa otra teoría matemática


más antigua y fundamental: la teoría de los algoritmos. Inicialmente un algoritmo era una secuencia
ordenada de operaciones que resolvían determinados problemas matemáticos de un mismo tipo.
Por ejemplo, utilizamos frecuentemente en matemáticas básicas el algoritmo (el procedimiento)
para multiplicar dos números dados, o también el que permite extraer la raíz cuadrada o el algoritmo
que resuelve ecuaciones de segundo grado.

Cualquier algoritmo se define en términos matemáticos empleando símbolos de un conjunto dado


y aplicando determinadas reglas de combinación entre los mismos. Con ello obtenemos un
"mensaje" compuesto por una cadena de símbolos que tiene un determinado significado. La cadena
de símbolos puede a su vez traducirse a una cadena meramente numérica aplicando un sistema

Unidad I Pag. 2
Fundamentos de Programación

dado de codificación. De esta forma entonces cualquier algoritmo escrito en cualquier sistema de
símbolos puede ser transformado en un mensaje puramente numérico. Si tenemos algoritmos para
determinar las raíces de ecuaciones de segundo grado ¿por qué no buscar un algoritmo que
determine las raíces de una ecuación de grado n? De esta forma se intentaba dar respuesta a la
pregunta de si existía un superalgoritmo que diese respuesta a cualquier problema matemático.
Pero los matemáticos se toparon con la evidencia de que ni siquiera para determinados problemas
parecía existir algoritmo. Además del lado de la lógica matemática vino una aportación también
desalentadora de la mano de K. Gödel, ya que demostró que existen sistemas de códigos y reglas
los cuales no eran capaces de demostrar si una sentencia o mensaje generado dentro del propio
sistema era verdadera o falsa (o dicho de otro modo, con estos conjuntos de reglas y símbolos se
podía construir un mensaje que a priori dentro del propio sistema no podía decirse si era verdadero
o falso, como por ejemplo la frase: "esta frase es falsa"; lo que en matemática se denominaban
sistemas incompletos).

En esta búsqueda infructuosa de superalgoritmos los matemáticos se dieron cuenta de que para
responder a la pregunta de si existía ese tal superalgoritmo debía precisarse completamente qué
era un algoritmo. En este punto entra la definición que de algoritmo elaboraron Alan Turing y Emile
Post mediante sendas máquinas teóricas: la máquina de Turing y la máquina de Post.

Turing y Post en realidad buscaban una definición de computabilidad, es decir una definición de qué
y cómo algo puede ser computable o calculable. Para ello centraron sus argumentaciones en torno
a unas máquinas de computar teóricas que se denominaron popularmente como máquinas de
Turing y Post respectivamente. Así hablamos de números "turingcomputables", funciones
"turingcomputables" etc., cuando pueden calcularse por medio de una máquina de Turing y de
forma similar también en una máquina de Post.

En resumen, para la computabilidad es necesario:

• Un conjunto finito de símbolos.


• Hacer asociaciones entre conceptos y elementos del lenguaje (de símbolos)
• Encontrar las combinaciones adecuadas de símbolos para evitar ambigüedad.
• Definir una manera de confirmar tal descripción para que terceros puedan reproducirla y
llegar a los mismos resultados.

ALGORITMO
Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite
realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha
actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado
final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.

MAQUINA DE TURING
Una máquina de Turing es un dispositivo que manipula símbolos sobre una tira de cinta de acuerdo
a una tabla de reglas. A pesar de su simplicidad, una máquina de Turing puede ser adaptada para
simular la lógica de cualquier algoritmo de computador y es particularmente útil en la explicación
de las funciones de un CPU dentro de un computador.

Unidad I Pag. 3
Fundamentos de Programación

La máquina de Turing fue descrita por Alan Turing como «máquina automática» en la revista
Proceedings of the London Mathematical Society en 1936. La máquina de Turing no está diseñada
como una tecnología de computación práctica, sino como un dispositivo hipotético que representa
una máquina de computación. Las máquinas de Turing ayudan a los científicos a entender los límites
del cálculo mecánico. Una máquina de Turing consta de:

1. Una cinta que se divide en celdas, una al lado de la otra. Cada celda contiene un símbolo de
algún alfabeto finito. El alfabeto contiene un símbolo especial llamado blanco (aquí escrito
como 'B') y uno o más símbolos adicionales. La cinta se supone que es arbitrariamente
extensible hacia la izquierda y hacia la derecha, es decir, la máquina de Turing siempre es
suministrada con tanta cinta como necesite para su computación. Las celdas que no se
hayan escrito previamente se asumen que están rellenas con el símbolo blanco. En algunos
modelos la cinta tiene un extremo izquierdo marcado con un símbolo especial; la cinta se
extiende o es indefinidamente extensible hacia la derecha.
2. Un cabezal que puede leer y escribir símbolos en la cinta y mover la cinta a la izquierda y a
la derecha una (y sólo una) celda a la vez. En algunos modelos el cabezal se mueve y la cinta
es estacionaria.
3. Un registro de estado que almacena el estado de la máquina de Turing, uno de los estados
finitos. Hay un especial estado inicial con que el registro de estado es iniciado. Turing escribe
que estos estados reemplazan el "estado de la mente" en que ordinariamente estaría una
persona realizando cálculos.
4. Una tabla finita de instrucciones (llamada ocasionalmente como tabla de acción o función
de transición). Las instrucciones son usualmente 5-tuplas: qiaj→qi1aj1dk, (a veces 4-tuplas),
que, dado el estado (qi) la máquina está actualmente en y el símbolo(aj) se está leyendo en
la cinta (el símbolo actualmente debajo del cabezal) le indica a la máquina hacer lo siguiente
en secuencia (para los modelos de 5-tupla):
• Borra o escribe un símbolo (reemplazando aj con aj1), y entonces
• Mueve el cabezal (que es descrito por dk y puede tener los valores: 'L' para un paso a la
izquierda, o 'R' para uno paso a la derecha, o 'N' para permanecer en el mismo lugar) y
luego
• Asume el mismo o un nuevo estado como prescrito (ve al estado qi1).

PARTES DE UN ALGORITMO
Todo algoritmo debe obedecer a la estructura básica de un sistema, es decir: entrada, proceso y
salida.

Donde:

▪ ENTRADA Corresponde al insumo, a los datos necesarios que requiere el proceso para
ofrecer los resultados esperados.
▪ PROCESO Pasos necesarios para obtener la solución del problema o la situación planteada.
▪ SALIDA Resultados arrojados por el proceso como solución.

CARACTERÍSTICAS DE LOS ALGORITMOS


Las características fundamentales que debe cumplir un algoritmo son:

Unidad I Pag. 4
Fundamentos de Programación

▪ PRECISIÓN Indica el orden de realización de cada paso dentro del proceso.


▪ DEFINICIÓN Indica la exactitud y consistencia de los pasos descritos en el proceso, si el
algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo resultado.
▪ FINITUD Indica el número razonable de pasos, los cuales deben conllevar a la finalización
del proceso y producir un resultado en un tiempo finito. Al diseñar un algoritmo se debe
tener presente las características de precisión, definición y finitud. Existen 2 tipos de
algoritmos
o Cualitativos: Se describen los pasos utilizando palabras.
o Cuantitativos: Se utilizan cálculos numéricos para definir los pasos del proceso.

TIPOS DE DATOS
Como se describió anteriormente, un dato es un campo que puede convertirse en información.
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como
`b', un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que
puede tomar una variable.

Existen datos simples (sin estructura) y compuestos (estructurados).

Los datos simples son los siguientes

- Numéricos (Reales, Enteros)


- Lógicos
- Carácter (Char, String)

Los datos estructurados son los siguientes:


- Arreglos (Vectores, Matrices)
- Registros
- Definidos por el usuario
- Apuntadores

DIAGRAMA DE FLUJO
O diagrama de actividades es la representación gráfica del algoritmo o proceso. Se utiliza en
disciplinas como programación, economía, procesos industriales y psicología cognitiva.

En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de


trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de
actividades muestra el flujo de control general.

En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que mueven
elementos físicos (p.ej., gasolina) o energía (p.ej., presión). Los cambios adicionales permiten al
diagrama soportar mejor flujos de comportamiento y datos continuos.

Estos diagramas utilizan símbolos con significados 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.

Unidad I Pag. 5
Fundamentos de Programación

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

• Identificar las ideas principales al ser incluidas en el diagrama de flujo. Deben estar
presentes el autor o responsable del proceso, los autores o responsables del proceso
anterior y posterior y de otros procesos interrelacionados, así como las terceras 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 previo y el final
la entrada al proceso siguiente.
• 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.

Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización
(ANSI)
▪ Se deben se usar solamente líneas de flujo horizontales y/o verticales.
▪ Se debe evitar el cruce de líneas utilizando los conectores.
▪ Se deben usar conectores solo cuando sea necesario.
▪ No deben quedar líneas de flujo son conectar.
▪ Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de
izquierda a derecha.
▪ Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de
muchas palabras

Las acciones incluyen operaciones de entrada y salida, asignaciones de variables, condicionales si-
entonces o de selección múltiple, ciclos mientras, repetir o para.
Asignación
La instrucción de asignación permite almacenar un valor en una variable.

var <- Expresión


<variable>  <expresión> ;

Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego se asigna el


resultado a la variable de la izquierda. El tipo de la variable y el de la expresión deben coincidir.

Unidad I Pag. 6
Fundamentos de Programación

Entradas y Salidas
La instrucción Leer permite ingresar información desde el ambiente.

var1,
var2,…,varN
Leer <variablel> , <variable2> , ... ,<variableN> ;

Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los asigna a las N
variables mencionadas. Pueden incluirse una o más variables, por lo tanto el comando leerá uno o
más valores.

La instrucción Escribir permite mostrar valores al ambiente.

Escribir <exprl> , <expr2> , ... , <exprN> ;

Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores obtenidos de evaluar
N expresiones. Dado que puede incluir una o más expresiones, mostrará uno o más valores.
Condicional Si-Entonces
La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del valor de
una condición lógica.

exp.
Lógica

Si <condición>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi

Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las instrucciones que


correspondan: las instrucciones que le siguen al Entonces si la condición es verdadera, o las
instrucciones que le siguen al Sino si la condición es falsa. La condición debe ser una expresión lógica,
que al ser evaluada retorna Verdadero o Falso.

La cláusula Entonces debe aparecer siempre, pero la cláusula Sino puede no estar. En ese caso, si la
condición es falsa no se ejecuta ninguna instrucción y la ejecución del programa continúa con la
instrucción siguiente.
Selección Multiple
La secuencia de instrucciones ejecutada por una instrucción Segun depende del valor de una
variable numérica.

Segun <variable> Hacer


<número1>: <instrucciones>
<número2>,<número3>: <instrucciones>
<...>

Unidad I Pag. 7
Fundamentos de Programación

De Otro Modo: <instrucciones>


FinSegun

Esta instrucción permite ejecutar opcionalmente varias acciones posibles, dependiendo del valor
almacenado en una variable de tipo numérico. Al ejecutarse, se evalúa el contenido de la variable y
se ejecuta la secuencia de instrucciones asociada con dicho valor.

Cada opción está formada por uno o más números separados por comas, dos puntos y una secuencia
de instrucciones. Si una opción incluye varios números, la secuencia de instrucciones asociada se
debe ejecutar cuando el valor de la variable es uno de esos números.

Opcionalmente, se puede agregar una opción final, denominada De Otro Modo, cuya secuencia de
instrucciones asociada se ejecutará sólo si el valor almacenado en la variable no coincide con
ninguna de las opciones anteriores.
Ciclo Mientras

La instrucción Mientras ejecuta una secuencia de instrucciones mientras una condición sea

verdadera.

Mientras <condición> Hacer


<instrucciones>
FinMientras

Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta verdadera, se ejecuta


una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la ejecución del
cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución se repite. Estos pasos
se repiten mientras la condición sea verdadera.

Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al evaluar por primera
vez la condición resulta ser falsa.

Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un ciclo infinito. A fin
de evitarlo, las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique
la o las variables involucradas en la condición, de modo que ésta sea falsificada en algún momento
y así finalice la ejecución del ciclo.

Unidad I Pag. 8
Fundamentos de Programación

Ciclo Repetir

La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta que la condición sea

verdadera.

Repetir
<instrucciones>
Hasta Que <condición>

Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta
una vez y luego se evalúa la condición. Si la condición es falsa, el cuerpo del ciclo se ejecuta
nuevamente y se vuelve a evaluar la condición. Esto se repite hasta que la condición sea verdadera.

Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del ciclo serán
ejecutadas al menos una vez.

Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna instrucción que
modifique la o las variables involucradas en la condición de modo que en algún momento la
condición sea verdadera y se finalice la ejecución del ciclo.
Ciclo Para

La instrucción Para ejecuta una secuencia de instrucciones un número determinado de veces.

Para <variable> <- <inicial> Hasta <final> ( Con Paso <paso> ) Hacer
<instrucciones>
FinPara

Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de


instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable <variable> en <paso>
unidades y se evalúa si el valor almacenado en <variable> superó al valor <final>. Si esto es falso se
repite hasta que <variable> supere a <final>. Si se omite la cláusula Con Paso <paso>, la variable
<variable> se incrementará en 1.

Unidad I Pag. 9
Fundamentos de Programación

PSEUDOCODIGO
Es una descripción informal de alto nivel de un algoritmo informático de programación, compacto
e informal, que utiliza las convenciones estructurales de un lenguaje de programación verdadero,
pero que está diseñado para la lectura humana en lugar de la lectura mediante máquina, y con
independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite
detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones
de variables, código específico del sistema y algunas subrutinas. El lenguaje de programación se
complementa, donde sea conveniente, con descripciones detalladas en lenguaje natural, o con
notación matemática compacta. Se utiliza pseudocódigo pues este es más fácil de entender para las
personas que el código de lenguaje de programación convencional, ya que es una descripción
eficiente y con un entorno independiente de los principios fundamentales de un algoritmo.

Todo algoritmo en pseudocógido tiene la siguiente estructura general:

Proceso SinTitulo
accion 1;
accion 1;
.
.
.
accion n;
FinProceso

Comienza con la palabra clave Inicio Proceso seguida del nombre del programa, luego le sigue una
secuencia de instrucciones y finaliza con la palabra Fin Proceso. Una secuencia de instrucciones es
una lista de una o más instrucciones, cada una terminada en punto y coma.

ESTRUCTURAS BASICAS
Son tres estructuras básicas de la programación estructurada.

a) Secuencia
b) Condicional
c) Iteración

Secuencial

Un conjunto de instrucciones en el que se realizan una después de otra en un orden determinado


(formando una secuencia) que buscan un objetivo un objetivo.

Condicional

En la secuencia de ejecución de un programa la verificación de una condición hace que se puedan


tomar dos rutas distintas en la ejecución. Posteriormente se vuelven a unir las dos rutas para lograr
el objetivo final.

Iteración

Unidad I Pag. 10
Fundamentos de Programación

Una subsecuencia de instrucciones se repite varias veces de acuerdo con el estado de una condición;
puede haber dos casos:

- Mientras una condición sea verdadera una subsecuencia de instrucciones se sigue


repitiendo.
- Mientras una condición sea falsa una subsecuencia de instrucciones se sigue repitiendo.

Unidad I Pag. 11
Fundamentos de Programación

SOLUCIÓN DE PROBLEMAS POR MEDIO DE LA COMPUTADORA

Introducción
El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una
metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones.

Para poder realizar programas, además de conocer la metodología mencionada, también debemos
de conocer, de manera específica las funciones que la computadora puede realizar y las formas en
que se pueden manejar los elementos que hay en la misma.

Tipos de Lenguajes Algorítmicos


▪ Gráficos: Representación gráfica de las operaciones que realiza un algoritmo (diagrama de
flujo).
▪ No Gráficos: Representación en forma descriptiva las operaciones que debe realizar un
algoritmo (pseudocodigo).

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.
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.
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 pseudocodigo), en un código reconocible por la computadora, la serie de
instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de
programación o lenguaje de alto nivel.
Prueba y Depuración
El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama
depuración.

Unidad I Pag. 12
Fundamentos de Programación

Documentación
A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve
para ayudar a comprender o usar un programa o para facilitar futuras modificaciones
(mantenimiento).

Los tipos de documentación pueden ser:


▪ Interna
▪ Externa
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y
nombres de funciones especiales.

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.

Según sea el tipo de datos que manipulan, se clasifican en:


▪ Aritméticas
▪ Relaciónales
▪ Lógicas
Operadores
Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables
y/o constantes. Es decir, los operadores nos permiten manipular valores.

Tipos de Operadores
▪ Aritméticos: Los operadores aritméticos permiten la realización de operaciones
matemáticas con los valores (variables y constantes). Pueden ser utilizados con tipos de
datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es
real, el resultado es real. La precedencia de operadores es la siguiente:
o Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se
evalúa primero.
o Dentro de una misma expresión los operadores se evalúan en el siguiente orden
▪ Relaciónales
o Se utilizan para establecer una relación entre dos valores.
o Compara estos valores entre si y esta comparación produce un resultado de certeza
o falsedad (verdadero o falso).
o Los operadores relaciónales comparan valores del mismo tipo (numéricos o
cadenas)
o Tienen el mismo nivel de prioridad en su evaluación.
o Los operadores relaciónales tiene menor prioridad que los aritméticos
▪ Lógicos
o Estos operadores se utilizan para establecer relaciones entre valores lógicos.
o Estos valores pueden ser resultado de una expresión relacional

Unidad I Pag. 13
Fundamentos de Programación

Identificadores
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un
identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria
de la computadora, que nos permite accesar a su contenido.
Constantes y Variables
Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del
programa.

Una variable es un espacio en la memoria de la computadora que permite almacenar


temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la
ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es
necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo.
Contadores
Se utilizan para llevar el control del número de ocasiones en que se realiza una operación o se
cumple una condición. Con los incrementos generalmente de uno en uno.
Acumuladores
Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores
que se van leyendo o calculando progresivamente

Operadores y Funciones
Se dispone de un conjunto básico de operadores y funciones que pueden ser utilizados para la
construcción de expresiones más o menos complejas.

Las siguientes tablas exhiben algunos de los operadores típicos:

Operador Significado Ejemplo

Relacionales

> Mayor que 3>2

< Menor que 'ABC'<'abc'

= Igual que 4=3

<= Menor o igual que 'a'<='b'

>= Mayor o igual que 4>=5

Logicos

& Conjunción (y). (7>4) & (2=1) //falso

| Disyunción (o). (1=1 | 2=1) //verdadero

~ Negación (no). ~(2<5) //falso

Aritméticos

* Multiplicación

Unidad I Pag. 14
Fundamentos de Programación

+ Suma

/ División

^ Potenciación

La jerarquía de los operadores matemáticos es igual a la del álgebra, aunque puede alterarse
mediante el uso de paréntesis.
Diagramas estructurados (Nassi−Schneiderman)
El diagrama estructurado N−S también conocido como diagrama de chapin es como un diagrama de
flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se
pueden escribir en cajas sucesivas y como en los diagramas de flujo, se pueden escribir diferentes
acciones en una caja.

El diagrama N-S cuenta con un conjunto limitado de símbolos para representar los pasos del
algoritmo, por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje
natural es muy extenso y se presta para la ambigüedad, solo se utiliza un conjunto de palabras, a las
que se denomina palabras reservadas. Las palabras reservadas más utilizadas son:

Inicio Fin Leer Escribir

Mientras Repita Hasta Para

Incrementar Decrementar Hacer Función

Entero Real Caracter Cadena

Lógico Retornar

Estructuras secuenciales
Son aquellas que se ejecutan una después de otra. Se tienen tres tipos de instrucciones
secuenciales: la declaración de variables, asignación, instrucción Leer e instrucción Escribir.
La mayoría de algoritmos actúan sobre un conjunto de datos suministrados por el usuario y se
espera que a partir de dichos valores y desarrollando los procesos programados se genere
información de salida o resultados.
Declaración de variables
Teniendo en cuenta la compatibilidad con la mayoría de los lenguajes, se recomienda que desde el
diseño del programa se utilice una forma determinada para la declaración de las variables. Esta
consiste en escribir el tipo de datos y la lista de identificadores que se tendrán de dicho tipo,
separando cada identificador por medio de comas (,). Para mejorar la claridad de la declaración se
puede colocar dos puntos (:) para separar el tipo de datos de la lista de identificadores.

Ejemplo:
Entero: edad
Real: estatura, peso, sueldo
Cadena: nombre, dirección

Unidad I Pag. 15
Fundamentos de Programación

Aunque algunos lenguajes de programación permiten declarar las variables en el momento en que
se las necesita, es aconsejable, en favor de los buenos hábitos de programación, siempre declarar
las variables antes de utilizarlas y el sitio más adecuado es el inicio del programa o de la función.
Asignación
Asignar un valor a una variable equivale a decir que se guarda dicho valor en la posición de memoria
reservado para la variable en mención. Por lo tanto, para poder realizar una asignación es necesario
primero haber declarado una variable, con lo cual se reserva un espacio de memoria suficiente para
guardar un dato del tipo especificado.
Una expresión de asignación tiene la forma:
Variable = expresión
Donde la expresión puede estar formada por un valor, por un conjunto de valores y operadores o
por una función.

Ejemplos:
Edad = 10
Estatura = 1.80
Resultado = 2*3

Donde edad y resultado son variables de tipo entero y estatura de tipo real que se supone
declaradas previamente.

Una asignación tiene tres partes, una variable, el signo igual y la expresión cuyo valor se asigna a la
variable. La variable siempre va a la izquierda del igual, mientras que la expresión siempre estará a
la derecha.

Ejemplos:
Entero: X, Y
X = 10
Y=X*2+8

En este ejemplo, la variable Y contendrá el valor 28.


Instrucción Leer
La instrucción LEER se utiliza para enviar información desde un dispositivo de entrada de datos hacia
la memoria. En la memoria los datos son ubicados mediante el identificador (nombre de variable)
utilizado como complemento de la instrucción LEER.
En diagrama N-S la instrucción de entrada se representa así:
Leer <lista de identificadores de variables>
Ejemplo:
Leer a, b

Donde “a” y “b” son las variables que recibirán los valores y que deben haberse declarado
previamente.

Instrucción Escribir
Esta instrucción permite enviar datos desde la memoria hacia un dispositivo de salida como la
pantalla o la impresora. La información que se envía puede ser constante o también el contenido
de variables.

Unidad I Pag. 16
Fundamentos de Programación

Escribir <lista de constantes y variables>


Ejemplo:
Escribir a, b

Cuando se escriben más de una variable es necesario separarlas con comas (,) y los mensajes se
escriben entre comillas dobles " ". Si una variable es escrita entre comillas se mostrará el
identificador y no el contenido.
Estructuras de decisión
Las estructuras de decisión o también llamadas de selección permiten que el algoritmo tome
decisiones y ejecute u omita algunos procesos dependiendo del cumplimiento de una condición. Se
pueden manejar tres tipos de decisiones: simple, doble y múltiple.

Decisión simple y doble


Una decisión es simple, cuando solo se tiene determinado los pasos a seguir si el resultado de la
condición es verdadero, mientras que si es falso, la ejecución del algoritmo continúa después de la
estructura condicional.

Una decisión cuando se tiene un curso de acción para el caso que el resultado de la comparación
sea verdadero y otro para cuando sea falso.

Decisión múltiple
Muchas decisiones deben tomarse, no solo entre dos alternativas, sino de un conjunto mayor. Estos
casos bien pueden solucionarse utilizando condicionales dobles anidados; sin embargo, en favor de
la claridad del algoritmo y la facilidad para el programador, es mejor utilizar una estructura de
decisión múltiple, la cual es fácil de llevar a un lenguaje de programación, ya que éstos incluyen
alguna instrucción con este fin.

La decisión múltiple determina el valor de una variable y dependiendo de éste sigue un curso de
acción. Es importante tener en cuenta que solo se verifica la condición de igualdad entre la variable
y la constante.
Estructuras de repetición
En la solución de algunos problemas es necesario ejecutar repetidas veces una instrucción o un
conjunto de instrucciones. En algunos casos, el número de repeticiones se conoce con anterioridad,
mientras que en otras depende de cálculos o estados de variables que se dan dentro de la solución
del problema.
Para solucionar este tipo de problemas se utiliza un tipo de estructuras a las que se conocen como
estructuras de repetición, bucles o ciclos.

Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces dependiendo del
cumplimiento de una condición.

Ciclo Mientras
Este ciclo consiste en un conjunto de instrucciones que se repiten mientras se cumpla una condición.
De igual manera que en los condicionales, la condición es evaluada y retorna un valor lógico, que
puede ser verdadero o falso. En el caso del ciclo mientras las instrucciones contenidas en la
estructura de repetición se ejecutarán solamente si al evaluar la condición se genera un valor

Unidad I Pag. 17
Fundamentos de Programación

verdadero; es decir, si la condición se cumple; en caso contrario, se ejecutará la instrucción que


aparece después de Fin mientras.

A diferencia de otros ciclos, el ciclo mientras comienza evaluando la expresión condicional, si el


resultado es verdadero se ejecutarán las instrucciones que estén entre el mientras y el fin mientras,
al encontrarse la línea fin mientras se volverá a evaluar la condición, si se cumple se ejecutarán
nuevamente las instrucciones y así sucesivamente hasta que la condición deje de cumplirse, en cuyo
caso, el control del programa pasa a la línea que aparece después de fin mientras.

Si en la primera pasada por el ciclo mientras la condición no se cumple las instrucciones que están
dentro del ciclo no se ejecutarán ni una sola vez.

Ciclo Para
Este ciclo, al igual que los demás, permite ejecutar repetidas veces una instrucción o un grupo de
ellas, pero a diferencia de otras instrucciones de repetición, ésta maneja el valor inicial, el valor de
incremento o decremento y el valor final de la variable de control como parte de la instrucción.

Cuando al ejecutarse un algoritmo se encuentra una instrucción para la variable de control


(contador) toma el valor inicial, se verifica que el valor inicial no sobrepase el valor final y luego se
ejecutan las instrucciones del ciclo. Al encontrar la instrucción fin para, se produce el incremento y
se vuelve a verificar que la variable de control no haya superado el límite admitido, y se vuelven a
ejecutar las instrucciones que están dentro del ciclo, y así sucesivamente tantas veces como sea
necesario hasta que se supere el valor final establecido.

El ciclo para termina en el momento en que la variable de control (contador) sobrepasa el valor final;
es decir, que la igualdad está permitida y las instrucciones se ejecutan cuando el contador es igual
al valor final.

Este ciclo puede presentarse de tres maneras: la primera es la más común, cuando se produce un
incremento de 1 en cada iteración, en cuyo caso no es necesario escribir explícitamente.

El segundo caso de utilización del ciclo Para es cuando el incremento es diferente de 1, en cuyo caso
se escribirá la palabra incrementar seguida del valor a sumar en cada iteración.

En tercer lugar, el ciclo para no siempre se incrementa desde un valor inicial hasta un valor mayor,
puede suceder que se requiera que se disminuya desde un valor inicial alto, hasta un valor menor.
En este caso será suficiente con escribir decrementar en vez de incrementar.

Ejemplo:

Leer n números y encontrar el valor promedio, el mayor y el menor

Definición del problema


Encontrar el promedio, el mayor y el menor de varios números

Análisis del problema


Para solucionar este problema, lo primero que hay que plantear es cómo se sabrá cuando terminar
la lectura de datos, ya que no se especifica la cantidad de números que serán ingresados y en el

Unidad I Pag. 18
Fundamentos de Programación

planteamiento del problema no se da ninguna condición que permita saber cuando terminar el ciclo.
Este tipo de problemas es muy común.

Hay dos formas de abordar este ejercicio, la primera consiste en preguntar al usuario con cuantos
números desea trabajar y guardar dicho valor en una variable que se utilizará para establecer el
ciclo. La segunda consiste en preguntar después de leer cada dato, si se desea ingresar otro. En
este ejercicio se utilizará la primera estrategia.

Datos de entrada: cantidad de números, número


Datos de salida: promedio, mayor y menor

Procesos:
suma = suma + número
promedio = suma / cantidad de números

Diseño de la solución

Unidad I Pag. 19
Fundamentos de Programación

REFERENCIAS
http://pdf.rincondelvago.com/algoritmos.html
http://pseint.sourceforge.net/pseudocodigo.php
http://www.monografias.com/trabajos19/algoritmos/algoritmos.shtml

Unidad I Pag. 20

También podría gustarte