Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Tecnicas de programacion, Apuntes de Algoritmos y Programación

Apunte de tecnicas para programar

Tipo: Apuntes

2018/2019

Subido el 02/04/2019

Tiago_Sanchez99
Tiago_Sanchez99 🇦🇷

1 documento

1 / 56

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Ministerio de Producción
Secretaría de Industria y Servicios
Subsecretaría de Servicios Tecnológicos y Productivos
y
Ministerio de Educación y Deportes
A través del
Analistas del Conocimiento
Dimensión Programador
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38

Vista previa parcial del texto

¡Descarga Tecnicas de programacion y más Apuntes en PDF de Algoritmos y Programación solo en Docsity!

Ministerio de Producción

Secretaría de Industria y Servicios

Subsecretaría de Servicios Tecnológicos y Productivos

y

Ministerio de Educación y Deportes

A través del

Analistas del Conocimiento

Dimensión Programador

Módulo Técnicas de Programación

Apunte del Módulo

Técnicas de Programación

  • DEFINICIÓN DEL MÓDULO.................................................................................................................. Tabla de Contenido
  • PRESENTACIÓN ......................................................................................................................................
  • INTRODUCCIÓN ..................................................................................................................................
  • ELEMENTOS INFORMÁTICOS ..............................................................................................................
  • EL SOFTWARE Y SUS CARACTERÍSTICAS ........................................................................................................
  • CARACTERÍSTICAS DEL SOFTWARE:
  • ESTRUCTURA INTERNA DE UNA COMPUTADORA ...........................................................................................
  • REDES DE COMPUTADORAS
  • PROGRAMACIÓN Y CONSTRUCCIÓN DE SOFTWARE
  • LOS SISTEMAS Y SU ENFOQUE
  • ¿POR QUÉ HABLAMOS DE SISTEMAS?
  • ¿QUÉ ES UN SISTEMA?...........................................................................................................................
  • CARACTERÍSTICAS DE LOS SISTEMAS...........................................................................................................
  • INTERCAMBIO ENTRE SISTEMAS
  • SISTEMAS TECNOLÓGICOS
  • ¿CÓMO SE CONSTRUYE EL SOFTWARE?
  • DISEÑO DE ALGORITMOS
  • ALGORITMOS.......................................................................................................................................
  • CONCEPTO
  • CARACTERÍSTICAS DE LOS ALGORITMOS
  • HERRAMIENTAS PARA LA REPRESENTACIÓN GRÁFICA DE LOS ALGORITMOS
  • DIAGRAMAS DE FLUJO............................................................................................................................
  • PSEUDOCÓDIGO
  • LENGUAJES DE PROGRAMACIÓN
  • CONCEPTO
  • TIPOS DE LENGUAJES DE PROGRAMACIÓN
  • EL LENGUAJE MÁQUINA
  • EL LENGUAJE DE BAJO NIVEL
  • LENGUAJES DE ALTO NIVEL
  • ¿QUÉ ES UN PROGRAMA?
  • PASOS PARA LA CONSTRUCCIÓN DE UN PROGRAMA
  • ELEMENTOS DE UN PROGRAMA................................................................................................................
  • DESARROLLO DE PROGRAMAS
  • ESTRUCTURAS DE PROGRAMACIÓN
  • ESTRUCTURA SECUENCIAL
  • ESTRUCTURA ALTERNATIVA
  • ESTRUCTURA REPETITIVA O ITERATIVA........................................................................................................
  • RECURSIVIDAD Módulo Técnicas de Programación
  • ESTRUCTURAS DE DATOS: PILAS, COLAS Y LISTAS
  • LISTAS
  • PILAS..................................................................................................................................................
  • COLAS
  • ÁRBOLES.............................................................................................................................................
  • ÁRBOLES BINARIOS
  • ALGORITMOS FUNDAMENTALES
  • ALGORITMOS DE ORDENACIÓN
  • ORDENAMIENTO POR INSERCIÓN
  • ALGORITMO DE LA BURBUJA
  • ORDENAMIENTO POR SELECCIÓN
  • ALGORITMO QUICK-SORT
  • ALGORITMOS DE BÚSQUEDA...................................................................................................................
  • BÚSQUEDA SECUENCIAL..........................................................................................................................
  • BÚSQUEDA BINARIA
  • ALGORITMOS DE RECORRIDO
  • FUENTES DE INFORMACIÓN

