Anda di halaman 1dari 19

Computación para Ingeniería I y Laboratorio Cap.

1 – Conceptos de Programación

CAPITULO 1 - CONCEPTOS DE PROGRAMACION

1.1 INTRODUCCION .- Los problemas o tareas que se plantean diariamente,


por ejemplo en el ámbito de la empresa, ya sean de gestión, técnicos,
matemáticos, etc, pueden ser resueltos mediante el uso de la capacidad
intelectual y la habilidad manual de la persona. Diremos entonces que la tarea ha
sido realizada de forma manual (Figura 1.1).

Figura 1.1. Resolución manual de trabajos.

1.2 Aplicación o Sistema Informático .- La utilización de la computadora para la


realización automática de una tarea aporta grandes ventajas, como la rapidez de
ejecución y la fiabilidad de los resultados obtenidos Un buen número de problemas
conllevan complicados cálculos, así como el manejo de grandes cantidades de
datos. En el primer caso, el riesgo de equivocarse es grande y en el segundo, el
trabajo se convierte en pesado y rutinario. Mediante el uso de la computadora se
eliminan estos inconvenientes debido a las capacidades de la máquina, basadas
en las siguientes características:
• Rapidez.
• Precisión.
• Memoria.
No obstante, la computadora por sí sola no sabría resolver ni el más
sencillo problema que se nos pueda ocurrir. Es preciso, para que pueda hacerlo,
describirle con detalle y en su lenguaje todos los pasos que ha de llevar a cabo
para la resolución del problema. Una descripción de este tipo es lo que se llama
programa de computadora y su objetivo es dirigir el funcionamiento de la
máquina.

1.3 CICLO DE VIDA DE LA APLICACIÓN .- Desde el planteamiento de un


problema o tarea hasta que se tiene el correspondiente programa o aplicación
informática para su realización por medio de una computadora, instalado en la
misma y en funcionamiento mientras sea de utilidad, se siguen una serie de
etapas que en conjunto denominamos ciclo de vida del software. Cada una de
las etapas, que tiene un objetivo bien determinado, ha de llevarse a cabo cuando
se ha terminado completamente la anterior; es decir, se han de abordar de forma
estrictamente secuencial.
Las etapas de que consta el ciclo de vida del software pueden agruparse en
los siguientes bloques, según el esquema de la Figura 1.2.

Ing. Hermas Herrera Callejas Página : 1 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

1.3.1 Etapas del Desarrollo de Aplicaciones .- Es de destacar que en la


realización de estas etapas no todas necesitan el uso de la computadora. No
obstante, desde hace algún tiempo se utiliza ésta como apoyo mediante las
denominadas herramientas CASE (Computer Aided Software Engineering).

Etapa Resultado
Problema
Análisis
Especificaciones

Diseño Reportes
Formatos
Bases de datos
Presentación Programas
Diseño
Aprobación
D
Programación Algoritmo/Flujograma/Seudocódigo E
Codificación–Programa fuente, Prog estructurada S
Compilación – Programa Objeto A
(Errores: Sintaxis, Lógica) R
Enlace – Código ejecutable R
(Aplicación:Interactiva/por lotes/reportes/consultas) O
L
Pruebas L
Unitarias Errores:Ejecución,Especificación O
Funcionales
De conjunto
De esfuerzo
Evaluación

Aplicación aprobada
Documentación
Manual Sistema
Manual Usuario
Manual Operación
Manual Instalación
Capacitación
Usuarios EXPLOTACION
Técnicos
Explotación y
Mantenimiento
Figura 1.2. Ciclo de vida del software

Ing. Hermas Herrera Callejas Página : 2 de 19


Explotación y
mantenimiento
Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

