Está en la página 1de 24

Introducción a la Programación Estructurada

La informática y las ciencias de la computación en los primeros años del siglo XXI vienen marcadas por los avances tecnológicos de la pasada década. Los más de
treinta años de vida de la computadora personal (PC) y los más de sesenta años de la informática/computación tradicional vienen acompañados de cambios rápidos
y evolutivos en las disciplinas clásicas. El rápido crecimiento del mundo de las redes y, en consecuencia, la World Wide Web hacen revolucionarios a estos cambios y
afectan al cuerpo de conocimiento de los procesos educativos y profesionales.

Esta web pretende reforzar temas y técnicas de análisis, diseño y construcción de algoritmos, así como de estructuras de datos y programación estructurada, lo que
implica estudiar las reglas de escritura de programas eficientes.

Conceptos Fundamentales
1. Algoritmos: conjunto de instrucciones programadas para resolver una tarea específica.
2. Datos: información que se proporciona a los algoritmos que se han de ejecutar para encontrar una solución. Los datos se organizan en estructuras de datos.
3. Objetos: conjuntos de datos y algoritmos que los manipulan, encapsulados en un tipo de dato conocido como objeto.
4. Clases: tipos de objetos con igual estado y comportamiento, o dicho de otro modo, los mismos atributos y operaciones.
5. Estructuras de datos: conjunto de organizaciones de datos para tratar y manipular eficazmente datos homogéneos y heterogéneos.
6. Temas avanzados: recursividad, métodos avanzados de ordenación y búsqueda, relaciones entre clases, etc.

Paradigmas de Programación
Programación Procedimental.

Un problema se modela directamente mediante un conjunto de algoritmos. Por ejemplo, la nómina de una empresa o la gestión de ventas de un almacén se
representan como una serie de funciones que manipulan datos. Los datos se almacenan separadamente y se accede a ellos a través de parámetros en los
procedimientos. Tres lenguajes de programación clásicos, FORTRAN, Pascal y C, han representado el arquetipo de programación procedimental, también conocida
como Programación Estructurada.

Programación Orientada a Objetos

Se modela un conjunto de abstracciones de datos (tipos de datos) conocidos como clases. Las clases contienen un conjunto de instancias o ejemplares de la misma
que se denominan objetos, de modo que un programa actúa como un conjunto de objetos que se relacionan entre sí.

Justificación
Las computadoras (ordenadores) electrónicas modernas son uno de los productos más importantes del siglo XXI ya que se han convertido en un dispositivo esencial
en la vida diaria de las personas, como un electrodoméstico más del hogar o de la oficina y han cambiado el modo de vivir y de hacer negocios. Constituyen una
herramienta esencial en muchas áreas: empresa, industria, gobierno, ciencia, educación..., en realidad en casi todos los campos de nuestras vidas.

Son infinitas las aplicaciones que se pueden realizar con ellas: consultar el saldo de una cuenta corriente, retirar dinero de un banco, enviar o recibir mensajes por
teléfonos celulares (móviles) que a su vez están conectados a potentes computadoras, escribir documentos, navegar por Internet, enviar y recibir correos electrónicos
(e-mail), etc.

El papel de los programas de computadoras es fundamental; sin una lista de instrucciones a seguir, la computadora es virtualmente inútil. Los lenguajes de
programación nos permiten escribir esos programas y por consiguiente comunicarnos con las computadoras. La principal razón para que las personas aprendan
lenguajes y técnicas de programación es utilizar la computadora como una herramienta para resolver problemas.

Conceptos Básicos de Algoritmia


Algoritmos

Los algoritmos constituyen un listado de instrucciones que indican el camino a seguir para solucionar un problema.

Podríamos decir que un algoritmo es la suma de una parte lógica más una parte de control, en donde la parte lógica especifica el conocimiento en la solución del
problema y la parte de control es la estrategia para solucionar el problema.

Características de los Algoritmos

 Un algoritmo no debe ser ambiguo.


 Debe tener una secuencia inicial.
 Cada paso deberá tener una secuencia única, es decir que deben indicar claramente el camino a seguir en la solución del problema.
 El algoritmo debe ser siempre eficiente y dar solución al problema.

Diagrama de Flujo

El diagrama de flujo es la representación gráfica de dicha secuencia de instrucciones que conforman el algoritmo.
El siguiente es un ejemplo de un diagrama de flujo para sumar dos variables A y B, el resultado es almacenado en la variable C.

Símbolos

Variables, Constantes y Expresiones


Variables
Son los elementos que se utilizan para contener datos de distintos tipos: números, letras, cadenas de caracteres, valores lógicos, etc. El valor contenido en una
variable puede cambiar a lo largo de la ejecución de un programa.

Constantes

