SlideShare una empresa de Scribd logo
REPÚBLICA BOLIVARIANA DE VENEZUELA
UNIVERSIDAD DEL ZULIA
FACULTAD EXPERIMENTAL DE CIENCIAS
DEPARTAMENTO DE PROGRAMACIÓN
Prof. Lucía Bustamante
GUÍA ALGORITMO Y PROGRAMACIÓN I
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Unidad I: Fundamentos de programación
Objetivo terminal: Conocer y aplicar efectivamente los fundamentos de
programación.
1. Concepto de algoritmo
Un algoritmo consiste en la descripción clara y detallada del procedimiento
a seguir para alcanzar la solución de un problema. En un algoritmo se
establece la secuencia ordenada de pasos o instrucciones a ejecutar para
lograr esta solución.
El término algoritmo proviene del nombre Mohammed al-Khowarizmi,
matemático persa que vivió durante el siglo IX y alcanzó gran reputación por
el enunciado de las reglas, paso a paso, para sumar, restar, multiplicar y
dividir números decimales.
2. Importancia de los algoritmos en la programación
Es importante el estudio y conocimiento de los Algoritmos desde su
aparición hasta nuestros días es, y seguirá siendo; vital para el desarrollo
de aplicaciones para computadoras y el manejo y dominio de la lógica de
programación para resolver problemas.
La solución de un problema se puede expresar mediante un algoritmo. El
programador de computadoras es ante que nada una persona que resuelve
problemas, por lo que para llegar a ser un programador eficaz se necesita
aprender a resolver problemas de un modo riguroso y sistemático. A la
metodología necesaria para resolver problemas mediante programas se
denomina Metodología de la Programación. El eje central de esta
metodología es el algoritmo.
Los algoritmos son independientes tanto del lenguaje de programación en
que se expresan como de la computadora que lo ejecuta. En cada problema
el algoritmo se puede expresar en un lenguaje diferente de programación y
ejecutarse en una computadora distinta; sin embargo, el algoritmo será
siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, una
receta de un plato de cocina se puede expresar en español, ingles o
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración
del plato se realizaran sin importar el idioma del cocinero.
En la ciencia de la computación y en la programación, los algoritmos son
más importantes que los lenguajes de programación o las computadoras.
Un lenguaje de programación es tan solo un medio para expresar un
algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto
el lenguaje de programación como la computadora son los medios para
obtener un fin: conseguir que el algoritmo se ejecute y se efectúe el proceso
correspondiente.
Dada la importancia del algoritmo en la ciencia de la computación, un
aspecto muy importante será el diseño de algoritmos.
3. Características de los algoritmos
 Preciso: Indicar el orden de realización de cada paso.
El orden de realización de las operaciones debe estar dado en una
forma clara. No debe existir ambigüedad en el mismo.
Todos los posibles caminos de solución deben aparecer recogidos en
el algoritmo.
 Deterministico: Si se sigue el algoritmo dos o más veces sobre los
mismos datos de entrada se debe obtener el mismo resultado cada
vez.
 Finito: Debe tener un número finito de pasos.
El algoritmo debe terminar en un momento determinado después de
ejecutar un número finito de pasos.
 Elemental: La secuencia de las operaciones debe ser detallada. Los
pasos deben estar indicados como instrucciones sencillas, de ser
posible representables en el lenguaje de programación a utilizar
después.
 General: Debe encontrar la solución para las diferentes instancias
del problema que resuelve, no debe estar sujeto a unos parámetros
de entrada específicos.
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
4. Conceptos relacionados con la programación
4.1.Instrucción
Información que indica a la computadora una acción elemental a
ejecutar. Este término es empleado en lenguajes de bajo nivel.
4.1.1. Tipos de instrucciones
Las instrucciones que se indican en un algoritmo generalmente son
de los siguientes tipos:
 Lectura. Recepción de datos.
 Computo. Realización de operaciones matemáticas o
lógicas.
 Almacenamiento. Almacenaje de datos.
 Salida. Impresión de datos almacenados.
4.2.Programa
Es una serie de instrucciones perfectamente legibles por la
computadora, ordenadas secuencialmente para que esta realice una
tarea específica.
4.3.Diferencia entre algoritmo y programa
En los algoritmos no se especifica el lenguaje de programación a
emplear. Son un código genérico para todos los lenguajes.
Ej.: Algoritmo y programa para hallar el área de un cuarto que tiene una
longitud de 8 metros por 3 metros de ancho.
Algoritmo Programa en C
1. Asignación de los datos a las
variables largo y ancho.
2. Cálculo del área como: área =
largo * ancho.
3. Mostrar por pantalla la variable
área.
…
int largo = 8;
int ancho = 3;
int area = largo * ancho;
println(“El área es: %d”, área);
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Los algoritmos son secuencia de instrucciones que conducen a la
solución de un problema. Los programas son una secuencia de
instrucciones que indican al computador los pasos para solucionar un
problema.
No todos los algoritmos pueden llegar a ser programas, en general son
programables los algoritmos que resuelven problemas del tipo
matemático-lógicos.
5. Clasificación de programas
5.1.De sistema
Un computador emplea un código de muy bajo nivel, basado en números
binarios para operar. Para evitar el uso de este lenguaje para interactuar
con el computador se cuenta con programas que facilitan la
comunicación entre el usuario y el computador, estos programas se
denominan programas de sistema.
El principal programa o componente de software del computador es el
sistema operativo.
5.1.1. Sistema operativo
Es un intérprete entre el usuario, los programas de aplicación y el
computador. El computador al ser encendido realiza un chequeo de
sí mismo y carga el sistema operativo en memoria RAM y comienza
a ejecutarlo. Es cuando el computador está listo para comunicarse
con el usuario.
5.2.De aplicación
Son los programas que se cargan sobre el sistema operativo y con los
que el usuario realiza tareas especificas, ejemplos se ellos son:
procesadores de palabras, hojas de cálculo, manejadores de bases
datos, juegos, etc.
6. Lenguajes de programación.
6.1.Definición
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Son dialectos con los cuales podemos listar instrucciones que luego de
ser traducidas no permiten indicar al computador qué tareas realizar.
6.2.Clasificación
Los lenguajes de programación entre más sencillos son para el
programador son más difíciles de entender por el computador, lo que los
hace perder versatilidad. Los lenguajes de programación se clasifican
según su versatilidad en:
6.2.1. Bajo nivel
Son muy versátiles, permiten un control total del computador. Entre
los lenguajes de bajo nivel encontramos: el código máquina y el
ensamblador.
6.2.1.1. Máquina
El lenguaje máquina comprende una serie de instrucciones en
términos de códigos numéricos (cadenas de ceros y unos) que
pueden ser interpretados por cierto modelo de computadora. Es
un código propio de cada computadora que esta relacionado con
el diseño del hardware de la misma.
6.2.1.2. Ensamblador
Lenguaje de programación basado en códigos nemotécnicos
(abreviaturas en inglés) y direcciones simbólicas que permite
representar operaciones elementales de la computadora.
6.2.2. Alto nivel
Poco versátiles, son bastante sencillos de aprender por el
programador, usan palabras inglesas para definir las órdenes que
se pueden dar al computador, así como notaciones matemáticas de
uso común.
Relación de complejidad de los lenguajes de programación para el
usuario y el computador:
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
6.3.Traductores
Programas que convierten los programas escritos por los programadores
en un lenguaje de programación en programas con instrucciones en
código máquina.
6.3.1. Compilador
Es un programa que traduce una serie de órdenes en un lenguaje de
programación (código fuente) al lenguaje propio o particular de la
máquina. También detecta los errores de programación o sintaxis
que se hayan cometido.
Compilar es el proceso de traducción de código fuente a un
programa de lenguaje de máquina.
Un compilador realiza las siguientes tareas.
 Traduce programa y a parte se corre binario generado.
 Si hay error, no genera archivo ejecutable (no ejecuta).
 El código binario generado es 100% lenguaje de máquina.
6.3.2. Intérprete
Programa que efectúa la traducción y ejecución sucesiva instrucción
a instrucción de un programa escrito en un lenguaje de alto nivel.
Un intérprete realiza las siguientes tareas:
 Traduce y ejecuta una línea del programa a la vez.
Lenguaje de alto nivel
Lenguaje ensamblador
Lenguaje máquina Computadora
Usuario
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
 Si hay error, detiene ejecución del programa.
 Programas más lentos pero más portables y flexibles.
6.3.3. Ensamblador
Programa que traduce un programa escrito en lenguaje ensamblador
en un programa objeto escrito en código máquina.
7. Componentes de un programa
7.1.Palabras claves
Son las palabras reservadas por el lenguaje de programación y que
tienen un significado especial para el compilador.
7.2.Identificadores
Son los nombres con los que se permite hacer referencia a los diferentes
objetos de un programa. Los identificadores deben cumplir con las
siguientes reglas:
 Ser significativos, sugerir que es lo que representan.
 No pueden ser palabras reservadas.
 Comprendidos por uno o más caracteres que pueden ser letras,