Análisis. Consiste en el estudio detallado del problema con el fin de obtener una
serie de documentos (especificaciones) en los que quede totalmente definido el
proceso de la automatización. Consta principalmente de:
- Análisis previo.
- Análisis funcional.
- Análisis orgánico.
Diseño. Consiste en concebir de modo completo la aplicación en términos de
definir el contenido de los reportes, formatos de pantalla, bases de datos y de los
programas.
Programación. Consiste en la realización de una solución o algoritmo del
problema planteado. Esta solución se diseña utilizando una notación intermedia
(seudo-código) o mediante alguna de las notaciones gráficas como los
ordinogramas; sin tener en cuenta necesariamente el lenguaje de programación
que se vaya a utilizar en la siguiente etapa.
En esta etapa es donde tiene cabida fundamentalmente la actividad del
programador y la utilización de técnicas adecuadas de diseño como la
programación estructurada y el diseño modular.
Codificación. Escritura en un lenguaje de programación de alto nivel de los
algoritmos obtenidos en la etapa anterior.
Edición. En esta fase se transcribe el programa a la computadora, grabándose el
mismo en la memoria auxiliar por medio de un editor de programas o procesador
textos. A este programa almacenado en la computadora y escrito en lenguaje de
alto nivel se le denomina programa fuente.
Compilación. Consiste en obtener el programa objeto, codificado en lenguaje de
máquina a partir del programa fuente. Esta tarea se realiza de forma automática
mediante el compilador del lenguaje, el cual, además de efectuar la traducción,
incluye un análisis sintáctico del programa, detectando posibles errores en su
escritura y posibilitando corrección de los mismos.
Enlace (linkage). En esta fase se incluyen determinadas rutinas internas de la
librería dcl lenguaje que sean necesarias en el programa, y si la aplicación consta
de varios programas o módulos se enlazan todos ellos, obteniéndose lo que
denominamos programa ejecutable.
Prueba de ejecución. El programa ejecutable obtenido en la etapa anterior se
somete a un juego de datos de prueba capaz de detectar los posibles errores en
su funcionamiento.
Errores .- La presencia de errores, surgidos en alguna de las etapas antes
descritas, suele ser inevitable. Por ello, es muy importante saber detectarlos y
corregirlos para asegurar la calidad del producto final. Un programa en
explotación puede contener errores que no han sido detectados y que pueden dar
lugar a consecuencias imprevisibles.
En el momento en que se encuentra un error hay que proceder a estudiar
sus causas y regresar a la etapa correspondiente en que puede ser corregido.
Según la etapa en que se detectan, los errores se clasifican de la siguiente
manera:
• De compilación. También denominados errores sintácticos, son los más
fáciles de encontrar y corregir. Se producen por el incumplimiento de las reglas

Ing. Hermas Herrera Callejas Página : 3 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

sintácticas del lenguaje y son detectados por el programa compilador indicando el


lugar en que se encuentran y la clase de error.
• De ejecución. Se detectan durante la ejecución del programa por la parada
anormal del mismo, y suelen provenir de la realización de operaciones no
permitidas. Se producen o no dependiendo de los datos de entrada empleados;
por ello, para encontrarlos es necesaria la prueba del programa con un conjunto
de datos dc ensayo lo suficientemente amplio que abarque la mayoría de casos y
posibilidades de ejecución.
• De lógica. Se dice que un programa tiene un error de lógica si produce
resultados que no son correctos. Para detectarlos hay que realizar un número
suficiente dc ejecuciones con diferentes datos de prueba y comprobar los
resultados obtenidos.
• De especificación. Son los más difíciles de corregir, pues corresponden a
incorrecciones sobrevenidas en la etapa del análisis, por lo que hay que modificar
gran parte del trabajo realizado.

1.3.2 Documentación de tos programas .- Constituida por todos los


documentos que se elaboran en cada una de las etapas del análisis y diseño, es
muy importante para facilitar su mantenimiento y obtener un mayor rendimiento.
Denominamos documentación interna al contenido del propio programa
fuente. Debe incluir los comentarios explicativos suficientes que posibiliten su
comprensión y actualización. Asimismo, se debe utilizar un código
autodocumentado; es decir, debe ser escrito de una forma clara y legible.
La documentación externa la forman el resto de documentos que se
acompañan con el programa sin formar parte de él. Entre ellos deben figurar los
siguientes:
• Especificaciones del análisis.
• Descripción del diseño.
• Descripción de las versiones, sí las hubiere.
• Descripción de archivos y estructuras de datos.
• Descripción del programa principal y subprogramas.
• Manual de mantenimiento.
• Manual de explotación.

1.3.3. Etapas de la implantación y explotación .- Para la implantación y


explotación de programas se deben seguir los pasos que se describen a
continuación.
Explotación y mantenimiento. Una vez comprobada la corrección del programa
y realizada su instalación en el sistema informático, la aplicación queda a
disposición de los usuarios, que la utilizarán hasta tanto se decida abandonarla o
cambiarla por otra. Es lo que denominamos explotación de la aplicación.
Paralelamente al uso de la aplicación se realiza el mantenimiento de la
misma, consiste en su evaluación periódica por parte del personal informático, así
como la inclusión de las adaptaciones y modificaciones necesarias para
mantenerla actualizada.

Ing. Hermas Herrera Callejas Página : 4 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

1.4 ESTRUCTURA DE UN PROGRAMA .- En general, un programa consiste en


una secuencia de instrucciones que ha de procesar la computadora con el objetivo
de obtener unos resultados o datos de salida a partir de unos datos iniciales o
datos de entrada (Figura 1.3). Desde el punto de vista funcional, un programa se
estructura en tres pasos:

1.4.1 Entrada de datos. Está formada por todas las instrucciones que toman los
datos objeto del programa desde un dispositivo externo (unidad de entrada)
depositándolos en la memoria central de la computadora, incluyendo la
depuración o validación de los mismos.