Son elementos que contienen datos, el valor asignado a una constante es fijo y no se puede cambiar durante toda la ejecución del programa.

Expresiones

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

Por ejemplo: a + (b + 3) / c

Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones implicadas.

Una expresión consta de operadores y operandos. Según sea el tipo de dato que manipulan, se clasifican las expresiones en aritméticas, relacionales y lógicas.

Operadores
Operadores aritméticos

Los operadores aritméticos nos permiten, básicamente, hacer cualquier operación aritmética (suma, resta, multiplicación y división). En la siguiente tabla se
muestran los principales.

Operador Acción Ejemplo Resultado


- Resta 5-2 3
+ Suma 5+2 7
* Multiplicación 5*2 10
/ División 5/2 2.5
MOD Resto 5MOD2 1
DIV Parte entera 5DIV2 2

El operador MOD nos devuelve el residuo de una división entera, mientras que el operador DIV devuelve la parte entera de la división entre dos números enteros.

Operadores Relacionales

Al igual que en matemáticas, estos operadores nos permiten evaluar las relaciones (igualdad, mayor que, etc) entre un par de operandos (en principio, pensemos en
números). Los operadores relacionales de que disponemos son:

Operador Acción
> Mayor que
< Menor que
= Igual que
>= Mayor o igual que
<= Menor o igual que
!= Diferente a

Operadores Lógicos

Los operadores lógicos producen un resultado booleano, y sus operandos son también valores lógicos o asimilables a ellos (los valores numéricos son asimilados a
cierto o falso según su valor sea cero o distinto de cero). Los operadores lógicos son tres; dos de ellos son binarios y el tercero es unario.

AND (Y)

Produce un resultado con valor de verdad (true) cuando ambos operandos tienen valor de verdad true; en cualquier otro caso el resultado tendrá un valor de verdad
false.

Sintaxis: operando1 AND operando2

OR (O)

Produce un resultado con valor de falso (false) cuando ambos operadores tienen valores false; en cualquier otro caso el resultado tendrá valor de verdad (true).

Sintaxis: operando1 OR operando2

NOT (NO)
Invierte el valor de verdad del operando

Sintaxis: NOT operando1.

Prioridad de los Operadores

Los operadores son evaluados con la siguiente prioridad:

1. ( )

2. *, /, MOD, DIV

3. +, -, AND

4. >, <, >=, <=, !=, OR

Diagramas de Flujo
Los diagramas de flujo son herramientas útiles para representar algoritmos. Utilizan los símbolos de diagrama de flujo ya vistos anteriormente. Veamos algunos
ejemplos:

Ejemplo 1: Construir un algoritmo para determinar el área de un círculo, dado su radio R.

Solución:

Explicación del Diagrama de Flujo:

1. Inicio
2. Pide el valor de R
3. Se asigna a la variable A, el valor de la operación R*R*pi
4. Salida en pantalla del valor de A.
5. Fin

Ejemplo 2: Construir un algoritmo para calcular el valor de Y, según la ecuación Y = 3X2 + 5X + 3


Explicación del Diagrama de Flujo:

1. Inicio
2. Pide el valor de la variable X
3. Asigna a Y el valor de la operación (3*X*X) + (5*X) + 3
4. Salida por pantalla del valor de la variable Y.
5. Fin

Ejemplo 3: Algoritmo que lee dos variables A y B, e intercambia sus valores.


Explicación del Diagrama de Flujo:

1. Inicio
2. Salida en pantalla pidiendo los valores de A y B
3. Entrada de A y B.
4. Asignación a la variable AUX del valor de A.
Asignación a la variable A del valor de B.
Asignación a la variable B del valor de AUX.
5. Salida en pantalla de la variable A
6. Salida en pantalla de la variable B
7. Fin

Estructuras de Decisión
La estructura básica de decisión se representa con el siguiente diagrama de flujo:

En el rombo horizontal se expresa una pregunta, que suele ser de tipo lógico o relacional. Dependiendo de la respuesta (Si o No), se llevará a cabo un proceso
distinto.

La estructura selectiva de decisión, también conocida como estructura Si... Entonces, permite que el flujo del algoritmo siga por un camino específico si se cumple
una condición o conjunto de condiciones. Si al evaluar la condición (o condiciones) el resultado es verdadero, entonces se ejecuta(n) cierta(s) operación(es). Luego
se continua con la secuencia normal del programa.

Veamos algunos ejemplos:

Ejemplo 1: Escribir un algoritmo que permita, dada la nota de un estudiante, decir si aprobó la materia, teniendo en cuenta que la aprobación requiere mínimo una
nota de 3.0
Explicación del Diagrama de Flujo:

1. Inicio
2. Pide la NOTA
3. Si NOTA es mayor o igual a 3.0 entonces
Salida del texto: 'Aprobó'
4. Si NOTA es menor que 3.0 entonces
Salida del texto: 'No aprobó'
5. Fin

Ejemplo 2: Dado como dato el sueldo de un trabajador, aplicar un aumento del 17% si su sueldo es inferior a 600000. Si no, aplicar un aumento de 11%. Salida por
pantalla del nuevo sueldo.

Explicación del Diagrama de Flujo:

1. Inicio
2. Pide por teclado el valor de SUELDO
3. Si SUELDO es menor que 600000 entonces
SUELDO es igual a SUELDO*1.17
4. Si NO, entonces
SUELDO es igual a SUELDO*1.11
5. Fin

Estructuras Condicionales Anidadas

Es posible poner estructuras Si...Entonces, una dentro de la otra. Esto se denomina condicionales anidados.

Ejemplo 3: Leer un número entero y decir si el número está entre 100 y 200. Si cumple la condición, entonces decir si es múltiplo de 3.
Explicación del Diagrama de Flujo:

1. Inicio
2. Pide el valor de NUM
3. Si NUM es mayor o igual que 100 entonces
4. Si NUM es menor o igual que 200 entonces
5. RES es igual a NUM MOD 3 (Se realiza la operación MOD entre NUM y 3).
6. Si RES = 0 entonces
7. Salida por pantalla: 'El número es múltiplo de 3'
8 Si NO, entonces
9. Salida por pantalla: 'El número no es múltiplo de 3'
10. Fin

Ejercicios Estructuras de Decisión

1. Construya un algoritmo que, dada la nota de un estudiante, escriba 'Aprobado' si la nota es mayor o igual que 3.0 ó escriba 'No Aprobado' si la nota es menor
que 3. El algoritmo debe tener una verificación de la nota introducida por teclado, que debe estar entre 0.0 y 5.0. En caso de no cumplir con el requisito, dar un
mensaje de error 'nota no válida'.

2. Construya un algoritmo, que dado un número entero, escriba si es par o impar. En caso de ser par, entonces verificar si es divisible entre 4 y escribir el mensaje
'divisible entre 4', si no lo es, escribir el mensaje 'no divisible entre 4'. En caso de ser impar, verificar si es divisible entre 3 y escribir el mensaje 'divisible entre 3', y
si no lo es, escribir el mensaje 'no divisible entre 3'.

Flujo de Control de Variables


Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelen denominar también estructuras de decisión o alternativas.

En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando
expresiones lógicas o relacionales.

Las estructuras selectivas pueden ser simples o anidadas. Hemos visto ejercicios sencillos de estructuras selectivas simples y anidadas. La estructura alternativa
simple, SI...ENTONCES, ejecuta una acción determinada cuando se cumple una determinada condición. La estructura SI...ENTONCES evalúa la condición y:

- Si es verdadera, entonces toma el camino del SI


- Si es falsa, entonces toma el camino del NO

La estructura condicional simple toma esta forma:

SI (condición) ENTONCES
Esta parte se ejecuta cuando la condición sea verdadera
SINO
Esta parte se ejecuta cuando la condición sea falsa
FIN_SI

Las estructuras condicionales anidadas están compuestas por varias estructuras condicionales sencillas, una dentro de la otra. Cada una evalúa una condición, lo
que determina distintos posibles caminos durante la ejecución del programa.

La estructura condicional anidada toma esta forma:

SI (condición1) ENTONCES
Esta parte se ejecuta cuando condición1 sea verdadera
SINO
SI (condición2) ENTONCES
Esta parte se ejecuta si condición2 es verdadera
SINO
SI (condición3) ENTONCES
Esta parte se ejecuta si condición3 es verdadera
FIN_SI
FIN_SI
FIN_SI

SEGUIMIENTO DE UNA VARIABLE

Durante la ejecución de un programa o algoritmo, las variables pueden tomar distintos valores, de acuerdo a los procesos realizados. Por ejemplo en el siguiente
algoritmo.

Ejemplo 1:

INICIO
entrada ('Introduce el valor de A, B y C')
A = A*2
B = B-4
C = C/5
salida('El nuevo valor de A es', A, '. El nuevo valor de B es ', B, '. El nuevo valor de C es ', C)
FIN

Explicación: Los valores de las variables A, B y C cambian durante la ejecución del algoritmo. Al final del mismo, los valores almacenados en ellas son distintos a los
entrados por teclado al inicio.

Ejemplo 2:

INICIO
salida ('Ingresar los valores de A, B y C')
entrada (A, B, C)
SI (A >= B) ENTONCES
SI (A >= C) ENTONCES
A=A+3
salida ('El valor de A es ', A)
SINO
A=A+2
salida ('El valor de A es ', A)
FIN_SI
SINO
A=A+1
salida ('El valor de A es ', A)
FIN_SI
FIN