dígitos y algunos caracteres especiales, pero siempre deben
comenzar con una letra.
7.3.Delimitadores
Signos especiales que permiten al compilador separar y reconocer las
diferentes unidades sintácticas del lenguaje. Los delimitadores
dependen del lenguaje de programación, sin embargo algunos de los
delimitadores que tienen igual significado en los diferentes lenguajes
son:
Punto y coma: ; Indica fin de una sentencia.
Coma: , Separa dos elementos consecutivos
como parámetros formales en la
declaración de un subprograma.
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Paréntesis: () Enmarcan una lista de parámetros,
condiciones, indican llamada a un
subprograma.
7.4.Expresiones
Las expresiones son combinaciones de operandos (constantes,
variables u otras expresiones) y operadores.
7.5.Comentarios
Son líneas que sirven para aclarar el algoritmo o programa al propio
programador y a otros. Es conveniente añadir comentarios en los
algoritmos y programas para hacerlos más fáciles de leer, entender
y por tanto corregir y mantener.
Los comentarios son ignorados por el compilador, su función es
permitir al programador la documentación de los programas.
7.6.Estructuras de datos
Una estructura de datos es una representación de los datos de modo
que puedan ser procesados como un conjunto homogéneo.
Según Roger Pressman, la estructura de datos es una representación de
la relación lógica entre elementos individuales de datos y dicta la
organización, métodos de acceso, grados de asociatividad y alternativas
de procesamiento para información siendo el elemento escalar la
estructura de datos más simple.
Según UIT, los programas son formulaciones concretas de algoritmos
abstractos basados en estructuras de datos.
Programas = Algoritmos + Estructuras de Datos.
“Los datos en primera instancia representan abstracciones de
fenómenos reales formuladas como estructuras abstractas que no tienen
que ser necesariamente las existentes en los lenguajes utilizados
usualmente en programación. En el proceso de construcción de un
programa se reforma gradualmente la representación de datos al mismo
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
tiempo que el algoritmo, de forma que, progresivamente se vaya
cumpliendo con las restricciones impuestas por el sistema de
programación disponible”.
8. Constantes, variables y expresiones
8.1. Constantes
Una constante es un valor invariante que ocupa un lugar en la memoria
y puede ser referenciado en el programa por el valor mismo o un
nombre, generalmente se designan al principio del programa. Se pueden
declarar constantes de cualquier tipo simple de dato.
8.2. Variables
Una variable es un nombre compuesto por letras y números (el primer
carácter ha de ser una letra) con el que se designan una porción de
memoria en la que se almacena un valor que pueden variar a lo largo del
programa. Se pueden definir variables de cualquier tipo de dato simple o
compuesto.
8.3.Usos básicos de las variables
Las variables pueden ser utilizadas para diversos propósitos durante el
curso de las operaciones planteadas en un algoritmo. Entre los usos
básicos se tienen:
Acumulador En este caso la variable contiene el
resultado de efectuar repetidas veces
una operación aritmética donde la
variable interviene. En cada ejecución
se suma uno a la variable acumulador
y se almacena en ella.
Contador La variable lleva la cuenta del número
de veces que se presenta una
determinada situación. Por lo general
se define su valor en 0 y cada vez que
se presente el evento se incrementa
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
su valor en 1.
Control El valor de la variable determina si se
ejecuta o no un conjunto de
sentencias, las cuales se ejecutan
una vez por cada valor permitido que
tome la variable a lo largo del proceso
repetitivo.
Bandera La variable actúa como un indicador,
puede tomar sólo dos valores. El valor
inicial de la variable cambia cuando
se presenta determinada situación.
8.4.Expresión
Es una combinación de variables, constantes, operadores y referencias
a funciones que expresan cálculos aritméticos y/o lógicos a ser
realizados.
En su forma más simple una expresión esta constituida por una variable
o constante.
9. Datos y tipos de datos.
9.1.Dato
Expresión general que describe los objetos con los cuales opera una
computadora.
Ej.: Cifras de venta de un supermercado, notas de un parcial, número de
vuelos San Juan-Maiquetía.
9.2.Tipo de dato
Descripción de un conjunto de datos que comparten propiedades
(tamaño en bits que ocupan en la memoria, rango de valores que
pueden tomar) y operaciones que pueden ser aplicadas sobre este.
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Toda variable debe estar asociada a un tipo de dato, el cual es
responsable de indicar el dominio de valores válidos y conjunto de
operaciones.
9.3.Clasificación tipos de datos
9.3.1. Simples
Almacenan un solo valor (enteros, reales, caracteres, lógicos)
Cuando se opera con valores de diferentes tipos resulta un valor del
tipo más dominante, si este resultado es almacenado en un tipo de
dato no apropiado se puede perder precisión en los cálculos.
Ej.: Se multiplica un entero con un real, se obtiene un real. Si el
resultado no es almacenado en una variable del tipo real, sino del
tipo entero el valor se trunca y se pierde precisión.
9.3.2. Compuestos
Almacenan uno o más valores (arreglos, estructuras de datos
lineales y no lineales), se definen mediante la composición de datos
simples y se utilizan cuando se requiere el procesamiento de
múltiples datos con características comunes.
10.Tipos de datos simples
10.1. Enteros
Subconjunto finito de loa números enteros, cuyo rango o tamaño
dependerá del lenguaje de programación en el que posteriormente se
codificará el algoritmo y de la computadora utilizada.
Dependiendo del número de bits empleado en cada computadora, el
dominio del tipo entero varía en: -2n-1
,…, 0,…,2n+1
-1
Ej.: Si n es 16 el dominio de los enteros comprende los números:
-215
,… 0,… 215
– 1 = -32768,…, 0,…32767
10.2. Reales
Subconjunto de los números reales limitado no sólo en tamaño, sino
también en cuanto a la precisión (que depende de la computadora). Se
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
conocen como números de punto flotante cuya representación consta de
una mantisa (parte fraccional), de una base y de un exponente (potencia
a la cual se eleva la base).
Ej.: Para el número 0,437875x103
se tiene:
Mantisa = 0,437875
Base = 10
Exponente = 3
10.3. Carácter
Conjunto finito y ordenado de los símbolos que el computador reconoce:
letras, dígitos, signos de puntuación, etc.
Un carácter es almacenado en un byte usando el código de 8 bits ASCII
(American Standandard Code for Information Interchange), lo que da la
posibilidad de representar 28
= 256 caracteres diferentes.
10.4. Lógico
Conjunto formado por los valores: Cierto y Falso.
11.Tipos de expresiones
11.1. Operadores
Se llaman operadores a todos aquellos símbolos que realizan una
operación determinada del argumento antecedente con el consecuente.
La sintaxis general de un operador es:
Argumento antecedente Operador argumento consecuente
11.2. Expresiones aritméticas
11.2.1. Definición
Son expresiones de resultado numérico. Los valores posibles como
resultado de las expresiones aritméticas pertenecen a los tipos de
datos entero o real.
11.2.2. Operadores aritméticos
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Serie de símbolos que indican determinadas operaciones
matemáticas a efectuar con los datos.
Operador Operación que denota
^ Potenciación
/ División
* Multiplicación
- Resta
+ Suma
Ej.: Expresiones aritméticas
a/b a dividido entre b
a * b a multiplicado por b
a – b a menos b
a + b a sumado a b
11.2.3. Precedencia entre operadores aritméticos
Los operadores siguen un orden de precedencia a la hora de evaluar
las expresiones, ordenados en orden de mayor a menor prioridad los
operadores aritméticos son:
Potenciación
División y multiplicación
Suma y resta.
Esto quiere decir que aunque las expresiones son leídas de izquierda
a derecha se realizan primero las operaciones aritméticas de
potenciación, después las de división y multiplicación y finalmente las
sumas y restas.
Ej.: Para valores a = 5, b = 2, c = 3, la expresión aritmética a * b ^ c
tiene como resultado 40, primero se eleva 2 a la 3 y se obtiene como
resultado 8 y luego se multiplica 5 por 8.
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Cuando los operadores tienen la misma precedencia se opera de
izquierda a derecha (excepto la potenciación que se evalúa de
derecha a izquierda)
Se puede cambiar el orden de precedencia de los operadores
encerrando entre paréntesis la expresión.
Ej.: (a * b) ^ c, con los mismos valores del ejemplo anterior
tendríamos como resultado 1000 (10 elevado a la 3).
11.3. Expresiones lógicas
11.3.1. Definición
Son expresiones de resultado lógico. Esto significa que existen dos
valores posibles como resultado de la expresión de evaluar la
expresión: Verdadero o Falso.
11.3.2. Operadores relacionales
Operan sobre expresiones de diferentes tipos (enteras, reales,
caracteres) y retornan un valor del tipo lógico: Verdadero o falso.
Operador Operación que denota
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
== Igualdad
!= Desigualdad
11.3.3. Precedencia
Al igual que los operadores aritméticos para cambiar el orden de
evaluación se utilizan los paréntesis y la evaluación de las
expresiones con operadores de igual prioridad se realiza de
izquierda a derecha. Ordenados en orden de mayor a menor
prioridad los operadores relacionales son: Menor que, Mayor que,
UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN
Prof. Lucía Bustamante
Menor o igual que, Mayor o igual que y luego los operadores de
Igualdad y Desigualdad.
<, >, <=, >=
==, !=
Tanto los operadores relacionales tienen un nivel de precedencia menor
que los operadores aritméticos. Esto significa que una expresión x > y +
z se evalúa como x > (y + z).
11.3.4. Operadores lógicos
Estos operadores se basan en la aritmética del lenguaje binario, en
el que existen sólo dos valores, 0 ó 1, Falso o Verdadero. Operan
sobre operandos lógicos.
Operador Operación que denota
! NOT
& AND
|| OR
11.3.5. Precedencia
!
&
||
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Unidad II: Introducción a la programación estructurada
Objetivo terminal: Conocer y aplicar la programación estructurada en la
solución de problemas.
1. Pasos para resolver un problema mediante el uso del computador
1.1.Análisis del problema (E-P-S)
Es el primer paso que el programador debe realizar. Se plantea el
problema, se trata de identificar la naturaleza del mismo y se analiza la
forma de resolverlo, en qué consiste su solución. Si es necesario se
recurre a la bibliografía en busca de métodos para solucionarlo y se
elige el que más se adapte a la programación.
En este paso se describen los datos de entrada, el proceso y lo
resultados o salida.
Especificaciones de entrada: Información necesaria para la solución
del problema.
¿Cuántos y cuáles son los datos de entrada?
¿Cuándo los datos de entrada son válidos? Bajo qué condiciones va a
ser resuelto el problema.
Proceso: Operaciones o cálculos necesarios para encontrar la solución
del problema.
¿Cuáles métodos se emplearan?
¿Qué tipo de ecuaciones?
¿Cuántas ecuaciones?
Se debe determinar el método de solución más factible, a veces existe
un único método, en otros casos existen varios de entre los cuales se
debe escoger el que en forma óptima, según los criterios empleados,
resuelva el problema. Esto supone el conocimiento adecuado de los
procedimientos matemáticos y/o lógicos necesarios para alcanzar la
solución del problema desde un punto de vista teórico. De ser necesario,
se recurrirá a la bibliografía adecuada para ubicar la información
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
requerida para tener capacidad de solución, a nivel teórico, del
problema.
Especificaciones de salida: Resultados finales de los cálculos.
¿Cuántos y cuáles son los datos que se producirán (datos de salida)?
Ej.: Análisis E-P-S para determinar…
1.2.Diseño del algoritmo
Una vez seleccionado el método de solución, especificado los datos de
entrada y los resultados, se procederá al diseño del algoritmo.
Esto conlleva a un análisis lógico de las operaciones que deben
ejecutarse para alcanzar la solución del problema. En este paso se
emplean las técnicas de diseño de algoritmos como el Diseño
Descendente, las técnicas de la Programación Estructurada y las
técnicas de representación de algoritmos para su escritura y
representación.
Se debe describir la secuencia ordenada de pasos que conducen a la
solución del problema planteado. Los algoritmos deben cumplir con las
características mencionadas en la sección 3 y ser expresados a través
de una técnica de representación de algoritmos.
Ej.: Diseño del algoritmo para…
1.3.Prueba del algoritmo
En esta fase se corrigen errores de lógica, que conducen a la obtención
de resultados no esperados. Se hace una prueba manual del algoritmo.
El programador elige un conjunto de datos de entrada y ejecuta
manualmente cada sentencia del programa fuente y verifica que los
resultados obtenidos sean los esperados, de acuerdo al conjunto de
datos de salida. Este proceso debe ser llevado a cabo con conjuntos de
datos que permitan ejecutar todos los caminos posibles del programa.
1.4.Codificación
En esta fase, se pasa el pseudo código, diagrama de flujo o diagrama N-
S, a un lenguaje de programación especifico. Se define las variables a
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
utilizar y se codifica todo el procedimiento. El resultado de obtenido es
un archivo con el código fuente del programa.
Las instrucciones expresadas en el algoritmo se traducen a
instrucciones en algún lenguaje programación para obtener el programa
fuente.
1.5.Prueba y depuración del programa
Una vez escrito el programa fuente, se procede a su compilación. El
compilador toma el código escrito en el lenguaje empleado y lo traduce a
código máquina (que es como lo entiende el computador). En esta fase
se ponen de manifiesto los errores sintácticos y de programación que se
puedan haber cometido.
Se deben corregir todos los errores y avisos del compilador, una vez
hecho esto el compilador devuelve un archivo objeto, que es un archivo
escrito en código máquina pero aún no es ejecutable. Esto debido a que
el compilador tiene escritos muchos segmentos de código que utiliza
frecuentemente y se encuentran guardados en librerías de forma que
cuando el compilador encuentra un segmento de código que tienen en
una librería sitúa en el programa una llamada a la librería.
Para hacer el código completamente ejecutable se debe usar el
programa de enlace o Linker. Este programa toma el archivo objeto que
generó el compilador y busca en él todas las llamadas a librerías.
Seguidamente toma de las librerías el código requerido y lo inserta en el
programa final. De esta forma el Linker devuelve un archivo con
extensión .exe y ese es el programa final, que puede ser cargado en
memoria para su ejecución.
Después de la ejecución del programa se hace la verificación de que los
resultados obtenidos se correspondan con los esperados.
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Editor. Lenguaje
de Programación
Compilador
Encadenador
Cargador
Ejecución
Errores de
Sintaxis
Errores de
Lógica
Programa fuente
No
Si
Programa objeto
Programa ejecutable
Solución del problema
No
Corregir errores en el programa fuente
Diseño
Análisis (E-P-S)
Problema
Algoritmo
Pasos para resolver un problema mediante el uso del computador.
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
2. Técnicas de representación de algoritmos.
Son la primera aproximación a la programación del algoritmo diseñado, a
través de estas técnicas se muestra la estructura del programa.
2.1.Definición
Una técnica de representación de algoritmos es una técnica para la
representación de los algoritmos en donde a través de convenciones y el
empleo de símbolos estandarizados se expresa en forma clara el
proceso establecido en el algoritmo.
Estas técnicas permiten la descripción en forma clara de los pasos o
instrucciones u operaciones que deben ejecutarse para alcanzar la
solución de un problema, estableciéndose el orden lógico a seguir.
Las técnicas de representación de algoritmos más utilizadas son los
diagramas de flujo, pseudo-códigos y diagramas N-S.
2.2.Diagramas de flujo
Son una representación pictórica de los pasos necesarios para resolver
le problema. Cada paso, representado por un símbolo, indica una acción
necesaria. La secuencia de pasos se muestra mediante flechas.
2.2.1. Símbolos utilizados
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Ej.: Representar el algoritmo para…
2.3.Diagramas N/S
Los diagramas de Nassi-Schneiderman son parecidos al diagrama flujo.
Utiliza símbolos gráficos o bloques en donde la secuencia de
instrucciones se visualiza como una secuencia de bloques unidos, sin
las flechas de unión. Están basados en programación estructurada.
Ej.: El algoritmo anterior se representaría como:…
2.4.Pseudo código
Símbolo de proceso: Se utiliza para indicar
cálculo y manipulación de datos.
Símbolo de preparación: Se utiliza para
inicializar variables.
Símbolo de entrada: Se utiliza para detonar
recepción de datos desde cualquier dispositivo.
Símbolo inicio/fin: Se utiliza para indicar el
comienzo y fin del programa.
Símbolo de conexión: Se utiliza para
continuar el diagrama de flujo.
Símbolo de decisión: Se utiliza para realizar
comparaciones, decisiones o preguntas.
Símbolo por pantalla: Se utiliza para denotar
impresión de datos por pantalla.
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Permite expresar las operaciones a realizar en una computadora en
forma muy parecida a nuestro lenguaje habitual, utilizando palabras
reservadas con significados establecidos. Se lee de arriba hacia abajo.
Es la representación de algoritmos que más se asemeja a un programa
fuente, por lo que al igual que en la codificación en este tipo de
representación deben seguirse las buenas prácticas de codificación, en
especial la identación, para facilitar su legibilidad.
Ej.: El algoritmo anterior se representa en pseudo-código de la siguiente
manera:…
3. Técnica de Refinamiento Progresivo
La técnica de refinamiento progresivo, o técnica de diseño descendente, es
una técnica orientada al diseño de algoritmos en donde partiendo de lo más
general se va a lo más detallado a través de un refinamiento cada vez
mayor de las diferentes operaciones que representan el algoritmo, hasta
llegar al nivel del lenguaje de programación donde se va a implementar el
algoritmo para obtener el programa.
4. Buenas prácticas de codificación
4.1.Selección de nombres apropiados
Utilizar nombres descriptivos para variables y subprogramas…
4.2.Identación
Permiten ver con más claridad las instrucciones que forman parte de
cierto camino, comenzando un poco más a la derecha que las
instrucciones que inician el camino.
4.3.Documentación
Una documentación apropiada facilita la tarea de revisión del código
fuente, ya que facilita la legibilidad del programa.
Una buena documentación debe poseer las siguientes características:
 Ser coherente con el programa. Debe indicar conceptos o
métodos implementados, relaciones entre partes del programa,
etc.
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
 Ser relevante, indicar pasos cruciales del programa.
 Debe mantenerse al día.
5. Prueba y depuración de algoritmos
5.1.Prueba
Es un proceso orientado a determinar la existencia de errores. Cuando
una prueba detecta un error la depuración el proceso que elimina este
error.
5.1.1. Técnica de chequeo manual del algoritmo
Es una técnica de prueba donde se seleccionan datos de entrada
para representar todos los casos posibles durante la ejecución del
algoritmo. Estos datos de entrada son llamados casos de pruebas y
sus resultados son conocidos.
Los casos de prueba son evaluados llevando a cabo corridas
manuales en donde los resultados obtenidos son sometidos a estudio
y si aparece una falta de correspondencia con los resultados
esperados y se habrá demostrado la existencia de errores por lo que
será necesario iniciar un proceso de depuración que consistirá en
una revisión del algoritmo para localizar el error y corregirlo.
Si durante la ejecución de los casos de prueba no se detectan
errores no debe llegarse a la conclusión de que el algoritmo es
correcto, salvo que se trate de un algoritmo sencillo en donde no
haya duda que los datos presentes en los casos de prueba,
realmente representan todas las situaciones posibles de prueba del
algoritmo.
5.2.Depuración
Es el proceso de detección y corrección de los errores de programación.
Estos errores pueden ser de los siguientes tipos:
 Errores de sintaxis: Son los errores de escritura, son fácilmente
detectables, pues el compilador indica la línea del código fuente
en la que se encuentran.
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
 Errores de ejecución: Son los errores de programación y
generalmente son detectados por el compilador, ejemplo de estos
errores son los ciclos infinitos y la declaración de expresiones no
definidas con la división entre cero. Estos errores son más
complejos, pues además de ser de múltiples tipos, a veces el
compilador indica una línea que no es la donde se producen, sin
embargo se nos alerta del error y se nos explica brevemente en
que consiste.
6. Optimización
La optimización es un paso necesario e importante, en esta fase se
explora el programa en busca de posibles modificaciones que
mejoren el rendimiento, reducción de código, o simplemente
mejoramiento de la velocidad de resolución. Generalmente una
optimización importante consiste en almacenar sólo los valores que
necesarios, en vez de todos los calculados.
Ej.: Calcular la distancia máxima entre 1000 puntos. Para saber cual
es la mayor, se debe calcular las distancias entre ellos dos a dos y
compararlas. Una solución común es calcular cada una de estas
almacenarlas en una matriz para luego compararlas y determinar
cual es la mayor. Una forma más eficiente de hacerlo es calcular la
primera y la segunda y compararlas, almacenando sólo la mayor y
calculando la siguiente y comparando sucesivamente y al final se
tendrá la distancia mayor. Ambos métodos consiguen la solución
deseada, sin embargo el segundo es más eficiente en cuanto al uso
de memoria.
7. Programación estructurada
La programación estructurada es el resultado de estudios formales de
corrección y se considera al Prof. Edgar Dijkstra de la Universidad de
Eindhoven el padre de la programación estructurada con valiosos aportes
en este desarrollo de Hoare, Wirth, Knuth, etc. Es célebre la frase de
Dijkstra: “La estructura GOTO es perjudicial para la programación”.
7.1.Definición
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Enfoque disciplinado que permite escribir programas estructurados,
utilizando tres estructuras de control: Secuenciales, de control de flujo y
de repetición.
La programación estructurada es un conjunto de técnicas orientadas a la
construcción de programas confiables que limita el conjunto de
estructuras de control aplicables y presenta una serie de reglas que
coordinan adecuadamente el desarrollo de las diferentes fases de la
programación.
Este conjunto de técnicas tiene por objetivo la producción de programas
correctos (libres de errrores), legibles (fáciles de leer), depurables
(fáciles de corregir) y modificables (fáciles de mantener), lo que conduce
a la producción de programas confiables.
7.2.Importancia
Los programas estructurados son fáciles de probar, depurar y modificar.
Todos los modelos o enfoques de programación utilizan la programación
estructurada.
Un programa correcto es aquel que alcanza la solución del problema
para el que fue diseñado.
Un programa eficiente es un programa correcto que optimiza el uso de
los recursos: espacio en memoria y tiempo de ejecución.
La programación estructurada conduce a la creación de programas
confiables, que por ofrecer legibilidad y facilidades de corrección y
mantenimiento en algunas ocasiones hacen uso de mayor número de
variables e invocación de funciones lo que supone mayor utilización de
la memoria y tiempo de ejecución, sin embargo dado el abaratamiento
de memoria y la mayor velocidad de la computadoras actuales, se
prefiere la producción de programas confiables frente a la de programas
eficientes.
7.3.Teorema de la estructura
Enunciado por Böhm Jacoponi en 1996: “Todo programa con un solo
punto de entrada y un solo punto de salida puede ser expresado
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
utilizando solamente tres tipos de estructuras de control: Secuencial,
Selectiva y Repetitiva.”
7.4.Estructura de control
Permiten expresar un proceso estableciendo la forma en la cual las
acciones que lo componen van a ser ejecutadas. Se caracterizan por
tener una sola entrada y una sola salida y dar origen a programas que
pueden ser leídos de arriba hacia abajo.
7.5.Sentencias
Son las que determinan las acciones que el ordenador debe realizar
para resolver un problema. Son un conjunto de palabras claves del
lenguaje y expresiones que determinan cómo se deben tratar los datos y
cómo se obtendrán los resultados. Este término es empleado para los
lenguajes de alto nivel.
7.6.Estructura de control secuencial
Permite indicar la ejecución incondicional de varias acciones de forma
secuencial:
Diagrama de flujo Diagrama N-S Pseudo-código
Inicio
Acción1
Acción2
…..
Acciónn
Fin
7.6.1. Sentencias de declaración
Son todas aquellas sentencias que se usan para definir constantes y
variables, programas y módulos.
Acción1
Acción2
Acciónn
…
Acción1
Acción2
…
Acciónn
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Ej.: Declaración de una variable real
real precio
Los objetivos de la declaración de variables son:
 Asociar un tipo de dato y un identificador a la variable para
que el computador pueda verificar la correctitud de las
operaciones en donde interviene la variable.
 Permitir que el compilador sepa cuánto espacio de memoria
se necesita para almacenar el valor de la variable, y asignar la
dirección de memoria donde este valor se va a almacenar.
7.6.2. Sentencias de asignación
Son todas aquellas sentencias que modifican el contenido de una
variable.
Las sentencias de asignación implican la ejecución de la operación
almacenamiento, transforman la memoria de un estado a otro en el
tiempo. La ejecución de un programa tendrá como efecto (sin
considerar los procesos de E/S) la transformación de la memoria
inicial en otra final, realizando un conjunto de asignaciones sobre las
n variables que intervienen en el programa, ejecutadas según un flujo
de control establecida.
Ej.: Asignación de un valor a variables reales
real precio = 1000,50
real iva = 160, 096
real precioVenta = precio + iva
Esta última asignación evalúa la expresión de la derecha, en donde
la variable con el nombre precio tiene el valor de 1000,50 y la
variable iva el valor de 160,096, suma ambas y asigna el resultado
(1160,596) a la parte izquierda de la expresión, la variable
precioVenta.
7.6.3. Sentencias de Entrada/Salida
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Son las sentencias que permiten la intercomunicación del ordenador
con el usuario y los periféricos (discos, impresora, modem, etc.).
Mediante estas sentencias se puede comunicar al computador los
datos de entrada y este podrá devolver los resultados.
7.7.Estructura de control selectiva
Son aquellas que permiten variar el orden de ejecución del programa
según se verifiquen o no ciertas condiciones. Permiten la selección de
tareas alternativas en función de los resultados de diferentes
expresiones relacionales o lógicas (condiciones).
La estructura selectiva puede ser:
 Simple