1.4.2 Proceso. Conjunto de instrucciones que resuelven el problema a partir de


los datos que han sido introducidos, dejando los resultados en la memoria central.
El dispositivo físico encargado de llevar a cabo esta tarea es la unidad central de
proceso.

Figura 1.3. Proceso de elaboración.

1.4.3 Salida de resultados. La constituyen las instrucciones que hacen que los
datos resultantes del proceso sean proporcionados al exterior por medio de algún
dispositivo (unidad de salida).
Estos tres componentes de todo programa (Figura 1.4) no aparecen
separadamente, sino que lo normal es encontrar las instrucciones pertenecientes
a cada uno de los tres grupos mezcladas entre si, pues en multitud de ocasiones
es necesario realizar operaciones de entrada después de iniciada la fase de
proceso, y asimismo, se proporcionan algunos resultados antes de terminado el
mismo.
Datos Memoria central Resultados

Entrada Proceso Salida

Figura 1.4. Estructura funcional de un programa.

1.5 LENGUAJES DE PROGRAMACIÓN .- El desarrollo de las capacidades del


hardware ha experimentado un auge desmesurado en los últimos años, pero el
aprovechamiento de estas posibilidades no es óptimo si no se dispone del
software adecuado. Con este fin se han diseñado diversos lenguajes de pro-
gramación, unos de propósito general, es decir, para todo tipo de aplicaciones, y
otros de aplicación particular en alguno de los campos del ámbito informático.
Un lenguaje de programación es una notación para escribir programas, a
través de los cuales podemos comunicarnos con el hardware y dar así las órdenes

Ing. Hermas Herrera Callejas Página : 5 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

adecuadas para la realización de un determinado proceso. Un lenguaje está


definido por una gramática o conjunto de reglas que se aplican a un alfabeto
constituido por el conjunto de símbolos utilizados.

1.5.1 CLASIFICACION DE LOS LENGUAJES DE PROGRAMACIÓN .- Una


primera clasificación, atendiendo a su proximidad al lenguaje de la máquina o al
lenguaje de las personas (lenguaje natural), establece los tres siguientes grupos:
 Lenguaje de máquina (Lenguaje de bajo nivel).
 Lenguaje ensamblador (Lenguaje intermedio).
 Lenguaje de alto nivel (evolucionado).

1.5.2 Lenguaje de máquina .- El lenguaje de máquina es el único que entiende


directamente la computadora. Utiliza el alfabeto binario, que consta de los dos
únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios).
Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó
de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes
más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer
errores.
EJEMPLO
Instrucciones en lenguaje de máquina y sus equivalentes en el sistema
hexadecimal.
0000 0001 1010 0001 01 Al
1000 1001 1001 1010 89 9A
0011 1010 1001 1100 3A 9C
0111 0100 0111 0000 74 70
1110 1001 0010 0000 E9 20

1.5.3 Lenguaje ensamblador .- El lenguaje ensamblador es el primer intento de


sustituir el lenguaje de máquina por otro más similar a los utilizados por las
personas. En este lenguaje, cada instrucción equivale a una instrucción en
lenguaje de máquina, utilizando para su escritura palabras nemotécnicas en lugar
de cadenas de bits.

EJEMPLO
Instrucciones en lenguaje ensamblador.
INICIO: ADD B, 1
MOV A, B
CMP A, E
JE FIN
JMP INICIO
FIN: END
Este lenguaje presenta la mayoría de los inconvenientes del lenguaje de
máquina:
Cada modelo de computadora tiene un lenguaje ensamblador propio
diferente del de los demás, por lo cual un programa sólo puede utilizarse en la
máquina para la que se programó.

Ing. Hermas Herrera Callejas Página : 6 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

El programador ha de conocer perfectamente el hardware del equipo, ya


que maneja directamente las posiciones de memoria, registros del procesador y
demás elementos físicos.
Todas las instrucciones son elementales, es decir, en el programa se deben
describir con el máximo detalle todas las operaciones que se han de efectuar en la
máquina para la realización de cualquier proceso.
Por otro lado, tanto el lenguaje de máquina como el ensamblador gozan de
la ventaja de mínima ocupación de memoria y mínimo tiempo de ejecución en
comparación con el resultado de la compilación del programa equivalente escrito
en otros lenguajes.

1.5.4 Lenguajes de alto nivel .- Los lenguajes de alto nivel, también