Explicación: En el algoritmo condicional, el valor de la variable A va cambiando, de acuerdo al camino que siga el algoritmo, lo que a su vez depende de las
comparaciones lógicas entre los valores de las variables que se entraron por teclado al inicio. Al final del algoritmo, el valor de A es distinto al valor entrado por
teclado, pero el cambio depende del camino seguido en el algoritmo.

Algoritmos de Ordenamiento
Los algoritmos de ordenamiento nos permiten, como su nombre lo dice, ordenar. En este caso, nos servirán para ordenar variables en forma ascendente o
descendente. Para poder ordenar variables existen distintos métodos con diferentes características, funcionalidades y niveles de complejidad. Nosotros
utilizaremos el método más simple, llamado Bubblesort (o método búrbuja), que consiste en iteraciones sucesivas.

MÉTODO DE LA BURBUJA (BUBBLESORT)

El método de la burbuja es uno de los más simples sistemas para ordenar números, basta con comparar cada uno de ellos con los otros. Si se cumple que uno es
mayor o menor a otro, entonces los intercambia de posición.

Por ejemplo, imaginemos que tenemos los siguientes valores y queremos ordenarlos en forma ascendente:

1 4 5 2

Lo que haría el método de la burbuja sería comenzar por el número más a la izquierda, es decir el 1, y compararlo con el 4, el 5 y el 2. Si es mayor, se intercambian
de posición, y si es menor se queda donde está. Luego continúa con el 4 y así sucesivamente hasta llegar al final de la lista de números.

Veamos un ejemplo en DFD con dos variables.

Explicación: El algoritmo compara los valores de a y b. Si a < b entonces la salida toma la forma ab. Si no, entonces la salida toma la forma ba.

Veamos un ejemplo en DFD, ahora con tres variables


Explicación:

1. INICIO
2. salida ('Introduzca tres números distintos')
3. entrada (a, b, c)
4. SI (a < b) ENTONCES
5. SI (b < c) ENTONCES //se aplica la propiedad transitiva
6. salida (a, b, c) //quedan ordenados a, b y c
7. SINO //es decir, si c < b
8. SI (a < c) // se comparan a y c
9. salida (a, c, b) // quedan ordenados
10. SINO // es decir, si c < a
11. salida (c, a, b) //quedan ordenados
12. FIN_SI
13. FIN_SI
14.SINO // es decir, si b < a)
15. SI (a < c) ENTONCES
16. salida (b, a, c) // quedan ordenados
17. SINO // es decir, si c < a
18. SI (b < c) ENTONCES
19. salida (b, c, a) // quedan ordenados
20. SINO // es decir, si c < b
21. salida (c, b, a) // quedan ordenados
22. FIN_SI
23. FIN_SI
24. FIN_SI

Observar que el algoritmo contempla las seis posibles ordenaciones entre tres cosas:

abc
acb
bac
bca
cab
cba

Ejercicios de Ordenamiento

Realizar el ejercicio 1 y uno cualquiera entre el 2 y el 3, de los siguientes ejercicios de ordenamiento.

1. Pedir por teclado un número entero y almacenar su valor en la variable a. Si a es múltiplo de 5, sumarle 3, sino, sumarle 2, almacenar en resultado en la variable
b. Si b es par, sumarle 1, sino restarle 1, almacenar el resultado en la variable c. Ordenar a, b y c en forma ascendente.

2. Pedir por teclado dos números enteros, almacenar los números en las variables a y b. Sumar a + b y almacenar el resultado en la variable c. Realizar el
ordenamiento de a, b y c.

3. Pedir por teclado tres números enteros. Realizar el ordenamiento de a, b y c en forma descendente.

4. Pedir por teclado un número entero y almacenar su valor en la variable a. Si a es múltiplo de 5, sumarle 3, sino, sumarle 2, almacenar en resultado en la variable
b. Si b es par, sumarle 1, si no restarle 1, almacenar el resultado en la variable c. Mostrar en pantalla el valor de las variables a, b y c.

5. Pedir por teclado dos números y almacenar su valor en las variables a y b. Si a es múltiplo de b, entonces asignar a la variable c el resultado de sumar a + b. Si b
es múltiplo de a, entonces asignar a la variable c el resultado de restar a - b. Mostrar en pantalla el valor de c.

Estructuras Repetitivas
Es común encontrar en los algoritmos problemas que requieren ejecutar operaciones un número repetido de veces. Si bien las instrucciones son las mismas, los
datos sobre los que operan varían. El conjunto de instrucciones que se ejecuta repetidas veces se denomina ciclo.