Diagrama de flujo Diagrama N-S Pseudo-código
…
Si (Condición) entonces
Acción
Fin-Si.
 Doble
Diagrama de flujo Diagrama N-S Pseudo-código
Condición
Acción
Si
No
F
V
Condición
Acción
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
…
Si (Condición)
entonces
Acción 1
Sino
Acción 2
Fin-Si.
 Múltiple
Diagrama de flujo Diagrama N-S Pseudo-código
Caso (Expresión)
Valor 1: Acción 1
Valor 2: Acción 2
…
Valor n: Acción n
De otra manera
Acción
Fin-Caso
7.7.1. IF-THEN-ELSE
Es una sentencia que se emplea para realizar bifurcaciones, según
ciertas condiciones. En su forma Responde a la siguiente sintaxis:
if (expresión1) then
<grupo de sentencias 1>
else if (expresión2)
Condición
Acción1
Valor1
Acción2
Acciónn
…
Valor2
ValorN
…
… …
F
V
Condición
A
c
c
i
ó
n
1
A
c
c
i
ó
n
2
A
c
c
i
ó
n
n
.
.
.
Condición
Acción1
Si No
Acción2
F
V
Condición
Acción1 Acción2
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
<grupo de sentencias 2>
else (expresión3)
<grupo de sentencias 3>
El significado de esta porción de código es que si la expresión1 se
cumple es verdadera, el control se transfiere al grupo de sentencias
1, en caso contrario se evalúa la expresión2 y de ser cierta se
transfiere el control al grupo de sentencias 2, sino se ejecuta el
grupo de sentencias 3.
Si se ejecuta el if no se ejecutan los else y viceversa. Las
condiciones se evalúan de arriba hacia abajo, tan pronto como se
encuentra una condición cierta, se ejecuta la sentencia asociada a
ella y se pasan por alto las demás. Si ninguna es cierta se ejecuta
el else final.
Se pueden poner tantos else if como se quiera, o no poner ninguno,
en cuyo caso se tiene:
If (expresión1) then
{
<grupo de sentencias 1>
}
else
{
<grupo de sentencias 2>
}
La instrucción else también es opcional, si no la colocamos significa
que si no se verifica ninguna de las condiciones dadas por el if o los
else if no se tiene que hacer nada.
Ej.:
if (X >= 10) then
{
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
cad = “Aprobado”
}
else
{
cad = “Aplazado”
}
7.7.2. Select case
Esta sentencia permite ejecutar distintos bloques de sentencias
según el valor de una determinada variable de control, que puede
ser entera o del tipo carácter. Su sintaxis es:
select case (control)
case valor1:
{
<sentencias>
break;
}
case valor2:
{
<sentencias>
break;
}
…
case default
{
<sentencias>
}
end select
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Según el valor de la variable se transferirá el control a los bloques
de sentencias correspondientes. Si el valor de la variable no esta
contemplado en los cases se ejecuta el conjunto de sentencias
correspondientes a default.
La diferencia entre el if y el select radica en que el select sólo
permite comprobar la igualdad, mientras que el if puede evaluar
todas las expresiones relacionales y lógicas, además de que a
partir de donde se encuentra la primera correspondencia se ejecuta
el código subsiguiente, para modificar este comportamiento debe
insertarse la instrucción break en cada bloque case.
7.8.Estructura de control repetitiva
Son las que permiten la repetición de secuencias de sentencias un
número determinado de veces. De esta forma, si tenemos que repetir
acciones no será necesario escribir las mismas sentencias varias veces,
sino que bastará con incluirlas dentro de un lazo o bucle. La estructura
repetitiva tiene tres tipos:
 Mientras
 Para
 Repetir/hasta que
7.8.1. Mientras (WHILE)
Se trata de una sentencia de lazo o bucle que repite las sentencias
mientras se verifica la condición. El bucle termina cuando la
condición deja de cumplirse, por eso es importante que dentro del
cuerpo de la sentencia while se modifique la o las variables que
intervienen en la condición, sino se produce un ciclo infinito. Su
sintaxis es la siguiente:
While (condición)
{
<sentencias>
}
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
Si la condición es falsa la primera vez, las sentencias del while no
se ejecutan ni una sola vez.
Ej.: Un bucle que imprime los número del 1 al 9
int n = 1;
while (n < 10)
{
mostrar (n)
n = n + 1
}
Diagrama de flujo Diagrama N-S Pseudo-código
Mientras (condición)
Acción
Fin-Mientras
7.8.2. FOR
for (inicialización, condición, incremento)
En inicialización generalmente va una sentencia de asignación
que se utiliza para inicializar la variable de control del bucle, y se
ejecuta antes de empezar la iteración, sólo una vez. La condición
es una expresión relacional que determina si el bucle continua o
no, se verifica en cada iteración. El incremento define como
Condición
Acción
Verdadera
Falsa
Acción
Mientras (Condición)
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
cambia la variable de control cada vez que se repite el bucle, es
decir, es una sentencia que se ejecuta al final de cada iteración.
Si la condición es la falsa la primera vez, las sentencias del for no
se ejecutan ni una sola vez.
Diagrama de flujo Diagrama N-S Pseudo-código
Mientras (condición)
Acción
Fin-Mientras
7.8.3. DO/WHILE y REPEAT/ UNTIL
A diferencia de los bucles while y for, que analizan la condición al
principio del bucle, estas sentencias analizan la condición al final,
esto significa que el bucle se ejecuta por lo menos una vez. Sus
sintaxis son:
DO/WHILE REPEAT/ UNTIL
do
{
<sentencias>
}
while (condición)
repeat
{
<sentencias>
}
until (condición)
La diferencia entre el DO/WHILE y el REPEAT/UNTIL es que en
el primero el lazo se ejecuta mientras la condición es verdadera,
en el caso del REPEAT/UNTIL se itera mientras la condición es
falsa, al hacerse cierta el lazo finaliza.
Ej.: Lazos do/while y repeat/until para imprimir los números del 1
al 10.
Para V = I hasta F [Paso V]
Acción Acción
Para V = I hasta F [Paso V]
UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA
Prof. Lucía Bustamante
do
{
int n = 1;
print(n);
n = n + 1;
}
while (n < 10)
repeat
{
int n = 1;
print(n);
n = n + 1;
}
until (n == 10)
Diagrama de flujo Diagrama N-S Pseudo-código
Repetir/Hacer
Acción
Hasta/mientras(Cond)
Condición
Acción
Acción
Mientras/Hasta (Cond)
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
Unidad III: Tipos de datos estructurados
Objetivo terminal: Conocer y aplicar los tipos de datos estructurados en
la solución de problemas.
1. Evolución de los enfoques de programación.
1.1.Programación no estructurada
Esta programación sólo es útil en el caso de programas pequeños y
sencillos consistentes en un solo programa principal. Aquí "programa
principal" se refiere a una secuencia de comandos o instrucciones que
modifican datos que son a su vez globales en el transcurso de todo el
programa.
Como todos deberían saber, estas técnicas de programación ofrecen
tremendas desventajas una vez que el programa se hace
suficientemente grande. Por ejemplo, si la misma secuencia de
instrucciones se necesita en diferentes situaciones dentro del programa,
la secuencia debe ser repetida. Esto ha conducido a la idea de extraer
estas secuencias, darles un nombre y ofrecer una técnica para llamarlas
y regresar desde estos procedimientos.
1.2.Programación Procedimental
Con la programación procedimental se pueden combinar las secuencias
de instrucciones repetibles en un solo lugar. Una llamada de
procedimiento se utiliza para invocar al procedimiento. Después de que
la secuencia es procesada, el control es retornado exactamente después
de la línea donde la llamada fue hecha.
Al introducir parámetros así como procedimientos de procedimientos
(subprocedimientos) los programas pudieron ser escritos en forma más
estructurada y libres de errores. Por ejemplo, si un procedimiento ya es
correcto, cada vez que es usado produce resultados correctos. Por
consecuencia, en caso de errores, se puede reducir la búsqueda a
aquellos lugares que todavía no han sido revisados.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
De este modo, un programa en la programación procedimental puede
ser visto como una secuencia de llamadas a procedimientos. Un
programa único que se divide en pequeñas piezas llamadas
procedimientos.
El programa principal coordina las llamadas a procedimientos y pasa los
datos apropiados en forma de parámetros, los datos son procesados por
los procedimientos y, una vez que el programa ha terminado, los datos
resultantes son presentados.
1.3.Programación modular
Para posibilitar el uso de procedimientos generales o grupos de
procedimientos también en otros programas, aquéllos deben estar
disponibles en forma separada. Por esa razón, la programación modular
permite el agrupamiento de procedimientos dentro de módulos.
El programa principal coordina las llamadas a procedimientos en
módulos separados y pasa los datos apropiados en forma de
parámetros.
El proceso de descomposición de un problema en módulos se conoce
como modulación y la programación relativa a ellos programación
modular.
1.4.Programación Orientada a objetos
Programación basada en objetos, encapsula datos (atributos) y métodos
(comportamiento) en objetos y la unidad básica es la clase.
En contraste con las otras técnicas, en la programación orientada a
objetos se tiene una telaraña de objetos interactúantes, cada uno de los
cuáles manteniendo su propio estado. Los objetos del programa
interactúan mandando mensajes unos a otros.
Por ejemplo se tiene una aplicación que emplea listas (secuenciales o
enlazadas) en la programación orientada a objetos se deben tener
tantos objetos-lista como sean necesarios y en lugar de llamar un
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
procedimiento al que le debemos proveer el manejador de lista correcto,
mandaríamos un mensaje directamente al objeto-lista en cuestión. En
términos generales, cada objeto implementa su propio módulo.
Cada objeto es responsable de inicializarse y destruirse en forma
correcta. Por consiguiente, ya no existe la necesidad de llamar
explícitamente al procedimiento de creación o de terminación.
La programación orientada a objetos no es ésta solo una manera más
elegante de técnica de programación modular, además de esta
características se introducen otras adicionales que hacen de la
programación orientada a objetos una técnica novedosa de
programación.
2. Estructuras lineales de datos
2.1.Definición
Las estructuras lineales de datos se caracterizan porque sus elementos
están en secuencia, relacionados en forma lineal, uno después del otro.
Cada elemento de la estructura puede estar conformado por uno o
varios sub-elementos o campos que pueden pertenecer a cualquier tipo
de dato, sin embargo generalmente se trata de tipos simples de datos.
2.2.Estructuras estáticas de datos
Son las estructuras de datos a las que se les asigna una cantidad fija de
memoria en tiempo de compilación. Durante la ejecución del programa
no crecen ni decrecen.
3. Arreglos
Representan un conjunto de valores (caracteres, enteros, reales, entre
otros) donde todos comparten el mismo nombre y cada valor es
referenciado utilizando uno o más subíndices.
4. Tipos de arreglos
 Vectores: Arreglos unidimensionales, un solo subíndice
 Matrices: Arreglos multidimensionales, dos o más subíndices