Módulo Técnicas de Programación

Definición del Módulo

Denominación de Módulo: Técnicas de Programación

Presentación

El módulo Técnicas de Programación tiene, como propósito general, iniciar a los estudiantes en la construcción de las capacidades técnicas en torno a la lógica de programación. Se constituye, así, en un espacio de aproximación y desarrollo de saberes fundamentales para la figura profesional de “Programador”.

Se parte conceptualmente de analizar problemas de base informática, con el fin que los estudiantes adquieran los conceptos y las técnicas de resolución de problemas, cuya lógica se utiliza y amplía en el módulo específico de Programación Orientada a Objetos.

En este contexto se entiende por Programación al método de resolución de problemas que utiliza algoritmos y un lenguaje de programación, respetando los principios del desarrollo de software con calidad, utilizados en el campo profesional de actuación de éste técnico.

La calidad en el desarrollo del software implica la modularización, la utilización de estructuras de datos adecuados al problema, las normas de estilo de programación y las pruebas de funcionamiento. Se considera que un programa está modularizado cuando está compuesto por subrutinas con fines específicos, comunicadas a través de parámetros. Las subrutinas son unidades lógicamente independientes que se invocan desde otras subrutinas o desde un programa principal.

Para la organización de la enseñanza de esta unidad curricular se han organizado los contenidos en tres bloques:

El bloque de elementos informáticos se centra en la lógica de la estructura de los datos; este bloque es fundante conceptualmente, tiene por objeto el tratamiento de los contenidos básicos esenciales que se utilizan en la escritura de algoritmos eficientes.

El bloque diseño de algoritmos aborda las técnicas de resolución de problemas computacionales o de programación, tomando como punto de partida problemas con cierto nivel de complejidad, para en un segundo momento, descomponerlos en problemas de menor complejidad reformulándolo en términos de un problema ya conocido.

El bloque Desarrollo de Programas presenta como núcleo central la elaboración y construcción de programas mediante la traducción o codificación de los algoritmos en un lenguaje adecuado al paradigma.

La organización del desarrollo curricular que se presenta en este documento, sigue una secuencia que toma como punto de partida a las estructuras de datos que se adaptan al problema a resolver, posteriormente se diseñan y representan los algoritmos que lo resuelven y por último se codifican estos algoritmos en un lenguaje de programación, dando como resultado el programa.

El propósito general de esta unidad curricular es que los estudiantes construyan habilidades y conocimientos para resolver problemas e implementar sus soluciones en un lenguaje de programación de propósito general, logrando código legible y mantenible.

Módulo Técnicas de Programación

Introducción

Cada uno de los tres últimos siglos ha estado dominado por una nueva tecnología. El siglo xviii fue la época de los grandes sistemas mecánicos que dieron paso a la Revolución Industrial. El siglo xix fue la era de la máquina de vapor. Durante el siglo xx, la tecnología clave fue la recopilación, procesamiento y distribución de información. Entre otros desarrollos vimos la instalación de las redes telefónicas a nivel mundial, la invención de la radio y la televisión, el nacimiento y crecimiento sin precedentes de la industria de la computación, el lanzamiento de satélites de comunicaciones y, desde luego, Internet.

En 1977 Ken Olsen era presidente de Digital Equipment Corporation, en ese entonces la segunda empresa distribuidora de computadoras más importante del mundo (después de IBM). Cuando se le preguntó por qué Digital no iba a incursionar a lo grande en el mercado de las computadoras personales, dijo: “No hay motivos para que una persona tenga una computadora en su hogar”. La historia demostró lo contrario y Digital desapareció. En un principio, las personas compraban computadoras para el procesamiento de palabras y para juegos. En los últimos años, probablemente la razón más importante sea acceder a Internet.

En la actualidad disponemos de un abanico de dispositivos tecnológicos que facilitan las tareas cotidianas, desde electrodomésticos que simplifican las tareas del hogar hasta computadoras, notebooks, smartphones y tablets que nos permiten trabajar, comunicarnos a través de Internet, esparcirnos y mucho más. Cada uno de ellos ha pasado por un proceso de ideación, planificación, desarrollo, manufactura y logística que permitieron que el producto terminado esté disponible para nosotros.