Todo ciclo debe terminar de ejecutar después de un número finito de veces, por lo que es necesario en cada iteración del mismo, evaluar las condiciones necesarias
para decidir si debe seguir ejecutándose o debe detenerse. En todo ciclo, siempre debe existir una condición de parada o fin de ciclo.

ESTRUCTURA "MIENTRAS QUE"

La estructura algorítmica mientras es la estructura adecuada para utilizar en un ciclo cuando no sabemos el número de veces que éste se ha de repetir. Dicho
número depende de las proposiciones dentro del ciclo. Ejemplos en la vida cotidiana encontramos muchos. Por ejemplo, supongamos que tenemos que obtener el
total de una serie de gastos, pero no sabemos exactamente cuántos son; o cuando tenemos que sacar el promedio de calificaciones de un examen, pero no
sabemos precisamente cuántos alumnos lo aplicaron. Tenemos que sumar las calificaciones e ir contando el número de alumnos, esto con el fin de poder obtener
posteriormente el promedio. El ciclo se repite mientras tengamos calificaciones de alumnos.

La sintáxis en pseudocódigo es la siguiente:

Mientras Que (condición)

Hacer (Proceso)

Fin MQ

Proceso, es cualquier operación o conjunto de operaciones que deben ejecutarse mientras se repite el ciclo. El ciclo se repetirá mientras que la condición sea
verdadera, es decir, cuando la condición se vuelva falsa, el ciclo finaliza.

La estructura básica del ciclo Mientras Que, en DFD, es la siguiente:


La estructura MQ, evalúa la condición antes de realizar el proceso, por tanto, es posible que el ciclo nunca llegue a ejecutarse (al ser la condición inicial falsa).

Por ejemplo:

Este ciclo nunca se termina. ¿Por qué?

El proceso (o los procesos) dentro de la estructura MQ se repite indefinidamente, mientras que la condición sea verdadera.
Ejemplo 1: Leer por teclado una serie de números enteros positivos y sumarlos. Terminar el ciclo cuando el número leído sea negativo .

Ciclos Infinitos

Los bucles que no se terminan nunca porque la condición está mal diseñada se denominan bucles infinitos. Estos bucles infinitos son muy perjudiciales para la
programación y se deben evitar siempre.

Supongamos el siguiente algoritmo:


La condición del ciclo MQ es que la variable a sea diferente de 5. Pues bien, la variable a siempre será diferente de 5, ya que se acumula de 2 en 2, por tanto toma
los valores 2, 4, 6, 8, ... etc. Este ciclo se repite indefinidamente (o en la práctica, hasta que el computador se bloquee por memoria insuficiente). Una forma de
evitar la mayoría de estos errores es preferir establecer condiciones mayor que, mayor o igual que, menor que ó menor o igual que. Estos operadores relacionales se
deben preferir en lugar de los operadores de igualdad.

Ejemplo 2: Observar con atención el siguiente algoritmo.


El ciclo se basa en preguntar '¿Hay más números?', y leer esta respuesta. Si la respuesta es 'S' o 's', entonces el ciclo continua leyendo y acumulando números. En
caso contrario, el ciclo termina.

Uso de la variable CONTADOR.

Muchas veces usamos esta estructura MQ con una variable especial dentro del proceso que se denomina "contador". El contador es una variable que nos permite
llevar la cuenta de las veces que hemos repetido el ciclo. Veamos un ejemplo sencillo:

Ejemplo 3: Sumar los números del 1 al 10 y mostrar en pantalla el resultado.


El diagrama de flujo es el siguiente:

Analicemos el ejemplo 3:

Tenemos dos variables iniciales que se denominaron cont y suma. En la variable cont se llevará el conteo de las veces que se repite el ciclo; esta variable se utiliza
como condición al inicio de cada ciclo. La condición es que el valor de cont sea menor que 10. Por otra parte, en la variable suma se almacenará el resultado de la
suma de los números del 1 al 10, por esta razón se inicializa en 0.

Se inicia el ciclo MQ con la condición de que el valor de la variable cont sea menor que 10. Cómo al inicio del ciclo, la variable cont tiene un valor de 0 (ya que se
inicializa en 0), el ciclo se ejecuta, al ser verdadera la condición (0 < 10). El único proceso dentro del ciclo realiza las acumulaciones de números. Para la variable
cont, la operación es la siguiente:

cont = cont + 1

Para la variable suma, la operación es la siguiente:

suma = suma + cont

Analicemos este proceso detenidamente, determinando los valores de cont y suma, ya que lo utilizaremos muchas veces:

1. cont = cont + 1 cont = 0 + 1 = 1


suma = suma + cont suma = 0 + 1 = 1

2. cont = cont + 1 cont = 1 + 1 = 2