5. Arreglos unidimensionales (Vectores)
5.1.Definición arreglo
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
Los arreglos son un conjunto localidades consecutivas de memoria que
almacenan datos del mimo tipo. Cada localidad representa un elemento
del vector que es accedido mediante el nombre del vector y un
subíndice.
Ej.: Se desea almacenar la temperatura de 5 ciudades diferentes puede
disponerse convenientemente en una secuencia de elementos, donde se
identifica a través de la ubicación en el arreglo a que ciudad pertenece la
temperatura.
5.2.Sintaxis
Nombre_arreglo tipo [Número_elementos]
Ej.: Definición de un arreglo para almacenar la temperatura de 5
ciudades
temperaturas real [5]
5.3.Importancia
La principal razón del uso de los arreglos se puede explicar mediante un
ejemplo: Se quiere hacer un programa para almacenar los resultados de
un examen e imprimir el promedio del curso. Si el examen es aplicado a
45 estudiantes, si se asigna el resultado de cada estudiante a una
variable tendríamos un programa muy extenso sólo por los datos.
Si se desea almacenar el peso de 10 personas en lugar crear 10
variables con nombres distintos se puede crear una sola del tipo arreglo
con 10 apartados.
Ej.: Definición de un arreglo de 10 enteros.
pesos int [10]
5.4.Acceso a los elementos de un vector (Subíndices)
El nombre de un arreglo se refiere a todos los elementos que este
contenga, para acceder a un elemento particular se hace uso de
subíndices.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
Los elementos de un vector son accedidos a través de un subíndice, el
cual se refiere a un valor específico dentro el arreglo que puede ser
considerado como una variable. El subíndice se representa como un
entero (no negativo) entre 0 y el número de elementos del arreglo menos
1, entre corchetes. La sintaxis general es:
Nombre_arreglo [subíndice]
Ej.: Asignación del peso de la persona número 3
pesos [3] = 55
5.5.Expresiones con arreglos
Supongamos que queremos sumar el peso de las personas 1 y 2, la
expresión seria:
peso1y2 = pesos [1] + pesos [2]
Si el subíndice es una expresión matemática, esta se calculará y luego
se convertirá el resultado en entero.
Ej.: pesos [i + 1] = pesos [j – 2], si i = 3 y j = 7, como resultado de
ejecutar esta expresión se tendrá la igualación de los pesos de las
personas 4 y 5.
Para realizar operaciones sobre todos los elementos del arreglo se
emplean sentencias de repetición.
Ej.: Se desea incrementar en 2 kilos los 10 pesos almacenados.
Elem1 Elem7
Elem2 Elem3 Elem4 Elem5 Elem6
0 6
1 2 3 4 5
Nombre del vector
Subíndices
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
for (i = 0; i<10; i++)
{
Pesos[i] = pesos[i] + 2
}
5.6.Paso de vectores como parámetros
Un arreglo se puede pasar completo como parámetro de un
subprograma, el programa principal al invocar el subprograma sólo
especifica su nombre, sin corchetes ni subíndices. En la declaración del
subprograma se escribe un par de corchetes vacíos, el tamaño no se
especifica.
Ej.: Definición de una función que recibe como parámetro un arreglo
real calcularPromedio (int tamArreglo, real arreglo []) //Corchetes vacíos
{
…
}
//Programa principal
int totalNotas = 10;
real notas [totalNotas] = {15, 17, 18, 16, 14, 20, 15, 19, 17, 12};
real promedio = calcularPromedio (10, notas); //No incluye los corchetes
6. Arreglos multidimensionales (Matrices)
6.1.Definición de matriz
Los arreglos multidimensionales o matrices son un conjunto localidades
consecutivas de memoria que almacenan arreglos (unidimensionales o
multidimensionales).
En el caso de dos dimensiones cada localidad representa un vector
(arreglo unidimensional) o una fila de la matriz. Cada elemento de esta
es accedido mediante el nombre de la matriz y dos subíndices [fila]
[columna].
6.2.Sintaxis
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
Nombre_matriz tipo [NumEleDim1] [NumEleDim2]… [NumEleDimN]
Ej.: Definición de una matriz bidimensional para almacenar el precio de 7
artículos de 3 marcas diferentes.
precios real [7] [3]
En caso particular de matrices de dos dimensiones la sintaxis general se
reduce a:
Nombre_matriz tipo [NumFilas] [NumColumnas]
6.3.Importancia
El tipo de dato matriz puede utilizarse en casos donde se requiere
almacenar información correspondiente a más de una variable. Por
ejemplo si se desea almacenar la temperatura de una ciudad en las
diferentes estaciones del año, esta información puede ser almacenada
en una matriz de doble entrada en la que cada fila representa una
ciudad, cada columna una estación del año y cada casilla de la
intersección fila, columna se almacenará la temperatura
correspondiente.
6.4.Acceso a los elementos
Nombre_matriz [SubIndDim1] [SubIndDim2]… [SubIndDimN]
Ej. : Supóngase la siguiente matriz de 3 dimensiones 3, 2, 4. A
continuación se muestran los subíndices para acceder a cada elemento
de la matriz.
0 1
0 [0][0][0] [0][0][1] [0][0][2] [0][0][3] [0][1][0] [0][1]1] [0][1][2] [0][1][3]
1 [1][0][0] [1][0][1] [1][0][2] [1][0][3] [1][1][0] [1][1]1] [1][1][2] [1][1][3]
2 [2][0][0] [2][0][1] [2][0][2] [2][0][3] [2][1][0] [2][1]1] [2][1][2] [2][1][3]
6.5.Expresiones con matrices
Supongamos que queremos sumar los valores que pertenecen a la celda
[1] [1], la expresión sería:
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
sumatoria1_2 = matriz [1] [1] [0] + matriz [1] [1]1] + matriz [1] [1] [2]
+ matriz [1] [1] [3]
Para realizar operaciones sobre todos los elementos de la matriz se
emplean sentencias de repetición anidadas.
Ej.: Se desea inicializar en 0 la matriz anterior.
Para (i = 0; i<3; i++)
Para (j = 0; j<2; j++)
Para (k=0; k<4; k++)
matriz[i] [j] [k] = 0;
Fin-Para
Fin-Para
Fin-Para
6.6.Ocupación de la memoria
Los arreglos colocan sus elementos consecutivamente, a partir de una
determinada dirección de memoria. En el caso de dos o más
dimensiones, la colocación se realiza por columnas.
Ej.: Se define una matriz a de 3 x 3, su colocación en memoria se realiza
a partir de una posición x de la siguiente forma:
Dirección Elemento
Almacenado
Dirección Elemento
almacenado
Dirección Elemento
almacenado
x a[0][0] x + 3 a[0][1] x + 6 a[0][2]
x + 1 A[1][0] x + 4 a[1][1] x + 7 a[1][2]
x + 2 a[2][0] x + 5 a[2][1] x + 8 a[2][2]
7. Programación procedimental
7.1.Definición
Programación orientada a acciones donde la unidad básica es el
subprograma.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
7.2.Subprogramas
7.2.1. Definición
Es un conjunto de instrucciones que realizan una tarea concreta a
las que se designa con un nombre o identificador y constituyen una
unidad de programa. La tarea determinada al subprograma se
ejecuta cada vez que en el código fuente se haga referencia al
nombre del subprograma.
La declaración de un subprograma incluye los parámetros de
entrada y en el caso de las funciones también el tipo del parámetro
de salida.
7.2.2. Importancia
Muchas veces en un programa es necesario repetir un mismo
proceso varias veces en distintas partes de éste. Para evitar tener
que repetir el mismo código varias veces, el programador tiene la
opción de abstraer esa parte del programa en un subprograma, el
cual puede ser llamado cuando se requiera.
7.2.3. Tipos
7.2.3.1. Funciones
Es un subprograma que retorna parámetros.
Ej.: Declaración de una función
Tipo_retorno nombre_funcion(p1, p2, … pn)
7.2.3.2. Procedimientos
Son subprogramas que no retornan parámetros.
Ej.: Declaración de un procedimiento
Tipo_retorno nombre_procedimiento (p1, p2,… pn)
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
7.2.3.3. Comparación Funciones y procedimientos
Funciones Semejanzas Procedimientos
Son subprogramas
Retorna un valor No retorna valores
Pueden recibir o no
parámetros de entrada
Otra clasificación de los subprogramas viene dada por donde se
encuentran definidos o implementados, de acuerdo a este criterio
existen tres tipos de subprogramas: de sentencia, intrínsecos y
externos.
7.2.3.4. Subprogramas de sentencia
Son los que son definidos dentro del programa principal para
realizar una tarea especifica que se repite muchas veces durante
el proceso.
Ej.: Supóngase un programa que opera con vectores que requiere
calcular varias veces el módulo de un vector, lo más acertado es
declarar una función para calcular el módulo.
7.2.3.5. Subprogramas intrínsecos
Son los subprogramas que vienen definidos en el compilador y
pueden ser utilizados invocándolos a través de su nombre.
Ej.: Tareas rutinarias como mostrar datos por pantalla, realizar
operaciones matemáticas como cálculo de la raíz cuadrada, ente
otras, son tareas que han sido programadas previamente e
incorporadas al compilador de modo que el programador pueda
utilizarlas.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
7.2.3.6. Subprogramas externos
Son los subprogramas que están definidos en módulos que
podemos utilizar al importar las librerías que los contienen.
7.2.4. Parámetros
Un parámetro es un valor que pude ser proporcionado al
subprograma (de entrada) o retornado por este (de salida).
7.2.4.1. Parámetros formales
En la declaración de un subprograma, cuando se incluyen
parámetros, estos se denominan parámetros formales,
representan los datos recibidos por el subprograma. Ellos sirven
para contener los valores de los argumentos del programa
principal, es decir, para contener los valores suministrados en
cada invocación.
7.2.4.2. Argumentos
Los datos que se envían a los subprogramas se llaman argumentos
del programa principal, estos deben coincidir en número, orden y
tipo con los parámetros formales de la declaración del
subprograma.
7.2.4.3. Parámetros de entrada
Son aquellos cuyos valores deben ser proporcionados al hacer la
invocación de la función.
7.2.4.4. Parámetros de salida
Son aquellos cuyos valores se calculan en el subprograma y son
retornados por el subprograma.
7.2.5. Ámbito de un subprograma
7.3.Variables globales
Son variables globales las que son declaradas en el programa principal,
estas variables pueden ser accedidas desde cualquier parte del código.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
7.4.Variables locales
Son variables locales las que son declaradas dentro de un subprograma
y se dice que son locales al subprograma. Una variable local sólo esta
disponible durante la ejecución del subprograma, su valor se pierde al
retornar el control al programa principal.
7.5.Transferencia de información a/desde subprogramas
Existen dos formas de pasar la información entre el programa principal y
los subprogramas. Se trata del paso por valor y el paso por referencia.
7.5.1. Por valor
Los valores de los argumentos del programa principal que son
enviados al subprograma son copiados en unas nuevas variables
para ser procesados. La ventaja de enviar parámetros por valor, es
que las variables del programa principal no son alteradas en el
subprograma.
Ej.: Paso de parámetros por valor
7.5.2. Por referencia
Cuando se hace el paso de parámetros por referencia, lo que se
envía es la posición de memoria donde están almacenados los
argumentos del programa principal, por lo que si los parámetros son
modificados en el subprograma los cambios se verán reflejados
también en el programa principal. La ventaja del paso por referencia
es que de cierto modo se tienen múltiples valores de retorno.
Ej.: Paso de parámetros por referencia
8. Programación Modular
8.1.Definición
La programación modular se basa en diseñar un programa dividiéndolo
en módulos que resultan de segmentar el problema en funciones lógicas
que son perfectamente diferenciadas. Esta división exige la presencia
de un módulo denominado módulo de base o principal a objeto de que
controle y se relacione con los demás.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
La programación modular al considerar funciones lógicas constituye un
intento para diseñar programas que puedan ser cambiados o
reemplazados fácilmente sin afectar en lo posible a ninguna otra parte o
módulo del programa.
8.2.Definición de módulo
En la programación modular, los procedimientos con una funcionalidad
común son agrupados en módulos separados. Un programa por
consiguiente, ya no consiste solamente de una sección. Ahora está
dividido en varias secciones más pequeñas que interactúan a través de
llamadas a procedimientos y que integran el programa en su totalidad
Cada módulo puede contener sus propios datos. Esto permite que cada
módulo maneje un estado interno que es modificado por las llamadas a
procedimientos de ese módulo. Sin embargo, solamente hay un estado
por módulo y cada módulo existe cuando más una vez en todo el
programa.
Ejemplos de módulos son las bibliotecas de componentes de software
de las aplicaciones generales, las cuales permiten una mayor
comodidad y productividad en la programación.
8.3.Criterios para composición de módulos
 Cada módulo debe corresponder a una función lógica
perfectamente diferenciable.
 El tamaño de cada módulo debe ser variable, pero se recomienda
que sea pequeño, con el objeto de obtener programas claros y de
poca complejidad.
 Evitar el uso de excesivo número de módulos, es necesario
buscar un equilibrio entre la cantidad de módulos y el tamaño de
los mismos.
 Cada módulo vista como una caja negra, donde la salida debe ser
en función exclusiva de la entrada.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
9. Programación orientada a objetos
Entre las diferencias entre la programación orientada a objetos y otras
técnicas de programación, se tiene que en la programación orientada a
objetos, los objetos intercambian mensajes entre sí. En otras técnicas de
programación, los datos son intercambiados entre procedimientos bajo
el control de un programa principal. Es decir, objetos del mismo tipo pero
cada uno con su propio status pueden coexistir. Esto contrasta con el
enfoque modular donde cada módulo tiene solamente un status global.
9.1.Conceptos relacionados
9.1.1. Clase
Una clase es la implementación de un tipo de datos abstracto (TDA).
Define atributos y métodos que implementan la estructura de datos y
operaciones del TDA, respectivamente. Las instancias de las clases
son llamadas objetos. Consecuentemente, las clases definen las
propiedades y el comportamiento de conjuntos de objetos.
Los TDAs permiten la creación de instancias con propiedades bien
definidas y comportamiento bien definido. Los TDAs definen la
funcionalidad al poner especial énfasis en los datos involucrados, su
estructura, operaciones, así como en axiomas y precondiciones.
Una clase es una representación real de un TDA. Por lo tanto, provee
detalles de implementación para la estructura de datos utilizada y las
operaciones.
Al nivel de clases (implementación) hablamos de "atributos", que son
elementos de la estructura de datos al nivel del TDA. Lo mismo se
aplica a "métodos", que es la implementación de las operaciones del
TDA.
9.1.2. Objeto
Un objeto es una instancia de una clase. Puede ser identificado en
forma única por su nombre y define un estatus, el cuál es
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
representado por los valores de sus atributos en un momento en
particular.
El estatus de un objeto cambia de acuerdo a los métodos que le son
aplicados. Nos referimos a esta posible secuencia de cambios de
estatus como el comportamiento del objeto:
El comportamiento de un objeto es definido por un conjunto de
métodos que le pueden ser aplicados.
Se han presentado hasta ahora dos conceptos principales de
orientación a objetos, clase y objeto. La programación orientada a
objetos es por lo tanto la implementación de tipos de datos
abstractos o, en palabras más sencillas, la escritura de clases. En
tiempo de ejecución, instancias de estas clases -los objetos- cumplen
con el objetivo del programa cambiando sus estatus. Por
consecuencia, se genera la pregunta: ¿Cómo interactúan estos
objetos? y surge la necesidad del concepto de mensaje.
9.1.3. Mensaje y método
Un programa en ejecución es una colección de objetos, donde dichos
objetos interactuantes son creados y destruidos. Esta interacción se
basa en mensajes que son mandados de un objeto a otro, donde el
emisor le pide al receptor que aplique un método a sí mismo
Mandar un mensaje pidiéndole a un objeto que aplique un método es
similar a una llamada a un procedimiento en lenguajes de
programación "tradicionales". Sin embargo, en orientación a objetos,
hay un cuadro de objetos autónomos que se comunican unos con los
otros por medio del intercambio de mensajes. Los objetos reaccionan
cuando reciben mensajes por medio de la aplicación de métodos
sobre si mismos. También pueden negar la ejecución de un método,
por ejemplo si el objeto que hace la llamada no tiene permiso para
ejecutar el método solicitado.
Un mensaje es una solicitud a un objeto para invocar uno de sus
métodos. Un mensaje por lo tanto contiene: el nombre del método y
los argumentos del método.
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
Por consecuencia, la invocación de un método es solamente una
reacción causada por el hecho de recibir un mensaje. Esto solamente
es posible si el método es realmente conocido por el objeto.
Un método está asociado a una clase. Un objeto invoca un método
como una reacción al recibir un mensaje.
9.1.4. Herencia
La herencia es la propiedad que permite a los objetos construirse a
partir de otros objetos. El concepto de herencia está presente en
nuestras vidas diarias donde las clases se dividen en subclases.
La herencia permite entonces describir entidades (clases) por
diferencia entre ellas; por eso se dice que programar con orientación
a objetos es programar para diferenciar. La utilidad de la herencia es
múltiple. En primer lugar hay que analizar, diseñar, codificar y poner
a punto, que en cuanto se tiene un concepto definido, jamás lo
repetimos. Como muchos, si el concepto nuevo es muy parecido a
uno anterior, se define el nuevo como la diferencia respecto al
anterior. Si surge un error en la utilización de la nueva entidad,
seguro que el error está en lo que se ha añadido por que lo que se
ha heredado ya se había producido.
Hay diferentes tipos de herencia: los más importantes son simples y
múltiples. Con esto se quiere decir que, al contrario de la herencia
biológica donde siempre se hereda de dos padres, en la
programación orientada a objetos se puede heredar de uno, dos o
más padres.
La definición de cliente minorista a partir de cliente es un ejemplo de
herencia simple. Y se podría definir un vehículo anfibio como una
herencia (subclase) de otras dos clases: coche y barco.
9.1.5. Polimorfismo
La característica de polimorfismo de la POO permite que las
instancias de diferentes clases reaccionen de una forma particular al
llamado de una función. Por ejemplo, en una jerarquía de formas
UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS
Prof. Lucía Bustamante
graficas (punto, línea, cuadro, rectángulo, etc.), cada forma tiene una
función dibujar responsable de contestar adecuadamente a
peticiones del trazo de esa forma.
El polimorfismo permite que las instancias de diferentes clases
respondan a la misma función en forma adecuada para cada clase.
Polimorfismo significa que muchos programas se hacen extensibles a
nuevos tipos sin necesidad de recompilarlos.
El origen del término polimorfismo es simple: ya que describe la
capacidad de código de C++ de comportarse de diferentes maneras
dependiendo de situaciones que se presenten al momento de la
ejecución. Este comportamiento a menudo escapa del control directo
del programador. El polimorfismo no es tanto una característica de
objetos como lo es de funciones miembro de una clase. Se implanta
a través de la arquitectura de clases; sin embargo, solo las funciones
miembro de la clase puede ser polimorficas, y no la clase completa.
UNIDAD IV: INTRODUCCIÓN AL MANEJO DE ARCHIVOS Y ESTRUCTURAS
Prof. Lucía Bustamante
Unidad IV: Introducción al manejo de archivos y estructuras
Objetivo terminal: Conocer e identificar efectivamente los archivos y las
estructuras para almacenar y manipular información en el desarrollo de
programas informáticos.

Más contenido relacionado

La actualidad más candente

Universidad De Los Andes
Universidad De Los AndesUniversidad De Los Andes
Universidad De Los Andesbarrios
 
Presentacion del Pc
Presentacion del PcPresentacion del Pc
Presentacion del Pc
maria7lilith
 
Instructivo de TIC. Software
Instructivo de TIC. SoftwareInstructivo de TIC. Software
Instructivo de TIC. Software
MariBianchi
 
Tema 1 el computador y sus partes
Tema 1 el computador y sus partesTema 1 el computador y sus partes
Tema 1 el computador y sus partes
Universidad de los Andes
 
Lab algoritmos 1
Lab algoritmos 1Lab algoritmos 1
Lab algoritmos 1
junior zamora
 
Partes De La Computadora1
Partes De La Computadora1Partes De La Computadora1
Partes De La Computadora1mgarofalo85
 
El Computador Y Sus Partes
El Computador Y Sus PartesEl Computador Y Sus Partes
El Computador Y Sus Partes
Johaniita77
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
Ronny Parra
 
Componentes Fisicos y Logicos del Computador
Componentes Fisicos y Logicos del ComputadorComponentes Fisicos y Logicos del Computador
Componentes Fisicos y Logicos del Computador
María Mora Rujano
 
Partes De La Computadora
Partes De La ComputadoraPartes De La Computadora
Partes De La Computadora
Cyber El Centro
 
3. partes de una computadora
3. partes de una computadora3. partes de una computadora
3. partes de una computadoraGalo Anzules
 
Partes de la computadora
Partes de la computadoraPartes de la computadora
Partes de la computadora
Professor
 
Examen mensual iv bi computacion secundaria
Examen mensual iv bi computacion secundariaExamen mensual iv bi computacion secundaria
Examen mensual iv bi computacion secundaria
CARLOS ROSALES
 
Presentacion de definicion de computadora
Presentacion de definicion de computadoraPresentacion de definicion de computadora
Presentacion de definicion de computadora
Oscar Omar Zelaya Benavides
 
ppt de los Sistema Operativos
ppt de los Sistema Operativos ppt de los Sistema Operativos
ppt de los Sistema Operativos
MaraLupeQuinteroGonz
 
Elementos fisicos y lógicos del computador
Elementos fisicos y lógicos del computadorElementos fisicos y lógicos del computador
Elementos fisicos y lógicos del computador
maria_p12
 
Elementos físicos y lógicos del computador
Elementos físicos y lógicos del computadorElementos físicos y lógicos del computador
Elementos físicos y lógicos del computador
J.L.A.P
 

La actualidad más candente (20)

Ejercicios
EjerciciosEjercicios
Ejercicios
 
Guia no. 1 grado 3
Guia no. 1 grado 3Guia no. 1 grado 3
Guia no. 1 grado 3
 
Universidad De Los Andes
Universidad De Los AndesUniversidad De Los Andes
Universidad De Los Andes
 
Presentacion del Pc
Presentacion del PcPresentacion del Pc
Presentacion del Pc
 
Diapositivas el computador
Diapositivas el computadorDiapositivas el computador
Diapositivas el computador
 
Instructivo de TIC. Software
Instructivo de TIC. SoftwareInstructivo de TIC. Software
Instructivo de TIC. Software
 
Tema 1 el computador y sus partes
Tema 1 el computador y sus partesTema 1 el computador y sus partes
Tema 1 el computador y sus partes
 
Lab algoritmos 1
Lab algoritmos 1Lab algoritmos 1
Lab algoritmos 1
 