En 1965, Gordon Moore (Cofundador de Intel) afirmó que la tecnología tenía futuro, que el número de transistores en los circuitos integrados, uno de los componentes esenciales en el procesador de una computadora, se duplicaba cada año y que la tendencia continuaría durante las siguientes dos décadas. Aunque luego disminuyó este periodo a 2 años, esta ley empírica se ha cumplido y se traduce en que tengamos cada día dispositivos más pequeños, más veloces y a un costo más bajo. Tanto es así, que empresas de electrónica ya se encuentran desarrollando electrodomésticos con programas inteligentes que pueden conectarse a través de Internet, de forma tal de que podamos consultar el estado del trabajo de nuestro lavarropas desde la oficina o en viaje.

A pesar de que la industria de la computación es joven si se la compara con otras (como la automotriz y la de transporte aéreo), las computadoras han progresado de manera espectacular en un periodo muy corto. Durante las primeras dos décadas de su existencia, estos sistemas estaban altamente centralizados y por lo general se encontraban dentro de un salón grande e independiente. Era común que este salón tuviera paredes de vidrio, a través de las cuales los visitantes podían mirar boquiabiertos la gran maravilla electrónica que había en su interior. Una empresa o universidad de tamaño mediano apenas lograba tener una o dos computadoras, mientras que las instituciones muy grandes tenían, cuando mucho, unas cuantas docenas. La idea de que en un lapso de 40 años se produjeran en masa miles de millones de computadoras mucho más poderosas y del tamaño de una estampilla postal era en ese entonces mera ciencia ficción.

Módulo Técnicas de Programación

Elementos informáticos

El Software y sus características

El software en sus comienzos era la parte insignificante del hardware, lo que venía como añadidura, casi como regalo. Al poco tiempo adquirió una entidad propia. En la actualizad, el software es la tecnología individual más importante en el mundo. Nadie en la década de 1950 podría haber predicho que el software se convertiría en una tecnología indispensable en los negocios, la ciencia, la ingeniería; tampoco podría preverse que una compañía de software podría volverse más grande e influyente que la mayoría de las compañías de la era industrial; que una red construida con software, llamada Internet cubriría y cambiaría todo, desde la investigación bibliográfica hasta las compras de los consumidores y los hábitos de las personas. Nadie podría haber imaginado que estaría relacionado con sistemas de todo tipo: transporte, medicina, militares, industriales, entretenimiento, automatización de hogares.

Una definición formal de software según la IEEE (Instituto de Ingeniería Eléctrica y Electrónica) es la siguiente:

Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de las operaciones de un sistema de computación.

El software puede definirse como “el alma y cerebro de la computadora, la corporización de las funciones de un sistema, el conocimiento capturado acerca de un área de aplicación, la colección de los programas, y los datos necesarios para convertir a una computadora en una máquina de propósito especial diseñada para una aplicación particular, y toda la información producida durante el desarrollo de un producto de software”. El software viabiliza el producto más importante de nuestro tiempo: la información.

Características del software:

  1. El software es intangible, es decir, que se trata de un concepto abstracto.
  2. Tiene alto contenido intelectual.
  3. Su proceso de desarrollo es humano intensivo, es decir que la materia prima principal radica en la mente de quienes lo crean.
  4. El software no exhibe una separación real entre investigación y producción.
  5. El software puede ser potencialmente modificado, infinitamente.
  6. El software no se desgasta
  7. La mayoría del software, en su mayoría, aún se construye a medida.
  8. El software no se desarrolla en forma masiva, debido a que es único.
Estructura Interna de una Computadora

Una computadora moderna consta de uno o más procesadores, una memoria principal, discos, impresoras, un teclado, un ratón, una pantalla o monitor, interfaces de red y otros dispositivos de entrada/salida. En general es un sistema complejo. Si todos los programadores de aplicaciones tuvieran que comprender el funcionamiento de todas estas partes, no escribirían código alguno. Es más: el trabajo de administrar todos estos componentes y utilizarlos de manera óptima es una tarea

Módulo Técnicas de Programación

Los dispositivos de entrada/salida y dispositivos de almacenamiento masivo o auxiliar (memoria externa) son: unidad de discos (disquetes, CD-ROM, DVD, discos duros, etc.), videocámaras, memorias flash, USB, etc.

