0% encontró este documento útil (0 votos)
49 vistas30 páginas

Semana 01 U1

Proyecto de tesis

Cargado por

jowar
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)
49 vistas30 páginas

Semana 01 U1

Proyecto de tesis

Cargado por

jowar
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

UNIVERSIDAD DE CARABOBO

FACULTAD DE INGENIERÍA
DEPARTAMENTO DE COMPUTACIÓN
CÁTEDRA DE COMPUTACIÓN I

Unidad 1
Análisis de un problema
En esta unidad se presenta una introducción a los conceptos básicos
del área de la computación y un enfoque práctica para la resolución de
problemas en el computador.

Los problemas se resolverán implementando tres etapas: La entrada


definida por la pregunta: ¿qué se conoce?, el proceso dándole respuesta a
¿cómo lograrlo? Y la salida especificando ¿qué se quiere?

Octubre de 2022
FUNDAMENTOS DE PROGRAMACIÓN

Con aplicaciones a la Ingeniería

Libro de estudio de la asignatura Computación I.

Fundamentos de Programación con Aplicaciones a la Ingeniería © 2022 by Alejandro


Bolívar is licensed under CC BY-NC 4.0

Se permite la copia, uso y distribución de este ejemplar, bajo los términos


de la licencia Creative Commons Atribución 4.0.
1 Contenido
2 Conceptos básicos de programación .............................................................................. 2
2.1 La computadora ............................................................................................ 2
2.2 ¿Cómo maneja la información un computador? ........................................... 2
2.3 Unidades de medida de la información almacenada. .................................... 5
3 Partes del computador .................................................................................................... 7
3.1 Hardware de una computadora ..................................................................... 7
3.2 Software ........................................................................................................ 9
3.3 Traductores de lenguaje: el proceso de traducción de un programa. .......... 10
3.4 Programa y dato .......................................................................................... 12
3.5 Fases en la resolución de problemas. .......................................................... 12
3.5.1 Análisis Del Problema ........................................................................... 15
3.5.2 Diseño del algoritmo ............................................................................. 18
3.5.3 Codificación de un programa ................................................................ 21
3.5.4 Compilación y ejecución de un programa ............................................. 22
3.5.5 Verificación y depuración de un programa ........................................... 22
3.5.6 Documentación y mantenimiento .......................................................... 23
3.6 Resumen...................................................................................................... 24
4 Referencias ................................................................................................................... 27
Objetivos de la unidad:

2 Conceptos básicos de programación

2.1 La computadora

Una computadora es un dispositivo electrónico, utilizado para procesar información


y obtener resultados, capaz de ejecutar cálculos y tomar decisiones a una velocidad de
millones de veces más rápida en comparación a un ser humano. La computadora está
conformada por dos partes: hardware y software. El hardware es la parte tangible mientras
que el software es el conjunto de programas que indican a la computadora las tareas que debe
realizar. Las computadoras procesan datos bajo el control de un conjunto de instrucciones
denominadas programas de computadora. Estos programas controlan y dirigen a la
computadora para que realice un conjunto de acciones (instrucciones) especificadas por
personas especializadas, llamadas programadores de computadoras (Joyanes Aguilar, 2008).

2.2 ¿Cómo maneja la información un computador?

En vista a la naturaleza de la computadora, ella no es capaz de manejar la información


de la misma manera como lo hacen los seres humanos, es decir, en letras, palabras y números.
Se hizo necesario, entonces, establecer una relación entre la manera que maneja la
información una computadora y la manera como la maneja el ser humano. La computadora,
como dispositivo electrónico, establece dos posibles valores de información representados
simbólicamente a través de los dígitos 0 y 1; estos valores representan, dentro de la realidad,
ausencia o presencia de voltaje o corriente dentro de la computadora.

Ausencia (0) Presencia (1)


●●●
¿Cómo maneja la información un computador?

Desde el punto de vista matemático, la computadora maneja la información en un


sistema de numeración BINARIO, es decir, dos dígitos; por otro lado, los seres humanos
manejan la información numérica en un sistema de numeración DECIMAL, es decir, 10
dígitos. El dígito binario recibe el nombre de BIT en el contexto de la ciencia de la
computación. La palabra Bit es el acrónimo de BInary digiT. (Dígito binario). La Real
Academia Española (RAE) ha aceptado la palabra bit con el plural bits.

Si se toma en cuenta que la información que maneja el ser humano comprende un


abecedario, con el cual se forman palabras, un sistema de numeración Decimal, con el cual
se forman números y además, para la comprensión de la lectura, requiere de símbolos
gramaticales y de ortografía, aunado a otros símbolos incluidos por las diversas ciencias
exacta como la matemática, la física, etc., es fácil deducir que un dígito binario no puede
representar a todo este cúmulo de información que día a día manejan los seres humanos. De
la misma manera que el ser humano combina las letras para formar palabras o combina
dígitos para formar números, los diseñadores iniciales de las computadoras decidieron formar
números binarios como resultado de la combinación de dígitos binarios.

A diferencia de la forma como el ser humano crea


sus palabras y números, la computadora se diseñó para
trabajar con palabras de igual cantidad de dígitos binarios.
Esta cantidad fue definida por Werner Buchholz en 1957
como números binarios de 8 dígitos y lo bautizó con el
nombre de BYTE. La relación entre la computadora y el ser
humano fue definida dentro de lo que se conoce como
Tabla ASCII (American Standard Code for Information
Interchange) que fue publicada como estándar por primera
vez en 1967 y fue actualizado por última vez en 1986 (ver Tabla 1). En la actualidad define
códigos para 33 caracteres no imprimibles, de los cuales la mayoría son caracteres de control