Partes De La Computadora1
Partes De La Computadora1Partes De La Computadora1
Partes De La Computadora1
 
El Computador Y Sus Partes
El Computador Y Sus PartesEl Computador Y Sus Partes
El Computador Y Sus Partes
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
 
Componentes Fisicos y Logicos del Computador
Componentes Fisicos y Logicos del ComputadorComponentes Fisicos y Logicos del Computador
Componentes Fisicos y Logicos del Computador
 
Partes De La Computadora
Partes De La ComputadoraPartes De La Computadora
Partes De La Computadora
 
3. partes de una computadora
3. partes de una computadora3. partes de una computadora
3. partes de una computadora
 
Partes de la computadora
Partes de la computadoraPartes de la computadora
Partes de la computadora
 
Examen mensual iv bi computacion secundaria
Examen mensual iv bi computacion secundariaExamen mensual iv bi computacion secundaria
Examen mensual iv bi computacion secundaria
 
Presentacion de definicion de computadora
Presentacion de definicion de computadoraPresentacion de definicion de computadora
Presentacion de definicion de computadora
 
ppt de los Sistema Operativos
ppt de los Sistema Operativos ppt de los Sistema Operativos
ppt de los Sistema Operativos
 
Elementos fisicos y lógicos del computador
Elementos fisicos y lógicos del computadorElementos fisicos y lógicos del computador
Elementos fisicos y lógicos del computador
 
Elementos físicos y lógicos del computador
Elementos físicos y lógicos del computadorElementos físicos y lógicos del computador
Elementos físicos y lógicos del computador
 

Similar a GuiaAlgoritmosyProgramacionI.pdf

Definicion de la programacion
Definicion de la programacionDefinicion de la programacion
Definicion de la programacion
Luis Miguel Pacheco
 
Programación tic
Programación ticProgramación tic
Programación tic
lunanogales
 
Programación tic
Programación ticProgramación tic
Programación tic
Amelia Mora González
 
Introduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionIntroduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionlupitagarcia07
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacion
joel210696
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01
Facultad de Ciencias y Sistemas
 
Cuestinario1
Cuestinario1Cuestinario1
Cuestinario1
hoppii
 
Cuestinario1
Cuestinario1Cuestinario1
Cuestinario1hoppii
 
Unidad 1-continacion
Unidad 1-continacionUnidad 1-continacion
Unidad 1-continacionCecilia Díaz
 
Unidad 1-continacion
Unidad 1-continacionUnidad 1-continacion
Unidad 1-continaciondetlefsen
 
Unidad 1-continacion
Unidad 1-continacionUnidad 1-continacion
Unidad 1-continaciondetlefsen
 
Introduccion a la prgrmacion.
Introduccion a la prgrmacion.Introduccion a la prgrmacion.
Introduccion a la prgrmacion.
Vladimir Pomares
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosnileyna
 

Similar a GuiaAlgoritmosyProgramacionI.pdf (20)

Definicion de la programacion
Definicion de la programacionDefinicion de la programacion
Definicion de la programacion
 
Diap 01
Diap 01Diap 01
Diap 01
 
Programación tic
Programación ticProgramación tic
Programación tic
 
Programación tic
Programación ticProgramación tic
Programación tic
 
Introduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionIntroduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacion
 
Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacion
 
Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01Introducción a la Programación :: Unidad 01 :: Parte 01
Introducción a la Programación :: Unidad 01 :: Parte 01
 
Cuestinario1
Cuestinario1Cuestinario1
Cuestinario1
 
Cuestinario1
Cuestinario1Cuestinario1
Cuestinario1
 
Unidad 1-continacion
Unidad 1-continacionUnidad 1-continacion
Unidad 1-continacion
 
Unidad 1-continacion
Unidad 1-continacionUnidad 1-continacion
Unidad 1-continacion
 
Unidad 1-continacion
Unidad 1-continacionUnidad 1-continacion
Unidad 1-continacion
 
Introduccion a la prgrmacion.
Introduccion a la prgrmacion.Introduccion a la prgrmacion.
Introduccion a la prgrmacion.
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
9º Algoritmos
9º Algoritmos9º Algoritmos
9º Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 

Último

Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
jmorales40
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
Profes de Relideleón Apellidos
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
danitarb
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docxENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
SandraPiza2
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
DivinoNioJess885
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
YasneidyGonzalez
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
GallardoJahse
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
Alejandrogarciapanta
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 
MIP PAPA Rancha Papa.pdf.....y caracteristicas
MIP PAPA  Rancha Papa.pdf.....y caracteristicasMIP PAPA  Rancha Papa.pdf.....y caracteristicas
MIP PAPA Rancha Papa.pdf.....y caracteristicas
jheisonraulmedinafer
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
20minutos
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
DIANADIAZSILVA1
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
20minutos
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
arleyo2006
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernándezPRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
Ruben53283
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometrico
YasneidyGonzalez
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
YasneidyGonzalez
 

Último (20)

Portafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPNPortafolio de servicios Centro de Educación Continua EPN
Portafolio de servicios Centro de Educación Continua EPN
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
 
Libro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdfLibro infantil sapo y sepo un año entero pdf
Libro infantil sapo y sepo un año entero pdf
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docxENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
ENSAYO SOBRE LA ANSIEDAD Y LA DEPRESION.docx
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 
MIP PAPA Rancha Papa.pdf.....y caracteristicas
MIP PAPA  Rancha Papa.pdf.....y caracteristicasMIP PAPA  Rancha Papa.pdf.....y caracteristicas
MIP PAPA Rancha Papa.pdf.....y caracteristicas
 
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de MadridHorarios Exámenes EVAU Ordinaria 2024 de Madrid
Horarios Exámenes EVAU Ordinaria 2024 de Madrid
 
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdfHABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
HABILIDADES MOTRICES BASICAS Y ESPECIFICAS.pdf
 
Examen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdfExamen Lengua y Literatura EVAU Andalucía.pdf
Examen Lengua y Literatura EVAU Andalucía.pdf
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernándezPRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
PRÁCTICAS PEDAGOGÍA.pdf_Educación Y Sociedad_AnaFernández
 
Fase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometricoFase 2, Pensamiento variacional y trigonometrico
Fase 2, Pensamiento variacional y trigonometrico
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
 

