0% encontró este documento útil (0 votos)
54 vistas18 páginas

Clase N° 3 - Algoritmo

Este documento presenta la tercera clase de Programación I. Se introducen conceptos clave como la resolución de problemas, algoritmos, estructuras de algoritmos, pseudocódigo y diagramas de flujo. Explica el proceso de resolución de problemas por computadora y define conceptos como programa fuente, programa objeto, compilador e intérprete. Finalmente, introduce el concepto de algoritmo y sus características.

Cargado por

Elias Fernandez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
54 vistas18 páginas

Clase N° 3 - Algoritmo

Este documento presenta la tercera clase de Programación I. Se introducen conceptos clave como la resolución de problemas, algoritmos, estructuras de algoritmos, pseudocódigo y diagramas de flujo. Explica el proceso de resolución de problemas por computadora y define conceptos como programa fuente, programa objeto, compilador e intérprete. Finalmente, introduce el concepto de algoritmo y sus características.

Cargado por

Elias Fernandez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 18

2° Año - 1° Cuatrimestre

Docente a cargo: Rocio Coccia


Año: 2023
PROGRAMACIÓN I

¡Bienvenidos a la tercera clase!

En este encuentro desarrollaremos los siguientes temas:


● Resolución de problemas.
● Concepto de algoritmo.
● Estructuras de algoritmos.
● Pseudocódigo y diagramas de flujo.

Los objetivos de esta clase:

● Comprender el proceso de solución de problemas.

● Estudiar cómo soluciona los problemas la computadora.

● Estudiar el concepto de “algoritmo” y cómo se diseña.

● Diferenciar las estructuras de control que se pueden presentar en


un algoritmo.

2
PROGRAMACIÓN I

Resolución de problemas
En clases anteriores vimos la
importancia de plantear
requerimientos y tener claro el
problema a resolver para desarrollar
una solución de calidad. Luego de
plantear la teoría sobre la ingeniería
de software, nos compete comenzar
con los primeros pasos hacia la
implementación.
Desde un comienzo, sabemos que
estamos en la rama o ciencia de la
informática y solemos asociar este
término solo al hardware o
programas, pero en realidad la
definición de “informática” es la
siguiente:

Es la ciencia que estudia el análisis y resolución


de problemas utilizando computadoras.
Y abarca los siguientes temas: arquitectura física y lógica de las
computadoras, las metodologías de análisis y diseño de sistemas de
software, lenguajes de programación, sistemas operativos, inteligencia
artificial, diseño, aplicación de base de datos etc.
La computadora es un dispositivo que recibe y transforma datos (de
un formato a otro) de entrada en datos de salida. La computadora tiene
capacidad de cálculo numérico y lógico, controlada por un programa
almacenado y con posibilidad de comunicación con el mundo exterior.
Al referirnos a la estructura interna y el procesamiento de datos es
posible que en muchos recursos bibliográficos nos encontremos con un
gráfico similar al siguiente:

3
PROGRAMACIÓN I

La memoria central se divide en Memoria de instrucciones, donde se


almacenan las órdenes o tareas que debe interpretar y ejecutar la
computadora y en Memoria de datos, donde se almacena la información
con la cual la computadora llevará a cabo las instrucciones (cálculos,
decisiones) necesarias para la resolución de problemas.
Entrada / Salida (E/S): representa los dispositivos que permiten a la
computadora interactuar con el mundo exterior. Por ejemplo: mouse,
pantalla, micrófono, teclado, etc.
Bus de comunicación: permite el paso de tres categorías de
información: datos, direcciones y control. Estas líneas de comunicación
permiten la comunicación interna y externa de datos, direcciones y
señales de control.
La unidad Aritmético - Lógica (ALU O UAL): es un subsistema que
tiene la capacidad de realizar cálculos numéricos y lógicos, por ejemplo:
suma, and, or, comparaciones, etc.
➔ El funcionamiento interno se explica de manera no tan específica
pero si ilustrada en el siguiente video: En el interior de tu
computadora

4
PROGRAMACIÓN I

De manera esquemática, la
computadora funciona de la siguiente
forma. Una serie infinita de pasos donde
se busca una instrucción (Mi), se
interpreta la instrucción (UC) y se
ejecuta la tarea, pudiendo ser por
medio de la ALU. Estas operaciones
pueden resultar en lectura/escritura de
la memoria de datos (Md) o e/s por los
periféricos.