3
Conceptos básicos de programación
¿Cómo maneja la información un computador?

obsoletos que tienen efecto sobre cómo se procesa el texto, más otros 95 caracteres
imprimibles que les siguen en la numeración (empezando por el carácter espacio).

Tabla 1 ASCII de caracteres imprimibles.

Dec Hex Car Dec Hex Car Dec Hex Car Dec Hex Car Dec Hex Car Dec Hex Car
32 20 espacio 48 30 0 64 40 @ 80 50 P 96 60 ` 112 70 p
33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q
34 22 " 50 32 2 66 42 B 82 52 R 98 62 b 114 72 r
35 23 # 51 33 3 67 43 C 83 53 S 99 63 c 115 73 s
36 24 $ 52 34 4 68 44 D 84 54 T 100 64 d 116 74 t
37 25 % 53 35 5 69 45 E 85 55 U 101 65 e 117 75 u
38 26 & 54 36 6 70 46 F 86 56 V 102 66 f 118 76 v
39 27 ' 55 37 7 71 47 G 87 57 W 103 67 g 119 77 w
40 28 ( 56 38 8 72 48 H 88 58 X 104 68 h 120 78 x
41 29 ) 57 39 9 73 49 I 89 59 Y 105 69 i 121 79 y
42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z
43 2B + 59 3B ; 75 4B K 91 5B [ 107 6B k 123 7B {
44 2C , 60 3C < 76 4C L 92 5C \ 108 6C l 124 7C |
45 2D - 61 3D = 77 4D M 93 5D ] 109 6D m 125 7D }
46 2E . 62 3E > 78 4E N 94 5E ^ 110 6E n 126 7E ~
47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o

Observe en la tabla la relación que existe entre los Byte y las letras del alfabeto. Desde
el punto de vista del sistema numérico binario, la letra A mayúscula es menor que la letra B
mayúscula y así sucesivamente; es decir que estas relaciones le permitirán a la computadora
ordenar alfabéticamente una serie de nombres, ya que los conjuntos de Byte que las
componen poseen la misma relación que el alfabeto.

A medida que la tecnología informática se difundió a lo largo del mundo, se


desarrollaron diferentes estándares y las empresas desarrollaron muchas variaciones del
código ASCII para facilitar la escritura de lenguas diferentes al inglés que usaran alfabetos
latinos. Se pueden encontrar algunas de esas variaciones clasificadas como "ASCII
Extendido". Estos nuevos símbolos corresponden a los bytes cuyo valor decimal está en el
rango de 128 a 255. Dentro de estos nuevos símbolos está la eñe mayúscula y minúscula, las
vocales acentuadas, símbolos gramaticales y símbolos de otras lenguas diferentes al
castellano.

La Real Academia Española (RAE) define la palabra Byte, como la unidad de


información compuesta generalmente de ocho bits

4
●●●
Unidades de medida de la información almacenada.

2.3 Unidades de medida de la información almacenada.

La memoria principal es uno de los componentes más importantes de una


computadora y sirve para almacenamiento de información (datos y programas). Existen dos
tipos de memoria y de almacenamiento: Almacenamiento principal (memoria principal o
memoria central) y almacenamiento secundario o almacenamiento masivo (discos, cintas,
etc.).

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).
Cada palabra puede ser un grupo de 8 bits, 16 bits, 32 bits o incluso 64 bits, en las
computadoras más modernas y potentes. Si la palabra es de 8 bits se conoce como byte. El
término bit (dígito binario)10 se deriva de las palabras inglesas “binary digit” y es la unidad
de información más pequeña que puede tratar una computadora. El término byte es muy
utilizado en la jerga informática y, normalmente, las palabras de 16 bits se suelen conocer
como palabras de 2 bytes, y las palabras de 32 bits como palabras de 4 bytes.

La memoria central de una computadora puede tener desde unos centenares de


millares de bytes hasta millones de bytes. Como el byte es una unidad elemental de
almacenamiento, se utilizan múltiplos para definir el tamaño de la memoria central: kilobyte
(kB) igual a 1.024 bytes11 (210), Megabyte (MB) igual a 1.024 × 1.024 bytes (220 =
1.048.576), Gigabyte (GB) igual a 1.024 MB (230 = 1.073.741.824). Las abreviaturas MB,
GB y TB se han vuelto muy populares como unidades de medida de la potencia de una
computadora.

La aplicación de estos prefijos representa un mal uso de la terminología de medidas,


ya que en otros campos las referencias a las unidades son potencias de 10. Por ejemplo, las
medidas en distancias, kilómetro (km) se refiere a 1.000 metros, las medidas de frecuencias,
Megahercio (MHz) se refieren a 1.000.000 de hercios. En la jerga informática popular para
igualar terminología, se suele hablar de 1 kB como 1.000 bytes y 1 MB como 1.000.000 de
bytes y un 1 GB como 1.000 millones de bytes, sobre todo para correspondencia y fáciles

5
Conceptos básicos de programación
Unidades de medida de la información almacenada.

cálculos mentales, aunque como se observa en la Tabla 2 estos valores son sólo
aproximaciones prácticas (Joyanes Aguilar, 2008).

Tabla 2. Unidades de medida de almacenamiento

Byte Byte (B) equivale a 8 bits


Kilobyte Kbyte (kB) equivale a 1.024 bytes (103)
Megabyte Mbyte (MB) equivale a 1.024 Kbytes (106)
Gigabyte Gbyte (GB) equivale a 1.024 Mbytes (109)
Terabyte Tbyte (TB) equivale a 1.024 Gbytes (1012)
Petabyte Pbyte (PB) equivale a 1.024 Tbytes (1015)
Exabyte Ebyte (EB) equivale a 1.024 Pbytes (1018)
Zettabyte Zbyte (ZB) equivale a 1.024 Ebytes (1021)
Yotta Ybyte (YB) equivale a 1.024 Zbytes (1024)
1 Tb = 1.024 Gb; 1 GB = 1.024 Mb = 1.048.576 kb = 1.073.741.824 b

6
3 Partes del computador

3.1 Hardware de una computadora

El hardware se refiere a todos los componentes físicos (que se pueden tocar), en el


caso de una computadora personal serían el monitor, teclado, la placa base, el
microprocesador, la tarjeta de memoria etc. Hardware es un neologismo proveniente del
inglés definido por la Real Academia Española como el conjunto de elementos materiales
que conforman una computadora; no tiene equivalente en el castellano.

De manera muy general, el Hardware de una computadora se puede clasificar según


la función que elabora, en tres grandes grupos:

1) Microprocesador:

a. Unidad Central de Proceso: es la encargada de ejecutar las órdenes dadas a la


computadora.

b. Unidad Aritmética y Lógica: es la encargada de realizar las operaciones aritméticas


elementales, así como determinar la relación entre dos valores escalares.

c. Partes misceláneas que sirven para el manejo de la información que entra y sale del
microprocesador.

2) Memoria:

a. Random Access Memory (RAM): es el lugar donde la computadora coloca la


información y los procesos que la están manipulando a fin de obtener resultados. Su
contenido se pierde al apagar la computadora, por eso se dice que esta memoria es
volátil.

b. Read Only Memory (ROM): contiene las órdenes iniciales que ejecuta la
computadora al encenderse. Contiene, también, los procesos básicos para manejar y
Partes del computador
Hardware de una computadora

controlar todos las partes electrónicas y dispositivos que acompañan al


microprocesador. Hoy en día se están sustituyendo por memorias flash para facilitar
su actualización.

3) Periféricos:

Se denominan periféricos tanto a las unidades o dispositivos a través de los cuales la


computadora se comunica con el mundo exterior, como a los sistemas que almacenan o
archivan la información, sirviendo de memoria auxiliar de la memoria principal (RAM).

a. Unidades de Entrada: Captan y envían los datos al dispositivo que los procesará,
según las ordenes ejecutadas por la Unidad Central de proceso. A través de estas
unidades el ser humano introduce información en la computadora. Ejemplos de
unidades de entrada: Teclado, Mouse, Escáner, Cámara Web, Micrófono, Joystick,
entre otros.

b. Unidades de Salida: Son dispositivos que muestran o proyectan información hacia


el exterior de la computadora. La mayoría son para informar, alertar, comunicar,
proyectar o dar al ser humano cierta información. Ejemplos de unidades de salida:
Monitor, Impresora, Altavoces, Auriculares, entre otros.

c. Unidades de comunicación: Son los dispositivos que se encargan de comunicarse


con otras máquinas o computadoras, ya sea para trabajar en conjunto, o para enviar y
recibir información. Ejemplos de unidades de comunicación: Fax-Modem, Tarjetas
de Red, Wireless y Bluetooth, Controladores USB e Infrarrojos, entre otros.

d. Unidades de almacenamiento: Son los dispositivos que almacenan información por


bastante tiempo. La memoria RAM no puede ser considerada un periférico de
almacenamiento, ya que su memoria es volátil y temporal. Ejemplos de unidades de
almacenamiento: Disco Duro, Grabador o lector de CD, DVD, HD-DVD y Blu-ray,
Memoria Flash, Memoria portátil, entre otros.

8
●●●
Software

3.2 Software

Se denomina software (palabra de origen ánglico), programática, equipamiento


lógico o soporte lógico a todos los componentes intangibles de una computadora, es decir,
al conjunto de programas y procedimientos necesarios para hacer posible la realización de
una tarea específica, en contraposición a los componentes físicos del sistema (hardware).

El software es quién al ejecutar una tarea da un ambiente de inteligencia similar a la


del ser humano (y a veces hasta sorprendente) por parte de la computadora, a la que se le
conoce como inteligencia aparente. Según su función, el software se clasifica en tres grandes
grupos:

a) Software de sistema: El software del sistema coordina las diferentes partes de un


sistema de computadora y conecta e interactúa entre el software de aplicación y el
hardware de la computadora. Otro tipo de software del sistema que gestiona, controla
las actividades de la computadora y realiza tareas de proceso comunes, se denomina
utility o utilidades (en algunas partes de Latinoamérica, utilerías). El software del
sistema que gestiona y controla las actividades de la computadora se denomina
sistema operativo. Otro software del sistema son los programas traductores o de
traducción de lenguajes de computadora que convierten los lenguajes de
programación, entendibles por los programadores, en lenguaje máquina que
entienden las computadoras.

El software del sistema es el conjunto de programas indispensables para que la


máquina funcione; se denominan también programas del sistema. Estos programas son,
básicamente, el sistema operativo, los editores de texto, los compiladores/intérpretes
(lenguajes de programación) y los programas de utilidad (Joyanes Aguilar, 2008).

b) Software de programación: proporciona herramientas para ayudar al programador


a escribir programas informáticos y a usar diferentes lenguajes de programación de
forma práctica. Incluye entre otros: Editores de Texto, compiladores, intérpretes,
enlazadores, depuradores.

9
Partes del computador
Traductores de lenguaje: el proceso de traducción de un programa.

c) Software de aplicación: permite a los seres humanos llevar a cabo una o varias tareas
más específicas, en cualquier campo de actividad susceptible de ser automatizado o
asistido, con especial énfasis en los negocios.

En la asignatura Computación I, se iniciará en el área de software de programación,


desde el punto de vista de resolver problemas usando un lenguaje de programación, cuyo
resultado final será un inicio a un software de aplicación.

Por otro lado, el software puede existir dentro de una computadora en tres formas
diferentes:

a) Código fuente: escrito por programadores. Contiene el conjunto de instrucciones


destinadas a la computadora. El conjunto de instrucciones no está escrito en un
lenguaje que la computadora pueda entender directamente, ya que está escrito en
lenguaje del ser humano.

b) Código objeto: resultado del uso de un compilador sobre el código fuente. Consiste
en una traducción de este último hacía el lenguaje nativo de la computadora (byte).
El código objeto no es directamente inteligible por el ser humano, pero tampoco es
puede ser ejecutado por la computadora ya que le falta añadir fragmentos de código
objeto para ser directamente funcional en la computadora donde quiere colocarse a
trabajar.

c) Código ejecutable: resultado de enlazar uno o varios fragmentos de código objeto.


Constituye un archivo binario con un formato tal que el sistema operativo es capaz
de cargarlo en la memoria de una computadora, y proceder a su ejecución.

3.3 Traductores de lenguaje: el proceso de traducción de un


programa.

El proceso de traducción de un programa fuente escrito en un lenguaje de alto nivel


a un lenguaje máquina comprensible por la computadora, se realiza mediante programas
llamados “traductores”. Los traductores de lenguaje son programas que traducen a su vez los

10
●●●
Traductores de lenguaje: el proceso de traducción de un programa.

programas fuente escritos en lenguajes de alto nivel a código máquina. Los traductores se
dividen en compiladores e intérpretes (Joyanes Aguilar, 2008).

Intérpretes
Un intérprete es un traductor que toma un programa fuente, lo traduce y, a continuación, lo
ejecuta. Los programas intérpretes clásicos como BASIC, prácticamente ya no se utilizan,
más que en circunstancias especiales. Sin embargo, está muy extendida la versión
interpretada del lenguaje Smalltalk, un lenguaje orientado a objetos puro. El sistema de
traducción consiste en: traducir la primera sentencia del programa a lenguaje máquina, se
detiene la traducción, se ejecuta la sentencia; a continuación, se traduce la siguiente
sentencia, se detiene la traducción, se ejecuta la sentencia y así sucesivamente hasta terminar
el programa (Figura 1).

Figura 1. Interprete

Compiladores
Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto
nivel a lenguaje máquina. La traducción del programa completo se realiza en una sola
operación denominada compilación del programa; es decir, se traducen todas las
instrucciones del programa en un solo bloque. El programa compilado y depurado
(eliminados los errores del código fuente) se denomina programa ejecutable porque ya se
puede ejecutar directamente y cuantas veces se desee; sólo deberá volver a compilarse de
nuevo en el caso de que se modifique alguna instrucción del programa. De este modo el
programa ejecutable no necesita del compilador para su ejecución. Los traductores de
lenguajes típicos más utilizados son: C, C++, Java, C#, Pascal, FORTRAN y COBOL
(Figura 2).

11
Partes del computador
Programa y dato

Figura 2. Compilación

3.4 Programa y dato

Los términos programa y dato se han utilizado sin que se definieran previamente, ya
que son ambos son términos conocidos dentro de otros contextos. Antes de seguir avanzando
en nuevos temas, es necesario dar una definición formal de estos términos dentro del contexto
de estudio: La Computación.

Un Programa es una secuencia de pasos, órdenes o instrucciones que al ejecutarse


logran cumplir una tarea específica. Un Dato es la información del ser humano representada
simbólicamente a través de letras y dígitos en la computadora. De esta manera, la
Programación de Computadoras es el proceso de crear programas que permitan
automatizar los procesos de cálculo manual, así como también la automatización de procesos
que incluyan la obtención de información para su posterior procesamiento.

La asignatura Computación I comprende la enseñanza de las técnicas básicas de


programación para la resolución de problemas matemáticos o no, que generen en los
estudiantes las habilidades de razonamiento para la automatización de los procesos de
ingeniería que posteriormente serán dictados a lo largo de la carrera.

3.5 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. Aunque el proceso de diseñar programas es,
esencialmente, un proceso creativo, se puede considerar una serie de fases o pasos comunes,
que generalmente deben seguir todos los programadores (Joyanes Aguilar, 2008).

Las fases de resolución de un problema con computadora son:

• Análisis del problema.

12
●●●
Fases en la resolución de problemas.

• Diseño del algoritmo.

• Codificación.

• Compilación y ejecución.

• Verificación.

• Depuración.

• Mantenimiento.

• Documentación.

Las características más sobresalientes de la resolución de problemas son:

• Análisis. El problema se analiza teniendo presente la especificación de los requisitos


dados por el cliente de la empresa o por la persona que encarga el programa.

• Diseño. Una vez analizado el problema, se diseña una solución que conducirá a un
algoritmo que resuelva el problema.

• Codificación (implementación). La solución se escribe en la sintaxis del lenguaje


de alto nivel (por ejemplo, Pascal) y se obtiene un programa fuente que se compila a
continuación.

• Ejecución, verificación y depuración. El programa se ejecuta, se comprueba


rigurosamente y se eliminan todos los errores (denominados “bugs”, en inglés) que puedan
aparecer.

• Mantenimiento. El programa se actualiza y modifica, cada vez que sea necesario,


de modo que se cumplan todas las necesidades de cambio de sus usuarios.

• Documentación. Escritura de las diferentes fases del ciclo de vida del software,
esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de
referencia, así como normas para el mantenimiento.

13
Partes del computador
Fases en la resolución de problemas.

Las dos primeras fases conducen a un diseño detallado escrito en forma de algoritmo.
Durante la tercera fase (codificación) se implementa1 el algoritmo en un código escrito en
un lenguaje de programación, reflejando las ideas desarrolladas en las fases de análisis y
diseño.

Las fases de compilación y ejecución traducen y ejecutan el programa. En las fases


de verificación y depuración el programador busca errores de las etapas anteriores y los
elimina (ver Figura 3). Comprobará que mientras más tiempo se gaste en la fase de análisis
y diseño, menos se gastará en la depuración del programa. Por último, se debe realizar la
documentación del programa.

Figura 3. El proceso de resolución de problemas e implementación de un programa


que lo resuelve (Dasso & Funes, 2014).

Antes de conocer las tareas a realizar en cada fase, se considera el concepto y


significado de la palabra algoritmo. La palabra algoritmo se deriva de la traducción al latín
de la palabra Alkhô-warîzmi2, nombre de un matemático y astrónomo árabe que escribió un
tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es un
método para resolver un problema mediante una serie de pasos precisos, definidos y finitos.

Características de un algoritmo

• preciso (indica el orden de realización en cada paso),

• definido (si se sigue dos veces, obtiene el mismo resultado cada vez),

14
●●●
Fases en la resolución de problemas.

• finito (tiene fin; un número determinado de pasos).

Un algoritmo debe producir un resultado en un tiempo finito. Los métodos que


utilizan algoritmos se denominan métodos algorítmicos, en oposición a los métodos que
implican algún juicio o interpretación que se denominan métodos heurísticos. Los métodos
algorítmicos se pueden implementar en computadoras; sin embargo, los procesos heurísticos
no han sido convertidos fácilmente en las computadoras. En los últimos años las técnicas de
inteligencia artificial han hecho posible la implementación del proceso heurístico en
computadoras.

Ejemplos de algoritmos son: instrucciones para montar en una bicicleta, hacer una
receta de cocina, obtener el máximo común divisor de dos números, etc. Los algoritmos se
pueden expresar por fórmulas, diagramas de flujo o N-S y pseudocódigos. Esta última
representación es la más utilizada para su uso con lenguajes estructurados como Pascal.

3.5.1 Análisis Del Problema

El proceso de Análisis consiste en la división de un todo en sus partes. En este caso,


el todo es el problema planteado en forma de enunciado, pero ¿en cuales partes debe dividirse
como resultado del análisis? Inicialmente, el enunciado del problema se debe dividir en dos
partes, las cuales se obtienen al responder las siguientes preguntas:

1. ¿Qué información útil se suministra dentro del enunciado?

2. ¿Qué resultados exige el enunciado?

Ejemplo: Dadas las longitudes de la base y la altura de un triángulo isósceles,


determine el área que encierra el triángulo.

1. ¿Qué información útil se suministra dentro del enunciado?

a. La longitud de la Base

b. La longitud de la altura

c. El hecho que el triángulo es isósceles IRRELEVANTE

15
Partes del computador
Fases en la resolución de problemas.

2. ¿Qué resultados exige el enunciado?

a. El área encerrada por el triángulo

La información de que el triángulo es isósceles es irrelevante para la solución del


problema, ya que, si se conoce la longitud de la base y altura de un triángulo, no importa su
forma, ya que la fórmula de cálculo requiere solamente estas longitudes.

Ejemplo: Dado las longitudes de los catetos de un triángulo rectángulo, determine la


longitud de la hipotenusa.

1. ¿Qué información útil se suministra dentro del enunciado?

a. La longitud del primer cateto

b. La longitud del segundo cateto

c. El hecho de que el triángulo es rectángulo

2. ¿Qué resultados exige el enunciado?

a. La longitud de la hipotenusa

En este caso la información de que el triángulo es rectángulo es relevante, porque en


el proceso de síntesis de la solución se usa el teorema de Pitágoras para encontrar el resultado.
Sin esa información del enunciado, no existe una solución única al problema.

Antes del Diseño del Algoritmo primero es necesario realizar una pequeña síntesis
del análisis a fin de establecer las fórmulas matemáticas, los procesos básicos de
programación o la secuencia que deberá usarse dentro del diseño del algoritmo. Como es un
paso intermedio entre el análisis y el diseño de la solución, está pequeña síntesis se colocará
dentro del análisis del problema añadiendo como tercera pregunta ¿Cómo logro obtener los
resultados a partir de la información útil suministrada en el enunciado?

Para los ejemplos dados, el análisis completo sería:

16
●●●
Fases en la resolución de problemas.

Ejemplo: Dadas las longitudes de la base y la altura de un triángulo isósceles,


determine el área que encierra el triángulo.

1. ¿Qué información útil se suministra dentro del enunciado?

a. La longitud de la Base

b. La longitud de la altura

c. El hecho que el triángulo es isósceles IRRELEVANTE

2. ¿Qué resultados exige el enunciado?

a. El área encerrada por el triángulo

3. ¿Cómo logro obtener los resultados a partir de la información útil suministrada en el


enunciado?

a. Usando la fórmula Area = Base * Altura / 2 por lo tanto la información de la


forma del triángulo es irrelevante.

Ejemplo: Dado las longitudes de los catetos de un triángulo rectángulo, determine la


longitud de la hipotenusa.

1. ¿Qué información útil se suministra dentro del enunciado?

a. La longitud del primer cateto

b. La longitud del segundo cateto

c. El hecho de que el triángulo es rectángulo

2. ¿Qué resultados exige el enunciado?

a. La longitud de la hipotenusa

3. ¿Cómo logro obtener los resultados a partir de la información útil suministrada en el


enunciado?

17
Partes del computador
Fases en la resolución de problemas.

a. Con el teorema de Pitágoras, donde H = C12+C22. El teorema de Pitágoras


sólo se aplica si el triángulo es rectángulo, por lo tanto, la información de la
forma es RELEVANTE.

Realice el análisis de problemas a los siguientes enunciados:

1. Dado el valor de un ángulo, expresado en radianes, desarrolle un programa que


determine e imprima el valor de dicho ángulo en grados, sabiendo que 180°= π
radianes.

2. Dado el largo y ancho de un rectángulo, desarrolle un programa que determine e


imprima el área y el perímetro del rectángulo, sabiendo que el área=largo*ancho y
el perímetro=2*Largo + 2*ancho.

3. Dado el valor de una temperatura, expresada en grados Centígrados (grados


Celsius), desarrolle un programa que determine e imprima el valor de dicha
temperatura expresada en grados Fahrenheit, sabiendo que °F=9.5*°C + 32.

4. Dadas las longitudes de los lados de un triángulo (L1, L2 y L3), desarrolle un


programa que determine el área del triángulo utilizando el método del
semiperímetro, donde el semiperímetro se calcula como S=(L1+L2+L3) / 2 y el área
como S * (S-L1) * (S-L2) * (S-L3)

5. Dadas las abscisas y las ordenadas de dos puntos en el plano cartesiano, determine
la distancia que los separa, sabiendo que distancia= √(X2 − X1)2 + (Y2 − Y1)2, siendo
las coordenadas (X1, Y1) del primer punto y las coordenadas (X2, Y2) del segundo
punto. Recuerde que la computadora sólo maneja números escalares.

3.5.2 Diseño del algoritmo

En la etapa de análisis del proceso de programación se determina qué hace el


programa. En la etapa de diseño se determina cómo hace el programa la tarea solicitada. Los
métodos más eficaces para el proceso de diseño se basan en el conocido divide y vencerás.
Es decir, la resolución de un problema complejo se realiza dividiendo el problema en
subproblemas y a continuación dividiendo estos subproblemas en otros de nivel más bajo,
hasta que pueda ser implementada una solución en la computadora. Este método se conoce
técnicamente como diseño descendente (top-down) o modular.

El proceso de romper el problema en cada etapa y expresar cada paso en forma más
detallada se denomina refinamiento sucesivo. Cada subprograma es resuelto mediante un
módulo (subprograma) que tiene un solo punto de entrada y un solo punto de salida.

18
●●●
Fases en la resolución de problemas.

Cualquier programa bien diseñado consta de un programa principal (el módulo de


nivel más alto) que llama a subprogramas (módulos de nivel más bajo) que a su vez pueden
llamar a otros subprogramas. Los programas estructurados de esta forma se dice que tienen
un diseño modular y el método de romper el programa en módulos más pequeños se llama
programación modular. Los módulos pueden ser planeados, codificados, comprobados y
depurados independientemente (incluso por diferentes programadores) y a continuación
combinarlos entre sí. El proceso implica la ejecución de los siguientes pasos hasta que el
programa se termina:

1. Programar un módulo.

2. Comprobar el módulo.

3. Si es necesario, depurar el módulo.

4. Combinar el módulo con los módulos anteriores.

El proceso que convierte los resultados del análisis del problema en un diseño
modular con refinamientos sucesivos que permitan una posterior traducción a un lenguaje se
denomina diseño del algoritmo.

El diseño del algoritmo es independiente del lenguaje de programación en el que se


vaya a codificar posteriormente.

Un algoritmo puede ser expresado en (Mathieu, 2014):

• Lenguaje natural (a veces, este no resulta muy claro, pero es muy útil para problemas
simples)

• Pseudocódigo

• Diagramas de flujo

• Programas

19
Partes del computador
Fases en la resolución de problemas.

El uso de algún elemento de la lista anterior para la expresión de un algoritmo, se


hace según el nivel de descripción de dicho algoritmo. Es evidente que el lenguaje natural es
de mayor utilidad para transmitir las ideas del algoritmo. Al contrario, un programa es difícil
de entender por simple lectura, aun por una persona que conoce el lenguaje del programa, e
imposible para aquellas que no lo conocen.

El pseudocódigo y los diagramas de flujo, en cambio, se sitúan en un punto


intermedio de comprensión, entre el lenguaje natural y un programa. Estas dos herramientas
poseen un poder de expresión equivalente; no obstante, los diagramas de flujo tienen la
ventaja de ser más gráficos y visuales.

Con base en el ejemplo anterior, se puede afirmar que la parte de solución expresada
en lenguaje natural tiene algunas ambigüedades para el usuario que no es el programador;
por ejemplo, ¿qué significa la expresión “de pasos sucesivos de diálogo con el usuario”?
Aunque, en ocasiones, también presenta ambigüedades hasta para el propio programador;
por ejemplo, ¿cuáles son “los datos en una base de datos” ?, ¿una base de datos es relacional
o de otro modelo?, ¿cuál interfaz?, ¿cómo se manejan las lecturas/escritura en dicha base de
datos?

Las respuestas a las interrogantes anteriores se expresan de la siguiente forma:

• La primera ambigüedad (“pasos sucesivos”) se debe expresar lo más detallada posible


por el destinatario del programa (el usuario).

• Los otros cuestionamientos son de detalles técnicos.

La descripción de un algoritmo usualmente se realiza en tres niveles:

1. Descripción de alto nivel. El primer paso consiste en la descripción del problema;


luego, se selecciona un modelo matemático y se explica el algoritmo de manera verbal,
posiblemente con ilustraciones, pero omitiendo detalles.

2. Descripción formal. En este nivel se usa un pseudocódigo o diagrama de flujo para


describir la secuencia de pasos que conducen a la solución.

20
●●●
Fases en la resolución de problemas.

3. Implementación. Por último, en este nivel se muestra el algoritmo expresado en


un lenguaje de programación específico, o algún objeto capaz de llevar a cabo instrucciones.

Para llegar a la implementación, primero se deben tener descripciones de alto nivel o


formalmente explícitas, sobre todo cuando el trabajo de desarrollo de un algoritmo se hace
en grupo.

3.5.3 Codificación de un programa

La codificación es la escritura en un lenguaje de programación de la representación


del algoritmo desarrollada en las etapas precedentes. Dado que el diseño de un algoritmo es
independiente del lenguaje de programación utilizado para su implementación, el código
puede ser escrito con igual facilidad en un lenguaje o en otro.

Para realizar la conversión del algoritmo en programa se deben sustituir las palabras
reservadas en español por sus homónimos en inglés, y las operaciones/instrucciones
indicadas en lenguaje natural por el lenguaje de programación correspondiente.

Documentación interna.

Como se verá más tarde, la documentación de un programa se clasifica en interna y


externa. La documentación interna es la que se incluye dentro del código del programa fuente
mediante comentarios que ayudan a la comprensión del código. Todas las líneas de
programas que comiencen con un símbolo / * son comentarios. El programa no los necesita
y la computadora los ignora. Estas líneas de comentarios sólo sirven para hacer los programas
más fáciles de comprender. El objetivo del programador debe ser escribir códigos sencillos
y limpios.

Debido a que las máquinas actuales soportan grandes memorias (1.024 Mb o más de
memoria central mínima en computadoras personales) no es necesario recurrir a técnicas de
ahorro de memoria, por lo que es recomendable que se incluya el mayor número de
comentarios posibles, pero eso sí, que sean significativos.

21
Partes del computador
Fases en la resolución de problemas.

3.5.4 Compilación y ejecución de un programa

Una vez que el algoritmo se ha convertido en un programa fuente, es preciso


introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta
operación se realiza con un programa editor. Posteriormente el programa fuente se convierte
en un archivo de programa que se guarda (graba) en disco.

El programa fuente debe ser traducido a lenguaje máquina, este proceso se realiza
con el compilador y el sistema operativo que se encarga prácticamente de la compilación.

Si tras la compilación se presentan errores (errores de compilación) en el programa


fuente, es preciso volver a editar el programa, corregir los errores y compilar de nuevo. Este
proceso se repite hasta que no se producen errores, obteniéndose el programa objeto que
todavía no es ejecutable directamente. Suponiendo que no existen errores en el programa
fuente, se debe instruir al sistema operativo para que realice la fase de montaje o enlace
(link), carga, del programa objeto con las bibliotecas del programa del compilador. El proceso
de montaje produce un programa ejecutable.

Una vez que el programa ejecutable se ha creado, ya se puede ejecutar (correr o rodar)
desde el sistema operativo con sólo teclear su nombre (en el caso de DOS). Suponiendo que
no existen errores durante la ejecución (llamados errores en tiempo de ejecución), se
obtendrá la salida de resultados del programa.

Las instrucciones u órdenes para compilar y ejecutar un programa en C, C++, ... o


cualquier otro lenguaje dependerá de su entorno de programación y del sistema operativo en
que se ejecute Windows, Linux, Unix, etc.

3.5.5 Verificación y depuración de un programa

La verificación o compilación de un programa es el proceso de ejecución del


programa con una amplia variedad de datos de entrada, llamados datos de test o prueba, que
determinarán si el programa tiene o no errores (“bugs”). Para realizar la verificación se debe
desarrollar una amplia gama de datos de test: valores normales de entrada, valores extremos

22
●●●
Fases en la resolución de problemas.

de entrada que comprueben los límites del programa y valores de entrada que comprueben
aspectos especiales del programa.

La depuración es el proceso de encontrar los errores del programa y corregir o


eliminar dichos errores. Cuando se ejecuta un programa, se pueden producir tres tipos de
errores:

1. Errores de compilación. Se producen normalmente por un uso incorrecto de las


reglas del lenguaje de programación y suelen ser errores de sintaxis. Si existe un error de
sintaxis, la computadora no puede comprender la instrucción, no se obtendrá el programa
objeto y el compilador imprimirá una lista de todos los errores encontrados durante la
compilación.

2. Errores de ejecución. Estos errores se producen por instrucciones que la


computadora puede comprender, pero no ejecutar. Ejemplos típicos son: división por cero y
raíces cuadradas de números negativos. En estos casos se detiene la ejecución del programa
y se imprime un mensaje de error.

3. Errores lógicos. Se producen en la lógica del programa y la fuente del error suele
ser el diseño del algoritmo. Estos errores son los más difíciles de detectar, ya que el programa
puede funcionar y no producir errores de compilación ni de ejecución, y sólo puede advertirse
el error por la obtención de resultados incorrectos. En este caso se debe volver a la fase de
diseño del algoritmo, modificar el algoritmo, cambiar el programa fuente y compilar y
ejecutar una vez más.

3.5.6 Documentación y mantenimiento

La documentación de un problema consta de las descripciones de los pasos a dar en


el proceso de resolución de dicho problema. La importancia de la documentación debe ser
destacada por su decisiva influencia en el producto final. Los programas pobremente
documentados son difíciles de leer, más difíciles de depurar y casi imposibles de mantener y
modificar.

23
Partes del computador
Resumen

La documentación de un programa puede ser interna y externa. La documentación


interna es la contenida en líneas de comentarios. La documentación externa incluye análisis,
diagramas de flujo y/o pseudocódigos, manuales de usuario con instrucciones para ejecutar
el programa y para interpretar los resultados.

La documentación es vital cuando se desea corregir posibles errores futuros o bien


cambiar el programa. Tales cambios se denominan mantenimiento del programa. Después
de cada cambio la documentación debe ser actualizada para facilitar cambios posteriores. Es
práctica frecuente numerar las sucesivas versiones de los programas 1.0, 1.1, 2.0, 2.1, etc. (Si
los cambios introducidos son importantes, se varía el primer dígito [1.0, 2.0,...]; en caso de
pequeños cambios sólo se varía el segundo dígito [2.0, 2.1…].)

3.6 Resumen

Una computadora es una máquina para procesar información y obtener resultados en


función de unos datos de entrada.

Hardware: parte física de una computadora (dispositivos electrónicos).

Software: parte lógica de una computadora (programas).

Las computadoras se componen de:

• Dispositivos de Entrada/Salida (E/S).

• Unidad Central de Proceso (Unidad de Control y Unidad Lógica y Aritmética).

• Memoria central.

• Dispositivos de almacenamiento masivo de información (memoria auxiliar o


externa).

El software del sistema comprende, entre otros, el sistema operativo Windows,


Linux, en computadoras personales y los lenguajes de programación. Los lenguajes de
programación de alto nivel están diseñados para hacer más fácil la escritura de programas
que los lenguajes de bajo nivel. Existen numerosos lenguajes de programación cada uno de
los cuales tiene sus propias características y funcionalidades, y normalmente son más fáciles

24
●●●
Resumen

de transportar a máquinas diferentes que los escritos en lenguajes de bajo nivel. Los
programas escritos en lenguaje de alto nivel deben ser traducidos por un compilador antes de
que se puedan ejecutar en una máquina específica. En la mayoría de los lenguajes de
programación se requiere un compilador para cada máquina en la que se desea ejecutar
programas escritos en un lenguaje específico.

Los lenguajes de programación se clasifican en:

• Alto nivel: Pascal, FORTRAN, Visual Basic, C, Ada, Modula-2, C++, Java, Delphi,
C#, etc.

• Bajo nivel: Ensamblador.

• Máquina: Código máquina.

• Diseño de Web: SMGL, HTML, XML, PHP.

Los programas traductores de lenguajes son:

• Compiladores.

• Intérpretes.

Un método general para la resolución de un problema con computadora tiene las


siguientes fases:

1. Análisis del programa.


2. Diseño del algoritmo.
3. Codificación.
4. Compilación y ejecución.
5. Verificación.
6. Documentación y mantenimiento.

El sistema más idóneo para resolver un problema es descomponerlo en módulos más


sencillos y luego, mediante diseños descendentes y refinamiento sucesivo, llegar a módulos
fácilmente codificables. Estos módulos se deben codificar con las estructuras de control de
programación estructurada.

25
Partes del computador
Resumen

1. Secuenciales: las instrucciones se ejecutan sucesivamente una después de otra.

2. Repetitivas: una serie de instrucciones se repiten una y otra vez hasta que se cumple
una cierta condición.

3. Selectivas: permite elegir entre dos alternativas (dos conjuntos de instrucciones)


dependiendo de una condición determinada)

26
4 Referencias
Dasso, A., & Funes, A. (2014). Introducción a la
Programación. Argentina: Universidad Nacional de San Luis.
Joyanes Aguilar, L. (2008). Fundamentos de programación:
Algoritmos, estructura de datos y objetos (4a. ed.). Madrid:
McGraw-Hill.
Mathieu, M. J. (2014). Introducción a la programación
(PRIMERA EDICIÓN EBOOK ed.). México: Grupo Editorial Patria,
S.A. de C.V.

También podría gustarte