suma = suma + cont suma = 1 + 2 = 3
3. cont = cont + 1 cont = 2 + 1 = 3
suma = suma + cont suma = 3 + 3 = 6

4. cont = cont + 1 cont = 3 + 1 = 4


suma = suma + cont suma = 6 + 4 = 10

5. cont = cont + 1 cont = 4 + 1 = 5


suma = suma + cont suma = 10 + 5 = 15

6. cont = cont + 1 cont = 5 + 1 = 6


suma = suma + cont suma = 15 + 6 = 21

7. cont = cont + 1 cont = 6 + 1 = 7


suma = suma + cont suma = 21 + 7 = 28

8. cont = cont + 1 cont = 7 + 1 = 8


suma = suma + cont suma = 28 + 8 = 36

9. cont = cont + 1 cont = 8 + 1 = 9


suma = suma + cont suma = 36 + 9 = 45

10. cont = cont + 1 cont = 9 + 1 = 10


suma = suma + cont suma = 45 + 10 = 55

Al llegar a este punto, el ciclo se ha repetido 10 veces y en la variable suma se encuentra acumulada la suma de los números del 1 al 10. La variable cont tiene un
valor de 10. Al intentar realizar el siguiente ciclo, la condición es falsa, (ya que cont < 10 es falsa), puesto que 10 no es menor que 10. Entonces el ciclo finaliza y se
escribe en pantalla el valor de suma.

Ejercicios sobre estructura MQ

1. Construir un algoritmo que sume los números del 1 al 100 y muestre el resultado por pantalla.
2. Construir un algoritmo que sume los números pares del 1 al 10 y muestre el resultado por pantalla.
3. Construir un algoritmo que calcule y visualice el promedio de un número no definido de notas. La condición de terminación debe ser nota != -1
4. La sucesión de fibonacci es una secuencia infinita de números en los cuales cada uno (a excepción de los dos primeros, que siempre son 1, 1) es la suma de los
dos anteriores. Construir un algoritmo que escriba el 20avo número de la sucesión de fibonacci.

Plan de Mejoramiento
Para las siguientes situaciones, desarrolla un algoritmo que resuelva el problema. Lo puedes realizar en DFD, pero el algoritmo debe quedar en hojas, bien sea
impreso o bien sea dibujado.

1. Se desea calcular la distancia recorrida (en metros) por un móvil A que tiene velocidad constante (m/s) durante un tiempo t (sg). Considerar que el móvil se
desplaza en un MRU (Movimiento rectilíneo uniforme).
Datos de Entrada: Velocidad, Tiempo
Datos de Salida: Distancia recorrida.
2. Obtener el promedio de un estudiante, a partir de sus tres notas obtenidas.
3. Obtener el sueldo de un trabajador, a partir de sus horas laboradas en el mes y del pago por hora.
4. Calcular cuántos CD’s se necesitan para grabar un archivo de un tamaño que conoce el usuario, expresado en GB (Gigabytes). Considerar que un CD tiene 700
MB (Megabyes) y que un GB es igual a 1024 MB.
5. Elaborar un algoritmo que pida la edad de 2 hermanos y muestre un mensaje indicando la edad del mayor y cuántos años de diferencia tiene con el menor.
6. Elaborar un algoritmo que pida tres números distintos y determine cuál es el mayor.
7. Elaborar un algoritmo que determine el tipo de triángulo conociendo sus tres lados (Equilátero, Isósceles o Escaleno).
8. Elaborar un algoritmo que pida un número entero de 2 cifras y que muestre un mensaje diciendo cuántas unidades y cuántas decenas tiene. Ejemplo: Si el
número entrado por teclado es 27, el mensaje debe decir: ‘7 unidades y 2 decenas’. Para realizar este algoritmo es útil el operador TRUNC, operador que elimina de
un número la parte decimal, dejando sólo la parte entera. Por ejemplo: TRUNC (19,7) = 19

Historia de los computadores


Historia de la Computación y el Computador

De acuerdo al vídeo, responder las siguientes preguntas.


1. ¿Quién fue Charles Babbage?
2. Describa el desarrollo de la máquina analítica de Charles Babbage.
3. ¿Cómo funcionaba el sistema de tarjetas perforadas de Hollerith?
4. Describa las características del ENIAC.
5. ¿Cuáles fueron los aportes de John Von Newmann a la computación?
6. ¿Cuál fue el elemento crucial en el proceso de miniaturización de los computadores?
7. ¿Cómo fue el desarrollo del IC (Circuito Integrado).
8. ¿Quienes fueron Steve Jobs y Steve Wozniak?
9. ¿Cómo fue el desarrollo del primer computador personal?
10. Describe el desarrollo de la red mundial Internet y su papel en la historia reciente de los computadores.
11. ¿Cuál puede ser (de acuerdo al vídeo), el futuro de los computadores?