De por sí, el mundo real es naturalmente complejo y en muchas


ocasiones un problema a resolver puede ser difícil de sintetizar. Una
de las definiciones de la palabra problema propuestas por la RAE es:
“Planteamiento de una situación cuya respuesta desconocida debe
obtenerse a través de métodos científicos.” es difícil encontrar autores
que definan el concepto de problema, pero si podemos encontrar las
características principales que debe poseer uno de manera definida:
● Una situación inicial.

● Una situación final u objetivo.

● Restricciones o pautas respecto a tareas, métodos, etc. sobre los


cuales hay acuerdos previos.
Tanto las características como la definición planteada nos hacen recordar
a los distintos procesos de software ¿no? Resolver un problema llevará a
realizar tareas de razonamientos más o menos complejos y no siempre
estarán relacionados a tareas rutinarias.
Fases en la resolución de problemas
El proceso de resolución de un problema con una computadora conduce a
la escritura de un programa y a su ejecución en la misma. Generalmente
se siguen estos pasos o etapas:

5
PROGRAMACIÓN I

● Análisis: Esta etapa consiste en familiarizarse con el problema y


analizar los requerimientos propuestos por el cliente o persona que
plantea el problema. Y más allá de hablar formalmente de
‘requerimientos’, es cuando nuestra mente se encarga de buscar
ideas con los datos que nos proporcionan.

● Diseño: Continuamos con el diseño de la solución que luego nos


llevará al desarrollo de un algoritmo.

● Codificación (implementación): la solución se escribe en


lenguaje de alto nivel y se obtiene un programa que se compila.

● Ejecución, verificación y depuración: El programa se ejecuta, se


comprueba que funcione de manera óptima y se depura revisando y
corrigiendo errores (bugs).

● Mantenimiento: el programa se actualizará y modificará que


cumpla con los requisitos solicitados en un principio.

● Documentación: en este documento se puede registrar las fases


de ciclo de vida del software (análisis, diseño e implementación),
manual de usuario, normas de mantenimiento.

6
PROGRAMACIÓN I

Comprendiendo algunos términos del gráfico


Lenguajes de programación, programa fuente y programa objeto y
compilación.
Un programa debe ser comprendido por la computadora, ya que será la
que ejecutará las distintas instrucciones que desarrollemos. Los lenguajes
utilizados para escribir programas son los lenguajes de programación,
desarrollemos los tres existentes:
● Lenguajes de máquina: es el lenguaje nativo de la computadora,
el cual es binario. Las instrucciones, las localizaciones de memoria,
los números y caracteres se representan por medio de cadenas de
ceros y unos (0 - 1). Los programas en lenguaje máquina podemos
encontrarlos convertidos al sistema decimal (base 10) o
hexadecimal (base 16).

● Lenguajes de bajo nivel: son más fáciles de utilizar que el


lenguaje máquina, dentro de esta clasificación podemos encontrar
el programa ensamblador, que traduce cada instrucción en este
lenguaje se utilizan códigos alfabéticos que se corresponden con las
instrucciones numéricas de la máquina. Por ejemplo: la sentencia
SUB la computadora la recibiría como 10110111.

● Lenguajes de alto nivel: estos están a medio camino entre el


lenguaje natural de los humanos y el lenguaje máquina. Fueron
desarrollados a mediados de los 50 para simplificar y perfilar el
proceso de programación. Estos suelen ser independientes, es decir,
que son portables. Algunos ejemplos de lenguaje: C, C++, Pascal,
Visual Basic, Java, entre otros.
El intérprete y el compilador
Ambos son programas que se encargan de traducir del lenguaje natural al
lenguaje máquina para que pueda ser comprendido y ejecutado por la
computadora, solo que lo realizan de forma distinta.
El intérprete, procesa y traduce cada instrucción para luego ser ejecutada.
Estas tareas las realiza instrucción por instrucción, por lo que se lo
considera un programa lento. El compilador lo que hace es traducir
primero el programa completo y luego lo ejecuta.
Programa objeto y programa fuente
El programa objeto es el programa que está en lenguaje máquina y que
ya puede ser ejecutado por la computadora. En cambio, el programa
fuente es el que escribe el desarrollador pero aún no puede ser ejecutado
porque no fue compilado a lenguaje máquina.

7
PROGRAMACIÓN I