La memoria central o simplemente memoria (interna o principal) se utiliza para almacenar información (RAM, del inglés Random Access Memory). En general, la información almacenada en la memoria puede ser de dos tipos: instrucciones de un programa y datos con los que operan las instrucciones. Por ejemplo, para que un programa se pueda ejecutar (correr, funcionar..., en inglés, run), debe ser situado en la memoria central, en una operación denominada carga (load) del programa. Después, cuando se ejecuta el programa, cualquier dato a procesar se debe llevar a la memoria mediante las instrucciones del programa. En la memoria central, hay también datos diversos y espacio de almacenamiento temporal que necesita el programa cuando se ejecuta a fin de poder funcionar.

La memoria central de una computadora es una zona de almacenamiento organizada en centenares o millares de unidades de almacenamiento individual o celdas. La memoria central consta de un conjunto de celdas de memoria (estas celdas o posiciones de memoria se denominan también palabras, aunque no guardan analogía con las palabras del lenguaje). El número de celdas de memoria de la memoria central, depende del tipo y modelo de computadora; hoy día el número suele ser millones (512, 1.024, etc.). Cada celda de memoria consta de un cierto número de bits (normalmente 8, un byte).

La unidad elemental de memoria se llama byte. Un byte tiene la capacidad de almacenar un carácter de información, y está formado por un conjunto de unidades más pequeñas de almacenamiento denominadas bits, que son dígitos binarios que pueden asumir como valor un 0 o un 1.

Siempre que se almacena una nueva información en una posición, se destruye (desaparece) cualquier información que en ella hubiera y no se puede recuperar. La dirección es permanente y única, el contenido puede cambiar mientras se ejecuta un programa.

La memoria central de una computadora puede tener desde unos centenares de miles de bytes hasta millones de bytes. Como el byte es una unidad elemental de almacenamiento, se utilizan múltiplos de potencia de 2 para definir el tamaño de la memoria central: Kilobyte (KB o Kb) igual a 1.024 bytes (2^10 ) —prácticamente se consideran 1.000—; Megabyte (MB o Mb) igual a 1.024 × 1.024 bytes = = 1.048. (2^20 ) —prácticamente se consideran 1.000.000; Gigabyte (GB o Gb) igual a 1.024 MB (2^30 ), 1.073.741.824 = prácticamente se consideran 1.000 millones de MB.

Tabla 1: Unidades de medida para el almacenamiento en la memoria

La Unidad Central de Proceso UCP, o procesador, dirige y controla el proceso de información realizado por la computadora. La UCP procesa o manipula la información almacenada en memoria; puede recuperar información desde memoria (esta información son datos o instrucciones de programas) y también puede almacenar los resultados de estos procesos en memoria para su uso posterior.

Módulo Técnicas de Programación

Más adelante veremos en profundidad cómo los programas hacen uso de la memoria para almacenar o leer datos a fin de utilizarlos para el desarrollo de sus funciones.

Redes de Computadoras

La fusión de las computadoras y las comunicaciones ha tenido una profunda influencia en cuanto a la manera en que se organizan los sistemas de cómputo. El concepto una vez dominante del “centro de cómputo” como un salón con una gran computadora a la que los usuarios llevaban su trabajo para procesarlo es ahora totalmente obsoleto, (aunque los centros de datos que contienen miles de servidores de Internet se están volviendo comunes). El viejo modelo de una sola computadora para atender todas las necesidades computacionales de la organización se ha reemplazado por uno en el que un gran número de computadoras separadas pero interconectadas realizan el trabajo. A estos sistemas se les conoce como redes de computadoras.

Se dice que dos computadoras están interconectadas si pueden intercambiar información. La conexión no necesita ser a través de un cable de cobre; también se puede utilizar fibra óptica, microondas, infrarrojos y satélites de comunicaciones. Las redes pueden ser de muchos tamaños, figuras y formas, como veremos más adelante. Por lo general se conectan entre sí para formar redes más grandes, en donde Internet es el ejemplo más popular de una red de redes.