¿QUÉ ES UN COMPUTADOR?

Un computador es un dispositivo electrónico, utilizado para procesar información y obtener resultados, capaz de ejecutar cálculos y tomar decisiones a velocidades
millones o cientos de millones de veces más rápidas de lo que pueden hacerlo los seres humanos. En el sentido más simple un computador es “un dispositivo” para
realizar cálculos o computar. El término sistema de computador o simplemente computador se utiliza para enfatizar que, en realidad, son dos partes
distintas: hardware y software. El hardware es el computador en sí mismo. El software es el conjunto de programas que indican al computador las tareas que debe
realizar. Los computadores procesan datos bajo el control de un conjunto de instrucciones denominadas programas de computador. Estos programas controlan y
dirigen al computador para que realice un conjunto de acciones (instrucciones) especificadas por personas especializadas, llamadas programadores de
computadores.

PARTES DE UN COMPUTADOR (HARDWARE)

Los componentes físicos que constituyen un computador, junto con los dispositivos de entrada y salida, se conocen como hardware o sistema físico. Un computador
consta de varios dispositivos (tales como teclado, pantalla, ratón, discos duros, memorias, escáner, DVD, memorias flash, unidades de proceso, impresoras, etc.)

Veamos en detalle las principales partes de un computador estándar.

UNIDAD CENTRAL DE PROCESO (CPU)


La unidad central de procesamiento o unidad de procesamiento central (conocida por las siglas CPU, del inglés: central processing unit), es el hardware dentro de
un computador u otros dispositivos programables, que interpreta las instrucciones de un programa informático mediante la realización de las operaciones básicas
aritméticas, lógicas y de entrada/salida del sistema. El término, y su acrónimo, han estado en uso en la industria de la Informática por lo menos desde el principio
de los años 1960. La forma, el diseño de CPU y la implementación de las CPU ha cambiado drásticamente desde los primeros ejemplos, pero su operación
fundamental sigue siendo la misma.

Un computador puede tener más de una CPU; esto se llama multiprocesamiento. Todas las CPU modernas son microprocesadores, lo que significa que contienen un
solo circuito integrado (chip). Algunos circuitos integrados pueden contener varias CPU en un solo chip; estos son denominados procesadores multinúcleo.

Dos componentes típicos de una CPU son la unidad aritmético lógica (ALU), que realiza operaciones aritméticas y lógicas, y la unidad de control (CU), que extrae
instrucciones de la memoria, las decodifica y las ejecuta, llamando a la ALU cuando sea necesario.

MEMORIA PRINCIPAL

Memoria primaria (MP), memoria principal, memoria central o memoria interna es la memoria de la computadora donde se almacenan temporalmente tanto los
datos como los programas que la unidad central de procesamiento (CPU) está procesando o va a procesar en un determinado momento. Por su función, la MP debe
ser inseparable del microprocesador o CPU, con quien se comunica a través del bus de datos y el bus de direcciones. El ancho del bus determina la capacidad que
posea el microprocesador para el direccionamiento de direcciones en memoria.
En algunas ocasiones suele llamarse “memoria interna” porque a diferencia de los dispositivos de memoria secundaria, la MP no puede extraerse tan fácilmente.

Esta clase de memoria es volátil, es decir que cuando se corta la energía eléctrica, se borra toda la información que estuviera almacenada en ella.
La MP es el núcleo del subsistema de memoria de un sistema informático, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una
velocidad millones de veces superior. Cuanto mayor sea la cantidad de memoria, mayor será la capacidad de almacenamiento de datos.

Cuando la CPU tiene que ejecutar un programa, primero lo coloca en la memoria y después lo empieza a ejecutar. Lo mismo ocurre cuando necesita procesar una
serie de datos; antes de poder procesarlos los tiene que llevar a la memoria principal.

La memoria principal se divide en memoria ROM y memoria RAM

La memoria ROM (read only memory) es un medio de almacenamiento que sólo permite lectura de datos. En general, los datos en la memoria ROM no se pueden
modificar. Hoy en día, la memoria ROM en un computador se utiliza básicamente para almacenar la BIOS, un conjunto de instrucciones de inicio.

Memoria ROM

La memoria RAM (random access memory) se utiliza como memoria de trabajo en los computadores para el sistema operativo, los programas y la mayor parte del
software. En la RAM se cargan todas las instrucciones que ejecuta la CPU y otros componentes del computador. Dentro de la memoria de acceso aleatorio (RAM)
existe una clase de memoria denominada memoria caché, que se caracteriza por ser más rápida que las demás, permitiendo que el intercambio de información
entre la CPU y la MP sea a mayor velocidad.
Memoria RAM