GuiaAlgoritmosyProgramacionI.pdf

  • 1. REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD DEL ZULIA FACULTAD EXPERIMENTAL DE CIENCIAS DEPARTAMENTO DE PROGRAMACIÓN Prof. Lucía Bustamante GUÍA ALGORITMO Y PROGRAMACIÓN I
  • 2. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Unidad I: Fundamentos de programación Objetivo terminal: Conocer y aplicar efectivamente los fundamentos de programación. 1. Concepto de algoritmo Un algoritmo consiste en la descripción clara y detallada del procedimiento a seguir para alcanzar la solución de un problema. En un algoritmo se establece la secuencia ordenada de pasos o instrucciones a ejecutar para lograr esta solución. El término algoritmo proviene del nombre Mohammed al-Khowarizmi, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el enunciado de las reglas, paso a paso, para sumar, restar, multiplicar y dividir números decimales. 2. Importancia de los algoritmos en la programación Es importante el estudio y conocimiento de los Algoritmos desde su aparición hasta nuestros días es, y seguirá siendo; vital para el desarrollo de aplicaciones para computadoras y el manejo y dominio de la lógica de programación para resolver problemas. La solución de un problema se puede expresar mediante un algoritmo. El programador de computadoras es ante que nada una persona que resuelve problemas, por lo que para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemático. A la metodología necesaria para resolver problemas mediante programas se denomina Metodología de la Programación. El eje central de esta metodología es el algoritmo. Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, una receta de un plato de cocina se puede expresar en español, ingles o
  • 3. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración del plato se realizaran sin importar el idioma del cocinero. En la ciencia de la computación y en la programación, los algoritmos son más importantes que los lenguajes de programación o las computadoras. Un lenguaje de programación es tan solo un medio para expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efectúe el proceso correspondiente. Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño de algoritmos. 3. Características de los algoritmos  Preciso: Indicar el orden de realización de cada paso. El orden de realización de las operaciones debe estar dado en una forma clara. No debe existir ambigüedad en el mismo. Todos los posibles caminos de solución deben aparecer recogidos en el algoritmo.  Deterministico: Si se sigue el algoritmo dos o más veces sobre los mismos datos de entrada se debe obtener el mismo resultado cada vez.  Finito: Debe tener un número finito de pasos. El algoritmo debe terminar en un momento determinado después de ejecutar un número finito de pasos.  Elemental: La secuencia de las operaciones debe ser detallada. Los pasos deben estar indicados como instrucciones sencillas, de ser posible representables en el lenguaje de programación a utilizar después.  General: Debe encontrar la solución para las diferentes instancias del problema que resuelve, no debe estar sujeto a unos parámetros de entrada específicos.
  • 4. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante 4. Conceptos relacionados con la programación 4.1.Instrucción Información que indica a la computadora una acción elemental a ejecutar. Este término es empleado en lenguajes de bajo nivel. 4.1.1. Tipos de instrucciones Las instrucciones que se indican en un algoritmo generalmente son de los siguientes tipos:  Lectura. Recepción de datos.  Computo. Realización de operaciones matemáticas o lógicas.  Almacenamiento. Almacenaje de datos.  Salida. Impresión de datos almacenados. 4.2.Programa Es una serie de instrucciones perfectamente legibles por la computadora, ordenadas secuencialmente para que esta realice una tarea específica. 4.3.Diferencia entre algoritmo y programa En los algoritmos no se especifica el lenguaje de programación a emplear. Son un código genérico para todos los lenguajes. Ej.: Algoritmo y programa para hallar el área de un cuarto que tiene una longitud de 8 metros por 3 metros de ancho. Algoritmo Programa en C 1. Asignación de los datos a las variables largo y ancho. 2. Cálculo del área como: área = largo * ancho. 3. Mostrar por pantalla la variable área. … int largo = 8; int ancho = 3; int area = largo * ancho; println(“El área es: %d”, área);
  • 5. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Los algoritmos son secuencia de instrucciones que conducen a la solución de un problema. Los programas son una secuencia de instrucciones que indican al computador los pasos para solucionar un problema. No todos los algoritmos pueden llegar a ser programas, en general son programables los algoritmos que resuelven problemas del tipo matemático-lógicos. 5. Clasificación de programas 5.1.De sistema Un computador emplea un código de muy bajo nivel, basado en números binarios para operar. Para evitar el uso de este lenguaje para interactuar con el computador se cuenta con programas que facilitan la comunicación entre el usuario y el computador, estos programas se denominan programas de sistema. El principal programa o componente de software del computador es el sistema operativo. 5.1.1. Sistema operativo Es un intérprete entre el usuario, los programas de aplicación y el computador. El computador al ser encendido realiza un chequeo de sí mismo y carga el sistema operativo en memoria RAM y comienza a ejecutarlo. Es cuando el computador está listo para comunicarse con el usuario. 5.2.De aplicación Son los programas que se cargan sobre el sistema operativo y con los que el usuario realiza tareas especificas, ejemplos se ellos son: procesadores de palabras, hojas de cálculo, manejadores de bases datos, juegos, etc. 6. Lenguajes de programación. 6.1.Definición
  • 6. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Son dialectos con los cuales podemos listar instrucciones que luego de ser traducidas no permiten indicar al computador qué tareas realizar. 6.2.Clasificación Los lenguajes de programación entre más sencillos son para el programador son más difíciles de entender por el computador, lo que los hace perder versatilidad. Los lenguajes de programación se clasifican según su versatilidad en: 6.2.1. Bajo nivel Son muy versátiles, permiten un control total del computador. Entre los lenguajes de bajo nivel encontramos: el código máquina y el ensamblador. 6.2.1.1. Máquina El lenguaje máquina comprende una serie de instrucciones en términos de códigos numéricos (cadenas de ceros y unos) que pueden ser interpretados por cierto modelo de computadora. Es un código propio de cada computadora que esta relacionado con el diseño del hardware de la misma. 6.2.1.2. Ensamblador Lenguaje de programación basado en códigos nemotécnicos (abreviaturas en inglés) y direcciones simbólicas que permite representar operaciones elementales de la computadora. 6.2.2. Alto nivel Poco versátiles, son bastante sencillos de aprender por el programador, usan palabras inglesas para definir las órdenes que se pueden dar al computador, así como notaciones matemáticas de uso común. Relación de complejidad de los lenguajes de programación para el usuario y el computador:
  • 7. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante 6.3.Traductores Programas que convierten los programas escritos por los programadores en un lenguaje de programación en programas con instrucciones en código máquina. 6.3.1. Compilador Es un programa que traduce una serie de órdenes en un lenguaje de programación (código fuente) al lenguaje propio o particular de la máquina. También detecta los errores de programación o sintaxis que se hayan cometido. Compilar es el proceso de traducción de código fuente a un programa de lenguaje de máquina. Un compilador realiza las siguientes tareas.  Traduce programa y a parte se corre binario generado.  Si hay error, no genera archivo ejecutable (no ejecuta).  El código binario generado es 100% lenguaje de máquina. 6.3.2. Intérprete Programa que efectúa la traducción y ejecución sucesiva instrucción a instrucción de un programa escrito en un lenguaje de alto nivel. Un intérprete realiza las siguientes tareas:  Traduce y ejecuta una línea del programa a la vez. Lenguaje de alto nivel Lenguaje ensamblador Lenguaje máquina Computadora Usuario
  • 8. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante  Si hay error, detiene ejecución del programa.  Programas más lentos pero más portables y flexibles. 6.3.3. Ensamblador Programa que traduce un programa escrito en lenguaje ensamblador en un programa objeto escrito en código máquina. 7. Componentes de un programa 7.1.Palabras claves Son las palabras reservadas por el lenguaje de programación y que tienen un significado especial para el compilador. 7.2.Identificadores Son los nombres con los que se permite hacer referencia a los diferentes objetos de un programa. Los identificadores deben cumplir con las siguientes reglas:  Ser significativos, sugerir que es lo que representan.  No pueden ser palabras reservadas.  Comprendidos por uno o más caracteres que pueden ser letras, dígitos y algunos caracteres especiales, pero siempre deben comenzar con una letra. 7.3.Delimitadores Signos especiales que permiten al compilador separar y reconocer las diferentes unidades sintácticas del lenguaje. Los delimitadores dependen del lenguaje de programación, sin embargo algunos de los delimitadores que tienen igual significado en los diferentes lenguajes son: Punto y coma: ; Indica fin de una sentencia. Coma: , Separa dos elementos consecutivos como parámetros formales en la declaración de un subprograma.
  • 9. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Paréntesis: () Enmarcan una lista de parámetros, condiciones, indican llamada a un subprograma. 7.4.Expresiones Las expresiones son combinaciones de operandos (constantes, variables u otras expresiones) y operadores. 7.5.Comentarios Son líneas que sirven para aclarar el algoritmo o programa al propio programador y a otros. Es conveniente añadir comentarios en los algoritmos y programas para hacerlos más fáciles de leer, entender y por tanto corregir y mantener. Los comentarios son ignorados por el compilador, su función es permitir al programador la documentación de los programas. 7.6.Estructuras de datos Una estructura de datos es una representación de los datos de modo que puedan ser procesados como un conjunto homogéneo. Según Roger Pressman, la estructura de datos es una representación de la relación lógica entre elementos individuales de datos y dicta la organización, métodos de acceso, grados de asociatividad y alternativas de procesamiento para información siendo el elemento escalar la estructura de datos más simple. Según UIT, los programas son formulaciones concretas de algoritmos abstractos basados en estructuras de datos. Programas = Algoritmos + Estructuras de Datos. “Los datos en primera instancia representan abstracciones de fenómenos reales formuladas como estructuras abstractas que no tienen que ser necesariamente las existentes en los lenguajes utilizados usualmente en programación. En el proceso de construcción de un programa se reforma gradualmente la representación de datos al mismo
  • 10. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante tiempo que el algoritmo, de forma que, progresivamente se vaya cumpliendo con las restricciones impuestas por el sistema de programación disponible”. 8. Constantes, variables y expresiones 8.1. Constantes Una constante es un valor invariante que ocupa un lugar en la memoria y puede ser referenciado en el programa por el valor mismo o un nombre, generalmente se designan al principio del programa. Se pueden declarar constantes de cualquier tipo simple de dato. 8.2. Variables Una variable es un nombre compuesto por letras y números (el primer carácter ha de ser una letra) con el que se designan una porción de memoria en la que se almacena un valor que pueden variar a lo largo del programa. Se pueden definir variables de cualquier tipo de dato simple o compuesto. 8.3.Usos básicos de las variables Las variables pueden ser utilizadas para diversos propósitos durante el curso de las operaciones planteadas en un algoritmo. Entre los usos básicos se tienen: Acumulador En este caso la variable contiene el resultado de efectuar repetidas veces una operación aritmética donde la variable interviene. En cada ejecución se suma uno a la variable acumulador y se almacena en ella. Contador La variable lleva la cuenta del número de veces que se presenta una determinada situación. Por lo general se define su valor en 0 y cada vez que se presente el evento se incrementa
  • 11. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante su valor en 1. Control El valor de la variable determina si se ejecuta o no un conjunto de sentencias, las cuales se ejecutan una vez por cada valor permitido que tome la variable a lo largo del proceso repetitivo. Bandera La variable actúa como un indicador, puede tomar sólo dos valores. El valor inicial de la variable cambia cuando se presenta determinada situación. 8.4.Expresión Es una combinación de variables, constantes, operadores y referencias a funciones que expresan cálculos aritméticos y/o lógicos a ser realizados. En su forma más simple una expresión esta constituida por una variable o constante. 9. Datos y tipos de datos. 9.1.Dato Expresión general que describe los objetos con los cuales opera una computadora. Ej.: Cifras de venta de un supermercado, notas de un parcial, número de vuelos San Juan-Maiquetía. 9.2.Tipo de dato Descripción de un conjunto de datos que comparten propiedades (tamaño en bits que ocupan en la memoria, rango de valores que pueden tomar) y operaciones que pueden ser aplicadas sobre este.
  • 12. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Toda variable debe estar asociada a un tipo de dato, el cual es responsable de indicar el dominio de valores válidos y conjunto de operaciones. 9.3.Clasificación tipos de datos 9.3.1. Simples Almacenan un solo valor (enteros, reales, caracteres, lógicos) Cuando se opera con valores de diferentes tipos resulta un valor del tipo más dominante, si este resultado es almacenado en un tipo de dato no apropiado se puede perder precisión en los cálculos. Ej.: Se multiplica un entero con un real, se obtiene un real. Si el resultado no es almacenado en una variable del tipo real, sino del tipo entero el valor se trunca y se pierde precisión. 9.3.2. Compuestos Almacenan uno o más valores (arreglos, estructuras de datos lineales y no lineales), se definen mediante la composición de datos simples y se utilizan cuando se requiere el procesamiento de múltiples datos con características comunes. 10.Tipos de datos simples 10.1. Enteros Subconjunto finito de loa números enteros, cuyo rango o tamaño dependerá del lenguaje de programación en el que posteriormente se codificará el algoritmo y de la computadora utilizada. Dependiendo del número de bits empleado en cada computadora, el dominio del tipo entero varía en: -2n-1 ,…, 0,…,2n+1 -1 Ej.: Si n es 16 el dominio de los enteros comprende los números: -215 ,… 0,… 215 – 1 = -32768,…, 0,…32767 10.2. Reales Subconjunto de los números reales limitado no sólo en tamaño, sino también en cuanto a la precisión (que depende de la computadora). Se
  • 13. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante conocen como números de punto flotante cuya representación consta de una mantisa (parte fraccional), de una base y de un exponente (potencia a la cual se eleva la base). Ej.: Para el número 0,437875x103 se tiene: Mantisa = 0,437875 Base = 10 Exponente = 3 10.3. Carácter Conjunto finito y ordenado de los símbolos que el computador reconoce: letras, dígitos, signos de puntuación, etc. Un carácter es almacenado en un byte usando el código de 8 bits ASCII (American Standandard Code for Information Interchange), lo que da la posibilidad de representar 28 = 256 caracteres diferentes. 10.4. Lógico Conjunto formado por los valores: Cierto y Falso. 11.Tipos de expresiones 11.1. Operadores Se llaman operadores a todos aquellos símbolos que realizan una operación determinada del argumento antecedente con el consecuente. La sintaxis general de un operador es: Argumento antecedente Operador argumento consecuente 11.2. Expresiones aritméticas 11.2.1. Definición Son expresiones de resultado numérico. Los valores posibles como resultado de las expresiones aritméticas pertenecen a los tipos de datos entero o real. 11.2.2. Operadores aritméticos
  • 14. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Serie de símbolos que indican determinadas operaciones matemáticas a efectuar con los datos. Operador Operación que denota ^ Potenciación / División * Multiplicación - Resta + Suma Ej.: Expresiones aritméticas a/b a dividido entre b a * b a multiplicado por b a – b a menos b a + b a sumado a b 11.2.3. Precedencia entre operadores aritméticos Los operadores siguen un orden de precedencia a la hora de evaluar las expresiones, ordenados en orden de mayor a menor prioridad los operadores aritméticos son: Potenciación División y multiplicación Suma y resta. Esto quiere decir que aunque las expresiones son leídas de izquierda a derecha se realizan primero las operaciones aritméticas de potenciación, después las de división y multiplicación y finalmente las sumas y restas. Ej.: Para valores a = 5, b = 2, c = 3, la expresión aritmética a * b ^ c tiene como resultado 40, primero se eleva 2 a la 3 y se obtiene como resultado 8 y luego se multiplica 5 por 8.
  • 15. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Cuando los operadores tienen la misma precedencia se opera de izquierda a derecha (excepto la potenciación que se evalúa de derecha a izquierda) Se puede cambiar el orden de precedencia de los operadores encerrando entre paréntesis la expresión. Ej.: (a * b) ^ c, con los mismos valores del ejemplo anterior tendríamos como resultado 1000 (10 elevado a la 3). 11.3. Expresiones lógicas 11.3.1. Definición Son expresiones de resultado lógico. Esto significa que existen dos valores posibles como resultado de la expresión de evaluar la expresión: Verdadero o Falso. 11.3.2. Operadores relacionales Operan sobre expresiones de diferentes tipos (enteras, reales, caracteres) y retornan un valor del tipo lógico: Verdadero o falso. Operador Operación que denota < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que == Igualdad != Desigualdad 11.3.3. Precedencia Al igual que los operadores aritméticos para cambiar el orden de evaluación se utilizan los paréntesis y la evaluación de las expresiones con operadores de igual prioridad se realiza de izquierda a derecha. Ordenados en orden de mayor a menor prioridad los operadores relacionales son: Menor que, Mayor que,
  • 16. UNIDAD I: FUNDAMENTOS DE PROGRAMACIÓN Prof. Lucía Bustamante Menor o igual que, Mayor o igual que y luego los operadores de Igualdad y Desigualdad. <, >, <=, >= ==, != Tanto los operadores relacionales tienen un nivel de precedencia menor que los operadores aritméticos. Esto significa que una expresión x > y + z se evalúa como x > (y + z). 11.3.4. Operadores lógicos Estos operadores se basan en la aritmética del lenguaje binario, en el que existen sólo dos valores, 0 ó 1, Falso o Verdadero. Operan sobre operandos lógicos. Operador Operación que denota ! NOT & AND || OR 11.3.5. Precedencia ! & ||
  • 17. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Unidad II: Introducción a la programación estructurada Objetivo terminal: Conocer y aplicar la programación estructurada en la solución de problemas. 1. Pasos para resolver un problema mediante el uso del computador 1.1.Análisis del problema (E-P-S) Es el primer paso que el programador debe realizar. Se plantea el problema, se trata de identificar la naturaleza del mismo y se analiza la forma de resolverlo, en qué consiste su solución. Si es necesario se recurre a la bibliografía en busca de métodos para solucionarlo y se elige el que más se adapte a la programación. En este paso se describen los datos de entrada, el proceso y lo resultados o salida. Especificaciones de entrada: Información necesaria para la solución del problema. ¿Cuántos y cuáles son los datos de entrada? ¿Cuándo los datos de entrada son válidos? Bajo qué condiciones va a ser resuelto el problema. Proceso: Operaciones o cálculos necesarios para encontrar la solución del problema. ¿Cuáles métodos se emplearan? ¿Qué tipo de ecuaciones? ¿Cuántas ecuaciones? Se debe determinar el método de solución más factible, a veces existe un único método, en otros casos existen varios de entre los cuales se debe escoger el que en forma óptima, según los criterios empleados, resuelva el problema. Esto supone el conocimiento adecuado de los procedimientos matemáticos y/o lógicos necesarios para alcanzar la solución del problema desde un punto de vista teórico. De ser necesario, se recurrirá a la bibliografía adecuada para ubicar la información
  • 18. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante requerida para tener capacidad de solución, a nivel teórico, del problema. Especificaciones de salida: Resultados finales de los cálculos. ¿Cuántos y cuáles son los datos que se producirán (datos de salida)? Ej.: Análisis E-P-S para determinar… 1.2.Diseño del algoritmo Una vez seleccionado el método de solución, especificado los datos de entrada y los resultados, se procederá al diseño del algoritmo. Esto conlleva a un análisis lógico de las operaciones que deben ejecutarse para alcanzar la solución del problema. En este paso se emplean las técnicas de diseño de algoritmos como el Diseño Descendente, las técnicas de la Programación Estructurada y las técnicas de representación de algoritmos para su escritura y representación. Se debe describir la secuencia ordenada de pasos que conducen a la solución del problema planteado. Los algoritmos deben cumplir con las características mencionadas en la sección 3 y ser expresados a través de una técnica de representación de algoritmos. Ej.: Diseño del algoritmo para… 1.3.Prueba del algoritmo En esta fase se corrigen errores de lógica, que conducen a la obtención de resultados no esperados. Se hace una prueba manual del algoritmo. El programador elige un conjunto de datos de entrada y ejecuta manualmente cada sentencia del programa fuente y verifica que los resultados obtenidos sean los esperados, de acuerdo al conjunto de datos de salida. Este proceso debe ser llevado a cabo con conjuntos de datos que permitan ejecutar todos los caminos posibles del programa. 1.4.Codificación En esta fase, se pasa el pseudo código, diagrama de flujo o diagrama N- S, a un lenguaje de programación especifico. Se define las variables a
  • 19. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante utilizar y se codifica todo el procedimiento. El resultado de obtenido es un archivo con el código fuente del programa. Las instrucciones expresadas en el algoritmo se traducen a instrucciones en algún lenguaje programación para obtener el programa fuente. 1.5.Prueba y depuración del programa Una vez escrito el programa fuente, se procede a su compilación. El compilador toma el código escrito en el lenguaje empleado y lo traduce a código máquina (que es como lo entiende el computador). En esta fase se ponen de manifiesto los errores sintácticos y de programación que se puedan haber cometido. Se deben corregir todos los errores y avisos del compilador, una vez hecho esto el compilador devuelve un archivo objeto, que es un archivo escrito en código máquina pero aún no es ejecutable. Esto debido a que el compilador tiene escritos muchos segmentos de código que utiliza frecuentemente y se encuentran guardados en librerías de forma que cuando el compilador encuentra un segmento de código que tienen en una librería sitúa en el programa una llamada a la librería. Para hacer el código completamente ejecutable se debe usar el programa de enlace o Linker. Este programa toma el archivo objeto que generó el compilador y busca en él todas las llamadas a librerías. Seguidamente toma de las librerías el código requerido y lo inserta en el programa final. De esta forma el Linker devuelve un archivo con extensión .exe y ese es el programa final, que puede ser cargado en memoria para su ejecución. Después de la ejecución del programa se hace la verificación de que los resultados obtenidos se correspondan con los esperados.
  • 20. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Editor. Lenguaje de Programación Compilador Encadenador Cargador Ejecución Errores de Sintaxis Errores de Lógica Programa fuente No Si Programa objeto Programa ejecutable Solución del problema No Corregir errores en el programa fuente Diseño Análisis (E-P-S) Problema Algoritmo Pasos para resolver un problema mediante el uso del computador.
  • 21. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante 2. Técnicas de representación de algoritmos. Son la primera aproximación a la programación del algoritmo diseñado, a través de estas técnicas se muestra la estructura del programa. 2.1.Definición Una técnica de representación de algoritmos es una técnica para la representación de los algoritmos en donde a través de convenciones y el empleo de símbolos estandarizados se expresa en forma clara el proceso establecido en el algoritmo. Estas técnicas permiten la descripción en forma clara de los pasos o instrucciones u operaciones que deben ejecutarse para alcanzar la solución de un problema, estableciéndose el orden lógico a seguir. Las técnicas de representación de algoritmos más utilizadas son los diagramas de flujo, pseudo-códigos y diagramas N-S. 2.2.Diagramas de flujo Son una representación pictórica de los pasos necesarios para resolver le problema. Cada paso, representado por un símbolo, indica una acción necesaria. La secuencia de pasos se muestra mediante flechas. 2.2.1. Símbolos utilizados
  • 22. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Ej.: Representar el algoritmo para… 2.3.Diagramas N/S Los diagramas de Nassi-Schneiderman son parecidos al diagrama flujo. Utiliza símbolos gráficos o bloques en donde la secuencia de instrucciones se visualiza como una secuencia de bloques unidos, sin las flechas de unión. Están basados en programación estructurada. Ej.: El algoritmo anterior se representaría como:… 2.4.Pseudo código Símbolo de proceso: Se utiliza para indicar cálculo y manipulación de datos. Símbolo de preparación: Se utiliza para inicializar variables. Símbolo de entrada: Se utiliza para detonar recepción de datos desde cualquier dispositivo. Símbolo inicio/fin: Se utiliza para indicar el comienzo y fin del programa. Símbolo de conexión: Se utiliza para continuar el diagrama de flujo. Símbolo de decisión: Se utiliza para realizar comparaciones, decisiones o preguntas. Símbolo por pantalla: Se utiliza para denotar impresión de datos por pantalla.
  • 23. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Permite expresar las operaciones a realizar en una computadora en forma muy parecida a nuestro lenguaje habitual, utilizando palabras reservadas con significados establecidos. Se lee de arriba hacia abajo. Es la representación de algoritmos que más se asemeja a un programa fuente, por lo que al igual que en la codificación en este tipo de representación deben seguirse las buenas prácticas de codificación, en especial la identación, para facilitar su legibilidad. Ej.: El algoritmo anterior se representa en pseudo-código de la siguiente manera:… 3. Técnica de Refinamiento Progresivo La técnica de refinamiento progresivo, o técnica de diseño descendente, es una técnica orientada al diseño de algoritmos en donde partiendo de lo más general se va a lo más detallado a través de un refinamiento cada vez mayor de las diferentes operaciones que representan el algoritmo, hasta llegar al nivel del lenguaje de programación donde se va a implementar el algoritmo para obtener el programa. 4. Buenas prácticas de codificación 4.1.Selección de nombres apropiados Utilizar nombres descriptivos para variables y subprogramas… 4.2.Identación Permiten ver con más claridad las instrucciones que forman parte de cierto camino, comenzando un poco más a la derecha que las instrucciones que inician el camino. 4.3.Documentación Una documentación apropiada facilita la tarea de revisión del código fuente, ya que facilita la legibilidad del programa. Una buena documentación debe poseer las siguientes características:  Ser coherente con el programa. Debe indicar conceptos o métodos implementados, relaciones entre partes del programa, etc.
  • 24. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante  Ser relevante, indicar pasos cruciales del programa.  Debe mantenerse al día. 5. Prueba y depuración de algoritmos 5.1.Prueba Es un proceso orientado a determinar la existencia de errores. Cuando una prueba detecta un error la depuración el proceso que elimina este error. 5.1.1. Técnica de chequeo manual del algoritmo Es una técnica de prueba donde se seleccionan datos de entrada para representar todos los casos posibles durante la ejecución del algoritmo. Estos datos de entrada son llamados casos de pruebas y sus resultados son conocidos. Los casos de prueba son evaluados llevando a cabo corridas manuales en donde los resultados obtenidos son sometidos a estudio y si aparece una falta de correspondencia con los resultados esperados y se habrá demostrado la existencia de errores por lo que será necesario iniciar un proceso de depuración que consistirá en una revisión del algoritmo para localizar el error y corregirlo. Si durante la ejecución de los casos de prueba no se detectan errores no debe llegarse a la conclusión de que el algoritmo es correcto, salvo que se trate de un algoritmo sencillo en donde no haya duda que los datos presentes en los casos de prueba, realmente representan todas las situaciones posibles de prueba del algoritmo. 5.2.Depuración Es el proceso de detección y corrección de los errores de programación. Estos errores pueden ser de los siguientes tipos:  Errores de sintaxis: Son los errores de escritura, son fácilmente detectables, pues el compilador indica la línea del código fuente en la que se encuentran.
  • 25. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante  Errores de ejecución: Son los errores de programación y generalmente son detectados por el compilador, ejemplo de estos errores son los ciclos infinitos y la declaración de expresiones no definidas con la división entre cero. Estos errores son más complejos, pues además de ser de múltiples tipos, a veces el compilador indica una línea que no es la donde se producen, sin embargo se nos alerta del error y se nos explica brevemente en que consiste. 6. Optimización La optimización es un paso necesario e importante, en esta fase se explora el programa en busca de posibles modificaciones que mejoren el rendimiento, reducción de código, o simplemente mejoramiento de la velocidad de resolución. Generalmente una optimización importante consiste en almacenar sólo los valores que necesarios, en vez de todos los calculados. Ej.: Calcular la distancia máxima entre 1000 puntos. Para saber cual es la mayor, se debe calcular las distancias entre ellos dos a dos y compararlas. Una solución común es calcular cada una de estas almacenarlas en una matriz para luego compararlas y determinar cual es la mayor. Una forma más eficiente de hacerlo es calcular la primera y la segunda y compararlas, almacenando sólo la mayor y calculando la siguiente y comparando sucesivamente y al final se tendrá la distancia mayor. Ambos métodos consiguen la solución deseada, sin embargo el segundo es más eficiente en cuanto al uso de memoria. 7. Programación estructurada La programación estructurada es el resultado de estudios formales de corrección y se considera al Prof. Edgar Dijkstra de la Universidad de Eindhoven el padre de la programación estructurada con valiosos aportes en este desarrollo de Hoare, Wirth, Knuth, etc. Es célebre la frase de Dijkstra: “La estructura GOTO es perjudicial para la programación”. 7.1.Definición
  • 26. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Enfoque disciplinado que permite escribir programas estructurados, utilizando tres estructuras de control: Secuenciales, de control de flujo y de repetición. La programación estructurada es un conjunto de técnicas orientadas a la construcción de programas confiables que limita el conjunto de estructuras de control aplicables y presenta una serie de reglas que coordinan adecuadamente el desarrollo de las diferentes fases de la programación. Este conjunto de técnicas tiene por objetivo la producción de programas correctos (libres de errrores), legibles (fáciles de leer), depurables (fáciles de corregir) y modificables (fáciles de mantener), lo que conduce a la producción de programas confiables. 7.2.Importancia Los programas estructurados son fáciles de probar, depurar y modificar. Todos los modelos o enfoques de programación utilizan la programación estructurada. Un programa correcto es aquel que alcanza la solución del problema para el que fue diseñado. Un programa eficiente es un programa correcto que optimiza el uso de los recursos: espacio en memoria y tiempo de ejecución. La programación estructurada conduce a la creación de programas confiables, que por ofrecer legibilidad y facilidades de corrección y mantenimiento en algunas ocasiones hacen uso de mayor número de variables e invocación de funciones lo que supone mayor utilización de la memoria y tiempo de ejecución, sin embargo dado el abaratamiento de memoria y la mayor velocidad de la computadoras actuales, se prefiere la producción de programas confiables frente a la de programas eficientes. 7.3.Teorema de la estructura Enunciado por Böhm Jacoponi en 1996: “Todo programa con un solo punto de entrada y un solo punto de salida puede ser expresado
  • 27. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante utilizando solamente tres tipos de estructuras de control: Secuencial, Selectiva y Repetitiva.” 7.4.Estructura de control Permiten expresar un proceso estableciendo la forma en la cual las acciones que lo componen van a ser ejecutadas. Se caracterizan por tener una sola entrada y una sola salida y dar origen a programas que pueden ser leídos de arriba hacia abajo. 7.5.Sentencias Son las que determinan las acciones que el ordenador debe realizar para resolver un problema. Son un conjunto de palabras claves del lenguaje y expresiones que determinan cómo se deben tratar los datos y cómo se obtendrán los resultados. Este término es empleado para los lenguajes de alto nivel. 7.6.Estructura de control secuencial Permite indicar la ejecución incondicional de varias acciones de forma secuencial: Diagrama de flujo Diagrama N-S Pseudo-código Inicio Acción1 Acción2 ….. Acciónn Fin 7.6.1. Sentencias de declaración Son todas aquellas sentencias que se usan para definir constantes y variables, programas y módulos. Acción1 Acción2 Acciónn … Acción1 Acción2 … Acciónn
  • 28. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Ej.: Declaración de una variable real real precio Los objetivos de la declaración de variables son:  Asociar un tipo de dato y un identificador a la variable para que el computador pueda verificar la correctitud de las operaciones en donde interviene la variable.  Permitir que el compilador sepa cuánto espacio de memoria se necesita para almacenar el valor de la variable, y asignar la dirección de memoria donde este valor se va a almacenar. 7.6.2. Sentencias de asignación Son todas aquellas sentencias que modifican el contenido de una variable. Las sentencias de asignación implican la ejecución de la operación almacenamiento, transforman la memoria de un estado a otro en el tiempo. La ejecución de un programa tendrá como efecto (sin considerar los procesos de E/S) la transformación de la memoria inicial en otra final, realizando un conjunto de asignaciones sobre las n variables que intervienen en el programa, ejecutadas según un flujo de control establecida. Ej.: Asignación de un valor a variables reales real precio = 1000,50 real iva = 160, 096 real precioVenta = precio + iva Esta última asignación evalúa la expresión de la derecha, en donde la variable con el nombre precio tiene el valor de 1000,50 y la variable iva el valor de 160,096, suma ambas y asigna el resultado (1160,596) a la parte izquierda de la expresión, la variable precioVenta. 7.6.3. Sentencias de Entrada/Salida
  • 29. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Son las sentencias que permiten la intercomunicación del ordenador con el usuario y los periféricos (discos, impresora, modem, etc.). Mediante estas sentencias se puede comunicar al computador los datos de entrada y este podrá devolver los resultados. 7.7.Estructura de control selectiva Son aquellas que permiten variar el orden de ejecución del programa según se verifiquen o no ciertas condiciones. Permiten la selección de tareas alternativas en función de los resultados de diferentes expresiones relacionales o lógicas (condiciones). La estructura selectiva puede ser:  Simple Diagrama de flujo Diagrama N-S Pseudo-código … Si (Condición) entonces Acción Fin-Si.  Doble Diagrama de flujo Diagrama N-S Pseudo-código Condición Acción Si No F V Condición Acción
  • 30. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante … Si (Condición) entonces Acción 1 Sino Acción 2 Fin-Si.  Múltiple Diagrama de flujo Diagrama N-S Pseudo-código Caso (Expresión) Valor 1: Acción 1 Valor 2: Acción 2 … Valor n: Acción n De otra manera Acción Fin-Caso 7.7.1. IF-THEN-ELSE Es una sentencia que se emplea para realizar bifurcaciones, según ciertas condiciones. En su forma Responde a la siguiente sintaxis: if (expresión1) then <grupo de sentencias 1> else if (expresión2) Condición Acción1 Valor1 Acción2 Acciónn … Valor2 ValorN … … … F V Condición A c c i ó n 1 A c c i ó n 2 A c c i ó n n . . . Condición Acción1 Si No Acción2 F V Condición Acción1 Acción2
  • 31. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante <grupo de sentencias 2> else (expresión3) <grupo de sentencias 3> El significado de esta porción de código es que si la expresión1 se cumple es verdadera, el control se transfiere al grupo de sentencias 1, en caso contrario se evalúa la expresión2 y de ser cierta se transfiere el control al grupo de sentencias 2, sino se ejecuta el grupo de sentencias 3. Si se ejecuta el if no se ejecutan los else y viceversa. Las condiciones se evalúan de arriba hacia abajo, tan pronto como se encuentra una condición cierta, se ejecuta la sentencia asociada a ella y se pasan por alto las demás. Si ninguna es cierta se ejecuta el else final. Se pueden poner tantos else if como se quiera, o no poner ninguno, en cuyo caso se tiene: If (expresión1) then { <grupo de sentencias 1> } else { <grupo de sentencias 2> } La instrucción else también es opcional, si no la colocamos significa que si no se verifica ninguna de las condiciones dadas por el if o los else if no se tiene que hacer nada. Ej.: if (X >= 10) then {
  • 32. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante cad = “Aprobado” } else { cad = “Aplazado” } 7.7.2. Select case Esta sentencia permite ejecutar distintos bloques de sentencias según el valor de una determinada variable de control, que puede ser entera o del tipo carácter. Su sintaxis es: select case (control) case valor1: { <sentencias> break; } case valor2: { <sentencias> break; } … case default { <sentencias> } end select
  • 33. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Según el valor de la variable se transferirá el control a los bloques de sentencias correspondientes. Si el valor de la variable no esta contemplado en los cases se ejecuta el conjunto de sentencias correspondientes a default. La diferencia entre el if y el select radica en que el select sólo permite comprobar la igualdad, mientras que el if puede evaluar todas las expresiones relacionales y lógicas, además de que a partir de donde se encuentra la primera correspondencia se ejecuta el código subsiguiente, para modificar este comportamiento debe insertarse la instrucción break en cada bloque case. 7.8.Estructura de control repetitiva Son las que permiten la repetición de secuencias de sentencias un número determinado de veces. De esta forma, si tenemos que repetir acciones no será necesario escribir las mismas sentencias varias veces, sino que bastará con incluirlas dentro de un lazo o bucle. La estructura repetitiva tiene tres tipos:  Mientras  Para  Repetir/hasta que 7.8.1. Mientras (WHILE) Se trata de una sentencia de lazo o bucle que repite las sentencias mientras se verifica la condición. El bucle termina cuando la condición deja de cumplirse, por eso es importante que dentro del cuerpo de la sentencia while se modifique la o las variables que intervienen en la condición, sino se produce un ciclo infinito. Su sintaxis es la siguiente: While (condición) { <sentencias> }
  • 34. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante Si la condición es falsa la primera vez, las sentencias del while no se ejecutan ni una sola vez. Ej.: Un bucle que imprime los número del 1 al 9 int n = 1; while (n < 10) { mostrar (n) n = n + 1 } Diagrama de flujo Diagrama N-S Pseudo-código Mientras (condición) Acción Fin-Mientras 7.8.2. FOR for (inicialización, condición, incremento) En inicialización generalmente va una sentencia de asignación que se utiliza para inicializar la variable de control del bucle, y se ejecuta antes de empezar la iteración, sólo una vez. La condición es una expresión relacional que determina si el bucle continua o no, se verifica en cada iteración. El incremento define como Condición Acción Verdadera Falsa Acción Mientras (Condición)
  • 35. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante cambia la variable de control cada vez que se repite el bucle, es decir, es una sentencia que se ejecuta al final de cada iteración. Si la condición es la falsa la primera vez, las sentencias del for no se ejecutan ni una sola vez. Diagrama de flujo Diagrama N-S Pseudo-código Mientras (condición) Acción Fin-Mientras 7.8.3. DO/WHILE y REPEAT/ UNTIL A diferencia de los bucles while y for, que analizan la condición al principio del bucle, estas sentencias analizan la condición al final, esto significa que el bucle se ejecuta por lo menos una vez. Sus sintaxis son: DO/WHILE REPEAT/ UNTIL do { <sentencias> } while (condición) repeat { <sentencias> } until (condición) La diferencia entre el DO/WHILE y el REPEAT/UNTIL es que en el primero el lazo se ejecuta mientras la condición es verdadera, en el caso del REPEAT/UNTIL se itera mientras la condición es falsa, al hacerse cierta el lazo finaliza. Ej.: Lazos do/while y repeat/until para imprimir los números del 1 al 10. Para V = I hasta F [Paso V] Acción Acción Para V = I hasta F [Paso V]
  • 36. UNIDAD II: INTRODUCCIÓN A LA PROGRAMACIÓN ESTRUCTURADA Prof. Lucía Bustamante do { int n = 1; print(n); n = n + 1; } while (n < 10) repeat { int n = 1; print(n); n = n + 1; } until (n == 10) Diagrama de flujo Diagrama N-S Pseudo-código Repetir/Hacer Acción Hasta/mientras(Cond) Condición Acción Acción Mientras/Hasta (Cond)
  • 37. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante Unidad III: Tipos de datos estructurados Objetivo terminal: Conocer y aplicar los tipos de datos estructurados en la solución de problemas. 1. Evolución de los enfoques de programación. 1.1.Programación no estructurada Esta programación sólo es útil en el caso de programas pequeños y sencillos consistentes en un solo programa principal. Aquí "programa principal" se refiere a una secuencia de comandos o instrucciones que modifican datos que son a su vez globales en el transcurso de todo el programa. Como todos deberían saber, estas técnicas de programación ofrecen tremendas desventajas una vez que el programa se hace suficientemente grande. Por ejemplo, si la misma secuencia de instrucciones se necesita en diferentes situaciones dentro del programa, la secuencia debe ser repetida. Esto ha conducido a la idea de extraer estas secuencias, darles un nombre y ofrecer una técnica para llamarlas y regresar desde estos procedimientos. 1.2.Programación Procedimental Con la programación procedimental se pueden combinar las secuencias de instrucciones repetibles en un solo lugar. Una llamada de procedimiento se utiliza para invocar al procedimiento. Después de que la secuencia es procesada, el control es retornado exactamente después de la línea donde la llamada fue hecha. Al introducir parámetros así como procedimientos de procedimientos (subprocedimientos) los programas pudieron ser escritos en forma más estructurada y libres de errores. Por ejemplo, si un procedimiento ya es correcto, cada vez que es usado produce resultados correctos. Por consecuencia, en caso de errores, se puede reducir la búsqueda a aquellos lugares que todavía no han sido revisados.
  • 38. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante De este modo, un programa en la programación procedimental puede ser visto como una secuencia de llamadas a procedimientos. Un programa único que se divide en pequeñas piezas llamadas procedimientos. El programa principal coordina las llamadas a procedimientos y pasa los datos apropiados en forma de parámetros, los datos son procesados por los procedimientos y, una vez que el programa ha terminado, los datos resultantes son presentados. 1.3.Programación modular Para posibilitar el uso de procedimientos generales o grupos de procedimientos también en otros programas, aquéllos deben estar disponibles en forma separada. Por esa razón, la programación modular permite el agrupamiento de procedimientos dentro de módulos. El programa principal coordina las llamadas a procedimientos en módulos separados y pasa los datos apropiados en forma de parámetros. El proceso de descomposición de un problema en módulos se conoce como modulación y la programación relativa a ellos programación modular. 1.4.Programación Orientada a objetos Programación basada en objetos, encapsula datos (atributos) y métodos (comportamiento) en objetos y la unidad básica es la clase. En contraste con las otras técnicas, en la programación orientada a objetos se tiene una telaraña de objetos interactúantes, cada uno de los cuáles manteniendo su propio estado. Los objetos del programa interactúan mandando mensajes unos a otros. Por ejemplo se tiene una aplicación que emplea listas (secuenciales o enlazadas) en la programación orientada a objetos se deben tener tantos objetos-lista como sean necesarios y en lugar de llamar un
  • 39. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante procedimiento al que le debemos proveer el manejador de lista correcto, mandaríamos un mensaje directamente al objeto-lista en cuestión. En términos generales, cada objeto implementa su propio módulo. Cada objeto es responsable de inicializarse y destruirse en forma correcta. Por consiguiente, ya no existe la necesidad de llamar explícitamente al procedimiento de creación o de terminación. La programación orientada a objetos no es ésta solo una manera más elegante de técnica de programación modular, además de esta características se introducen otras adicionales que hacen de la programación orientada a objetos una técnica novedosa de programación. 2. Estructuras lineales de datos 2.1.Definición Las estructuras lineales de datos se caracterizan porque sus elementos están en secuencia, relacionados en forma lineal, uno después del otro. Cada elemento de la estructura puede estar conformado por uno o varios sub-elementos o campos que pueden pertenecer a cualquier tipo de dato, sin embargo generalmente se trata de tipos simples de datos. 2.2.Estructuras estáticas de datos Son las estructuras de datos a las que se les asigna una cantidad fija de memoria en tiempo de compilación. Durante la ejecución del programa no crecen ni decrecen. 3. Arreglos Representan un conjunto de valores (caracteres, enteros, reales, entre otros) donde todos comparten el mismo nombre y cada valor es referenciado utilizando uno o más subíndices. 4. Tipos de arreglos  Vectores: Arreglos unidimensionales, un solo subíndice  Matrices: Arreglos multidimensionales, dos o más subíndices 5. Arreglos unidimensionales (Vectores) 5.1.Definición arreglo
  • 40. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante Los arreglos son un conjunto localidades consecutivas de memoria que almacenan datos del mimo tipo. Cada localidad representa un elemento del vector que es accedido mediante el nombre del vector y un subíndice. Ej.: Se desea almacenar la temperatura de 5 ciudades diferentes puede disponerse convenientemente en una secuencia de elementos, donde se identifica a través de la ubicación en el arreglo a que ciudad pertenece la temperatura. 5.2.Sintaxis Nombre_arreglo tipo [Número_elementos] Ej.: Definición de un arreglo para almacenar la temperatura de 5 ciudades temperaturas real [5] 5.3.Importancia La principal razón del uso de los arreglos se puede explicar mediante un ejemplo: Se quiere hacer un programa para almacenar los resultados de un examen e imprimir el promedio del curso. Si el examen es aplicado a 45 estudiantes, si se asigna el resultado de cada estudiante a una variable tendríamos un programa muy extenso sólo por los datos. Si se desea almacenar el peso de 10 personas en lugar crear 10 variables con nombres distintos se puede crear una sola del tipo arreglo con 10 apartados. Ej.: Definición de un arreglo de 10 enteros. pesos int [10] 5.4.Acceso a los elementos de un vector (Subíndices) El nombre de un arreglo se refiere a todos los elementos que este contenga, para acceder a un elemento particular se hace uso de subíndices.
  • 41. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante Los elementos de un vector son accedidos a través de un subíndice, el cual se refiere a un valor específico dentro el arreglo que puede ser considerado como una variable. El subíndice se representa como un entero (no negativo) entre 0 y el número de elementos del arreglo menos 1, entre corchetes. La sintaxis general es: Nombre_arreglo [subíndice] Ej.: Asignación del peso de la persona número 3 pesos [3] = 55 5.5.Expresiones con arreglos Supongamos que queremos sumar el peso de las personas 1 y 2, la expresión seria: peso1y2 = pesos [1] + pesos [2] Si el subíndice es una expresión matemática, esta se calculará y luego se convertirá el resultado en entero. Ej.: pesos [i + 1] = pesos [j – 2], si i = 3 y j = 7, como resultado de ejecutar esta expresión se tendrá la igualación de los pesos de las personas 4 y 5. Para realizar operaciones sobre todos los elementos del arreglo se emplean sentencias de repetición. Ej.: Se desea incrementar en 2 kilos los 10 pesos almacenados. Elem1 Elem7 Elem2 Elem3 Elem4 Elem5 Elem6 0 6 1 2 3 4 5 Nombre del vector Subíndices
  • 42. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante for (i = 0; i<10; i++) { Pesos[i] = pesos[i] + 2 } 5.6.Paso de vectores como parámetros Un arreglo se puede pasar completo como parámetro de un subprograma, el programa principal al invocar el subprograma sólo especifica su nombre, sin corchetes ni subíndices. En la declaración del subprograma se escribe un par de corchetes vacíos, el tamaño no se especifica. Ej.: Definición de una función que recibe como parámetro un arreglo real calcularPromedio (int tamArreglo, real arreglo []) //Corchetes vacíos { … } //Programa principal int totalNotas = 10; real notas [totalNotas] = {15, 17, 18, 16, 14, 20, 15, 19, 17, 12}; real promedio = calcularPromedio (10, notas); //No incluye los corchetes 6. Arreglos multidimensionales (Matrices) 6.1.Definición de matriz Los arreglos multidimensionales o matrices son un conjunto localidades consecutivas de memoria que almacenan arreglos (unidimensionales o multidimensionales). En el caso de dos dimensiones cada localidad representa un vector (arreglo unidimensional) o una fila de la matriz. Cada elemento de esta es accedido mediante el nombre de la matriz y dos subíndices [fila] [columna]. 6.2.Sintaxis
  • 43. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante Nombre_matriz tipo [NumEleDim1] [NumEleDim2]… [NumEleDimN] Ej.: Definición de una matriz bidimensional para almacenar el precio de 7 artículos de 3 marcas diferentes. precios real [7] [3] En caso particular de matrices de dos dimensiones la sintaxis general se reduce a: Nombre_matriz tipo [NumFilas] [NumColumnas] 6.3.Importancia El tipo de dato matriz puede utilizarse en casos donde se requiere almacenar información correspondiente a más de una variable. Por ejemplo si se desea almacenar la temperatura de una ciudad en las diferentes estaciones del año, esta información puede ser almacenada en una matriz de doble entrada en la que cada fila representa una ciudad, cada columna una estación del año y cada casilla de la intersección fila, columna se almacenará la temperatura correspondiente. 6.4.Acceso a los elementos Nombre_matriz [SubIndDim1] [SubIndDim2]… [SubIndDimN] Ej. : Supóngase la siguiente matriz de 3 dimensiones 3, 2, 4. A continuación se muestran los subíndices para acceder a cada elemento de la matriz. 0 1 0 [0][0][0] [0][0][1] [0][0][2] [0][0][3] [0][1][0] [0][1]1] [0][1][2] [0][1][3] 1 [1][0][0] [1][0][1] [1][0][2] [1][0][3] [1][1][0] [1][1]1] [1][1][2] [1][1][3] 2 [2][0][0] [2][0][1] [2][0][2] [2][0][3] [2][1][0] [2][1]1] [2][1][2] [2][1][3] 6.5.Expresiones con matrices Supongamos que queremos sumar los valores que pertenecen a la celda [1] [1], la expresión sería:
  • 44. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante sumatoria1_2 = matriz [1] [1] [0] + matriz [1] [1]1] + matriz [1] [1] [2] + matriz [1] [1] [3] Para realizar operaciones sobre todos los elementos de la matriz se emplean sentencias de repetición anidadas. Ej.: Se desea inicializar en 0 la matriz anterior. Para (i = 0; i<3; i++) Para (j = 0; j<2; j++) Para (k=0; k<4; k++) matriz[i] [j] [k] = 0; Fin-Para Fin-Para Fin-Para 6.6.Ocupación de la memoria Los arreglos colocan sus elementos consecutivamente, a partir de una determinada dirección de memoria. En el caso de dos o más dimensiones, la colocación se realiza por columnas. Ej.: Se define una matriz a de 3 x 3, su colocación en memoria se realiza a partir de una posición x de la siguiente forma: Dirección Elemento Almacenado Dirección Elemento almacenado Dirección Elemento almacenado x a[0][0] x + 3 a[0][1] x + 6 a[0][2] x + 1 A[1][0] x + 4 a[1][1] x + 7 a[1][2] x + 2 a[2][0] x + 5 a[2][1] x + 8 a[2][2] 7. Programación procedimental 7.1.Definición Programación orientada a acciones donde la unidad básica es el subprograma.
  • 45. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante 7.2.Subprogramas 7.2.1. Definición Es un conjunto de instrucciones que realizan una tarea concreta a las que se designa con un nombre o identificador y constituyen una unidad de programa. La tarea determinada al subprograma se ejecuta cada vez que en el código fuente se haga referencia al nombre del subprograma. La declaración de un subprograma incluye los parámetros de entrada y en el caso de las funciones también el tipo del parámetro de salida. 7.2.2. Importancia Muchas veces en un programa es necesario repetir un mismo proceso varias veces en distintas partes de éste. Para evitar tener que repetir el mismo código varias veces, el programador tiene la opción de abstraer esa parte del programa en un subprograma, el cual puede ser llamado cuando se requiera. 7.2.3. Tipos 7.2.3.1. Funciones Es un subprograma que retorna parámetros. Ej.: Declaración de una función Tipo_retorno nombre_funcion(p1, p2, … pn) 7.2.3.2. Procedimientos Son subprogramas que no retornan parámetros. Ej.: Declaración de un procedimiento Tipo_retorno nombre_procedimiento (p1, p2,… pn)
  • 46. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante 7.2.3.3. Comparación Funciones y procedimientos Funciones Semejanzas Procedimientos Son subprogramas Retorna un valor No retorna valores Pueden recibir o no parámetros de entrada Otra clasificación de los subprogramas viene dada por donde se encuentran definidos o implementados, de acuerdo a este criterio existen tres tipos de subprogramas: de sentencia, intrínsecos y externos. 7.2.3.4. Subprogramas de sentencia Son los que son definidos dentro del programa principal para realizar una tarea especifica que se repite muchas veces durante el proceso. Ej.: Supóngase un programa que opera con vectores que requiere calcular varias veces el módulo de un vector, lo más acertado es declarar una función para calcular el módulo. 7.2.3.5. Subprogramas intrínsecos Son los subprogramas que vienen definidos en el compilador y pueden ser utilizados invocándolos a través de su nombre. Ej.: Tareas rutinarias como mostrar datos por pantalla, realizar operaciones matemáticas como cálculo de la raíz cuadrada, ente otras, son tareas que han sido programadas previamente e incorporadas al compilador de modo que el programador pueda utilizarlas.
  • 47. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante 7.2.3.6. Subprogramas externos Son los subprogramas que están definidos en módulos que podemos utilizar al importar las librerías que los contienen. 7.2.4. Parámetros Un parámetro es un valor que pude ser proporcionado al subprograma (de entrada) o retornado por este (de salida). 7.2.4.1. Parámetros formales En la declaración de un subprograma, cuando se incluyen parámetros, estos se denominan parámetros formales, representan los datos recibidos por el subprograma. Ellos sirven para contener los valores de los argumentos del programa principal, es decir, para contener los valores suministrados en cada invocación. 7.2.4.2. Argumentos Los datos que se envían a los subprogramas se llaman argumentos del programa principal, estos deben coincidir en número, orden y tipo con los parámetros formales de la declaración del subprograma. 7.2.4.3. Parámetros de entrada Son aquellos cuyos valores deben ser proporcionados al hacer la invocación de la función. 7.2.4.4. Parámetros de salida Son aquellos cuyos valores se calculan en el subprograma y son retornados por el subprograma. 7.2.5. Ámbito de un subprograma 7.3.Variables globales Son variables globales las que son declaradas en el programa principal, estas variables pueden ser accedidas desde cualquier parte del código.
  • 48. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante 7.4.Variables locales Son variables locales las que son declaradas dentro de un subprograma y se dice que son locales al subprograma. Una variable local sólo esta disponible durante la ejecución del subprograma, su valor se pierde al retornar el control al programa principal. 7.5.Transferencia de información a/desde subprogramas Existen dos formas de pasar la información entre el programa principal y los subprogramas. Se trata del paso por valor y el paso por referencia. 7.5.1. Por valor Los valores de los argumentos del programa principal que son enviados al subprograma son copiados en unas nuevas variables para ser procesados. La ventaja de enviar parámetros por valor, es que las variables del programa principal no son alteradas en el subprograma. Ej.: Paso de parámetros por valor 7.5.2. Por referencia Cuando se hace el paso de parámetros por referencia, lo que se envía es la posición de memoria donde están almacenados los argumentos del programa principal, por lo que si los parámetros son modificados en el subprograma los cambios se verán reflejados también en el programa principal. La ventaja del paso por referencia es que de cierto modo se tienen múltiples valores de retorno. Ej.: Paso de parámetros por referencia 8. Programación Modular 8.1.Definición La programación modular se basa en diseñar un programa dividiéndolo en módulos que resultan de segmentar el problema en funciones lógicas que son perfectamente diferenciadas. Esta división exige la presencia de un módulo denominado módulo de base o principal a objeto de que controle y se relacione con los demás.
  • 49. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante La programación modular al considerar funciones lógicas constituye un intento para diseñar programas que puedan ser cambiados o reemplazados fácilmente sin afectar en lo posible a ninguna otra parte o módulo del programa. 8.2.Definición de módulo En la programación modular, los procedimientos con una funcionalidad común son agrupados en módulos separados. Un programa por consiguiente, ya no consiste solamente de una sección. Ahora está dividido en varias secciones más pequeñas que interactúan a través de llamadas a procedimientos y que integran el programa en su totalidad Cada módulo puede contener sus propios datos. Esto permite que cada módulo maneje un estado interno que es modificado por las llamadas a procedimientos de ese módulo. Sin embargo, solamente hay un estado por módulo y cada módulo existe cuando más una vez en todo el programa. Ejemplos de módulos son las bibliotecas de componentes de software de las aplicaciones generales, las cuales permiten una mayor comodidad y productividad en la programación. 8.3.Criterios para composición de módulos  Cada módulo debe corresponder a una función lógica perfectamente diferenciable.  El tamaño de cada módulo debe ser variable, pero se recomienda que sea pequeño, con el objeto de obtener programas claros y de poca complejidad.  Evitar el uso de excesivo número de módulos, es necesario buscar un equilibrio entre la cantidad de módulos y el tamaño de los mismos.  Cada módulo vista como una caja negra, donde la salida debe ser en función exclusiva de la entrada.
  • 50. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante 9. Programación orientada a objetos Entre las diferencias entre la programación orientada a objetos y otras técnicas de programación, se tiene que en la programación orientada a objetos, los objetos intercambian mensajes entre sí. En otras técnicas de programación, los datos son intercambiados entre procedimientos bajo el control de un programa principal. Es decir, objetos del mismo tipo pero cada uno con su propio status pueden coexistir. Esto contrasta con el enfoque modular donde cada módulo tiene solamente un status global. 9.1.Conceptos relacionados 9.1.1. Clase Una clase es la implementación de un tipo de datos abstracto (TDA). Define atributos y métodos que implementan la estructura de datos y operaciones del TDA, respectivamente. Las instancias de las clases son llamadas objetos. Consecuentemente, las clases definen las propiedades y el comportamiento de conjuntos de objetos. Los TDAs permiten la creación de instancias con propiedades bien definidas y comportamiento bien definido. Los TDAs definen la funcionalidad al poner especial énfasis en los datos involucrados, su estructura, operaciones, así como en axiomas y precondiciones. Una clase es una representación real de un TDA. Por lo tanto, provee detalles de implementación para la estructura de datos utilizada y las operaciones. Al nivel de clases (implementación) hablamos de "atributos", que son elementos de la estructura de datos al nivel del TDA. Lo mismo se aplica a "métodos", que es la implementación de las operaciones del TDA. 9.1.2. Objeto Un objeto es una instancia de una clase. Puede ser identificado en forma única por su nombre y define un estatus, el cuál es
  • 51. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante representado por los valores de sus atributos en un momento en particular. El estatus de un objeto cambia de acuerdo a los métodos que le son aplicados. Nos referimos a esta posible secuencia de cambios de estatus como el comportamiento del objeto: El comportamiento de un objeto es definido por un conjunto de métodos que le pueden ser aplicados. Se han presentado hasta ahora dos conceptos principales de orientación a objetos, clase y objeto. La programación orientada a objetos es por lo tanto la implementación de tipos de datos abstractos o, en palabras más sencillas, la escritura de clases. En tiempo de ejecución, instancias de estas clases -los objetos- cumplen con el objetivo del programa cambiando sus estatus. Por consecuencia, se genera la pregunta: ¿Cómo interactúan estos objetos? y surge la necesidad del concepto de mensaje. 9.1.3. Mensaje y método Un programa en ejecución es una colección de objetos, donde dichos objetos interactuantes son creados y destruidos. Esta interacción se basa en mensajes que son mandados de un objeto a otro, donde el emisor le pide al receptor que aplique un método a sí mismo Mandar un mensaje pidiéndole a un objeto que aplique un método es similar a una llamada a un procedimiento en lenguajes de programación "tradicionales". Sin embargo, en orientación a objetos, hay un cuadro de objetos autónomos que se comunican unos con los otros por medio del intercambio de mensajes. Los objetos reaccionan cuando reciben mensajes por medio de la aplicación de métodos sobre si mismos. También pueden negar la ejecución de un método, por ejemplo si el objeto que hace la llamada no tiene permiso para ejecutar el método solicitado. Un mensaje es una solicitud a un objeto para invocar uno de sus métodos. Un mensaje por lo tanto contiene: el nombre del método y los argumentos del método.
  • 52. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante Por consecuencia, la invocación de un método es solamente una reacción causada por el hecho de recibir un mensaje. Esto solamente es posible si el método es realmente conocido por el objeto. Un método está asociado a una clase. Un objeto invoca un método como una reacción al recibir un mensaje. 9.1.4. Herencia La herencia es la propiedad que permite a los objetos construirse a partir de otros objetos. El concepto de herencia está presente en nuestras vidas diarias donde las clases se dividen en subclases. La herencia permite entonces describir entidades (clases) por diferencia entre ellas; por eso se dice que programar con orientación a objetos es programar para diferenciar. La utilidad de la herencia es múltiple. En primer lugar hay que analizar, diseñar, codificar y poner a punto, que en cuanto se tiene un concepto definido, jamás lo repetimos. Como muchos, si el concepto nuevo es muy parecido a uno anterior, se define el nuevo como la diferencia respecto al anterior. Si surge un error en la utilización de la nueva entidad, seguro que el error está en lo que se ha añadido por que lo que se ha heredado ya se había producido. Hay diferentes tipos de herencia: los más importantes son simples y múltiples. Con esto se quiere decir que, al contrario de la herencia biológica donde siempre se hereda de dos padres, en la programación orientada a objetos se puede heredar de uno, dos o más padres. La definición de cliente minorista a partir de cliente es un ejemplo de herencia simple. Y se podría definir un vehículo anfibio como una herencia (subclase) de otras dos clases: coche y barco. 9.1.5. Polimorfismo La característica de polimorfismo de la POO permite que las instancias de diferentes clases reaccionen de una forma particular al llamado de una función. Por ejemplo, en una jerarquía de formas
  • 53. UNIDAD III: TIPOS DE DATOS ESTRUCTURADOS Prof. Lucía Bustamante graficas (punto, línea, cuadro, rectángulo, etc.), cada forma tiene una función dibujar responsable de contestar adecuadamente a peticiones del trazo de esa forma. El polimorfismo permite que las instancias de diferentes clases respondan a la misma función en forma adecuada para cada clase. Polimorfismo significa que muchos programas se hacen extensibles a nuevos tipos sin necesidad de recompilarlos. El origen del término polimorfismo es simple: ya que describe la capacidad de código de C++ de comportarse de diferentes maneras dependiendo de situaciones que se presenten al momento de la ejecución. Este comportamiento a menudo escapa del control directo del programador. El polimorfismo no es tanto una característica de objetos como lo es de funciones miembro de una clase. Se implanta a través de la arquitectura de clases; sin embargo, solo las funciones miembro de la clase puede ser polimorficas, y no la clase completa.
  • 54. UNIDAD IV: INTRODUCCIÓN AL MANEJO DE ARCHIVOS Y ESTRUCTURAS Prof. Lucía Bustamante Unidad IV: Introducción al manejo de archivos y estructuras Objetivo terminal: Conocer e identificar efectivamente los archivos y las estructuras para almacenar y manipular información en el desarrollo de programas informáticos.