Imaginemos el sistema de información de una empresa como si estuviera constituido por una o más bases de datos con información de la empresa y cierto número de empleados que necesitan acceder a esos datos en forma remota. En este modelo, los datos se almacenan en poderosas computadoras denominadas servidores. A menudo estos servidores están alojados en una ubicación central y un administrador de sistemas se encarga de su mantenimiento. Por el contrario, los empleados tienen en sus escritorios máquinas más simples conocidas como clientes, con las cuales acceden a los datos remotos, por ejemplo, para incluirlos en las hojas de cálculo que desarrollan (algunas veces nos referiremos al usuario humano del equipo cliente como el “cliente”, aunque el contexto debe dejar en claro si nos referimos a la computadora o a su usuario). Las máquinas cliente y servidor se conectan mediante una red, como se muestra en la figura 2.

Figura 2: Esquema de una red de computadoras

A esta disposición se le conoce como modelo cliente-servidor. Es un modelo ampliamente utilizado y forma la base de muchas redes. La realización más popular es la de una aplicación web, en la cual el servidor genera páginas web basadas en su base de datos en respuesta a las solicitudes de los clientes que pueden actualizarla. El modelo cliente-servidor es aplicable cuando el cliente y el servidor se

Módulo Técnicas de Programación

Sin embargo, más allá de que el lenguaje Assembler es más sencillo que el lenguaje máquina, distintos tipos de procesadores tienen diferentes conjuntos de instrucciones lo que se traduce en distintos dialectos de Assembler de una computadora a otra.

La solución para hacer la tarea de programación más sencilla y posibilitar a los programas funcionar en distintos tipos de computadoras es utilizar lenguajes de alto nivel, que son más similares al lenguaje natural que utilizamos para comunicarnos diariamente y por motivos históricos estos lenguajes utilizan palabras del idioma inglés. Uno de los primeros lenguajes de programación de alto nivel fue FORTRAN (del inglés FORmula TRANslation, o traducción de fórmulas) que fue desarrollado en los comienzos de los años 50 para ayudar a resolver problemas matemáticos. Desde ese entonces, una gran cantidad de lenguajes de programación de alto nivel han sido creados para abordar distintos tipos de problemas y solucionar las necesidades de distintos tipos de usuarios. Algunos de ellos incluyen a COBOL, también desarrollado en los 50 para abordar aplicaciones empresariales y de negocios; BASIC en los 60 para programadores recién iniciados, Pascal en los 70 para problemas científicos, C, C++ y muchos otros. En este material nos centraremos en el lenguaje Java, también de alto nivel y de propósito general: es decir que puede usarse para una gran variedad de problemas y rubros.

Módulo Técnicas de Programación

Los sistemas y su enfoque

¿Por qué hablamos de sistemas?

En la primera mitad del siglo XX, surgió la necesidad de diseñar métodos de investigación y estudio de los fenómenos complejos a causa de una acumulación de problemáticas en las que los métodos de investigación de las ciencias particulares se mostraban insuficientes. Por un lado, los nuevos sistemas de producción que incluían varias automatizaciones, el manejo de grandes cantidades de energía (termoeléctrica, nuclear…) que requería de especialistas de variadas ramas, el desarrollo y organización de transporte terrestre, marítimo y aéreo y otros fenómenos. Por otro, los grandes desarrollos científicos en la física (relatividad, estructura atómica, mecánica cuántica), biología (genética, evolución, estudio de poblaciones), química (teoría del enlace de Lewis, tabla periódica, estructura cristalina), matemática (álgebra de Boole, desarrollo del cálculo, problemas de Hilbert). Estas grandes revoluciones en el hacer y el pensar hicieron necesario el desarrollo de un enfoque complejo para la investigación de fenómenos complejos. Así nació el enfoque sistémico , sustentado por la Teoría General de los Sistemas (TGS) formulada por Ludwig von Bertalanffy a mediados del siglo XX.

Bertalanffy se dedicó especialmente a los organismos como sistemas biológicos, pero luego generalizó su estudio a todo tipo de sistemas. De tal manera que hoy se utiliza el término sistema en todas las áreas del conocimiento humano.

¿Qué es un Sistema?

Llamamos sistema a todo conjunto de elementos relacionados entre sí –puede ser por una finalidad en común-, que tienen un cierto orden u organización y que cumplen una función.

Los sistemas tienen composición (los elementos que lo forman), una estructura interna dada por el conjunto de relaciones entre sus componentes. Y también tienen un entorno o ambiente que es el conjunto de cosas que no pertenecen al sistema pero que actúan sobre él o sobre las que él actúa intercambiando materia, energía e información (MEI).

Figura 4: Elementos de un sistema