La estructura de la memoria principal ha cambiado en la historia de las computadoras. Desde los años 1980 es prevalentemente una unidad dividida en celdas que
se identifican mediante una dirección. Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o "memorizar" información digital,
es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora.

MEMORIA SECUNDARIA

Dispositivos de Memoria Secundaria

La memoria secundaria, memoria auxiliar, memoria periférica o memoria externa, también conocida como almacenamiento secundario, es el conjunto de
dispositivos y soportes de almacenamiento de datos que conforman el subsistema de memoria de la computadora, junto con la memoria primaria o principal.

Puede denominarse periférico de almacenamiento o “memoria periférica”, en contraposición a la ‘memoria central’, porque en ocasiones puede considerarse como
periférico de Entrada/Salida.

La memoria secundaria es un tipo de almacenamiento masivo y permanente (no volátil) con mayor capacidad para almacenar datos e información que la memoria
primaria que es volátil, aunque la memoria secundaria es de menor velocidad.

Deben diferenciarse los “dispositivos o unidades de almacenamiento” de los “soportes o medios de almacenamiento”, porque los primeros son los aparatos que
leen o escriben los datos almacenados en los soportes.

TIPOS DE TECNOLOGÍA DE MEMORIA O ALMACENAMIENTO


El proceso de transferencia de datos a un equipo de cómputo o sistema informático se llama "procedimiento de lectura". El proceso de transferencia de datos
desde la computadora hacia el almacenamiento se denomina "procedimiento de escritura" o grabación.
Para almacenar información se pueden usar los siguientes tipos de tecnología:

1. Magnética (ejemplos: disquete, disco duro, cinta magnética).


2. Óptica (ejemplos: CD, DVD, BD).
3. Magneto-óptica (ejemplos: Disco Zip, Floptical, Minidisc).
4. Estado sólido o memoria Flash (ejemplos: memoria USB o pendrive; tarjetas de memoria: SD, MiniSD, microSD, MS, MMC, CF, SM).

La mayoría de los dispositivos y medios de almacenamiento emplean una tecnología u otra (almacenamiento magnético ó almacenamiento óptico), y algunos
utilizan ambas, llamados híbridos (almacenamiento magneto-óptico).

Otra categoría de almacenamiento, como el dispositivo de estado sólido, se utiliza con mayor frecuencia en las computadoras portátiles (netbooks, notebooks,
ultrabooks), así como también en cámaras digitales, teléfonos inteligentes, tabléfonos y reproductores multimedia.

DISPOSITIVOS DE ENTRADA

En informática, un periférico de entrada es un dispositivo utilizado para proporcionar datos y señales de control a la unidad central de procesamiento de
una computadora.

A pesar de que el término “periférico” implica a menudo el concepto de “adicional pero no esencial”, muchos periféricos son elementos fundamentales para un
sistema informático. Sin embargo, al ser las fuentes primordiales de entrada, se pueden considerar como extensiones del sistema.

Un dispositivo de entrada es cualquier periférico (dispositivo del equipamiento del hardware de computador) utilizado para proporcionar datos y señales de
control a un sistema de procesamiento de información. Los periféricos de entrada y salida componen la interfaz del hardware.

Ejemplos: teclado, ratón óptico, escáner, micrófono, palanca de mando, gamepad o controlador de videojuego, que están conectados a la computadora y son
controlados por el microprocesador.

DISPOSITIVOS DE SALIDA

Los dispositivos de salida son aquellos que reciben información de la computadora, su función es eminentemente receptora y por ende están imposibilitados para
enviar información. Entre los dispositivos de salida más conocidos están: la impresora (matriz, cadena, margarita, láser o de chorro de tinta), el delineador (plotter),
la grabadora de cinta magnética o de discos magnéticos y la pantalla o monitor.

CONEXIONES DE REDES DE COMUNICACIONES


Los periféricos de comunicación facilitan la interacción entre dos o más computadoras, o entre una computadora y otro periférico externo a la computadora.
Permitiendo interactuar con otras máquinas o computadoras, ya sea para trabajar en conjunto, o para enviar y recibir información.

Un periférico de comunicación permite la conexión de la computadora con otros sistemas informáticos a través de diversos medios. El medio más común es la línea
telefónica. El periférico de comunicación más utilizado es el módem (modulador-demodulador).

Son ejemplos de periférico de comunicación:


 Fax-Módem
 Tarjeta de red
 Tarjeta Wireless
 Controladores de puertos (serie, paralelo, infrarrojo, etc.)
 Hub USB
 Tarjeta Bluetooth

Organización Física de un Computador

Referencia: https://sites.google.com/site/informaticaieensma/home

También podría gustarte