denominados lenguajes evolucionados, surgen con posterioridad a los anteriores
con los siguientes objetivos, entre otros:
1. Lograr independencia de la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor o
compilador, que es suministrado por el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico de dicha máquina.
2. Aproximarse al lenguaje natural para que el programa se pueda escribir y leer
de una forma más sencilla, eliminando muchas de las posibilidades de cometer
errores que se daban en el lenguaje de máquina, ya que se utilizan palabras (en
inglés) en lugar de cadenas de símbolos sin ningún significado aparente
3. Incluir rutinas de uso frecuente, como las de entrada/salida, funciones
matemáticas, manejo de tablas, etc., que figuran en una especie de librería del
lenguaje de manera que se puedan utilizar siempre que se quiera sin necesidad
de programarlas cada vez.
Se puede decir que el principal problema que presentan los lenguajes de
alto nivel es la gran cantidad de ellos que existen actualmente en uso, además de
las diferentes versiones o dialectos que se han desarrollado de algunos de ellos.

1.6 REPRESENTACION DE DATOS: CODIFICACIÓN ALFANUMERICA.- Los


datos e informaciones que se manejan internamente en un sistema informático se
pueden representar, según sus características, de las siguientes formas:
ASCII
ALFANUMÉRICAS EBCDIC
....
Representaciones
o códigos internos
Coma fija
NUMÉRICAS Coma flotante
....
Códigos alfanuméricos

Una computadora puede trabajar internamente con un conjunto de caracteres


que nos permitirán manejar datos, informaciones, instrucciones, órdenes de

Ing. Hermas Herrera Callejas Página : 7 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

control etc. Este conjunto de caracteres podemos subdividirlo en los siguientes


grupos:
 Caracteres alfabéticos.
 Letras mayúsculas. Son las letras de la A a la Z (sin la Ñ).
 Letras minúsculas. Son las letras de la a a la z (sin la ñ).
 Cifras decimales. Son los números 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.
 Caracteres especiales.
 Caracteres. Son el punto (.), la coma (,), el punto y coma (;), e1 asterisco
(*), etc.
 Órdenes de control. Son NUL, CR, ACK, etc.
En general, cada carácter se maneja internamente en una computadora por
medio de un conjunto de 8 bits mediante un sistema de codificación binario que
denominaremos código de caracteres. (9 bits si se incluye el bit de paridad)
Cada computadora tiene su código de caracteres definidos por el fabricante,
si bien la mayoría de ellos adaptan a sus equipos códigos estándar de los ya
establecidos. En estos códigos se representa cada carácter por medio de un byte
(8 bits), con lo cual todo tipo de informaciones pueden ser utilizadas internamente,
formando cadenas de bytes sucesivos que representarán cadenas de caracteres
para que la máquina las maneje e interprete. No todos los tipos de códigos utilizan
para la representación de caracteres los ocho bits de un byte.

Hoy día los códigos más utilizados son los de 8 bits, de los cuales los más
conocidos son el EBCDIC (Extended Binary Coded Decimal Interchange Code) y
el ASCII extendido. La Tabla 1.1 representa el código ASCII extendido a 8 bits y la
Tabla 1.2 representa el código EBCDIC.

Tabla 1.1 Código ASCII extendido