Algoritmo
Un algoritmo es un método para resolver un problema mediante una serie
de pasos precisos, definidos y finitos.
Las características de un algoritmo son las siguientes:
● Preciso: indica el orden de realización en cada paso.

● Definido: si se ejecuta dos veces, se debe obtener el mismo


resultado.

● Finito: tiene un fin, es decir, un número determinado de pasos.


Los algoritmos se pueden expresar por fórmulas, diagramas de flujo o
pseudocódigo.
Para construir un programa, es necesario plantear previamente un diseño
del algoritmo. Es importante aclarar, que un algoritmo es independiente
del lenguaje de programación y de la computadora, ya que el lenguaje de
programación es el medio para expresar el algoritmo y la computadora
para ejecutarlo.
En la etapa de análisis que estudiamos previamente se decidía qué hace
el programa, y en esta etapa de diseño del algoritmo se determina cómo
lo hará.
Los métodos más eficaces de diseño son los que siguen el lema “divide y
vencerás” que funcionan tomando un problema complejo que se divide en
subproblemas y así sucesivamente hasta que se pueda implementar una
solución en la computadora. Este método se conoce como “diseño
descendente” (top-down) o “modular”.
Cada subprograma es resuelto mediante un módulo (subprograma) que
tiene un solo punto de entrada y un solo punto de salida. Los módulos
pueden ser planeados, codificados, comprobados y depurados
independientemente, incluso por distintos programadores y a
continuación combinarlos entre sí. el proceso implica la ejecución de los
siguientes pasos hasta que el programa se termina:
● Programar un módulo.
● Comprobar el módulo.
● Depurar el módulo (si es necesario).
● Combinar el módulo con los módulos anteriores.
A continuación, se adjunta un ejemplo de “diseño descendente” donde el
problema principal que se plantea es el de calcular longitud y superficie.
El cual se descompone en una entrada de datos, el cálculo de longitud, el

8
PROGRAMACIÓN I

cálculo de superficie y la salida que corresponde al resultado. Y en el


nivel más bajo encontramos fórmulas, datos y resultados finales.

Herramientas para diseñar algoritmos


Diagrama de flujo (flowchart)
Esta herramienta es una representación gráfica de un algoritmo y al ser
gráfica, es necesario que cumpla con las siguientes características:
● Sencillez: un método gráfico debe permitir la construcción de
diseños de algoritmos de manera fácil y sencilla.

● Claridad: debe ser lo suficientemente claro para que pueda ser


comprendido por otra persona, distinta al que lo diseñó.

● Normalización: la documentación de los diseños deben reconocer


y utilizar las mismas normas de documentación.

● Flexibilidad: todo método gráfico debe permitir que se pueda


realizar una modificación o incorporar nuevos elementos.
Los símbolos utilizados para confeccionar el diagrama de flujo han sido
normalizados por el Instituto Norteamericano de Normalización (ANSI) y
los más utilizados son los siguientes:

9
PROGRAMACIÓN I

El pseudocódigo es una herramienta de programación en la que las


instrucciones se escriben en palabras similares al inglés o español, que
facilitan tanto la escritura como la lectura de programas. En esencia, el
pseudocódigo se puede definir como un lenguaje de especificaciones
de algoritmos.

10
PROGRAMACIÓN I

¿Los algoritmos funcionan de manera secuencial? No, existen


construcciones algorítmicas que controlan el flujo del algoritmo. Esto
quiere decir que las instrucciones, si bien por lo general se ejecutan una a
una paso por paso, puede que necesiten llevarse a cabo más de una vez
para cumplir con el objetivo de la tarea.
Las estructuras básicas son las siguientes:
● Secuenciación.
● Selección.
● Repetición o iteración.
A continuación, veremos algunos ejemplos en los que implementaremos
los diagramas de flujo y el pseudocódigo, junto con las distintas
estructuras de control. Las palabras en negrita dentro del pseudocódigo
son reservadas, es decir, que las deben utilizar cuando agreguen una
estructura de control.

Secuenciación
La secuenciación es un algoritmo o parte del mismo donde las
instrucciones se ejecutan una a continuación de otra
Ejemplo en pseudocódigo:
Hacer una ensalada
Lavar verduras.
Cortar verduras.
Poner en el bowl.
Condimentar.

11
PROGRAMACIÓN I