Los sistemas están inmersos en un entorno o ambiente, que es el conjunto de elementos que está fuera del sistema, es decir que no pertenecen al sistema pero que actúan sobre él o sobre las que el sistema actúa intercambiando materia, energía e información (MEI).

Módulo Técnicas de Programación

Figura 6: Sistemas y Subsistemas

Intercambio entre sistemas

Los sistemas intercambian entre sí materia, energía e información (MEI). Para que se dé este intercambio es necesario que MEI atraviese los límites del sistema hacia (o desde) el entorno. Si el sistema intercambia con el medio se dice que es abierto , de lo contrario se considera cerrado.

En sistemas cerrados cualquier estado final está determinado por sus condiciones iniciales, ya que no hay modo de que el entorno actúe sobre él. Si un sistema cerrado tampoco intercambia energía se dice que es aislado. En realidad, el único sistema que se considera absolutamente aislado es el universo. De igual modo, muchos sistemas mecánicos e informáticos pueden considerarse razonablemente cerrados.

Los sistemas abiertos , en cambio, pueden, crecer, cambiar, adaptarse al ambiente, incluso algunos reproducirse. Si un sistema posee la organización necesaria para controlar su propio desarrollo, asegurando la continuidad de su composición y estructura ( homeostasis ) y la de los flujos y transformaciones con que funciona ( homeorresis ) –mientras las perturbaciones producidas desde su entorno no superen cierto grado–, entonces el sistema es autopoyético. Los seres vivos, los ecosistemas y organizaciones sociales pueden considerarse sistemas abiertos.

Estos flujos de MEI se pueden representar en diagramas como el siguiente

Figura 7: Entradas y Salidas

Para clarificar, las líneas de los diferentes flujos pueden representarse por diferentes colores o trazos.

Este es el nivel cero de representación de un sistema, con las entradas y salidas de MEI que atraviesan sus límites. Este tipo de representaciones se denomina diagrama de entrada y salida (E/S o U/O) o diagrama de caja negra , ya que no interesa mostrar qué sucede dentro del sistema.

Módulo Técnicas de Programación

Sistemas tecnológicos

Los sistemas tecnológicos , son aquellos diseñados por los seres humanos para que cumplan con una finalidad específica. Por eso se dice que son sistemas teleológicos artificiales (del griego telos = fin). La orientación para al fin que se busca suele definir la propiedad emergente del sistema tecnológico. En el ejemplo del automóvil, la propiedad emergente de marchar también se busca como finalidad o propósito del sistema.

Es conveniente aclarar que los sistemas son recortes de la realidad que alguien se propone estudiar o considerar; a ese recorte se le llama Abstracción. En algunos sistemas tecnológicos como un automóvil es sencillo identificar este recorte. Sin embargo, en la red de generación y distribución de energía eléctrica del país no resulta tan sencillo.

Algunos sistemas tecnológicos se caracterizan por procesar materia: son los sistemas de procesamiento de materia (SM). Estos están diseñados para producir, procesar, generar, transformar o distribuir materiales. Las industrias, las huertas, las licuadoras, etc. pueden considerarse SM.

Otros se caracterizan por procesar energía, los sistemas de procesamiento de energía (SE). Estos están diseñados para generar, transformar, distribuir energía. Los ventiladores, automóviles, represas hidroeléctricas, explosivos, etc. pueden considerarse SE.

Los que se caracterizan por procesar información se llaman sistemas de información (SI). Están diseñados con el fin de generar, trasformar y distribuir información entre otras tareas. Los sistemas que controlan los automóviles, las redes sociales, los sistemas de punto de venta, el comercio electrónico, por mencionar algunos, son ejemplos de SI.

Desde la aparición del software, los SI han incorporado el software para hacer más eficiente su funcionamiento a un grado tal que se los denomina Sistemas Informáticos, acoplando la palabra “automático” a la palabra “información”.

¿Cómo se construye el Software?

El software, como cualquier otro producto, se construye aplicando un proceso que conduzca a un resultado de calidad, que satisfaga las necesidades de quienes lo utilizan. Un proceso de desarrollo de software es una secuencia estructurada de actividades que conduce a la obtención de un producto de software. En definitiva, un proceso define quién está haciendo qué, cuándo y cómo alcanzar un determinado objetivo. En este caso el objetivo es construir un producto de software nuevo o mejorar uno existente.