bits 7654
3210 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0000 000 NUL 016 DLE 032 SP 048 0 064 @ 080 P 096 ` 112 p 128 Ç 144 É 160 á 176 _ 192 ü 208 ð 224 Ó 240
0001 001 SOH 017 DC1 033 ! 049 1 065 A 081 Q 097 a 113 q 129 ü 145 æ 161 í 177 _ 193 - 209 Ð 225 ß 241 ±
0010 002 STX 018 DC2 034 " 050 2 066 B 082 R 098 b 114 r 130 é 146 Æ 162 ó 178 _ 194 - 210 Ê 226 Ô 242 _
0011 003 ETX 019 DC3 035 # 051 3 067 C 083 S 099 c 115 s 131 â 147 ô 163 ú 179 ¦ 195 + 211 Ë 227 Ò 243 ¾
0100 004 EOT 020 DC4 036 $ 052 4 068 D 084 T 100 d 116 t 132 ä 148 ö 164 ñ 180 ¦ 196 - 212 È 228 õ 244 ¶
0101 005 ENQ 021 NAK 37% 053 5 069 E 085 U 101 e 117 u 133 à 149 ò 165 Ñ 181 Á 197 + 213 i 229 Õ 245 §
0110 006 ACK 022 SYN 038 & 054 6 070 F 086 V 102 f 118 v 134 å 150 û 166 ª 182 Â 198 ã 214 Í 230 µ 246 ÷
0111 007 BEL 023 ETB 039 '' 055 7 071 G 087 W 103 g 119 w 135 ç 151 ù 167 º 183 À 199 Ã 215 Î 231 þ 247 ¸
1000 008 BS 024 CAN 040 ( 056 8 072 H 088 X 104 h 120 x 136 ê 152 ÿ 168 ¿ 184 © 200 + 216 Ï 232 Þ 248 °
1001 009 HT 025 EM 041 ) 057 9 073 I 089 Y 105 i 121 y 137 ë 153 Ö 169 ® 185 ¦ 201 + 217 + 233 Ú 249 ¨
1010 010 LF 026 SUB 042 * 058 : 074 J 090 Z 106 j 122 z 138 è 154 Ü 170 ¬ 186 ¦ 202 - 218 + 234 Û 250 ·
1011 011 VT 027 ESC 043 + 059 ; 075 K 091 [ 107 k 123 { 139 ï 155 ø 171 ½ 187 + 203 - 219 _ 235 Ù 251 ¹
1100 012 FF 028 FS 044 , 060 < 076 L 092 \ 108 l 124 | 140 î 156 £ 172 ¼ 188 + 204 ¦ 220 _ 236 ý 252 ³
1101 013 CR 029 GS 045 - 061 = 077 M 093 ] 109 m 125 } 141 ì 157 Ø 173 ¡ 189 ¢ 205 - 221 ¦ 237 Ý 253 ²
1110 014 SO 030 RS 046 . 062 > 078 N 094 ^ 110 n 126 ~ 142 Ä 158 × 174 « 190 ¥ 206 + 222 Ì 238 ¯ 254 _
1111 015 SI 031 US 047 / 063 ? 079 O 095 _ 111 o 127Del 143 Å 159 ƒ 175 » 191 + 207 ¤ 223 _ 239 ´ 255

Tabla 1.2 Código EBCDIC

Ing. Hermas Herrera Callejas Página : 8 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

bits 7654
3210 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 0 NUL DLE DS SP & _ { } \ 0
0001 1 SOH DC1 SOS a j ~ A J 1
0010 2 STX DC2 FS SYN b k s B K S 2
0011 3 ETX DC3 c l t C L T 3
0100 4 PF RES BYP PN d m u D M U 4
0101 5 HT NL LF RS e n v E N V 5
0110 6 LC BS EOB UC f o w F O W 6
0111 7 DEL IL ESC EOT g p x G P X 7
1000 8 CAN h q y H Q Y 8
1001 9 RLF EM . \ i r z I R Z 9
1010 A SMM CC SM ¢ ! ' :
1011 B VT . $ , #
1100 C FF IFS DC4 < * % @
1101 D CR IGS ENQ NAK ( ) - '
1110 E SO IRS ACK + ; > =
1111 F SI IUS BEL SUB | ¬ ? "

Donde los significados de los caracteres de control son:


NUL Null CC Cursor Control
SOH Start of Heading. IFS Imterchange File Separator.
STX Ster of Text. IGS Interchange Group Separator.
ETX End of Text IRS Interchange Record Separator.
PF Punch 0ff IUS Interchange Unit Separator.
HT Horizontal Tabulation. DS Digit Select.
LC Lower Case. SOS Start of Significance.
DEL Delete. FS Field Separator.
RLF Reserve Line Feed. BYP Bypass.
SMM Start of Manual Message. LF Line Feed.
VT Vertical Tabulation. EOB End of Block
FF Form Feed. ESC Escape.
CR Carriage Return. SM Set Mode.
SO Shift Out. ENQ Enquiry.
SI Shift in. ACK Acknowledge.
DLE Data Link Escape. BEL Bell.
DC1 Device Control 1. SYN Synchronous Idle.
DC2 Device Control 2. PN Punch On.
DC3 Device Control 3. RS Reader Stop.
RES Restore. UC Upper Case.
NL New Line. EOT End of Transmission
BS Backspace. DC4 Device control 4.
IL Idle. NAK Negative Acknowledge.
CAN Cancel SUB Substitute.
EM End of Medium. SP Space

1.7 Técnicas de programación

Ing. Hermas Herrera Callejas Página : 9 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

1.7.1 Programación convencional

Aquella que sigue el procedimiento normal de ejecución de los distintos


procesos dentro del programa, traducción del diagrama de flujo a programa fuente,
similar a un seudo código, con un principio y un final

1.7.2 Programación modular

La programación modular es un paradigma de programación que consiste


en dividir un programa en módulos ó subprogramas con el fin de hacerlo más
legible y manejable.
Se presenta históricamente como una evolución de la programación
estructurada para solucionar problemas de programación más grandes y
complejos de lo que ésta puede resolver.
Al aplicar la programación modular, un problema complejo debe ser dividido
en varios sub-problemas más simples, y estos a su vez en otros sub-problemas
más simples. Esto debe hacerse hasta obtener sub-problemas lo suficientemente
simples como para poder ser resueltos fácilmente con algún lenguaje de
programación. Ésta técnica se llama refinamiento sucesivo, divide y vencerás ó
análisis descendente (Top-Down).
Un módulo es cada una de las partes de un programa que resuelve uno de
los subproblemas en que se divide el problema complejo original. Cada uno de
estos módulos tiene una tarea bien definida y algunos necesitan de otros para
poder operar. En caso de que un módulo necesite de otro, puede comunicarse con
éste mediante una interfaz de comunicación que también debe estar bien definida.

1.7.3 Programación estructurada

La programación estructurada sigue tres reglas: la secuencia, la iteración y


la decisión. La primera de ellas indica que las instrucciones del código se leerán
de principio a fin; la segunda indica que, según cierta condición, un número de
instrucciones podrían repetirse un numero determinado de veces, y la tercera
indica que según unas ciertas condiciones se ejecutarán o no un conjunto de
instrucciones.
En el siguiente algoritmo para limpiar platos, separando los azules se
aprecian estas tres características. La indentación de las instrucciones indican
cuáles son englobadas y cuáles no por sus predecesoras. Entre los beneficios de
la programación estructurada se encuentran la facilidad de mantenimiento y la
legibilidad por parte de otros programadores

mientras haya platos


coger plato
mientras haya suciedad
echar jabon
pasar el estropajo por el plato
si plato es azul
ponerlo con los azules

Ing. Hermas Herrera Callejas Página : 10 de


19
Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

En código no estructurado, quedaría como sigue:

1 coger plato
2 echar jabon
3 pasar el estropajo por el plato
4 si hay suciedad ir a la instrucción 2
5 si el plato no es azul ir a la instrucción 7
6 ponerlo con los azules
7 si hay más platos ir a la instrucción 1

1.7.4 Estructuras de control

Las estructuras de control pueden dividirse en dos grupos:


 De decisión
– If…Then…
– If…Then…Else…
– Select Case
 De bucle
– Do… Loop (While / Until)
– For…Next
– For each … Next
 Anidadas
 Salidas de estructuras (Exit)

1.8 Programación orientada a objetos.- Un estilo de programación en el que un


programa se contempla como un conjunto de objetos limitados que, a su vez, son
colecciones independientes de estructuras de datos y rutinas que interactúan con
otros objetos. Una clase define las estructuras de datos y rutinas de un objeto.
Un objeto es una instancia de una clase, que se puede usar como una variable en
un programa. En algunos lenguajes orientados a objetos, éste responde a
mensajes, que son el principal medio de comunicación. En otros lenguajes
orientados a objeto se conserva el mecanismo tradicional de llamadas a
procedimientos.

1.9 Algoritmos.- En matemáticas, ciencias de la computación, y disciplinas


relacionadas, un algoritmo (del matemático persa al-Jwarizmi) es una lista bien
definida, ordenada y finita de operaciones que permite resolver un problema.
En la vida cotidiana se emplean algoritmos en multitud de ocasiones para
resolver diversos problemas. Los instructivos (manuales de usuario), para usar un
aparato, las instrucciones que recibe un trabajador. También existen ejemplos de
índole matemático, como el algoritmo de la división para calcular el cociente de
dos números, el algoritmo de Euclides para calcular el máximo común divisor de
dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de
ecuaciones.
En la actualidad, el término algoritmo se aplica a muchos de los métodos
de resolver problemas que empleen una secuencia mecánica de pasos, como en

Ing. Hermas Herrera Callejas Página : 11 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

el diseño de un programa de ordenador o computadora. Esta secuencia se


puede representar en la forma de un diagrama de flujo para que sea más fácil de
entender.
Al igual que los algoritmos usados en aritmética, los algoritmos para
ordenadores pueden ser desde muy sencillos hasta bastante complejos. En
todos los casos, sin embargo, la tarea que el algoritmo ha de realizar debe ser
definible. Esta definición puede incluir términos matemáticos o lógicos o una
compilación de datos o instrucciones escritas. En el lenguaje de la informática,
quiere decir que un algoritmo debe ser programable, incluso si al final se
comprueba que el problema no tiene solución.

1.9.1 Importancia.- La importancia de un algoritmo radica en mostrar la manera


de llevar a cabo procesos y resolver mecánicamente problemas matemáticos o de
otro tipo. Al igual que las funciones matemáticas, los algoritmos reciben una
entrada y la transforman en una salida, para que un algoritmo pueda ser
considerado como tal, debe ser una secuencia ordenada, finita y definida
(formalización de su comportamiento) de instrucciones. De este modo se puede
seguir y predecir el comportamiento del algoritmo para cualquier entrada posible.
El concepto de algoritmo, aunque similar y obviamente relacionado, no
debe confundirse con el concepto de programa. Mientras el primero es la
especificación de un conjunto de pasos (operaciones, instrucciones, órdenes,...)
orientados a la resolución de un problema (método), el segundo es ese conjunto
de operaciones especificadas en un determinado lenguaje de programación y para
un computador concreto, susceptible de ser ejecutado (o compilado o
interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta
que se implementa, ya sea en un lenguaje de programación, en un circuito
eléctrico, en un aparato mecánico, usando papel y lápiz, o en algún otro modelo
de computación.

1.9.2 Características de los algoritmos.- Se han definido cinco propiedades,


que son ampliamente aceptadas como requisitos para un algoritmo:

Carácter finito. "Un algoritmo siempre debe terminar después de un número finito
de pasos".

Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las


operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no
ambigua para cada caso".

Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas
antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre.
Estas entradas son tomadas de conjuntos específicos de objetos".

Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación
específica con las entradas".

Ing. Hermas Herrera Callejas Página : 12 de


19
Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que


todas las operaciones a realizar en un algoritmo deben ser suficientemente
básicas como para que en principio puedan ser hechas de manera exacta y en un
tiempo finito por un hombre usando lápiz y papel".

A partir del carácter finito y de la salida se deduce que ante una misma
situación inicial (o valores de entrada) un algoritmo debe proporcionar siempre el
mismo resultado (o salida), con excepción de los algoritmos probabilistas.

1.10 Métodos de representación de los algoritmos.- Los algoritmos pueden


ser expresados de muchas maneras:
 Lenguaje natural
 Pseudocódigo
 Lenguajes de programación
 Diagramas de flujo

1.10.1 Lenguaje Natural.- Las descripciones en lenguaje natural explican el


método de solución del problema, tienden a ser ambiguas y extensas. El usar
pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje
natural. Dichas expresiones son formas más estructuradas para representar
algoritmos.

1.10.2 Pseudocódigo.- Término genérico para nombrar las instrucciones del


programa, utilizadas en dos sentidos generales derivados del diagrama de flujo.
Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de
programación pero con algunas convenciones del lenguaje natural. Tiene varias
ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco
espacio que se requiere para representar instrucciones complejas. El
pseudocódigo no está regido por ningún estándar. Pseudo viene de falso y por
ende es un código que, aunque es entendible, no se aplica al proceso que debe
realizar la maquina.

1.10.3 Lenguajes de Programación.- Descritos ya anteriormente con


mayor detalle

1.10.4 Diagramas de flujo.- Los diagramas de flujo son descripciones


gráficas de algoritmos; usan símbolos conectados con flechas para indicar la
secuencia de instrucciones y están regidos por normas ISO.
Los diagramas de flujo son usados para representar algoritmos pequeños,
ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de
lectura son usados como introducción a los algoritmos, descripción de un lenguaje
y descripción de procesos a personas ajenas a la computación.
Diagrama secuencial empleado en muchos campos para mostrar los
procedimientos detallados que se deben seguir al realizar una tarea, como un
proceso de fabricación. También se utilizan en la resolución de problemas, como
por ejemplo en algoritmos. Los diagramas de flujo se usan normalmente para

Ing. Hermas Herrera Callejas Página : 13 de


19
Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

seguir la secuencia lógica de las acciones en el diseño de programas de


computadoras.

1.10.4.1 Símbolos

Inicio / Fin

Entrada / Salida

Proceso

Decisión

Proceso iterativo

Proceso predefinido

Conector dentro de página

Conector fuera de página

Dirección de flujo

1.10.4.2 Tipos.- Muchos algoritmos son ideados para implementarse en un


programa. Sin embargo, los algoritmos pueden ser implementados en otros
medios, como una red neuronal, un circuito eléctrico o un aparato mecánico.
Algunos algoritmos inclusive se diseñan especialmente para implementarse
usando lápiz y papel. El algoritmo de multiplicación tradicional, muchas formas de
resolver la raíz cuadrada son sólo algunos ejemplos.
Hay también Diagramas de flujo de Sistemas donde se utilizan otros
símbolos adicionales a los mostrados o inclusive con otro significado

1.11 EJERCICIOS DE DIAGRAMAS DE FLUJO.- Realizar los diagramas de


flujo para resolver los siguientes problemas
1.- Convertir metros a Dm, Hm y Km (Dato: metros)
2.- Hallar el área y perímetro de un rectángulo (Datos: base, altura)
3.- Sumar los números enteros, los cuadrados y los cubos de 1 a N (Dato: N)

Ing. Hermas Herrera Callejas Página : 14 de


19
Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

4.- Decidir según moneda. Si al lanzar cae cara ir al cine, caso contrario estudiar
5.- Encontrar el MAYOR de 3 números diferentes (Datos: A, B, C)
6.- Encontrar el MAYOR y el MENOR de 3 números diferentes (Datos: A, B, C)
7.- Hay 3 barras de diferente longitud. Comprobar si forman un triángulo. (Si la
suma de todo par de lados es mayor que el tercero, forman triángulo, caso
contrario no)
8.- Se deben digitar R, G, o B (Rojo, Verde o Azul). Imprimir color Rojo, Verde o
Azul según las letras introducidas especificadas anteriormente)
100
9.- Evaluar la función: Y  , donde x es la abscisa e Y es la ordenada. (Si
9  3X
X = 3 no se puede dividir
10.- El cuadrado de un número entero N es la suma de los N primeros números
N
impares (Dato N, N  ( 2i  1)
2

i 1
11.- Calcular el factorial de un número N introducido
12.- Calcular el salario e imprimir la boleta de pago de los empleados (Datos:
Nombre, horas trabajadas, salario por hora, fin de archivo)
Pago regular hasta 40 Hs semanales
Sobretiempo: 50% más que el salario normal
Imprimir: Nombre, Hs trabajadas, salario/hora, salario normal, sobretiempo
y pago total
13.- Imprimir el reporte de ventas (Vendedor, Nro de Orden, valor de la venta,
Totales por vendedor, Total compañía) leyendo la información de un archivo
N

14.- Se ingresarán N valores para X. Calcular el valor promedio X i


X  i 1

N
1 2 3
x x x xn
15.- La función e x se puede calcular con la fórmula e x  1     .... 
1! 2! 3! n!
Llamemos NUM = Numerador, DEN = Denominador, TER = término = N/D.
Detener el proceso cuando el término TER sea menor o igual a 0.00005
16.- Cargar un vector de N elementos con valores introducidos al azar, luego
buscar el valor mayor y su ubicación e imprimir la información encontrada
17.- Construir la matriz identidad de N x N
18.- Se dispone de 9 bolas de billar, todas iguales menos una que tiene peso
diferente. En 3 pesadas debemos determinar cual es la diferente además
de saber si es más pesada o más liviana que las demás
19.- Dado un número, determinar si el mismo es par o impar
20.- Dado un número, determinar si el mismo es primo o no es primo
21.- Hallar la suma de los N primeros números pares
22.- Se debe introducir la temperatura ya sea en oC o oF. Convertir los valores a
oF o oC según corresponda. (Ver cómo identificar el valor introducido)
23.- Ordenar M números introducidos al azar, en forma ascendente. Podemos
usar el método de comparaciones sucesivas con el primer número.

Ing. Hermas Herrera Callejas Página : 15 de


19
Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

INICIO

Leer M

I=0

I=I+1

Leer N(I)

No
I=M
? Si
I=M

I=I-1

J=0

J=J+1

SiAUX=N(J)
N(J)>N(J+ No N(J)=N(J+1)
1) N(J+1)=AUX
Si
No J=I
?
Si
No
I=
1 Si

I=0

I=I+1

Escribir N(I)

No
I=M
? Si
Fin

Ing. Hermas Herrera Callejas Página : 16 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

24.- Generar los N primeros números primos

Inicio

Def P(I), I, N, K, J, DIVE

A
Fin Si Fin B
?
No
A No Ejecutar ? DIVE>2 Si
?
Si No
Leer N K=K+1
A P(K) = J

N>0 ? No N debe ser > No


K=N J=J+1
0
Si ?
Si
J = 1, K=0 C
I = 1,
C
N
DIVE = 0
Imprimir
I = 1, J P(I)

I
J Mod I = 0 ? No
Si A
DIVE = DIVE + 1

Ing. Hermas Herrera Callejas Página : 17 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

25.- Invertir los dígitos de un número N entero, positivo de dos cifras o más

Inicio

Def A, N, N1, DIG

A
Fin Si Fin
?
No
A No Invertir ?

Si
Leer N

N>11 No N debe ser > A


? 11
Si
A = N, N1 = 0

No Desplegar A
A> N1
0?
Si
DIG = A Mod 10
N1 = N1*10 + DIG
A = A \ 10

Ing. Hermas Herrera Callejas Página : 18 de 19


Computación para Ingeniería I y Laboratorio Cap. 1 – Conceptos de Programación

26.- Construir una matriz de N x N con N impar y mayor a 2. Calcular las sumas
de los vectores centrales (vertical y horizontal) además de la suma total de
los vectores centrales (horizontal y vertical)

Inicio

Def A(I, J), N, I, J, C, S, K, H, V

A
Fin Si Fin
? No

A Ejecutar ?
No
Si
Leer N A

N>2 y N Mod 2= No N debe ser impar y > 2


1?
Si
H = 0, V = 0, S = 0
B
I = 1, N
I = 1, N

J = 1, N
H = H + A(I, K)
V = V + A(K, I)
Leer C
I
A(I, J) = C

S = H + V – A(K, K)
J

I Imprimir H, V, S

S = 0, K = N \ 2 + 1
A

Ing. Hermas Herrera Callejas Página : 19 de 19

Anda mungkin juga menyukai