Selección
Con esta estructura podemos seleccionar el sentido de la acción
involucrando la toma de decisiones, es decir, que vamos a evaluar las
condiciones que tenemos disponibles. Esta estructura ofrece tres tipos:
selección simple, selección doble y selección múltiple.
● Selección simple
En este caso debemos evaluar una condición y decidir si es
verdadera o es falsa. En el caso de que sea verdadera, se llevarán a
cabo una lista de instrucciones, de lo contrario se continúa con el
flujo.
Por ejemplo:
Se quiere ordenar una serie de libros en una biblioteca, si el estante
al cual pertenece un libro es muy alto se necesitará buscar una
escalera sino se continúa ordenando los libros.
Pseudocódigo
Agarrar libro
Ver tema del libro
Si (el estante es muy alto)
buscar escalera
fin si
ordenar libros

● Selección doble

12
PROGRAMACIÓN I

En este caso nuestra condición a evaluar tendrá dos alternativas a


elegir. Si es verdadera se ejecutará una serie de instrucciones y los
mismo si es falsa. En el pseudocódigo, el falso se refleja como “si
no”
Por ejemplo:
Tengo que ir a otra localidad a realizar un trámite y antes de salir
tengo que revisar si tengo nafta en el vehículo. En el caso que sea
verdadero continuo viaje, en caso contrario tengo que ir a la
estación de servicio. Cuando se cumplan cualquiera de las dos
condiciones puedo realizar el viaje.

Pseudocódigo
Subir al auto
Encender el auto
Revisar la cantidad de nafta
Si (tanque lleno)
comenzar viaje

sino (cargar nafta)


fin sino

Viajar

13
PROGRAMACIÓN I

● Selección múltiple
Esta estructura se aplica en casos en los que se puede seleccionar
más de dos opciones. Para ello se evalúa el dato de entrada y
dependiendo del valor, se ejecutarán las instrucciones.

Repetición o iteración
A estas estructuras se las conoce como bucle, lazo o loop. Dependiendo
de la condición, el flujo del algoritmo se verá alterado porque una
instrucción necesita que se repita más de una vez. El cuerpo del bucle se
conforma de la siguiente forma:
➢ Expresión condicional: condición a evaluar para determinar
la ejecución del bucle.

14
PROGRAMACIÓN I

➢ Cuerpo o bloque: son la/la instrucciones que se deberán


ejecutar de manera repetida mientras la condición sea
verdadera.

➢ Salida: en algún momento el ciclo debe finalizar y continuar a


la siguiente instrucción, esto lo debe asegurar la condición
planteada.
Dentro de este tipo de estructura podemos encontrar las siguientes: para,
mientras y hacer - mientras.
● Estructura mientras
Esta estructura se caracteriza porque su diseño permite el bloque
de instrucciones de 0 a n veces. Esto quiere decir que cuando la
condición establecida sea verdadera, el número de veces que se
ejecutará el bloque de instrucciones, será de uno como mínimo y n
como máximo, y para el caso que la condición sea falsa, éste bloque
no se ejecutará nunca.
Por ejemplo:
Quiero reponer azúcar en su tarro correspondiente y tengo que ver
la cantidad que contiene actualmente. Si está lleno, no lo cargo.
Pseudocódigo
Buscar tarro de azúcar
Mientras (tarro no esté lleno)
agregar una cucharada de azúcar
Dejar la cuchara

15
PROGRAMACIÓN I

● Estructura para
En este tipo de estructura, el número n de veces que se deben
ejecutar las acciones, es fijo y conocido de antemano.
Por ejemplo:
Necesito hacer 10 fotocopias de un trabajo para luego repartir a mis
compañeros y cuando termine de imprimir las guardaré en la
carpeta.
Pseudocódigo
Para (10 fotocopias)
agarrar trabajo
fotocopiar
fin para
Guardar en carpeta

16
PROGRAMACIÓN I

17
PROGRAMACIÓN I

Referencias bibliográficas:

● Aguilar, L (2008). “Fundamentos de programación”. McGraw - Hill.

● Madoz, M et al (2001). “Algoritmos, datos y programas”. Pearson

● Carrizo, A et al (s.f). “Resolución de problemas y algoritmos”

Estimados alumnos, hasta aquí llegamos con el


encuentro de hoy. Espero sus consultas y participación
en el foro. Les deseo una buena jornada.
¡Saludos!
Profesora Rocio Coccia.

18

También podría gustarte