Figura 9: Proceso de Construcción del Software

Módulo Técnicas de Programación

Diseño de Algoritmos

El hombre, en el día a día, se enfrenta constantemente a diferentes problemas que debe solucionar y para lograr solucionarlos hace uso de herramientas que le facilitan la tarea. Así, podemos pensar el uso de una calculadora para poder sumar el precio de los productos en un local y así cobrarle al cliente.

Al igual que la calculadora, la computadora también sirve para resolver problemas, pero la diferencia está en la capacidad de procesamiento de las computadoras, que hace que se puedan resolver problemas de gran complejidad, que, si los quisiéramos resolver manualmente, nos llevaría mucho tiempo o ni siquiera podríamos llegar a resolverlos.

Un programador es antes que nada una persona que resuelve problemas; el programador procede a resolver un problema, a partir de la definición de un algoritmo y de la traducción de dicho algoritmo a un programa que ejecutará la computadora.

En la oración anterior se nombran algunos conceptos que debemos profundizar:

Algoritmo : un algoritmo es un método para resolver un problema, que consiste en la realización de un conjunto de pasos lógicamente ordenados tal que, partiendo de ciertos datos de entrada, permite obtener ciertos resultados que conforman la solución del problema. Así, como en la vida real, cuando tenemos que resolver un problema, o lograr un objetivo, por ejemplo: “Tengo que atarme los cordones”, para alcanzar la solución de ese problema, realizamos un conjunto de pasos, de manera ordenada y secuencial. Es decir, podríamos definir un algoritmo para atarnos los cordones de la siguiente forma:

  1. Ponerme las zapatillas.
  2. Agarrar los cordones con ambas manos.
  3. Hacer el primer nudo.
  4. Hacer un bucle con cada uno de los cordones.
  5. Cruzar los dos bucles y ajustar.
  6. Corroborar que al caminar los cordones no se sueltan y la zapatilla se encuenta correctamente atada.

Figura 11: Algoritmo gráfico para atarse los cordones

El concepto de algoritmo es fundamental en el proceso de programación de una computadora, pero si nos detenemos a observar a nuestro alrededor, así como el ejemplo anterior podemos descubrir muchos otros: nos están dando un algoritmo cuando nos indican la forma de llegar a una dirección dada, seguimos algoritmos cuando conducimos un automóvil o cualquier tipo de vehículo. Todos los

Módulo Técnicas de Programación

procesos de cálculo matemático que normalmente realiza una persona en sus tareas cotidianas, como sumar, restar, multiplicar o dividir, están basados en algoritmos que fueron aprendidos en la escuela primaria. Como se ve, la ejecución de algoritmos forma parte de la vida moderna.

Por otro lado, la complejidad de los distintos problemas que podamos abordar puede variar desde muy sencilla a muy compleja, dependiendo de la situación y la cantidad de elementos que intervienen. En casos de mayor complejidad suele ser una buena solución dividir al problema en diferentes subproblemas que puedan ser resueltos de manera independiente. De esta forma la solución final al problema inicial será determinada por las distintas soluciones de los problemas más pequeños cuya resolución es más sencilla.

Programa : luego de haber definido el algoritmo necesario, se debe traducir dicho algoritmo en un conjunto de instrucciones, entendibles por la computadora, que le indican a la misma lo que debe hacer; este conjunto de instrucciones conforma lo que se denomina, un programa.

Para escribir un programa se utilizan lenguajes de programación, que son lenguajes que pueden ser entendidos y procesados por la computadora. Un lenguaje de programación es tan sólo un medio para expresar un algoritmo y una computadora es sólo 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.

Algoritmos

Concepto Es un método para resolver un problema, que consiste en la realización de un conjunto de pasos lógicamente ordenados, tal que, partiendo de ciertos datos de entrada, permite obtener ciertos resultados que conforman la solución del problema.

Características de los algoritmos

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

  • Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
  • Un algoritmo debe estar específicamente definido. Es decir, si se ejecuta un mismo algoritmo dos veces, con los mismos datos de entada, se debe obtener el mismo resultado cada vez.
  • Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos. Debe tener un inicio y un final.
  • Un algoritmo debe ser correcto: el resultado del algoritmo debe ser el resultado esperado.
  • Un algoritmo es independiente tanto del lenguaje de programación en el que se expresa como de la computadora que lo ejecuta.