INF101 - Introduccion a la Programacion (Guia de Estudio)

Anuncio
Universidad Católica Boliviana “San Pablo”
Facultad de Ciencias Exactas e Ingeniería
Ingeniería de Sistemas
GUIA DE ESTUDIO
INF-101 INTRODUCCION A LA PROGRAMACION
DOCENTES
MSc. Ing. Orlando Rivera Jurado
MSc. Ing. Jheser Guzmán Illanes
1-2010
INF-101 Introducción a la Programación
1-2010
El desarrollo de algoritmos es un tema fundamental en el diseño de
programas, por lo cual el alumno debe adquirir adecuada base que le
permitan desarrollar de manera más fácil y rápida programas de
computadora.
Estos apuntes servirán de apoyo a la cátedra de la materia “Introducción a
la Programación”, que se dicta en el primer semestre para todas las
carreras de Ingeniería de la facultad de Ciencias Exactas e Ingeniería de la
Universidad católica Boliviana “San Pablo”, permitiendo al estudiante
facilitar el proceso de desarrollo de su capacidad analítica y creadora, para
de esta manera mejorar su destreza en la elaboración de algoritmos que
sirven como base para la construcción de programas en distintos
lenguajes de programación.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 2
INF-101 Introducción a la Programación
1-2010
Tema #1 – Introducción a la Informática
1.1 Definición y origen del término informática
A lo largo de la historia el hombre ha necesitado transmitir y tratar información de forma
continua. Aun están en el recuerdo las señales de humo y los destellos de espejos que
fueron utilizados hace varios años, y más recientemente los mensajes de transmitidos a
través de cables utilizando el código Morse o la propia voz por medio del teléfono o radio.
La informática nace de la idea de ayudar al hombre en aquellos trabajos rutinarios y
repetitivos, generalmente de cálculo y gestión, donde es frecuente la repetición de tareas.
La idea es que una maquina puede realizarlos mejor, aunque siempre bajo la supervisión
del hombre.
El término informática nació en Francia el año 1962, y adoptado formalmente en España
en 1968 como INFORmación autoMÁTICA. También es reconocido el término con el
nombre de “Ciencias de la Computación”.
Para poder definir a la Informática, debemos conocer previamente los siguientes
términos:
La ciencia (del latín scientia 'conocimiento') se define como el conjunto de
conocimientos obtenidos mediante la observación y el razonamiento,
sistemáticamente estructurados y de los que se deducen principios y leyes generales.
La información es un fenómeno que proporciona significado o sentido a las cosas. En
sentido general, la información es un conjunto organizado de datos procesados, que
constituyen un mensaje sobre un determinado ente o fenómeno.
La INFORMATICA es la ciencia que estudia el tratamiento automático y
racional de la información.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 3
INF-101 Introducción a la Programación
1-2010
1.2 Elementos y conceptos fundamentales
Desde el punto de vista informático, el elemento físico utilizado para el tratamiento de la
información es el computador, computadora u ordenador, que puede ser definido de la
siguiente manera (Figura 1.1):
Computadora (Ordenador) es una maquina compuesta de elementos
físicos, en su mayoría de origen electrónico, capaz de realizar una gran
variedad de trabajos a gran velocidad y con gran precisión, siempre que se
le den instrucciones adecuadas.
Figura 1.1: Computadora (ordenador)
El conjunto de órdenes que se dan a una computadora para realizar un proceso
determinado se denomina programa, mientras que el conjunto de uno o varios programas
más la documentación correspondiente para realizar un determinado trabajo, se
denomina aplicación informática (Figura 1.2).
Figura 1.2: Aplicación informática
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 4
INF-101 Introducción a la Programación
1-2010
Al conjunto de operaciones que se realizan sobre una información se le denomina
tratamiento de la información. Estas operaciones siguen una división lógica que se
representa en el Esquema 1.1.
ENTRADA
PROCESO
SALIDA
Esquema 1.1: Tratamiento de la información
ENTRADA: Es el conjunto de operaciones cuya misión es tomar los datos del
exterior y enviarlos a la computadora; en ocasiones es necesario realizar
operaciones de depuración y validación de datos.
PROCESO: Operaciones que trabajan con los datos de entrada para obtener
resultados. Estas operaciones son llamadas procesos o algoritmos, y consiste
generalmente en una combinación adecuada de operaciones de origen aritmético
y test de tipo lógico.
SALIDA: Son operaciones que proporcionan los resultados de un proceso a las
personas correspondientes.
La informática está sustentada en tres pilares básicos, que son:
Elemento físico (HARDWARE).
Elemento lógico (Software).
Elemento humano (Personal informático).
Actualmente se utiliza el término firmware para denominar cierta parte del software que
las computadoras traen pregrabadas desde su fabricación y que puede estar en memorias
de solo lectura (ROM – Read Only Memory) o incorporada en su propia circuitería. El
programa más conocido de este tipo es el que entra en funcionamiento cuando se
enciende una computadora y que permite el arranque de la misma; se denomina
arrancador o bootstrap.
1.3 Esquema básico del elemento físico (HARDWARE)
El hardware es el elemento físico de un sistema informático, es decir, todos los materiales
que lo componen, como la propia computadora, dispositivos externos, los cables, los
soportes de la información y en definitiva todos aquellos elementos que tienen entidad
física.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 5
INF-101 Introducción a la Programación
1-2010
Esquema 1.2: Esquema básico del Hardware
Central Process Unit – CPU (Unidad Central de Proceso): Es el elemento principal o centro
neurálgico de una computadora y su misión consiste en coordinar y realizar todas las
operaciones del sistema informático. Consta de los siguientes elementos:
Procesador: Es el elemento encargado del control y ejecución de las operaciones y
está formado por:
Unidad de Control (CU – Control Unit): Es la parte del procesador
encargada de gobernar al resto de las unidades, además de interpretar y
ejecutar las instrucciones controlando su secuencia.
Unidad Aritmético Lógica (ALU – Arithmetic Logic Unit): Es la parte del
procesador encargada de realizar todas las operaciones elementales de tipo
aritmético lógica.
Memoria Central (CM – Central Memory): También denominada memoria interna
o principal (main memory), es el elemento de la CPU encargado de almacenar los
programas y los datos y los elementos necesarios para que el sistema informático
realice un determinado trabajo. Es importante decir que para que un programa
pueda ser ejecutado en una computadora tiene que estar en esta memoria, así
como los datos que necesiten ser procesados en ese momento.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 6
INF-101 Introducción a la Programación
1-2010
La memoria interna consta de dos aéreas de memoria:
Memoria RAM (Random Access Memory): Recibe el nombre de memoria
principal o memoria del usuario, en ella se almacena información mientras
la computadora está encendida. Cuando se apaga o se reinicia la
computadora, la información se pierde, por lo que se dice que la memoria
RAM es una memoria volátil.
Memoria ROM (Read Only Memory): Es una memoria estática que no
puede cambiar, la computadora puede leer los datos almacenados en la
memoria ROM, pero no se pueden introducir datos en ella, o cambiar los
datos que ahí se encuentran; por lo que se dice que esta memoria es de
solo lectura. Los datos de la memoria ROM están grabados en forma
permanente y son introducidos por el fabricante de la computadora.
Elementos de Entrada: sirven para introducir datos (información) en la computadora para
su proceso. Los datos se leen de los dispositivos de entrada y se almacena en la memoria
central o interna.
Ejemplos:
Teclado, Scanner, mouse, trackball, joystick, lápiz óptico, etc.
Elementos de Salida: Muestran la información procesada y cumplen la finalidad esperada
por una persona. Los dispositivos más comunes son: el monitor, la impresora, plotter, etc.
Memoria Auxiliar (memoria externa): Es donde se almacenan todos los programas o
datos que el usuario desee. Los dispositivos de almacenamiento o memorias auxiliares
(externas o secundarias) más comúnmente utilizados son: Discos magnéticos, discos
ópticos y dispositivos extraíbles (flash drives).
Adicionalmente debemos en la actualidad añadir a los Dispositivos de Comunicación de
datos, puesto que forman parte de un Sistema de Procesamiento de Información, tales
como modems, concentradores, routers, switches, etc.
1.4 Esquema básico del elemento lógico (SOFTWARE)
El Software es la parte lógica que dota al equipo físico de capacidad para
realizar cualquier tipo de trabajo.
Un elemento lógico, para estar presente en un sistema informático, debe almacenarse en
un soporte físico. Estos soportes son la memoria central y auxiliar.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 7
INF-101 Introducción a la Programación
1-2010
El elemento lógico de un sistema informático puede clasificarse como aparece
representado en:
Software de base (Sistema Operativo - OS): Es el soporte lógico que controla el
funcionamiento del equipo físico, ocultando los detalles del hardware y haciendo sencillo
el uso de la computadora.
Figura 1.3: Sistemas Operativos (GNU/Linux, Mac OS X y Windows Vista)
Los componentes de un Sistema Operativo son:
Programas de control: Tiene el objetivo de controlar todo el elemento físico.
Interfaces del usuario.
Administración de recursos.
Administración de tareas.
Administración de Archivos.
Servicios de soporte.
Utilidades: Ayudan al usuario a realizar trabajos típicos con el elemento físico,
como dar formato a discos, manejo de archivos, etc.
Software de aplicación: está compuesto por el conjunto de programas que ha sido
diseñado para que la computadora pueda desarrollar un trabajo. Pertenece a este
determinado grupo de denominados paquetes de software, que consisten en un conjunto
de programas que nos permiten editar texto, guardar datos, obtener informes, hacer
cálculos, comunicarnos entre usuarios y algunos trabajos típicos en el uso de
computadoras.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 8
INF-101 Introducción a la Programación
1-2010
1.5 Esquema básico del elemento humano (Personal Informático)
El elemento humano es el más importante de los que constituyen la informática. Sin
personas estas maquinas serian totalmente inútiles.
Personal informático: conjunto de personas que desarrollan las distintas funciones
relacionadas con el uso de las computadoras de la empresa.
Usuario: Personas que utilizan en última instancia la computadora y el software de
aplicación como herramienta para desarrollar su trabajo o ayudarse en su
actividad.
Gerencia de
Sistemas
Desarrollo de
Sistemas
Produccion
Seguridad de
Informacion
Inteligencia de
Negocios
Telecomunicaciones
Administradores de
proyectos
Help Desk
Redes de Datos
Analisis de Sistemas
Operaciones
Telefonia (VoIP)
Desarrolladores
Servidores
Figura 1.4: Organigrama del Departamento de Sistemas
1.6 Historia de la computación
Uno de los primeros dispositivos mecánicos para contar fue el ábaco, cuya historia se
remonta a las antiguas civilizaciones griega y romana. Este dispositivo es muy sencillo,
consta de cuentas ensartadas en varillas que a su vez están montadas en un marco
rectangular. Al desplazar las cuentas sobre varillas, sus posiciones representan valores
almacenados, y es mediante dichas posiciones que este representa y almacena datos. A
este dispositivo no se le puede llamar computadora por carecer del elemento
fundamental llamado programa.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 9
INF-101 Introducción a la Programación
1-2010
Figura 1.5: Abaco chino
Otro de los inventos mecánicos fue la Pascalina inventada por Blaise Pascal (1623 - 1662)
de Francia y la de Gottfried Wilhelm von Leibniz (1646 - 1716) de Alemania. Con estas
máquinas, los datos se representaban mediante las posiciones de los engranajes, y los
datos se introducían manualmente estableciendo dichas posiciones finales de las ruedas,
de manera similar a como leemos los números en el cuenta kilómetros de un automóvil.
Figura 1.6: Maquina aritmética de Blaise Pascal
La primera computadora fue la máquina analítica creada por Charles Babbage, profesor
matemático de la Universidad de Cambridge en el siglo XIX. La idea que tuvo Charles
Babbage sobre un computador nació debido a que la elaboración de las tablas
matemáticas era un proceso tedioso y propenso a errores. En 1823 el gobierno Británico
lo apoyo para crear el proyecto de una máquina de diferencias, un dispositivo mecánico
para efectuar sumas repetidas.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 10
INF-101 Introducción a la Programación
1-2010
Figura 1.7: Maquina analítica de Babbage
Mientras tanto Charles Jacquard (francés), fabricante de tejidos, había creado un telar que
podía reproducir automáticamente patrones de tejidos leyendo la información codificada
en patrones de agujeros perforados en tarjetas de papel rígido. Al enterarse de este
método Babbage abandonó la máquina de diferencias y se dedico al proyecto de la
máquina analítica que se pudiera programar con tarjetas perforadas para efectuar
cualquier cálculo con una precisión de 20 dígitos. La tecnología de la época no bastaba
para hacer realidad sus ideas.
Figura 1.8: Telar de Joseph M. Jacquard
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 11
INF-101 Introducción a la Programación
1-2010
En 1944 se construyó en la Universidad de Harvard, la Mark I, diseñada por un equipo
encabezado por Howard H. Aiken. Esta máquina no está considerada como computadora
electrónica debido a que no era de propósito general y su funcionamiento estaba basado
en dispositivos electromecánicos llamados relevadores.
En 1947 se construyó en la Universidad de Pennsylvania la ENIAC (Electronic Numerical
Integrator And Calculator) que fue la primera computadora electrónica, el equipo de
diseño lo encabezaron los ingenieros John Mauchly y John Eckert. Esta máquina ocupaba
todo un sótano de la Universidad, tenía más de 18 000 tubos de vacío, consumía 200 KW
de energía eléctrica y requería todo un sistema de aire acondicionado, pero tenía la
capacidad de realizar cinco mil operaciones aritméticas en un segundo.
Figura 1.9: La computadora ENIAC
El proyecto, auspiciado por el departamento de Defensa de los Estados Unidos, culminó
dos años después, cuando se integró a ese equipo el ingeniero y matemático húngaro
John von Neumann (1903 - 1957). Las ideas de von Neumann resultaron tan
fundamentales para su desarrollo posterior, que es considerado el padre de las
computadoras.
La EDVAC (Electronic Discrete Variable Automatic Computer) fue diseñada por este nuevo
equipo. Tenía aproximadamente cuatro mil bulbos y usaba un tipo de memoria basado en
tubos llenos de mercurio por donde circulaban señales eléctricas sujetas a retardos.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 12
INF-101 Introducción a la Programación
1-2010
La idea fundamental de Von Neumann fue: permitir que en la memoria coexistan datos
con instrucciones, para que entonces la computadora pueda ser programada en un
lenguaje, y no por medio de alambres que eléctricamente interconectaban varias
secciones de control, como en la ENIAC.
1.7 Generaciones de las computadoras
Todo este desarrollo de las computadoras suele divisarse por generaciones y el criterio
que se determinó para determinar el cambio de generación no está muy bien definido,
pero resulta aparente que deben cumplirse al menos los siguientes requisitos:
Forma en que están construidas.
Forma en que el ser humano se comunica con ellas.
1.7.1 Primera generación (1940 - 1952)
La constituyen todas aquellas computadoras diseñadas a base de válvulas al vacio como
principal elemento de control y cuyo uso fundamental fue la realización de aplicaciones en
los campos científico y militar. Utilizaban como lenguaje de programación el lenguaje de
máquina y como únicas memorias para conservar información las tarjetas perforadas, la
cinta perforadora y las líneas de mercurio.
Figura 1.10: Computador que utiliza válvulas al vacio.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 13
INF-101 Introducción a la Programación
1-2010
1.7.2 Segunda generación (1952 - 1964)
Al sustituirse la válvula de vacio por el transistor, comenzó la llamada segunda generación
de computadores. En ella, las maquinas ganaron potencia y fiabilidad, perdiendo tamaño,
consumo y precio, lo que las hacía mucho mas practicas y asequibles. Los campos de
aplicación en aquella época fueron, además del científico y militar, el administrativo y
gestión; es decir, las computadoras empezaron a utilizarse en empresas que se dedicaban
a los negocios. Comenzaron además a utilizarse los llamados lenguajes de programación
evolucionados, que hacían más sencilla la programación; entre ellos podemos citar el
Ensamblador y algunos de los denominados de alto nivel, como FORTRAN, COBOL y
ADGOL. Asimismo, comenzaron a utilizarse como memoria interna los núcleos de ferrita y
el tambor magnético, como memoria externa la cinta magnética y los tambores
magnéticos.
Figura 1.11: Computador de transistores.
1.7.3 Tercera generación (1964 - 1971)
En esta generación el elemento más significativo es el circuito integrado aparecido en
1964, que consistía en el encapsulamiento de una gran cantidad de componentes
discretos. (Resistencias, condensadores, diodos y transistores), conformando uno o varios
circuitos con una función determinada, sobre una pastilla de silicona o plástico. La
miniaturización se extendió a todos los circuitos de la computadora, apareciendo las
minicomputadoras. Se utilizaron tecnologías SSI y MSI. Asimismo, el software evoluciono
de forma considerable con un gran desarrollo de los sistemas operativos, en los que se
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 14
INF-101 Introducción a la Programación
1-2010
incluyo la multiprogramación, el tiempo real y el modo interactivo. Comenzaron a
utilizarse las memorias de semiconductores y los discos magnéticos.
Figura 1.12: Computador basado en circuitos integrados.
1.7.4 Cuarta generación (1971 - 1981)
En 1971 aparece el microprocesador, consistente en la integración de toda la CPU de una
computadora en un solo circuito integrado. La tecnología utilizada es LSI que permitió la
fabricación de microprocesadores y computadoras personales (PC), así como las
computadoras mono-pastilla. Se utilizo además el diskette (floppy disk) como unidad de
almacenamiento externo. Aparecieron una gran cantidad de lenguajes de programación
de todo tipo y las redes de transmisión de datos (teleinformática) para la interconexión de
computadoras.
Figura 1.13: Computador de cuarta generación.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 15
INF-101 Introducción a la Programación
1-2010
1.7.5 Quinta generación (1981 a la actualidad)
En 1981 los principales países productores de nuevas tecnologías (fundamentalmente
Estados Unidos y Japón) anunciaron una nueva generación, cuyas características
principales iban a ser:
Utilización de componentes a muy alta escala de integración (VLSI).
Computadoras con Inteligencia Artificial.
Utilización de lenguaje natural (lenguajes de quinta generación).
Interconexión entre todo tipo de computadoras, dispositivos y redes (redes
integradas).
Integración de datos, imágenes y voz (entornos multimedia).
Figura 1.14: Computador de quinta generación.
1.8 Tipos de computadoras
Dentro de la evolución de las computadoras, han surgido diferentes equipos con
diferentes tamaños y características según su tipo de labor. Los computadores son
utilizados desde las plantas nucleares como controladores de labores de alto riesgo hasta
la simple tarea de calentar la comida con el microondas.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 16
INF-101 Introducción a la Programación
1-2010
1.8.1 Súper - Computadoras
Es una maquina diseñada especialmente para cálculos que precisan una gran velocidad de
proceso. Generalmente poseen un gran número de procesadores que trabajan en
paralelo, con lo que se consiguen realizar billones de operaciones por segundo.
Figura 1.15: Súper - computador.
1.8.2 Macro Computadoras – Main Frame
Es una maquina diseñada principalmente para dar servicio a grandes empresas y
organizaciones. Su potencia de cálculo es inferior a la anterior, cifrándose en la ejecución
de varios millones de operaciones por segundo. Una de sus características principales es la
de soportar un gran número de terminales o estaciones de trabajo. Además pueden
intervenir en procesos distribuidos en los que se conectan dos o más computadoras en
paralelo, de tal forma que se reparten todo el trabajo a realizar.
Figura 1.16: Macro - computador.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 17
INF-101 Introducción a la Programación
1-2010
1.8.3 Mini Computadoras
Son maquinas de tipo medio, es decir, su capacidad de proceso es menor a las anteriores y
por tanto pueden controlar un menor número de terminales.
Figura 1.17: Mini - computador.
1.8.4 Micro Computadoras
Se trata de una maquina cuyo funcionamiento interno se basa en el uso del
microprocesador, y con él se consigue una serie de prestaciones, que en potencia,
manejabilidad, portabilidad, precio, etc.., cubren la gama más baja de necesidades en el
mundo de la informática. Hoy se puede decir que el mundo de la microinformática o el de
las microcomputadoras es el más importante y también el más popular. Dentro de las
microcomputadoras se pueden distinguir dos grupos importantes.
Estación de trabajo (workstation): Es una microcomputadoras de gran potencia
que se utiliza para trabajos de ingeniería o similares y permite la conexión a través
de una red con una computadora de mayor potencia.
Computadora personal (PC – Personal Computer): Es una microcomputadora fácil
de usar y con grandes prestaciones. Generalmente posee un solo puesto de
trabajo, aunque puede tener varios. Actualmente la mayor gama de equipos
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 18
INF-101 Introducción a la Programación
1-2010
hardware y de aplicaciones software que existen en el mercado pertenecen al
grupo de computadoras personales.
Figura 1.18: Micro – computador (Computadora Personal).
Computadora Portátil: (también laptop, término proveniente del inglés) es una
pequeña computadora personal móvil, que pesa normalmente entre 1 y 3 kg. Las
computadoras portátiles son capaces de realizar la mayor parte de las tareas que
realizan las computadoras de escritorio, con la ventaja de que son más pequeñas,
más livianas y tienen la capacidad de operar por un período determinado sin estar
conectadas a la electricidad.
Figura 1.19: Laptop (Computadora Portátil).
Netbook: Son una nueva clase de portátiles que eliminan la unidad de CD, y a
veces otros componentes como tarjeta gráfica, con el fin de reducir el tamaño
físico de las máquinas (y en ocasiones el costo), capaces de entrar en el bolsillo de
un pantalón, como en el caso de los VAIO serie P. Su capacidad de procesamiento
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 19
INF-101 Introducción a la Programación
1-2010
es notablemente menor que las portátiles normales, por eso necesitan sistemas
operativos diseñados específicamente, además del uso de almacenamiento
remoto.
Figura 1.20: Netbook.
PDA (Personal Digital Assistent): es un computador de mano originalmente
diseñado como agenda electrónica (calendario, lista de contactos, bloc de notas y
recordatorios) con un sistema de reconocimiento de escritura.
Hoy día estos dispositivos, pueden realizar muchas de las funciones de una
computadora de escritorio (ver películas, crear documentos, juegos, correo
electrónico, navegar por Internet, reproducir archivos de audio, etc.) pero con la
ventaja de ser portátil. Los últimos años se combinaron las funciones de la
telefonía celular con la de los PDA, obteniendo así los denominados Smartphones.
NOTA: Los PDA son la evolución tecnológica de las denominadas Palmtops que
solamente realizaban funciones muy básicas (block de notas, lista de contactos,
etc.).
Figura 1.21: Palmtop, PDA y Smartphone .
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 20
INF-101 Introducción a la Programación
1-2010
Tema #2 – Unidades funcionales de la computadora
2.1 Introducción
El elemento hardware de un sistema básico de proceso de datos se puede estructurar en
tres partes claramente diferenciadas en cuanto a sus funciones:
La Unidad Central de Proceso (CPU – Central Process Unit).
La Memoria central (CM – Central Memory).
Las unidades de entrada / salida (I/O – Input/Output).
Estos componentes se comunican entre sí mediante el bus de sistema y los controladores.
La placa base, placa madre, tarjeta madre o board (en inglés motherboard, mainboard)
es una tarjeta de circuito impreso a la que se conectan las demás partes de la
computadora. Tiene instalados una serie de circuitos integrados, entre los que se
encuentra el Chipset que sirve como centro de conexión entre el procesador, la memoria
central, los buses de expansión y otros dispositivos de entrada/salida.
Figura 2.1: Tarjeta madre (motherboard).
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 21
INF-101 Introducción a la Programación
1-2010
2.2 La Unidad Central de Proceso (CPU)
La CPU o Procesador central es el verdadero cerebro de la computadora. Su misión
consiste en controlar y coordinar o realizar todas las operaciones del sistema. Para ello
extrae, una a una, las instrucciones del programa que se tiene alojado en la memoria
central, las analiza y emite las órdenes necesarias para su completa realización.
Físicamente está formado por circuitos de naturaleza electrónica que en una
microcomputadora se encuentran integrados en una pastilla o chip denominado
microprocesador.
Figura 2.2: Microprocesador.
Los microprocesadores más conocidos son los de la familias x86 (32 bits) o x64 (64 bits) de
las marcas Intel, AMD, y Motorola.
La CPU está compuesta por las siguientes unidades:
Unidad de Control (CU – Control Unit)
Unidad Aritmético Lógica (ALU - Arithmetic Logic Unit).
2.2.1 Unidad de Control (CU)
Es el centro nervioso de la computadora ya que desde ella se controlan y gobiernan todas
las operaciones. Para realizar su función, consta de las siguientes partes:
Contador de programa (PC – Program Counter): Contiene la dirección de memoria
con la siguiente instrucción.
Registro de instrucción (IR – Instruction Register): Contiene la instrucción que se
está ejecutando.
Decodificador: Se encarga de extraer el código de operación de la instrucción en
curso, lo analiza y emite las señales necesarias al resto de elementos para su
ejecución atraves del secuenciador.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 22
INF-101 Introducción a la Programación
1-2010
Reloj (Clock): Proporciona una sucesión de impulsos o ciclos a intervalos
constantes, que marcan los instantes en que han de comenzar los distintos pasos
de que consta cada instrucción.
Frecuencia Abreviatura
Hertz
Kilo Hertz
Mega Hertz
Giga Hertz
Tera Hertz
Hz
KHz
MHz
GHz
THz
Nro.
ciclos / segundo
1
1.000
1.000.000
1.000.000.000
1.000.000.000.000
Secuenciador: En este dispositivo se generan ordenes muy elementales (microordenes) que, sincronizadas por los impulsos de reloj, hacen que vaya ejecutando
poco a poco la instrucción que está cargada en el IR.
2.2.2 Unidad Aritmético Lógica (ALU)
Esta unidad es la encargada de realizar las operaciones elementales de tipo aritmético
(sumas, restas, productos y divisiones) y de tipo lógico (comparaciones AND, OR, NOT,
NOR, NAND, XOR). Para comunicarse con las otras unidades funcionales utiliza el
denominado bus de datos y para realizar su función necesita los siguientes elementos:
Circuito operacional.
Registros de entrada.
Registro acumulador.
Registro de estado.
2.2.3 La memoria central
La memoria central interna es la unidad donde están almacenados las instrucciones y los
datos necesarios para poder realizar un determinado proceso. Está constituida por
multitud de celdas o posiciones de memoria, numeradas de forma consecutiva, capaces
de retener, mientras la computadora este conectada, la información depositada en ella.
La memoria interna consta de dos áreas de memoria:
La memoria RAM (RAM – Random Access Memory): Recibe el nombre de
memoria principal o memoria de usuario, en ella se almacena información solo
mientras la computadora está encendida. Cuando se apaga el computador o
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 23
INF-101 Introducción a la Programación
1-2010
arranca nuevamente la computadora, la información se pierde, por lo que se dice
que la memoria RAM es una memoria volátil.
Figura 2.3: Memoria RAM.
La memoria ROM (Read Only Memory): Es una memoria estática que no puede
cambiar, la computadora puede leer los datos almacenados en la memoria ROM,
pero no se pueden introducir datos en ella, o cambiar los datos que ahí se
encuentran; por lo que se dice que esta memoria es de solo lectura. Los datos de la
memoria ROM están grabados en forma permanente y son introducidos por el
fabricante de la computadora.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 24
INF-101 Introducción a la Programación
1-2010
Tema #3 – Soporte de la información y unidades de
Entrada/Salida
3.1 Introducción
Como se vio en el tema 2, el núcleo principal de una computadora es la CPU; ahora bien,
para el funcionamiento de esta es necesario que los datos y la información este
soportados en un elemento físico al que al que la propia computadora tenga acceso; estos
elementos son los denominados soportes de la información; asimismo es necesario
disponer de dispositivos conectados a la computadora capaces de leer en estos soportes
de información y escribirla en ellos según se trate de realizar operaciones de lectura o
escritura. A estos dispositivos se les denomina unidades de entrada y/o salida (unidades
E/S).
Un soporte de información es un medio físico que permite almacenar
datos de forma que una computadora pueda manejarlos o proporcionarlos
a las personas de manera inteligibles.
Una unidad de entrada/salida es un dispositivo físico capaz de comunicar
información entre el usuario y la computadora o capaz de manejar un
soporte de información.
Los soportes de la información se pueden clasificar por su naturaleza física en:
Soportes perforados.
Soportes magnéticos.
Soportes ópticos.
Otros soportes.
Por su parte los periféricos podemos clasificarlos según funciones que realizan en los
siguientes grupos.
Unidades de entrada: Son las unidades que realizan la función de introducir
información de la memoria central para su tratamiento como por ejemplo Teclado,
ratón, scanner, etc.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 25
INF-101 Introducción a la Programación
1-2010
Unidades de salida: Son unidades que realizan la función de extraer la información
de la memoria central al exterior como por ejemplo Monitor, impresora, etc.
Unidades de Entrada/Salida: Realizan las dos funciones, introducir información en
memoria central extraerla de memoria central como por ejemplo Discos duros,
cintas, diskettes, modem, etc.
También existe otra clasificación de los periféricos dependiendo de la localización de los
mismos respecto a la CPU en que están conectados, y tenemos:
Unidades locales: Situados cerca del ordenador, sin sobrepasar unos límites (unos
pocos metros) como por ejemplo una red local (LAN).
Unidades remotas: Están lejos del ordenador, conectados a través de una red de
telecomunicación como por ejemplo una red extensa (WAN)
3.2 Unidad métrica de almacenamiento de información
El sistema binario es el sistema de numeración que utilizan internamente los circuitos
digitales que configuran el hardware de las computadoras actuales.
Cada cifra digito de un número representado en este sistema se denomina bit
(contracción de Binary Digit).
Para la medida de cantidades de información representadas en binario se utilizan una
serie de múltiplos de bit que poseen nombre propio; estos son los siguientes:
Bit (b): Digito binario (1 o 0).
Nibble o cuarteto: Es el conjunto de cuatro bits (1001).
Bytes u Octeto (B): Es el conjunto de 8 bits (11110000).
Kilo Bytes (KB): Es el conjunto de 1024 Bytes (210 Bytes).
Mega Bytes (MB): Es el conjunto de 1024 KBytes (220 Bytes).
Giga Bytes (GB): Es el conjunto de 1024 MBytes (230 Bytes).
Tera Bytes (TB): Es el conjunto de 1024 GBytes (240 Bytes).
Peta Bytes (PB): Es el conjunto de 1024 PBytes (250 Bytes).
Exa Bytes (EB): Es el conjunto de 1024 EBytes (260 Bytes).
Zeta Bytes (ZB): Es el conjunto de 1024 ZBytes (270 Bytes).
Yotta Bytes (YB): Es el conjunto de 1024 YBytes (280 Bytes).
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 26
INF-101 Introducción a la Programación
1-2010
3.3 Medios almacenamiento
3.3.1 Medios perforados
Los medios perforados fueron los primeros en utilizarse; su primera aplicación fue la de
soportar la información sobre estampados de tejidos en el telar de Joseph Marie Jacquard
y la aplicación más consistente fue la de soportar la información del censo de Estados
Unidos en la maquina censadora de Herrman Holerith.
La forma de grabación de datos en estos elementos se realizaba a través de perforaciones
en un soporte generalmente de papel, en el que quedaban permanentemente sin
posibilidad de modificación, por lo que eran soportes de información que no podían
volverse a modificar (solo lectura).
Figura 3.1: tarjetas perforadas.
3.3.2 Medios magnéticos
Los medios magnéticos son los que se basan en las propiedades magnéticas de algunos
materiales para el registro de la información. Comenzaron a utilizarse a partir de la
aparición de memorias de bases de núcleos de ferrita (utilizadas como memoria central).
Más tarde surgieron otros medios magnéticos más apropiados para el almacenamiento
masivo debido fundamentalmente a la densidad de grabación que permitían y por ellos a
la importante reducción del tamaño del soporte.
Como ejemplos de dispositivos de almacenamiento masivo magnéticos tenemos:
Tambor magnético.
Cinta magnética (Casettes).
Discos flexibles (Diskettes).
Discos duros (HDD – Hard Disk Drive).
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 27
INF-101 Introducción a la Programación
3.3.2.1
1-2010
Unidad de Disco Duro
Un disco duro o disco rígido (en inglés Hard Disk Drive) es un dispositivo no volátil, que
conserva la información aun con la pérdida de energía, que emplea un sistema de
grabación magnética digital. Dentro de la carcasa hay una serie de platos metálicos
apilados girando a gran velocidad. Sobre los platos se sitúan los cabezales encargados de
leer o escribir los impulsos magnéticos.
Figura 3.2: Disco Duro.
Hay distintos estándares para comunicar un disco duro con la computadora (Interfaces),
entre los cuales tenemos los siguientes:
Integrated Drive Electronics (IDE, también llamado PATA o solamente ATA).
Serial ATA (SATA).
SCSI generalmente usado en servidores.
Fiber Cable (FC) exclusivo para servidores.
Figura 3.3: Interfaces IDE y SATA de un Disco Duro.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 28
INF-101 Introducción a la Programación
1-2010
Tal y como sale de fábrica, el disco duro no puede ser utilizado por un sistema operativo.
Antes se deben definir en él un formato de bajo nivel, una o más particiones y luego
hemos de darles un formato que pueda ser entendido por nuestro sistema.
Estructura de un Disco Duro
Dentro de un disco duro hay uno o varios platos (entre 2 y 4 normalmente, aunque hay
hasta de 6 ó 7 platos), que son discos (de aluminio o cristal) concéntricos y que giran todos
a la vez. El cabezal (dispositivo de lectura y escritura) es un conjunto de brazos alineados
verticalmente que se mueven hacia dentro o fuera según convenga, todos a la vez. En la
punta de dichos brazos están las cabezas de lectura/escritura, que gracias al movimiento
del cabezal pueden leer tanto zonas interiores como exteriores del disco.
Hay varios conceptos para referirse a zonas del disco:
Plato: cada uno de los discos que hay dentro del disco duro.
Cara: cada uno de los dos lados de un plato.
Cabeza: número de cabezales;
Pista: una circunferencia dentro de una cara; la pista 0 está en el borde exterior.
Cilindro: Conjunto de varias pistas; son todas las circunferencias que están
alineadas verticalmente (una de cada cara).
Sector: Cada una de las divisiones de una pista.
Cluster: La unión de varios sectores de una pista. Su tamaño estándar actual es de
512 Bytes.
Figura 3.4: Pista (A), Sector (B), Sector de una Pista (C) y Cluster (D).
Un master boot record (MBR) es el primer sector ("sector cero") de un dispositivo de
almacenamiento de datos. A veces, se emplea para el arranque del sistema operativo con
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 29
INF-101 Introducción a la Programación
1-2010
bootstrap, otras veces es usado para almacenar una tabla de particiones y, en ocasiones,
se usa sólo para identificar un dispositivo de disco individual, aunque en algunas máquinas
esto último no se usa y es ignorado.
En la Pista Cero (Pista 0) se encuentra el direccionamiento lógico de los archivos
almacenados en un disco magnético.
3.3.3 Medios Ópticos
Los medios ópticos son aquellos que se basan en propiedades ópticas generalmente
relacionadas con la reflexión de la luz. En la actualidad se están utilizando como
elementos reconocedores de estas propiedades dispositivos basados en rayos láser.
Los soportes ópticos son documentos de papel, cartulina o plástico sobre los que se
escriben caracteres normalizados o marcas fácilmente reconocibles tanto por las
máquinas como por las personas. Dichos caracteres o marcas pueden ser escritos de
forma automática por máquinas de escribir o impresoras de computadora o también de
forma manual.
3.3.3.1
Discos Ópticos
El soporte de información en disco óptico, también denominado disco compacto
(compact disc-CD), aparece como consecuencia de su alta difusión en el mundo de la
música y la imagen, donde recibe el nombre de compact-disk o video-disk, y se utiliza en
este ámbito para el registro de señales analógicas digitalizadas, tanto musicales como de
vídeo, con una alta calidad y densidad de grabación. Por lo tanto, y debido a sus
características, el disco óptico configura un soporte de información de alta densidad y por
ello de alta capacidad de almacenamiento de datos sensiblemente superior a la de discos
magnéticos y que puede oscilar entre varios cientos de megabytes y un gigabyte por cara
del disco.
La información se registra, en el caso más general, en una superficie donde se genera
minúsculas perforaciones denominadas pits. Capaces de ser detectadas mediante la
incisión sobre ellas de un rayo láser que será reflejado de distinta forma si existe o no
dicha perforación.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 30
INF-101 Introducción a la Programación
1-2010
Figura 3.5: Unidad de lectura de Blu-Ray Disc.
3.4 Terminales de Pantalla
El monitor o pantalla de computadora, aunque también es común llamarlo "pantalla", es
un dispositivo de salida que, mediante una interfaz, muestra los resultados del
procesamiento de una computadora.
Los primeros monitores surgieron en el año 1981 y eran monitores monocromáticos (de
un solo color). Poco después y en el mismo año salieron los monitores CGA (Color
Graphics Adapter) fueron comercializados en 1981 al desarrollarse la primera tarjeta
gráfica a partir del estándar CGA de IBM.
Tres años más tarde surgió el monitor EGA (Enhaced Graphics Adapter) estándar
desarrollado por IBM para la visualización de gráficos, este monitor aportaba más colores
(16 colores) y una mayor resolución. En 1987 surgió el estándar VGA (Video Graphics
Array) fue un estándar muy acogido y dos años más tarde se mejoró y rediseñó para
solucionar ciertos problemas que surgieron, desarrollando así SVGA (Super VGA), que
también aumentaba colores y resoluciones, para este nuevo estándar se desarrollaron
tarjetas graficas de fabricantes hasta día de hoy conocidos como NVIDIA GeForce o ATI
entre otros.
Figura 3.6: Tarjeta de Video ATI.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 31
INF-101 Introducción a la Programación
1-2010
3.4.1 Tipos de monitores
Figura 3.7: Monitor CRT y LCD.
3.4.1.1
Monitores CRT
Los primeros monitores eran monitores de tubo de rayos catódicos (CRT), completamente
analógicos, realizaban un barrido de la señal a lo largo de la pantalla produciendo cambios
de tensión en cada punto, generando así imágenes.
3.4.1.2
Monitores LCD
Más tarde surgieron los monitores planos de cristal liquido, que empezaban a ser digitalanalógicos, internamente trabajaban en digital y exteriormente les llegaban las señales en
analógico, actualmente la fuente de datos puede ser también digital. Se adaptan bastante
mal a resoluciones no nativas de la pantalla. Son ligeros y planos.
3.4.1.3
Monitores plasma
No mucho más tarde que los LCD se desarrollaron la tecnología del plasma, que parecía
iba a desbancar al LCD, sin embargo actualmente siguen ambas tecnologías vivas. En el
presente se están desarrollando monitores de unas 30 pulgadas de plasma, normalmente
estos monitores tienden a ser más grandes que los LCD ya que contra más grandes son
estos monitores mejor es la relación tamaño-calidad/precio.
3.4.1.4
Monitores LEDs
Se están investigando tecnologías usando LEDs para desarrollar monitores OLED,
completamente flexibles, económicos y con poco consumo, podrían ser una revolución
dentro de los monitores, por sus propiedades, actualmente se desarrollan los primeros
prototipos para PDA y dispositivos móviles.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 32
INF-101 Introducción a la Programación
1-2010
3.5 Terminales de Teclado
Un teclado (keyboard en ingles) es un periférico o dispositivo que consiste en un sistema
de teclas, como las de una máquina de escribir, que permite introducir datos u órdenes a
una computadora o dispositivo digital.
Sobre la distribución de los caracteres en el teclado surgieron dos variantes principales: la
francesa AZERTY y la alemana QWERTY. Ambas se basaban en cambios en la disposición
según las teclas más frecuentemente usadas en cada idioma.
Figura 3.8: Teclado QWERTY inalámbrico.
3.6 Dispositivos de comunicación de datos
Adicionalmente debemos en la actualidad añadir a los dispositivos de comunicación de
datos, puesto que forman también parte de un Sistema de Procesamiento de la
información.
Entre estos tenemos:
Routers.
Switches.
Hubs.
Repetidores.
Módems.
Tarjetas de red.
Una red de computadoras, también llamada red de ordenadores o red informática, es un
conjunto de equipos (computadoras y/o dispositivos) conectados por medio de cables,
señales, ondas o cualquier otro método de transporte de datos, que comparten
información (archivos), recursos (CD-ROM, impresoras, etc.), servicios (acceso a internet,
e-mail, chat, juegos), etc.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 33
INF-101 Introducción a la Programación
1-2010
Las redes de computadoras se pueden clasificar en las siguientes según el área geográfica
que abarcan:
PAN (Personal Area Network): Redes de Área personal.
Ej.: Interconexión entre un mouse o teclado inalámbrico a un computador
mediante tecnología bluetooth o infrarroja.
LAN (Local Area Network): Redes de Área Local.
Ej.: La red de computadoras de un laboratorio o centro de computo de una
universidad, La conexión de red de un café internet, o la interconexión de
una área de trabajo en una empresa.
CAN (Campus Area Network): Redes de Área de Campus.
Ej.: Red que interconecta varias unidades de una empresa. Red que
interconecta los laboratorios, y áreas administrativas de una universidad.
MAN (Metropolitan Area Network): Redes de Área Metropolitana.
Ej.: Red que interconecta los cajeros automáticos de un banco con sus
agencias distribuidas por una ciudad.
WAN (Wide Area Network): Red de Área Extensa.
Ej.: red que interconecta las redes de computadoras de ciudades, países y
continentes (Internet).
SAN (Storage Area Network): Red de Área de Almacenamiento.
Ej.: Discos Duros interconectados entre sí que almacenan información de
varios servidores.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 34
INF-101 Introducción a la Programación
1-2010
Tema #4 – Sistemas Operativos y Traductores
4.1 Introducción
Un Sistema operativo (SO) es un programa informático que actúa de interfaz entre los
dispositivos de hardware y el usuario. Es responsable de gestionar, coordinar las
actividades y llevar a cabo el intercambio de recursos de un computador. Actúa como
estación para las aplicaciones que se ejecutan en la máquina.
Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un
reducido código en lenguaje ensamblador localizado en una dirección concreta en la ROM,
que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al
procesador.
Un sistema operativo se puede encontrar en la mayoría de los aparatos electrónicos que
utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la
máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD,
auto-radios, computadoras, radios, etc).
Figura 4.1: Interacción entre el SO y las otras partes.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 35
INF-101 Introducción a la Programación
1-2010
4.2 Funciones básicas
Un Sistema operativo (SO) desempeña 5 funciones básicas en la operación de un sistema
informático:
Interfaces del usuario: Es la parte del sistema operativo que permite comunicarse
con él, de tal manera que se puedan cargar programas, acceder archivos y realizar
otras tareas. Existen tres tipos básicos de interfaces: las que se basan en
comandos, las que utilizan menús y las interfaces gráficas de usuario.
Administración de recursos: Sirven para administrar los recursos de hardware y de
redes de un sistema informático, como la CPU, memoria, dispositivos de
almacenamiento secundario y periféricos de entrada y de salida.
Administración de archivos: Un sistema de información contiene programas de
administración de archivos que controlan la creación, borrado y acceso de archivos
de datos y de programas. También implica mantener el registro de la ubicación
física de los archivos en los discos magnéticos y en otros dispositivos de
almacenamiento secundarios.
Administración de tareas: Los programas de administración de tareas de un
sistema operativo administran la realización de las tareas informáticas de los
usuarios finales. Los programas controlan qué áreas tienen acceso al CPU y por
cuánto tiempo. Las funciones de administración de tareas pueden distribuir una
parte específica del tiempo del CPU para una tarea en particular, e interrumpir al
CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.
Servicios de soporte: Los servicios de soporte de cada sistema operativo
dependerán de la implementación particular de éste con la que estemos
trabajando. Entre las más conocidas se pueden destacar las implementaciones de
Unix, desarrolladas por diferentes empresas de software, los sistemas operativos
de Apple Inc., como Mac OS X para las computadoras de Apple Inc., los sistemas
operativos de Microsoft, y las implementaciones de software libre, como
GNU/Linux o BSD producidas por empresas, universidades, administraciones
públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo. Estos
servicios de soporte suelen consistir en:
Actualización de versiones.
Mejoras de seguridad.
Inclusión de alguna nueva utilidad.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 36
INF-101 Introducción a la Programación
1-2010
Controladores para manejar nuevos periféricos.
Corrección de errores de software.
Figura 4.2: Estimación del uso de Sistemas Operativos (Fuente: W3conter).
No todas las utilidades de administración o servicios forman parte del sistema
operativo, además de éste, hay otros tipos importantes de software de
administración de sistemas, como los sistemas de administración de base de datos
o los programas de administración de redes. El soporte de estos productos deberá
proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo
que el del sistema operativo).
4.3 Programas de proceso
Los programas de proceso están enfocados preferentemente para ayudar al programador
en la puesta a punto de programas, llegando incluso a proporcionarle pseudo-programas
estándares semi-escritos, que completados con pocas instrucciones mas quedan
perfectamente listos para su ejecución.
Todo sistema operativo posee en su entorno un conjunto de programas para este fin.
Existen dos tipos de programas de proceso, los programas traductores y los programas de
servicio.
4.3.1 Programas traductores
Los programas traductores son meta-programas que toman como entrada un programa
escrito en lenguaje simbólico alejado de la maquina denominado programa fuente y
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 37
INF-101 Introducción a la Programación
1-2010
proporcionan como salida otro programa equivalente escrito en un lenguaje comprensible
por el hardware de la computadora denominado programa objeto.
Existen 3 tipos de programas traductores:
a) Programas ensambladores: Son programas traductores que transforman
programas fuente escritos en lenguajes simbólicos de bajo nivel (denominados
lenguajes ensambladores o assemblers), en programas objeto, escritos en
lenguaje de máquina y ejecutables directamente por el hardware de la
computadora.
Figura 4.3: Programa en lenguaje ensamblador.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 38
INF-101 Introducción a la Programación
1-2010
b) Programas compiladores: Son programas traductores encargados de transformar
programas fuente escritos en lenguaje simbólico de alto nivel, en programas
objeto escritos en lenguaje de máquina. La traducción no suele ser directa,
apareciendo un paso intermedio situado en un nivel similar al de ensamblador.
Una característica fundamental de este tipo de traductores es que se realiza la
traducción completa, y en el caso de no existir errores se pasa a la creación del
programa objeto. La traducción del programa fuente se efectúa, además, de forma
que cada instrucción del programa fuente se transforma en una o más
instrucciones en el programa objeto.
Turbo C
C/C++
Pascal
Basic
Figura 4.4: El IDE Codeblocks que utiliza el compilador GNU GCC (Lenguaje C/C++).
c) Programas Interprete: Son programas traductores que transforman programas
fuente escritos en lenguaje de alto nivel en programas objeto escritos en lenguaje
maquina. En estos programas interpretes la traducción se realiza de forma que
después de transformar una instrucción del programa fuente en una o varias
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 39
INF-101 Introducción a la Programación
1-2010
instrucciones en lenguaje maquina no se espera a traducir la siguiente instrucción,
sino que inmediatamente se ejecuta. Como ejemplo tenemos los siguiente:
Perl
PHP
Java
ASP
Python
C#
J#
4.3.2 Programas de servicio
Los programas de servicio son un grupo de programas que realizan funciones útiles para él
para el sistema o para el usuario (comúnmente llamados utilidades).
Teniendo en cuenta el campo de actuación de los programas de servicio, se pueden
clasificar en dos grupos.
a) Programas de manipulación de datos: Son aquellos que liberan al programador de
trabajos engorrosos, ya que realizan de forma automática alguna de las siguientes
funciones:
Transferencia de informaciones o archivos entre soportes.
Recodificación (transcodificación) o transformación de informaciones.
Recodificación de la información en archivos.
Ordenación de datos en archivos.
b) Programas de servicio del sistema: Tienen como misión la generación del sistema
operativo completo sobre la computadora, la presentación de los programas y la
creación y mantenimiento de las bibliotecas de programas.
4.4 Proceso de compilación
Por ser los compiladores el tipo de traductores más utilizado en la actualidad,
desarrollamos el proceso de compilación, que consiste en la traducción de un programa
fuente escrito en lenguaje de alto nivel en su correspondiente programa objeto escrito en
lenguaje máquina, dejándolo listo para la ejecución con poca o ninguna preparación
adicional.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 40
INF-101 Introducción a la Programación
1-2010
Para ejecutar la compilación de un programa, éste debe estar en memoria central
simultáneamente con el compilador. El resultado de la compilación puede dar lugar a la
que se denomina listado de compilación, que nos permite ver dichos errores para volver al
programa editor, corregirlos y empezar de nuevo el proceso de compilación.
Obtenido el programa objeto es necesario someterlo a un proceso de montaje donde se
enlazan los distintos módulos, en caso de programas que poseen subprogramas. Además
se incorporan las denominadas rutinas de librería en caso de solicitarlas el propio
programa. Como ya hemos mencionado, este montaje lo realiza un programa denominado
montador que también recibe el nombre de editor de enlace o linker.
Programa fuente
EDITOR
Listado de
compilación
COMPILADOR
SI
Errores?
NO
Programa Objeto
MAPA
Editor de enlace
LINKER
LIBRERIAS
Programa Ejecutable
Figura 4.5: Proceso de compilación.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 41
INF-101 Introducción a la Programación
1-2010
Tema #5 – La Información y su representación
5.1 Introducción
Los sistemas de numeración son las distintas formas de representar la información
numérica. Se nombran haciendo referencia a la base, que representa el número de dígitos
diferentes para representar todos los números.
El sistema habitual de numeración para las personas es el Decimal, cuya base es diez y
corresponde a los distintos dedos de la mano, mientras que el método habitualmente
utilizado por los sistemas electrónicos digitales es el Binario, que utiliza únicamente dos
cifras para representar la información: el 0 y el 1.
5.2 Clasificación de los sistemas de numeración
Para simplificar, dividiremos a todos los sistemas en dos tipos.
5.2.1 Sistemas de numeración No-posicionales
Estos son los más primitivos se usaban por ejemplo los dedos de la mano para representar
la cantidad cinco y después se hablaba de cuántas manos se tenía. También se sabe que se
usaba cuerdas con nudos para representar cantidad. Tiene mucho que ver con la
coordinabilidad entre conjuntos.
Entre ellos están los sistemas el antiguo Egipto, el sistema de numeración romana, y los
usados en Mesoamérica por mayas, aztecas y otros pueblos.
Figura 5.1: Sistemas de numeración egipcio y azteca.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 42
INF-101 Introducción a la Programación
1-2010
5.2.2 Sistemas de numeración Posicionales
El número de símbolos permitidos en un sistema de numeración posicional se conoce
como base del sistema de numeración. Si un sistema de numeración posicional tiene base
b significa que disponemos de b símbolos diferentes para escribir los números, y que b
unidades forman una unidad de orden superior.
5.2.3 Sistemas de numeración Semi - posicionales
El sistema de los números romanos no es estrictamente posicional. Por esto, es muy
complejo diseñar algoritmos de uso general (por ejemplo, para sumar, restar, multiplicar o
dividir). Como ejemplo, en el número romano XCIX (99 decimal) los numerales X (10
decimal) del inicio y del fin de la cifra equivalen siempre al mismo valor, sin importar su
posición dentro de la cifra.
Figura 5.2: Sistemas de numeración romano.
5.3 Sistemas Decimal
Desde hace bastante tiempo, el hombre ha utilizado como sistema para contar el
denominado Sistema Decimal, que derivo del sistema numérico indo-arábico,
posiblemente se adopto este sistema por contar con diez dedos en las manos.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 43
INF-101 Introducción a la Programación
1-2010
Figura 5.3: Sistemas decimal.
5.4 Teorema Fundamental de la Numeración (TFN)
Este teorema establece la forma general de construir números en un sistema de
numeración posicional. Primero estableceremos unas definiciones básicas:
Por ejemplo si tenemos el número 153,6 utilizando e sistema octal (base ocho), el paso a
decimal se haría:
1 * 82 + 5*81 + 3 * 80 + 6*8-1 = 64 + 40 + 3 +6/8 = 107,75
5.5 Sistema binario
Los números binarios son los que utilizan las computadoras para almacenar información.
Debido a ello hay términos informáticos que se refieren al sistema binario y que se utilizan
continuamente. Son:
Bit (b): Digito binario (1 o 0).
Nibble o cuarteto: Es el conjunto de cuatro bits (1001).
Bytes u Octeto (B): Es el conjunto de 8 bits (11110000).
Kilo Bytes (KB): Es el conjunto de 1024 Bytes (210 Bytes).
Mega Bytes (MB): Es el conjunto de 1024 KBytes (220 Bytes).
Giga Bytes (GB): Es el conjunto de 1024 MBytes (230 Bytes).
Tera Bytes (TB): Es el conjunto de 1024 GBytes (240 Bytes).
Peta Bytes (PB): Es el conjunto de 1024 PBytes (250 Bytes).
Exa Bytes (EB): Es el conjunto de 1024 EBytes (260 Bytes).
Zeta Bytes (ZB): Es el conjunto de 1024 ZBytes (270 Bytes).
Yotta Bytes (YB): Es el conjunto de 1024 YBytes (280 Bytes).
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 44
INF-101 Introducción a la Programación
1-2010
5.5.1 Operaciones aritméticas binarias
5.5.1.1
Suma Binaria
Los números binarios se suman en forma análoga que los de base decimal, es decir de
derecha a izquierda, arrastrando el acarreo (1) a la columna inmediata de la izquierda.
Las condiciones para la suma
0+0=0
1+0=1
0+1=1
1 + 1 = 0 con 1 de acarreo
Ejemplo (suma de 31, en binario 10011, y 28, en binario, 11100).
El resultado es:
Acarreo
5.5.1.2
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
0
1
Resta Binaria
El concepto es parecido sólo que en el caso de la resta es importante tener en cuenta el
signo. Semejante a la sustracción decimal con la excepción que trabajamos con base 2 (en
la base decimal cuando tenemos 0-N prestamos 10 unidades al dígito de la izquierda).
Las reglas para la resta son las siguientes:
0-0 =0
1-1 =0
1-0 =1
0 - 1 = 1 (con préstamo del digito que está a la izquierda)
Ejemplo:
1100101
0111011
-----------------0101010
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 45
INF-101 Introducción a la Programación
1-2010
Este es el denominado “método directo”, sin embargo es posible efectuar esta operación
mediante el denominado “complemento a 2”, que consiste en complementar (cambiar los
ceros por unos y viceversa) al segundo término sustraendo, luego se ambos suman ambos
términos y a este resultado se agrega un uno (1), finalmente del resultado final se
desprecia el primer digito.
Veamos el ejemplo anterior:
1100101
0 1 1 1 0 1 1 complementamos en 1 esta cifra y obtenemos:
1100101
1000100
-----------------10101001
+
1
------------------(1) 0 1 0 1 0 1 0
El primer (1) se desprecia de valor final y el resultado es 0 1 0 1 0 1 0.
5.6 Sistema hexadecimal
Es un sistema que se utiliza mucho para representar números binarios. Un problema
(entre otros) de los números binarios es que ocupan mucho espacio para representar
información. El sistema hexadecimal es la forma de representar números en base 16. de
modo que en los dígitos del 0 al 9 se utilizan los mismos símbolos que en el sistema
decimal y a partir del 10 se utiliza la letra A y así hasta la letra F que simboliza el 15.
Así el número hexadecimal CA3 sería:
C * 162 + A * 161 + 3 * 160 = 12 * 256 + 10 * 16 + 3 = 3235
Como se observa pasar de hexadecimal a decimal es complejo. La razón del uso de este
sistema es porque tiene una equivalencia directa con el sistema binario. De hecho en una
cifra hexadecimal caben exactamente 4 bits. Por ello la traducción de hexadecimal a
binario se basa en esta tabla:
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 46
INF-101 Introducción a la Programación
HEX
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
1-2010
BIN
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Así el número hexadecimal C3D4 sería el binario 1100 0011 1101 0100. Y el binario 0111
1011 1100 0011 sería el hexadecimal 7BC3.
5.7 Conversiones
5.7.1 CASO A: Método directo para la conversión de números en Base 10 a
base X (Divisiones sucesivas).
En este caso se aplican divisiones sucesivas para la parte entera del número, y
multiplicaciones sucesivas para la parte fraccionaria. Para ello, se siguen los siguientes
pasos.
Parte entera
1) Si el numero es entero, se divide el numero entre la base.
2) Se debe seguir realizando las divisiones hasta que el cociente sea menor a la
base destino.
3) Se copia el resultado de derecha a izquierda el último de los cocientes y los
residuos.
Parte fraccionaria
4) La base fraccionaria se debe multiplicar por la base destino.
5) Se debe copiar la parte de cada multiplicación al resultado.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 47
INF-101 Introducción a la Programación
1-2010
6) Las multiplicaciones se detienen cuando se repite una serie, o cuando se trunca
en 0. También se detiene el proceso cuando se determina el número de dígitos
a llegar.
Nº Decimal
Base
Cociente
Resto
107
2
53
1
53
2
26
1
26
2
13
0
13
2
6
1
6
2
3
0
3
2
1
1
Cuando tengamos un número con decimales
seguiremos
el
siguiente
procedimiento:
multiplicaremos por 2 la parte decimal y se toma
como dígito binario su parte entera. El proceso
se repite con la fracción decimal resultante del
paso anterior, hasta obtener una fracción decimal
nula, o bien hasta obtener el número de cifras
binarias que se desee. Ejemplo: 107,645. Como
anteriormente convertimos 107 a binario, el
resultado de la conversión quedaría así:
1101011, 101001012
10710= 11010112
Fracción Multiplicado
Resultado
decimal
por:
Dígito
binario
0,645
2
1,290
1
0,290
2
0,580
0
0,580
2
1,160
1
0.160
2
0,320
0
0,320
2
0.64
0
0.64
2
1.28
1
0.28
2
0.56
0
0.56
2
1.12
1
5.7.2 CASO B: Método directo para la conversión de números en Base X a
base 10 (TFN).
El Teorema Fundamental de la Numeración nos permite convertir un número de cualquier
base a base decimal. Por ejemplo para el número binario 10011011011 el paso sería (los
ceros se han ignorado):
Ej:
1 * 210 + 1 * 27 + 1*26 + 1* 24 + 1*23 + 1*21 + 1*20 = 1243
Ej
Sea el número binario: 1001,11
1 * 23 + 1*20 + 1* 2-1 + 1 * 2-2 = 8 + 1 + 0,5 + 0,25 = 9, 75
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 48
INF-101 Introducción a la Programación
1-2010
5.7.3 CASO C: Método directo para la conversión de números de sistema
octal a binario y binario a octal.
Si la conversión es de octal a binario cada cifra se sustituirá por su equivalente binario.
Tendremos en cuenta la siguiente tabla para hacer la conversión de modo más rápido:
Carácter octal
Nº binario
0
1
2
3
4
5
6
7
000
001
010
011
100
101
110
111
Ejemplo: 55,358
Resultado: 101 101, 011 1012
Si la conversión es de binario a octal se realiza de modo contrario a la anterior conversión,
agrupando los bits enteros y los fraccionarios en grupos de 3 a partir de la coma decimal.
Si no se consiguen todos los grupos de tres se añadirán, los ceros que sean necesarios al
último grupo, veámoslo con un ejemplo:
Agrupación
Equivalente octal
Ejemplo: 11011111,111112
Resultado: 237,768
010
2
011
3
Observa como ha sido necesario añadir un cero
en la última agrupación de la parte entera y otro
en la parte fraccionaria para completar los grupos
de 3 dígitos.
111
7
,
,
111
7
110
6
5.7.4 CASO D: Método directo para la conversión de números de sistema
hexadecimal a binario y binario a hexadecimal.
La conversión entre binario y hexadecimal es igual al de la conversión octal y binario, pero
teniendo en cuenta los caracteres hexadecimales, ya que se tienen que agrupar de 4 en 4.
La conversión de binario a hexadecimal se realiza según el ejemplo siguiente:
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 49
INF-101 Introducción a la Programación
Sistema binario
Sistema Hexadecimal
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
1-2010
Ejemplo: 1011111,1100012
Agrupando obtenemos el siguiente resultado:
0101 1111, 1100 01002
Sustituyendo según la tabla logramos la
conversión esperada:
5F, C416
La conversión de hexadecimal a binario simplemente sustituiremos cada carácter por su
equivalente en binario, por ejemplo:
69DE16= 0110 1001 1101 11102
5.8 Ejercicios Propuestos.
1. Convertir de binario a decimal
a) 110012
b) 10110110112
Solución: 2510
Solución: 73110
2. Convertir de decimal a binario
a) 86910
b) 842610
Solución: 11011001012
Solución: 100000111010102
3. Convertir de binario a octal
a) 1110101012
b) 11011, 012
Solución: 7258
Solución: 33,28
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 50
INF-101 Introducción a la Programación
1-2010
4. Convertir de octal a binario
a) 20668
b) 142768
Solución: 0100001101102
Solución: 0011000101111102
5. Convertir de binario a hexadecimal
a) 1100010002
b) 100010,1102
Solución: 18816
Solución: 22,C
6. Convertir de hexadecimal a binario
a) 86BF16
b) 2D5E16
Solución: 10000110101111112
Solución: 00101101010111102
7. Convertir de octal a decimal
a) 1068
b) 7428
Solución: 7010
Solución: 48210
8. Convertir de decimal a octal:
a) 23610
b) 5274610
Solución: 3548
Solución: 1470128
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 51
INF-101 Introducción a la Programación
1-2010
Tema #6 – Algoritmos
6.1 Concepto de algoritmo
Un algoritmo es un conjunto finito de instrucciones o pasos que sirven para ejecutar una
tarea o resolver un problema. De un modo más formal, un algoritmo es una secuencia
finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un
problema en un tiempo finito.
El término algoritmo no está exclusivamente relacionado con la matemática, ciencias de la
computación o informática realidad, en la vida cotidiana empleamos algoritmos en
multitud de ocasiones para resolver diversos problemas. Algunos ejemplos son el uso de
una lavadora (se siguen las instrucciones), la preparación de una plato especial o el
mismo lenguaje humano que "transforma" nuestros pensamientos en sonidos y hace que
otro humano nos pueda entender. También existen ejemplos de índole matemática, 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 incluso el
método de Gauss para resolver Sistemas Lineales de Ecuaciones.
La resolución de un problema exige el diseño de un algoritmo que resuelva el problema
propuesto.
Problema
Diseno del algoritmo
Programa de
computadora
Figura 6.1: Resolución de un problema.
Los pasos para la resolución de un problema son:
1.
Diseño del algoritmo que describe la secuencia ordenada de pasos (sin
ambigüedades) que conducen a la solución de un problema dado. (Análisis del
programa y desarrollo del algoritmo.)
2.
Expresar el algoritmo como un programa en un lenguaje de programación
adecuado. (Fase de codificación)
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 52
INF-101 Introducción a la Programación
3.
1-2010
Ejecución y validación del programa por la computadora.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo,
de modo que sin este no es posible generar un programa basado en computadora.
Los algoritmos son independientes tanto del lenguaje de programación en que se
expresan como de la computadora que los ejecuta. En cada problema el algoritmo se
puede expresar en un lenguaje diferente de programación y ejecutarse en una
computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así, por ejemplo,
en una analogía con la vida diaria, una receta de un plato de cocina se puede expresar en
español, inglés o francés, pero cualquiera que sea el lenguaje, los pasos para la
elaboración del plato se realizarán sin importar el idioma del cocinero.
En la ciencia de la computación y en la programación, los algoritmos son más importantes
que los lenguajes de programación o las computadoras. Un lenguaje de programación es
tan solo 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.
Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy
importante será el diseño de algoritmos. A la enseñanza y práctica de esta tarea se dedica
gran parte de este texto.
El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos de
técnicas de la programación. En esencia, la solución de un problema se puede expresar
mediante un algoritmo.
6.2 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.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, 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.
La definición de un algoritmo debe describir tres partes: Entrada, proceso y salida. En el
algoritmo de receta de cocina citado anteriormente se tendrá:
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 53
INF-101 Introducción a la Programación
1-2010
Entrada: Ingredientes y utensilios empleados
Proceso: Elaboración de la receta en la cocina.
Salida: Terminación del plato (por ejemplo, pollo al horno).
Ejemplo 1
Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su banco de datos la
ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso
contrario, rechazará el pedido. Redactar el algoritmo correspondiente.
Los pasos del algoritmo son:
1)
2)
3)
4)
5)
Inicio.
Leer el pedido.
Examinar la ficha del cliente
Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido
Fin
6.3 Resolución de problemas
La principal razón para que las personas aprendan a programar en general y los lenguajes
de programación en particular, es utilizar la computadora como una herramienta para la
resolución de problemas. Ayudado por una computadora, la resolución de un problema se
puede dividir en tres fases importantes:
• Análisis del problema.
• Diseño o desarrollo del algoritmo.
• Resolución del algoritmo en la computadora.
El Análisis del problema requiere que el problema sea definido y comprendido
claramente para que pueda ser analizado con todo detalle. Una vez analizado el problema,
se debe desarrollar el algoritmo (procedimiento paso a paso para solucionar el problema
dado). Por último, para resolver el algoritmo mediante una computadora, se necesita
codificar el algoritmo en un lenguaje de programación C, C/++, JAVA, etc., es decir,
convertir el algoritmo en programa, ejecutarlo y comprobar que el programa soluciona
verdaderamente el problema. Las fases del proceso de resolución de un problema
mediante computadora se indican en la figura 6.2.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 54
INF-101 Introducción a la Programación
1-2010
Resolucion de un
problema
Analisis del
problema
Diseno del
algoritmo
Resolucion del
problema en
computadora
Figura 6.2: Etapas en la resolución de un problema en computadora.
6.3.1 Análisis del problema
El propósito del análisis de un problema, es ayudar al programador para llegar a una cierta
comprensión de la naturaleza del problema. El problema debe estar bien definido para así
llegar a una solución satisfactoria.
Para poder definir con precisión el problema, se requiere que las especificaciones de
entrada y salida sean descritas con detalle. Una buena definición del problema, junto con
una descripción detallada de las especificaciones de entrada y salida, son los requisitos
más importantes para llegar a una solución eficaz.
El análisis del problema exige una lectura previa del problema a fin de obtener una idea
general de lo que se solicita. La segunda lectura deberá servir para resolver a las
preguntas:
¿Qué información debe proporcionar la resolución del problema?
¿Qué datos se necesitan para resolver el problema?
La respuesta a la primera pregunta indicará los resultados deseados a las salidas del
problema.
La respuesta a la segunda pregunta indicará que datos se proporcionan a las entradas del
problema.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 55
INF-101 Introducción a la Programación
1-2010
Analisis del
Problema
Definicion del
problema
Especificacion de
Entradas
Especificacion de
Salidas
Figura 6.3: Etapas en el Análisis del Problema.
Ejemplo 2
Leer el radio de un círculo e imprimir su superficie y la longitud de la circunferencia.
Las entradas de datos en este problema se concentran en el radio del círculo. Dado que el
radio puede tomar cualquier valor dentro del rango de los números reales, el tipo de
datos radio debe ser real.
Las salidas serán dos variables: superficie y circunferencia, que también serán de tipo real.
•
•
•
Entradas: Radio del circulo (variable RADIO).
Salidas:
Superficie del circulo (variable Área).
Circunferencia del circulo (variable Circunferencia).
Variables: Radio, Área y circunferencia (tipo real).
6.3.2 Diseño del algoritmo
Una computadora no tiene capacidad para solucionar problemas más que cuando se le
proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las
instrucciones a ejecutar por la maquina, constituyen, como ya conocemos, el algoritmo.
La información proporcionada al algoritmo, constituye su entrada y la información
producida por el algoritmo constituye su salida.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 56
INF-101 Introducción a la Programación
1-2010
El aspecto más importante del algoritmo es la elaboración del proceso o los procesos que
a partir de los datos de entrada, se debe en base a ellos producir la salida deseada.
Cuando los problemas son complejos se pueden resolver más eficazmente con la
computadora, cuando se rompen en sub problemas que sean más fáciles de solucionar
que el original. Normalmente los pasos diseñados en el primer esbozo del algoritmo son
incompletos e indicaran solo unos pocos pasos. Tras esta primera descripción, estos se
amplían en una descripción más detallada con más pasos específicos.
Por lo tanto el algoritmo elaborado será:
INICIO
•
•
•
•
Leer radio
Calcular superficie :
Superficie=3.1416 * radio^2
Calcular circunferencia : Circunferencia = 2 * 3.1416 * radio
Escribir resultados:
Imprimir Circunferencia, Superficie
FIN
Como ya se ha comentado anteriormente, el sistema para describir (“escribir”) un
algoritmo consiste en realizar una descripción paso a paso con un lenguaje natural del
citado algoritmo. Recordemos que un algoritmo es un método o un conjunto de reglas
para solucionar un problema. En cálculos elementales estas reglas tienen las siguientes
propiedades:
•
•
•
Deben de estar seguidas de algunas secuencias definidas de pasos hasta que se
obtenga un resultado coherente,
Sólo puede ejecutarse una operación a la vez.
El flujo de control usual de un algoritmo es secuencial
Consideremos el algoritmo que responde a la pregunta:
¿Qué hacer para ver la película Tiburón?
La respuesta es muy sencilla y puede ser descrita en forma de algoritmo, general de modo
similar a:
•
•
•
•
Ir al cine
Comprar una entrada
Ver la película
Regresar a casa
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 57
INF-101 Introducción a la Programación
1-2010
El algoritmo consta de cuatro acciones básicas, cada una de las cuales debe ser ejecutada
antes de realizar la siguiente. En términos de computadora, cada acción se codificará en
una o varias sentencias que ejecutan una tarea particular.
El algoritmo descrito es muy sencillo; sin embargo, como ya se ha indicado en párrafos
anteriores, el algoritmo general se descompondrá en pasos más simples en un
procedimiento denominado refinamiento sucesivo, ya que cada acción puede
descomponerse a su vez en otras acciones simples.
Así, un primer refinamiento del algoritmo ir al cine se puede describir de la forma
siguiente:
1. Inicio
2. Ver la cartelera de cines en el periódico
3. Si no proyectan “Tiburón” entonces
3.1 Elegir otra actividad
3.2 Bifurcar al paso 7
si_no
3.3 ir al cine.
Fin_si
4.Si hay cola
4.1 ponerse en ella
4.2 mientras haya personas delante hacer
4.2.1 avanzar en la cola
fin_mientras
fin_si
5. Si hay localidades entonces
5.1 comprar una entrada
5.2 pasar a la sala.
5.3 localizar la(s) butaca(s)
5.4 mientras proyectan la película hacer
5.4.1 ver la película
fin_mientras
5.5 abandonar el cine
si_no
5.6 refunfuñar
fin_si
6. volver a casa
7. fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 58
INF-101 Introducción a la Programación
1-2010
En el algoritmo anterior existen diferentes aspectos a considerar. En primer lugar, ciertas
palabras reservadas se han escrito deliberadamente en negrita (mientras, si no, etc.).
Estas palabras describen las estructuras de control fundamentales y procesos de toma de
decisión en el algoritmo.
La capacidad de decisión permite seleccionar alternativas de acciones a seguir o bien la
repetición una y otra vez de operaciones básicas, como por ejemplo:
Si proyectan la película seleccionada ir al cine
si_no ver la televisión, ir al fútbol o leer el periódico.
Que tiene un carácter estrictamente decisional
mientras haya personas en la cola, ir avanzando
repetidamente hasta llegar a la taquilla.
Que tiene un carácter repetitivo.
6.3.3 Resolución de problema de computadora
Una vez que el algoritmo está diseñado y representado gráficamente mediante una
herramienta de programación (diagrama de flujo o pseudocódigo) se debe pasar a la fase
de resolución práctica del problema con la computadora.
Esta fase se descompone a su vez en las siguientes subfase:
1) Codificación del algoritmo en un programa en base a un lenguaje de
programación (C, C++, Pascal, Java. etc).
2) Ejecución del programa.
3) Comprobación del programa.
En el diseño del algoritmo éste describe en una herramienta de programación tal como un
diagrama de flujo o pseudocódigo .Sin embargo, el programa que implementa el algoritmo
debe ser escrito en un lenguaje de programación y siguiendo las reglas gramaticales o
sintaxis del mismo .La fase de conversión del algoritmo en un lenguaje de programación se
denomina codificación, ya que el algoritmo escrito en un lenguaje específico de
programación se denomina código.
Tras la codificación del programa, deberá ejecutarse en una computadora y a continuación
de comprobar los resultados pasar a la fase final de documentación.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 59
INF-101 Introducción a la Programación
1-2010
6.4 Técnicas para la formulación de algoritmos
Las dos herramientas utilizadas comúnmente para diseñar algoritmos son:
•
•
Diagrama de Flujo
Pseudocódigo
6.4.1 Diagramas de Flujo
Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir
que es la representación detallada en forma gráfica de cómo deben realizarse los pasos en
la computadora para producir resultados.
Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos
en la computadora), se relacionan entre sí mediante líneas que indican el orden en que se
deben ejecutar los procesos.
Los símbolos utilizados han sido normalizados por el instituto norteamericano de
normalización (ANSI).
Simbolo
Descripcion
Indica el inicio y el final del diagrama.
Indica la entrada por teclado.
Símbolo de proceso, indica la asignación de un valor en la
memoria y/o la ejecución de una operación aritmética.
Símbolo de decisión indica la realización de una comparación
de valores.
Se utiliza para representar subprogramas.
Conector dentro de página.
Conector fuera de página.
Indica salida por impresora.
Indica salida por impresora.
Indica salida en la pantalla o monitor
Representa a un ciclo repetitivo.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 60
INF-101 Introducción a la Programación
1-2010
6.4.2 Recomendaciones para el diseño de diagramas de flujo
•
•
•
•
•
•
Se deben usar solamente líneas de flujo horizontal y/o vertical.
Se debe evitar el cruce de líneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar líneas de flujo son conectar.
Se deben trazar los símbolos de manera que se puedan leer de arriba hacia
abajo y de izquierda a derecha.
Todo texto escrito dentro de un símbolo deberá ser escrito claramente,
evitando el uso de muchas palabras.
6.5 Pseudocódigo
Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se
emplea, dentro de la programación estructurada, para realizar el diseño de un programa.
En esencial, el pseudocódigo se puede definir como un lenguaje de especificaciones de
algoritmos.
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución
a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a
realizar.
Ejemplo:
Suponga que un individuo desea invertir su capital en un banco y desea saber
cuánto dinero ganara después de un mes si el banco paga a razón de 2% mensual.
Inicio
Leer cap_inv
gan = cap_inv * 0.02
Imprimir gan
Fin
6.5.1 Ventaja de utilizar Pseudocódigo a Diagramas de Flujo
•
•
•
•
Ocupa menos espacio en una hoja de papel
Permite representar en forma fácil operaciones repetitivas complejas
Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de
programación.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 61
INF-101 Introducción a la Programación
1-2010
Tema #7 – Entidades Primitivas para el desarrollo de algoritmos
7.1 Tipos de datos
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter,
tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del
conjunto de valores que puede tomar una variable.
Figura 7.1: Tipos de datos simples.
 Datos Numéricos: Permiten representar valores escalares de forma numérica, esto
incluye a los números enteros y los reales. Este tipo de datos permiten realizar
operaciones aritméticas comunes.
 Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representan el resultado de una comparación entre otros datos (numéricos o
alfanuméricos).
 Datos Alfanuméricos (Cadenas): Es una secuencia de caracteres alfanuméricos que
permiten representar valores identificables de forma descriptiva, esto incluye
nombres de personas, direcciones, etc. Es posible representar números como
alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible
hacer operaciones con ellos. Este tipo de datos se representan encerrados entre
comillas.
Ejemplo:
“Universidad Católica Boliviana”
“2007”
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 62
INF-101 Introducción a la Programación
1-2010
7.2 Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de operación,
paréntesis y nombres de funciones especiales. Por ejemplo:
a + (b + 3) / c
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:
 Aritméticas
 Relaciónales
 Lógicas
7.3 Operadores y operandos
Los operadores son elementos que relacionan de forma diferente, los valores de una o
más variables y/o constantes. Es decir, los operadores nos permiten manipular valores.
Tipos de Operadores
Aritméticos
Relaciónales
Lógicos
7.3.1 Operadores aritméticos
Los operadores aritméticos permiten la realización de operaciones matemáticas con los
valores (variables y constantes).
Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si
ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real.
Operando (Operador) Operando
Valor
(Constante o variable)
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 63
INF-101 Introducción a la Programación
+
*
/
Mod
1-2010
Suma
Resta
Multiplicación
División
Modulo
(residuo de la división entera)
Ejemplos:
Expresión
Resultado
----------------------------------------7/2
3.5
12 mod 7
5
4 +2*5
14
7.3.1.1
Prioridad de ejecución en operadores aritméticos
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis
anidados se evalúan de dentro a fuera, el paréntesis más interno se evalúa primero.
Dentro de una misma expresión los operadores se evalúan en el siguiente orden.
1 ^ Exponenciación
2 *, /, mod Multiplicación, división, modulo.
3 +, - Suma y resta.
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de
izquierda a derecha.
Ejemplos:
4 + 2 * 5 = 14
23 * 2 / 5 = 9.2
3 + 5 * (10 - (2 + 4)) = 23
3.5 + 5.09 - 14.0 / 40 = 5.09
2.1 * (1.5 + 3.0 * 4.1) = 28.98
4 + 10
46 / 5 = 9.2
3 + 5 * (10 - 6) = 3 + 5 * 4 = 3 + 20 = 23
3.5 + 5.09 - 3.5 = 8.59 - 3.5 = 5.09
2.1 * (1.5 + 12.3) = 2.1 * 13.8 = 28.98
7.3.2 Operadores relacionales
Se utilizan para establecer una relación entre dos valores. Compara estos valores entre si y
esta comparación produce un resultado de certeza o falsedad (verdadero o falso).
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 64
INF-101 Introducción a la Programación
1-2010
Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas y
tienen el mismo nivel de prioridad en su evaluación.
Los operadores relaciónales tiene menor prioridad que los aritméticos.
>
<
>=
<=
<>
=
Mayor que
Menor que
Mayor o igual que
Menor o igual que
Diferente
Igual
Ejemplos:
Si los valores de las siguientes variables fueran:
a = 10
b = 20
c = 30
entonces las siguientes expresiones tendrían los siguientes valores de verdad:
a+b>c
a-b<c
a-b=c
a*b<>c
Falso
Verdadero
Falso
Verdadero
Ejemplos no lógicos:
a<b<c
10 < 20 < 30
T < 30 (no es lógico porque tiene diferentes operandos).
7.3.3 Operadores lógicos
Estos operadores se utilizan para establecer relaciones entre valores lógicos, estos valores
pueden ser resultado de una expresión relacional.
And
Or
Not
Y
O
Negación
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 65
INF-101 Introducción a la Programación
1-2010
Operador AND
Operando 1 Operador
T
AND
T
AND
F
AND
F
AND
Operando 2
T
F
T
F
Resultado
T
F
F
F
Operador OR
Operando 1
T
T
F
F
Operando 2
T
F
T
F
Resultado
T
T
T
F
Operador
OR
OR
OR
OR
Operador NOT
Operando Operador
T
NOT
F
NOT
Resultado
F
T
Ejemplos:
(a < b) and (b < c)
(10<20) and (20<30)
T and
T
T
7.3.3.1
Prioridad en operadores lógicos
Los operadores lógicos se ejecutan según el siguiente orden de prioridad.
Not
And
Or
7.3.4 Prioridad de todos los operadores
Estos operadores se ejecutan según el siguiente nivel de prioridad.
1.- ( )
2.- ^
3.- *, /, Mod, Not
4.- +, -, And
5.- >, <, > =, < =, < >, =, Or
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 66
INF-101 Introducción a la Programación
1-2010
Ejemplos:
a = 10 b = 12 c = 13 d =10
1)
((a > b) or (a < c)) and ((a = c) or (a > = b))
F
T
F
F
T
F
F
2)
((a > = b) or (a < d)) and (( a > = d) and (c > d))
F
F
T
T
F
T
F
3)
not (a = c) and (c > b)
F
T
T
T
7.4 Identificadores o variables
Los identificadores representan los datos de un programa (constantes, variables, tipos de
datos). Un identificador es una secuencia de caracteres que sirve para identificar una
posición en la memoria de la computadora, que nos permite accesar a su contenido.
Ejemplo:
Nombre
Num_hrs
Calif2.
7.4.1 Reglas para formar un identificador
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben
contener espacios en blanco.
Letras, dígitos y caracteres como la subraya (_) están permitidos después del
primer carácter.
La longitud de identificadores puede ser de hasta 8 caracteres.
7.5 Constantes y Variables
 Constante: Una constante es un dato numérico o alfanumérico que no cambia
durante la ejecución del programa.
Ejemplo:
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 67
INF-101 Introducción a la Programación
1-2010
pi = 3.1416
 Variable: Es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede
cambia durante la ejecución del programa. Para poder reconocer una variable en
la memoria de la computadora, es necesario darle un nombre con el cual podamos
identificarla dentro de un algoritmo.
Ejemplo:
área = pi * radio ^ 2
Las variables son: el radio, el área y la constate es pi.
7.6 Constantes y Variables
7.6.1 Por su Contenido
 Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos,
positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el
punto decimal. Ejemplo:
iva=0.15
pi=3.1416
costo=2500
 Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso)
estos representan el resultado de una comparación entre otros datos.
 Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras,
números y caracteres especiales). Ejemplo:
letra=’a’
apellido=’lopez’
dirección=”Av. Los leones # 900”
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 68
INF-101 Introducción a la Programación
1-2010
7.6.2 Por su Uso
 Variables de Trabajo: Variables que reciben el resultado de una operación
matemática completa y que se usan normalmente dentro de un programa.
Ejemplo:
suma=a+b/c
 Contadores: Se utilizan para llevar el control del número de ocasiones en que se
realiza una operación o se cumple una condición. Con los incrementos
generalmente de uno en uno.
Ejemplo:
C=C+1
MN = MN + 1
 Acumuladores: Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente.
Ejemplo:
S=S+X
SUM = SUM + ( X / 2)
 Multiplicadores: Forma que toma una variable y que sirve para llevar el producto
acumulativo de una serie de valores que se van leyendo o calculando
progresivamente.
Ejemplo:
C=C+1
M = M * C/ 2
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 69
INF-101 Introducción a la Programación
1-2010
PROBLEMAS RESUELTOS
ALGORITMOS BASICOS:
1.- Diseñar un algoritmo que permita convertir coordenadas polares en rectangulares, los valores
de entrada son el radio (r) y el ángulo (a).
X = R * cos(A)
Y = R * sen(A)
Datos de entrada:
R: Variable que representa al radio
A: Angulo que previamente debe convertirse en radianes
Datos de salida:
X : Coordenada rectangular x
Y : Coordenada rectangular y
Inicio
R,A
A = A * 3.1416 / 180
X = R * cos (A)
Y = R * sin (A)
X,Y
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 70
INF-101 Introducción a la Programación
1-2010
2.- Obtener el volumen de una esfera de radio variable
Dato de Entrada:
RADIO: variable donde el dato de entrada se almacena
Dato de Salida:
VOL: variable que almacena el resultado
Inicio
RADIO
VOL = 3.1416* RADIO ^ 3
VOL
fin
3.- Convertir grados Fahrenheit en grados centígrados
Inicio
Gf
Gf = (Gf – 32) * 0,556
Gf
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 71
INF-101 Introducción a la Programación
1-2010
4.- Convertir segundos en horas, minutos y segundos
Variable de entrada:
Seg : Representa los segundos que el usuario ingresa
Variables de salida:
Hra, Min y Seg:
Análisis:
La función trunc permite truncar la parte decimal de un número, y la función mod
permite obtener el residuo de un cociente entre dos números.
Inicio
Seg
Hra = trunc (Seg / 3600)
Min = trunc(Seg mod 3600 /60)
Seg = (Seg mod 3600 ) mod 60
Hra, Min, Seg
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 72
INF-101 Introducción a la Programación
1-2010
5.- Determinar el mayor y el menor valor, a partir de dos números que se leen desde el
teclado.
Variables de entrada:
A, B : Los números que el usuario deberá ingresar
Variables de salida:
Mayor , Menor : Que corresponden los valores solicitados
La función abs permite obtener el valor absoluto de un valor numérico
Inicio
A,B
Mayor = (A + B) + abs(A-B) ) /2
Menor = (A + B) - abs(A-B) ) /2
Mayor, Menor
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 73
INF-101 Introducción a la Programación
1-2010
Tema #8 – Algoritmos decisionales
6.- Escriba un algoritmo para leer un número entero y determinar si es un número par o
impar
Inicio
Num
No
Si
Num mod 2 = 0
“Es impar”
“Es Par”
Fin
7.- Escriba un programa para leer dos números enteros distintos entre si y determine cual
es el mayor y el menor valor.
Inicio
N,M
No
Si
N>M
M, “ es el mayor”
N, “ es el mayor”
N, “ es el menor”
M, “ es el menor”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 74
INF-101 Introducción a la Programación
1-2010
8.- Escriba un algoritmo para leer un número entero y determine si es un número positivo,
negativo o cero.
Inicio
N
si
no
N =0
si
no
N>0
“Es Cero”
“Es
positivo”
“Es
negativo”
Fin
9.- Dados
viceversa
dos
números
N
y
M,
determinar
si
N
es
múltiplo
de
M
o
Inicio
N,M
no
si
N mod M = 0
no
si
M mod N= 0
“no son
múltiplos”
M, “ es
múltiplo de
“, N
N, “ es
múltiplo de
“, M
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 75
INF-101 Introducción a la Programación
1-2010
10.- Elabore un diagrama de flujo para resolver ax2 + bx + c = 0 en el caso de raíces
reales. Los datos son: a, b, c. Puede usar las operaciones que necesite. Asegúrese que
el resultado sea válido.
Análisis del problema:
Si a <> 0 se presentan tres casos:
Primero con dos soluciones dadas con la fórmula que da la solución de la
ecuación de segundo grado cuando el discriminante es positivo.
Segundo con una solución dada por la fórmula cuando el discriminante es cero.
Tercero con dos soluciones complejas, dadas por la fórmula cuando el
discriminante es negativo.
Inicio
A,B,C
D=B*B–4*A*C
no
si
D>0
si
no
X1 =(-B+sqrt(D)) / 2*A
D<0
X1 = -B / 2*A
“Soluciones
imaginarias”
X2 =(-B-sqrt(D)) / 2*A
X2 = -B / 2*A
X1, X2
X1 , X2
Inicio
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 76
INF-101 Introducción a la Programación
1-2010
11.- Escribir un algoritmo para leer un número y determinar si el mismo es un entero
positivo par, positivo impar, negativo par o negativo impar o es cero.
Inicio
N
no
si
N>0
no
si
no
N < 0
si
N mod 2=0
“Positivo
impar”
“Cero”
no
“Positivo
par”
si
N mod 2=0
“Negativo
impar”
“Negativo
par”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 77
INF-101 Introducción a la Programación
1-2010
12.- Leer tres números enteros y determinar si forman un triangulo isósceles, equilátero o
escaleno. Un triangulo equilátero es aquel que tiene los 3 lados iguales, el triangulo
escaleno tiene los 3 lados diferentes, y un triangulo isósceles (dos lados iguales y uno
desigual, analice en este tipo los 3 casos posibles).
Inicio
A,B,C
no
si
A=B
no
si
no
A=C
no
B=C
si
“Triangulo
isósceles”
B =C
“Triangulo
escaleno”
si
“Triangulo
isósceles”
“Triangulo
equilátero”
“Triangulo
isósceles”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 78
INF-101 Introducción a la Programación
1-2010
13.- Dado un número, determinar si es entero o fraccionario.
Inicio
N
no
N mod 1 = 0
si
N, “ es un
numero
fraccionario”
N, “ es un
numero entero”
Fin
14.- Escribir un algoritmo en el que dado un número entero determinar si se encuentra en
el intervalo cerrado 51 - 100.
Inicio
N
no
si
N>=51 and N<=100
“Se encuentra
en el intervalo
cerrado”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 79
INF-101 Introducción a la Programación
1-2010
15.- Escriba un algoritmo para leer 3 números enteros distintos entre si e imprimirlos en
orden ascendente.
Inicio
A,B,C
no
si
A<B
no
si
si
A< C
no
si
A<B
C,B,A
C,A,B
B<C
no
B, A , C
si
A<C
B,C,A
A,B,C
A, C , B
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 80
INF-101 Introducción a la Programación
1-2010
16.- Escribir un programa que lea el salario de un empleado e incremente este salario
según la escala:
Salario < 500
Salario >= 500 pero menor a 1000
Salario >= 1000
15 % de incremento
10% de incremento
5% de incremento
El programa debe mostrar el salario anterior y el salario nuevo.
Inicio
Sal
si
Sal < 500
Inc = 15
no
si
Sal < 1000
Inc = 10
nono
Inc = 5
Salinc = Sal * Inc /100 + Sal
“Salario original:”, Sal
“Salario nuevo:”, Salinc
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 81
INF-101 Introducción a la Programación
1-2010
17.- A un trabajador se le paga según las horas que trabaja en el día una tarifa de pago
por hora. Si la cantidad de horas trabajadas es mayor a 8, la tarifa se incrementa en un
100%, calcular el pago total del trabajador.
Variables de Entrada:
HT: Representa las horas trabajadas
PH: Representa el pago por hora
Variables de Salida:
PT: Representa el pago total
Se consideran horas extras aquellas que exceden a las ocho normales de trabajo.
Inicio
HT, PH
no
si
HT > 8
PE = (HT – 8) * 2* PH
PT= PH * HT
PT = PE+ PH* 8
PT
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 82
INF-101 Introducción a la Programación
1-2010
18. Escribir un D.F que permita el pago de comisiones por ventas efectuadas por un
vendedor, según la siguiente escala:
Venta < 100 Bs.
1% de comisión
100<= Venta < 500 5% de comisión
500<= Venta < 1000
7 % de comisión
Venta >= 1000
10 % de comisión
Determinar el valor que se paga en comisiones a un determinado vendedor.
Inicio
V
si
V < 100
no
si
si
V < 500
no
si
si
V < 1000
CO = 1
CO = 5
CO = 7
no
si
CO = 10
VCOM = V * CO/100
VCOM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 83
INF-101 Introducción a la Programación
1-2010
19.- Escribir un programa que calcule el tiempo de vuelo de una aeronave, considerando
como datos de entrada la hora de salida, el minuto de salida, la hora de llegada y el
minuto de llegada.
Variables de entrada:
HS: Hora de Salida, MS: Minuto de salida, HL: Hora de llegada, ML: Minuto de llegada
Variables de Salida:
TVH: Tiempo de vuelo en horas, TVM : Tiempo de vuelo en minutos
Inicio
HS, MS, HL, ML
si
HS < HL and MS <=ML
no
TVH = HL – HS
TVM = ML - MS
si
HS < HL and MS > ML
no
TVH = (HL – HS) -1
TVM= 60 – (MS-ML)
si
HS > HL and MS <= ML
no
TVH = 24-(HS-HL)
TVM = ML - MS
TVH = 24-(HS-HL) -1
TVM = 60 – (MS-ML)
TVH , TVM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 84
INF-101 Introducción a la Programación
1-2010
Tema #9 – Algoritmos repetitivos - decisionales
20.- Generar la serie:
1, 2, 3, 4, 5, …… 100
Análisis:
La variable K es el denominado contador que permite generar la serie a partir de un valor
inicial (0), que es el primer paso en el algoritmo, luego se establece la condición para que
el proceso de conteo se detenga, en este caso :
K <= 100, es decir que el proceso debe continuar mientras se cumpla esta condición, el
contador K debe ir incrementándose en 1 (K = K + 1) , expresión que permite que una
variable vaya cambiando continuamente (aumentado en 1) hasta que K llegue a 100, por
cada termino que asume el contador este se imprime por pantalla, cuando esto se cumpla
el ciclo repetitivo se “rompe” y el proceso concluye.
Inicio
K=0
K <= 100
K=K+1
K
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 85
INF-101 Introducción a la Programación
1-2010
21.- Generar la serie:
50, 48, 46, 44, ……….. 2
En este caso la serie va decrementado en 2, por lo tanto el primer paso es establecer el
valor inicial de 50 a la variable C, luego se establece el limite del proceso mediante la
condición (mientras K sea mayor o igual 2 ) , cuando la variable C llega a 2 este valor aun
se imprime por la condición igual , pero luego al restar en dos, la variable C se convierte
en 0, por lo que la condición ya no se cumple y el ciclo termina.
Inicio
C = 50
C>=2
C
C=C-2
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 86
INF-101 Introducción a la Programación
1-2010
22.- Escribir un programa que permita generar la serie:
1 , 2 , 4 , 8 ,16 ,32 .... para N términos
Esta serie se puede expresar como la base de números binarios, es decir:
20, 21, 22, 23, 24, 25, …………..2N-1
Por lo que se puede utilizar una variable que actué como contador para representar los
exponentes, a partir del primer exponente (0) y el valor final (N-1), puesto que el
enunciado indica para N términos, por lo que la condición solo estable por menor (<).
Inicio
N
C=0
C<N
R=2^C
R
C=C+1
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 87
INF-101 Introducción a la Programación
1-2010
23.- Obtener la serie: 1 , 2 , 4 , 7 , 11 , 16 ..... para n términos
Inicio
N
C=0
K=1
C< N
K
C=C+1
K=K+C
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 88
INF-101 Introducción a la Programación
1-2010
24.- Mediante una algoritmo determine si un numero es perfecto o no. En caso de serlo o
no imprima el mensaje respectivo.
(Un numero perfecto es el que sumados sus divisores reproduce el mismo numero)
Ej:
6 divisores: 1, 2 ,3 suma: 1+2+3 = 6
Inicio
N
SUM = 0
D =1 , N/2 ,1
si
N mod D = 0
SUM = SUM + D
no
no
si
SUM = N
N, “ no es un
numero perfecto”
N, “ Es un numero
perfecto”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 89
INF-101 Introducción a la Programación
1-2010
25.
Leer dos números enteros y obtener el cociente y su residuo mediante restas
sucesivas
Inicio
A,B
no
si
A>B
no
A>B
si
A=B
A= A-B
COC = 0
COC = 1
RES = A
RES = 0
“El cociente es = “,COC
“ El residuo es = “,RES
C= C+1
COC = C
RES = A
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 90
INF-101 Introducción a la Programación
1-2010
26.- Escribir un programa que obtenga la suma de la serie:
2 – 4 + 6 – 8 + .... para n términos
Inicio
N
C=0
SIG = 1
C<N
C=C+1
S = S + (2*C ) * SIG
SIG = - SIG
S
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 91
INF-101 Introducción a la Programación
1-2010
27. Dado un número, mostrar cada uno de sus dígitos en forma separada
Inicio
V
V>0
D = V mod 10
D
V = V / 10
Fin
28.- Determinar el MCD (Máximo Común Divisor) entre dos números enteros
Inicio
A,B
A!=B
no
si
A>B
B=B-A
A=A-B
“El MCD DE “, A ,
“ Y ”, B, “ ES: “, B
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 92
INF-101 Introducción a la Programación
1-2010
29.- Leer n números enteros y determinar cual es el mayor valor.
Inicio
K
AUX = 0
C=0
C< K
NUM
C=C+1
si
AUX < NUM
AUX = NUM
no
“El mayor valor
es: “, AUX
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 93
INF-101 Introducción a la Programación
1-2010
30.- Leer un grupo de números desde el teclado y determinar la cantidad de números que
terminen en 2, el proceso debe detenerse cuando el usuario pulse un cero.
Inicio
N
C= 0
N>0
D = N mod 10
si
D= 2
C=C+1
no
N
C
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 94
INF-101 Introducción a la Programación
1-2010
31.- En el intervalo de 1 a n, obtener la sumatoria de todos los números que sean
múltiplos de 3 y 5 a la vez.
Inicio
N
SUM = 0
K=1,N,1
K mod 3 = 0
si
SUM = SUM + K
and
K mod 5 =0
no
SUM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 95
INF-101 Introducción a la Programación
1-2010
32.- Escriba un algoritmo que lea un número entero y obtenga la suma de sus dígitos
Inicio
N
SUM = 0
N>0
DIG = N mod 10
SUM = SUM + DIG
N = TRUNC (N / 10)
“La suma de
sus dígitos
es:”, SUM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 96
INF-101 Introducción a la Programación
1-2010
33.- Escriba un algoritmo para leer un número entero y determinar la cantidad de dígitos
que este tiene.
Inicio
NUM
K=0
NUM > 0
K=K+1
NUM = trunc (NUM/10)
“La cantidad de
dígitos es “, K
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 97
INF-101 Introducción a la Programación
1-2010
34.- Dado un número, verificar si es primo.
Análisis:
Debemos considerar en principio un criterio básico para determinar las propiedades de un
número primo, tomaremos en cuenta que un número primo es aquel que tiene solo dos
divisores: el número mismo y el uno. Por tanto el algoritmo esta orientado a contar la
cantidad de divisores que tiene el número en cuestión, si tiene solo dos divisores el
número es primo, de no ser cierta esta condición el número no es primo.
Inicio
N
CD = 0
C=1
C<=N
no
si
N mod C = 0
CD = CD + 1
C=C+1
no
N, “ no es
primo
si
CD = 2
N, “ es
primo”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 98
INF-101 Introducción a la Programación
1-2010
35.- Escribir un D.F para calcular el promedio de pulsaciones de un grupo de n personas
a deben por cada 10 segundos de ejercicio, la formula es:
# pulsaciones = (220 - edad)/10
Inicio
N
CP = 0
SUM = 0
CP < N
EDAD
NP = (220 – EDAD) / 10
SUM = SUM + NP
CP = CP + 1
PROM = SUM / N
“El promedio es
: “, PROM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 99
INF-101 Introducción a la Programación
1-2010
36.- Escribir un programa que convierta un número en base n a base 10, emplear el
teorema fundamental de la numeración:
Ej: Convertir 1010
2
base 10
1 * 23 + 0 * 22 + 1 * 21 + 0 * 20
= 10
Inicio
NUM, BASE
SUM = 0
C=0
NUM > 0
DIG = NUM mod 10
SUM = SUM + DIG * BASE ^ C
C=C + 1
NUM = NUM / 10
SUM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 100
INF-101 Introducción a la Programación
1-2010
37.- Escriba un algoritmo para leer un número entero y determinar si es capicúa
Inicio
A
C=A
SUM = 0
C>0
DIG = C mod 10
SUM = SUM*10 + DIG
C = trunc (C / 10)
no
“El numero no
es capicúa”
si
A = SUM
“El numero
es capicúa”
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 101
INF-101 Introducción a la Programación
1-2010
38.- Determine la suma y la cantidad de múltiplos de m en el intervalo de 1 a n
Inicio
N,M
CM = 0
SM = 0
I=1,N,1
si
I mod M = 0
no
CM = CM + 1
SM = SM + 1
“La cantidad de múltiplos es:
“, CM, “ y la suma de estos
es: “, SM
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 102
INF-101 Introducción a la Programación
1-2010
39.- Leer dos números enteros y mostrar sus divisores comunes
Inicio
N ,M
no
L=M
si
N>M
L=N
D=1,L,1
si
N mod D = 0
and
“Divisor
común: “, D
M mod D =0
no
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 103
INF-101 Introducción a la Programación
1-2010
40.- Obtener la sumatoria de la serie: 1 + 1 + 2 + 3 + 5 + 8 +13 ….. para n
términos. (Serie de Fibonacci).
Inicio
N
A=1
B=1
S=A+B
J = 1 , N-2 , 1
C=A+B
S=S+C
A=B
B= C
“La sumatoria es = “, S
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 104
INF-101 Introducción a la Programación
1-2010
41.- Generar n números al azar entre 10 y 99 y determinar la cantidad de números que
terminan en cero.
La función RANDOM genera números al azar.
La formula para el uso del RANDOM es:
RANDOM (Limite superior – Limite inferior +1) + limite inferior
Inicio
N
CC = 0
K=1,N,1
R = RANDOM(90) + 10
D = R mod 10
si
D=0
CC = CC + 1
no
CC
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 105
INF-101 Introducción a la Programación
1-2010
42.- Escribir un algoritmo para simular el lanzamiento de una moneda un cierto
número de veces y determinar cuantas veces salió 'cara' y cuantas 'sello
INICIO
V
CC = 0
CS = 0
J=1,V,1
R = RANDOM * (2)
si
R=0
CC = CC + 1
no
CS = CS + 1
“CARA SALIO: “, CC , “
VECES”
“SELLO SALIO: “, CS, “
VECES”
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 106
INF-101 Introducción a la Programación
1-2010
43.- Dado un número, obtener su factorial
Por definición:
o
N ! = N * N -1 * N -2 * N -3 * ….* 1
N! = 1 * 2 * 3 *……* N
Los multiplicadores a diferencia de los sumadores se inician en 1 (elemento neutro de la
multiplicación), luego la expresión F = F *C permite acumular los valores que se generan
en el ciclo (PARA) desde el valor inicial (1) hasta el valor final (R).
INICIO
R
F=1
C=1,R,1
F=F*C
“El factorial de “,
R, “ es : “, F
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 107
INF-101 Introducción a la Programación
1-2010
44.- Leer los salarios de un grupo de empleados y determine el promedio de salarios y el
porcentaje de empleados que están por debajo de 1000 Bs, detenga el proceso cuando
ingrese un salario igual a cero.
INICIO
SSAL = 0
CSAL = 0
CAUX = 0
SAL
SAL > 0
CSAL = CSAL + 1
SSAL =SSAL + SAL
SAL < 1000
si
CAUX = CAUX + 1
no
SAL
PROM = SAL / CSAL
PORC = CAUX*100 / CSAL
“PROMEDIO DE SALARIOS : “,
PROM
“PORCENTAJE DE SALARIOS < A
1000 : “, PORC
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 108
INF-101 Introducción a la Programación
1-2010
45.- Mediante un algoritmo determine si dos números son “amigos” (dos números son
amigos si la suma de sus divisores del primero es igual segundo y viceversa). Imprimir un
mensaje en cada caso.
Ej: 220 y 284
INICIO
N,M
SUM1= 0
C = 1 , N/2 ,1
si
N mod C = 0
SUM1 = SUM1 + C
no
SUM2= 0
K = 1 , M/2, 1
si
M mod K =0
SUM2 = SUM2 + K
no
“No son
números
amigos”
no
N = SUM2
si
si
and
“Son
números
amigos”
M = SUM1
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 109
INF-101 Introducción a la Programación
1-2010
46.- Escribir un programa para calcular el cos(x), mediante la siguiente serie:
(detener el proceso cuando el valor absoluto de un término sea menor a 0.001)
x2
cos( x) 1
2!
x4
4!
x6
6!
.....
INICIO
X
S=1
SIG = 1
DEN = 2
0
X = XT*=3.1416
/180
abs(T- S ) > 0.001
F=1
T= S
M = 1 , DEN,1
F=F*M
S = S + (X ^ D / F ) * SIG
D=D+2
SIG = - SIG
“El valor de la
serie es: “, S
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 110
INF-101 Introducción a la Programación
1-2010
47.- Escribir un algoritmo para determinar si un numero entero de 3 dígitos es un cubo
perfecto, (este es un numero en que la suma de sus dígitos elevados al cubo es igual al
numero), imprima un mensaje según el caso.
Ej:
153 = 13+53+33
INICIO
C=1,9,1
D=0,9,1
U = 0, 9 , 1
X = C * 100 + D * 10 + U
Y = C*C*C + D*D*D + U*U*U
si
X=Y
no
“CUBO
PERFECTO: “, X
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 111
INF-101 Introducción a la Programación
1-2010
48. Determinar cuantas veces aparece un digito dado (leído desde el teclado) dentro de
un número entero.
EJ:
Numero = 42232
Digito = 2 Frecuencia = 3
Inicio
N, DIG
CD = 0
N>0
D = N mod 10
no
si
DIG = D
CD = CD + 1
“La frecuencia
es de : ”, CD
Fin
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 112
INF-101 Introducción a la Programación
1-2010
49. Dado un número N, mostrar por pantalla los dígitos primos sin importar el orden.
INICIO
N
N > 0
K = N mod 10
F=0
D = 1 , K /2 , 1
si
K mod D = 0
F=F+1
no
si
F=1
K
no
N = N / 10
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 113
INF-101 Introducción a la Programación
1-2010
50.- Obtener el valor de la serie : 1! – 2! + 3! – 4! + 5! - ….. para n términos
INICIO
N
SUM = 0
SIG = 1
C=1,N,1
M =1
F = 1, C. 1
M=M*F
SUM = SUM + M * SIG
SIG = - SIG
SUM
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 114
INF-101 Introducción a la Programación
1-2010
51.- Generar las secuencias:
1
1
1
1
1
2
2
2
2
3
3
3
4
4
5
INICIO
C = 5 , 1, -1
D = 1 , C, 1
D
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 115
INF-101 Introducción a la Programación
52.-
1-2010
Generar :
1
2
2
3
3
4
4
5
5
............
.............
n ...........
3
4
5
4
5
5
INICIO
N
X=1,N,1
Y = 1, X , 1
X
FIN
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 116
INF-101 Introducción a la Programación
1-2010
PROBLEMAS PROPUESTOS - ALGORITMOS
1.- Elabore un diagrama de flujo que teniendo como datos de entrada el radio y la altura
de un cilindro calcule el área total y el volumen del cilindro.
2.- Escriba un algoritmo que permita efectuar la conversión de coordenadas rectangulares
en coordenadas polares.
3.- Convertir grados Centígrados en grados Fahrenheit
4.- Un sistema de ecuaciones lineales:
ax + by = c
dx + ey = f
Se puede resolver con las siguientes fórmulas:
x
ce bf
ae bd
y
af cd
ae bd
Elabore un algoritmo que lea dos conjuntos de coeficientes (a, b, c, d, e, f) y visualice los
valores de x e y.
5.- Intercambiar el contenido de 2 variables.
6.- Una persona recibe un préstamo de $10,000.00 de un banco y desea saber cuánto
pagará de interés al terminar el mes si el banco le cobra una tasa del 2% mensual.
a)
b)
Resuelva este caso particular.
Generalice este problema para un monto cualquiera de capital y para una
tasa cualquiera.
7.- Dado un tiempo en segundos, calcular los segundos restantes que le
correspondan para convertirse exactamente en minutos.
8.- Convertir horas en formato 24 horas a formato 12 horas, para lo cual debe leer las
horas y minutos, además de una variable que indique si es PM o es AM. (Sug. 1: AM, 2 :
PM)
Ej:
Sea la hora : 14:45
La entrada será: 14 por la hora , 45 por los minutos y 2 por ser PM
La salida será:
2 : 45 pm
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 117
INF-101 Introducción a la Programación
1-2010
9.- Escribir un programa que acepte dos números enteros diferentes entre si y los
devuelva ordenados del mayor al menor
10.- Escriba un programa para determinar el cuadrante en el que se encuentra un par
ordenado de valores.
11.- Leer 3 números enteros y determinar si forman un triangulo
12.- Escriba un algoritmo para determinar el numero mayor, de tres números enteros
distintos entre si, desde el teclado.
13.- Leer 4 números enteros y determinar si forman un cuadrado, un rectángulo, un
trapecio o un polígono irregular.
14.- Leer cuatro coordenadas (X,Y) , y determine si forman un cuadrado o un
rectángulo.
Ej:
X1,Y1
X2,Y2
X3,Y3
X4,Y4
15.- Dados 4 números enteros que se lean desde el teclado determinar el mayor y el
menor valor, los números deben ser distintos entre si.
16.- Una agencia automotriz ofrece planes de crédito para la adquisición de los diferentes
modelos de automóviles. Si el automóvil vale más de $25,000 la agencia solicita un 35%
de adelanto y el resto debe cubrirse en 24 mensualidades sin intereses. Si el automóvil
tiene un valor máximo de $25,000 se requiere un adelanto del 25% y el resto se debe
pagar en 18 mensualidades sin intereses.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 118
INF-101 Introducción a la Programación
1-2010
La agencia desea saber, en base al precio de un automóvil que un determinado cliente
elija, cuál es el monto del adelanto y cuál es el número y el monto de las mensualidades
que éste debe cubrir.
17.- Escribir un algoritmo que permita emitir la factura correspondiente a una
compra de un artículo determinado, del que se adquieren una o varias unidades.
El IVA es del 15% y si el precio bruto (precio venta mas IVA) es mayor de 50 Bs.
se debe realizar un descuento del 5%.
18.- Escribir un algoritmo para leer tres números enteros distintos entre si e imprimir el
numero intermedio (el que no es mayor ni menor)
19.- Realizar un algoritmo que me permita ingresar la hora, minutos y segundos y que
indique a cuantos segundos equivalen.
20.- Determinar si un año es bisiesto (verificar las condiciones)
21.- Un caminante observa la posición en la que se encuentra (X y Y mediante un
GPS) a cada trecho. Cuánto caminó en total y cuál fue el trecho más largo ?
22.- Elabore un diagrama de flujo que calcule el área de un triángulo mediante la formula:
Área
p( p a) * ( p b)( p c)
donde p es el semiperímetro, p = (a + b + c) / 2, siendo a, b, c los tres lados del triángulo.
Para que el triángulo exista debe cumplirse que los lados sean todos positivos, y además
que la suma de dos lados cualesquiera sea mayor que el otro lado.
23.- El precio de un boleto de viaje redondo en tren se calcula tomando en cuenta el
número de kilómetros que se van a recorrer, siendo el precio $60.00 por Km. Este precio
puede tener un descuento del 30% si el viaje de regreso se hace después de 7 días del
viaje de ida, o si el recorrido supera los 800 Km.
Elabore un diagrama de flujo para calcular cuánto se debe pagar por un boleto de
tren dando como datos el total de Km recorridos y el número de días entre el viaje
de ida y el viaje de vuelta.
Pruebe su diagrama con los siguientes grupos de datos:
a)
b)
850 Km y 10 días.
356 Km y 8 días.
24.- Leer el valor de las ventas efectuadas por un vendedor y determinar el porcentaje de
ventas menores a 500 Bs.
25.- Escribir un algoritmo en donde dado un número, si es positivo verificar si se
encuentra en el intervalo abierto (60 – 90) , de lo contrario emitir un mensaje de error.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 119
INF-101 Introducción a la Programación
1-2010
26.- A un trabajador se le paga según las horas que trabaja en la semana una tarifa de
pago por hora. Si la cantidad de horas trabajadas es mayor a 40, la tarifa se incrementa
en un 50%. Calcular el salario total del trabajador, además considere que si existe un
anticipo se debe restar este valor al salario total, mostrando al final el pago neto.
27.- Calcular el descuento efectuado al valor de una venta en base a las
siguientes condiciones:
Si la Venta < 100 Bs.. descontar el 1 % del valor de la venta
Si la venta >=100 Bs pero es menor a 500 Bs. descontar el 5% de la venta
Si la venta >= 500 Bs. Pero es menor a 1000 Bs. descontar el 10 %
Si la venta es >= 1000 Bs descontar el 20%
Mostrar como salida el descuento y el valor del producto descontado
28.- Leer el salario básico y la antigüedad de un empleado (en años) y determinar
mediante un algoritmo el bono de antigüedad y el total ganado.
El bono de antigüedad se calcula en base a las siguientes condiciones:
Si la antigüedad < 5 años :
10 % del Salario básico
Si la antigüedad >=5 pero es menor a 10 : 15 % del Salario básico
Si la antigüedad >=10 pero es menor a 15 : 25 % del Salario básico
Si la antigüedad >= 15 :
50 % del Salario básico
El total ganado es la suma del salario básico mas el bono de antigüedad
29.- Obtener el producto entre dos números enteros mediante sumas sucesivas.
30.- Escribir un D.F para determinar la suma de los n primeros números impares
elevados al cuadrado.
31.-
Determinar ab mediante productos sucesivos.
32.- Obtener la serie: 1 , -1 , 2 , -2 , 3 , -3 , ………, n , -n
33.- Escribir un D.F o programa para obtener la suma de los 100 primeros números pares.
34.- Escribir un algoritmo para obtener la suma de los cuadrados de los 10 primeros
números pares.
35.- Obtener la suma de los n primeros términos de la serie :
1 – 2 + 3 – 4 + 5 – 6 + ........ para n términos
36.- En el rango de 1 a n determinar el porcentaje de números primos
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 120
INF-101 Introducción a la Programación
1-2010
37.- Escribir un algoritmo que permita obtener el valor aproximado de PI, mediante la
serie:
4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 +.....para n términos.
38.- Escribir un algoritmo que permita adivinar un numero que sea genere internamente
al azar, el cual esta en el rango de 0 a 50. El usuario debe adivinar este número en base a
aproximaciones, para lo cual se dispone de 5 intentos. Veamos un ejemplo:
Supongamos que el número “pensado” por la computadora sea el 42.
Salida del programa:
Estoy pensando un número entre 0 y 50
Intento 1
? 25
El numero esta entre 25 y 50
Intento 2
? 34
El numero esta entre 34 y 50
Intento 3
? 45
El numero esta entre 34 y 45
Intento 4
? 40
El numero esta entre 40 y 45
Intento 5
? 42
Felicitaciones … Adivinaste el numero
39.- Elabore un diagrama de flujo que dado un entero n > 1, calcule e imprima los
elementos correspondientes a la conjetura de Ullman (en honor al matemático S. Ullman)
que consiste en lo siguiente:
Empiece con cualquier entero positivo.
Si es par, divídalo entre 2; si es impar multiplíquelo por 3 y agréguele 1.
Obtenga enteros sucesivamente repitiendo el proceso.
Al final se obtendrá el número 1, independientemente del entero inicial. Por
ejemplo, cuando el entero inicial es 26, la secuencia será:
26
13
40
20
10
5
16
8
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
4
2
1
Pagina - 121
INF-101 Introducción a la Programación
1-2010
Elabore un diagrama de flujo para leer una serie de enteros positivos, contar los valores
introducidos y calcular su promedio. El final de los datos se indicará con un número
negativo.
40.- Escriba un algoritmo para leer un número entero y mostrar todos sus divisores
incluido en propio número.
41.- Escriba un algoritmo para leer un número y obtener el producto de los dígitos
distintos de cero.
42.- En una guardería hay 25 niños de 1, 2 y 3 años. Los niños de 1 año consumen 6
pañales al día, los niños de 2 años consumen 3 pañales diarios y los niños de 3 años
consumen 2 pañales diarios. Se desea conocer el consumo total de pañales diarios.
Datos: edad1
edad2
.....
edad25
donde edadi representa la edad del i–ésimo niño en años cumplidos (1, 2 ó 3).
43.- Escriba un algoritmo para leer un número entero y obtener la suma de sus dígitos
pares.
44.- Dado un número, verificar si el producto de sus dígitos mayores a cero, genera un
número par.
45.- Dado un número, verificar si es automórfico.(es aquel que reaparece al final de su
cuadrado)
Ej:
252 = 625
52 = 25
46.- Obtener el Mínimo Común Múltiplo de dos números.
47.- Leer un número y obtener la suma de sus dígitos que sean pares
48.- Escribir un D.F para leer dos números enteros (a,b) y determinar cual de los dos
tiene mas dígitos.
49.- Escribir un programa que muestre en pantalla, con los encabezados
correspondientes, el capital y los intereses ganados por un capital C0 depositado a un
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 122
INF-101 Introducción a la Programación
1-2010
interés compuesto I durante N años. C0, I y N se deben leer por teclado. La formula del
interés compuesto es:
Cn = C0(1+I)n
50.- Escribir un algoritmo que obtenga el valor de la serie:
4 – 4/3 + 4/5 – 4/7 + ......... para n términos
El valor de la sumatoria es el valor de PI, por lo tanto introduzca un valor que se aproxime
a este valor.
51.- Leer tres números enteros y determinar cual es que tiene la suma mayor de sus
divisores.
52.- Mediante un algoritmo simule el comportamiento de un semáforo,
considerando los tres estados. Establezca ciclos iguales de retardo para el rojo (1)
y el verde (3) y un ciclo de retardo menor para el amarillo (2)
53.- Dado un número, obtener su equivalente en base 2.
54.- Leer 10 números enteros y determinar cuantos de estos son capicúa.
55.- Dado un número, verificar si la sumatoria de sus dígitos genera un número primo.
56.- Dado un número, obtener su factorial haciendo uso de operaciones de suma y/o resta
únicamente.
57.- Escribir un algoritmo para invertir n números se lean desde el teclado
Ej .
123 ---- > 321
58.- Escribir un algoritmo para determinar el valor del seno de un ángulo x ( en radianes
), según la serie:
sin x = x – x3/3! + x5/5! – x7/7! ... para n términos
59.- Obtenga la suma de números primos comprendidos entre n y m
60.- Escribir un programa que halle el valor aproximado de ex
ex = x0/0! + x1/1! + x2/2! + x3/3! + x4/4! + ..... para n términos
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 123
INF-101 Introducción a la Programación
1-2010
61.- Generar las tablas de multiplicar del 1 al 9
62.- Elabore un diagrama de flujo que dado un valor n entero con n
la siguiente sumatoria:
1, calcule e imprima
n
ii
i
1
63.- Los cubos de Nicómaco, considera la siguiente propiedad descubierta por Nicómaco de
Gerasa: sumando el primer impar, se obtiene el primer cubo. sumando los dos siguientes se
obtiene el segundo cubo, sumando los tres siguientes, se obtiene el tercer cubo, etc.
Es decir:
1 = 13,
3 + 5 = 23 = 8,
7 + 9 + 11 = 33 = 27,
13 + 15 + 17 + 19 = 43 = 64.
Elabore un diagrama que dado un número n entero positivo, imprima los n primeros cubos
utilizando esta propiedad.
64.- De n números que se lean desde el teclado determinar el mayor y el menor valor.
65.- Leer las estaturas (en cm ) de un grupo de personas, a partir de estos valores
obtener el promedio de estaturas, el porcentaje de estaturas por debajo
de 150 cm y el porcentaje de las que estén por encima o igual a este valor. Detener el
proceso cuando el usuario ingrese un cero.
66.- Leer las calificaciones de un grupo de estudiantes que han rendido un examen, a
partir de ello determinar:
-
La media de las calificaciones
El porcentaje de alumnos aprobados (nota >= 51)
El porcentaje de reprobados
Las dos mejores notas
67.- Construya un algoritmo que acepte los montos de depósitos y retiros efectuados por
un cliente de un banco, mostrar el saldo final que tiene dicho cliente.
68.- Escribir un algoritmo que permita leer dos números enteros y muestre por pantalla a
los números enteros comprendidos en este intervalo, incluidos los valores de entrada,
considerar que si el primer numero es menor que el segundo, la secuencia será creciente,
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 124
INF-101 Introducción a la Programación
1-2010
en caso contrario será decreciente, si el usuario ingresa dos números idénticos, el
algoritmo debe solicitar la entrada de nuevos valores.
69.- Obtener mediante un algoritmo el valor de la serie:
2, 5, 7 ,10, 12, 15 ,17,......., 1800
70.- Construya un algoritmo que las temperaturas registradas en un centro de
metereología, y determine cuantas veces se registro temperaturas menores a cero,
cuantas iguales a cero y finalmente cuantas temperaturas mayores a cero grados, detener
el proceso cuando ingrese una temperatura de 99 o –99.
71.- Obtener el valor final de la serie:
n1 + (n-1)2 + (n-3)3+ ......... 1n
72.- Leer un número entero y determinar si su primer digito es par o impar
73.- Escribir un algoritmo que permita obtener el valor de la serie:
s = 1! / 0! – 2! / 2! + 3! / 4! – 5! /6! + ........ 11!/10!
74.- Mediante un algoritmo generar la serie:
1 , 2 , 6 , 24 , 120 ,....... para n términos
75.- Escribir un algoritmo que determine si 3 números leídos desde el teclado son
“pitagóricos”
76.- Hallar la raíz cuadrada de un número n, empleando la relación:
b = 0,5 * (a + n/a)
c = 0,5 * (b + n/b)
d = 0,5 * (c + n/c)
..........
...........
en donde el valor inicial de a es 1, efectué las iteraciones k veces
77.- Leer el valor de un bien y su vida útil (en años) y muestre por pantalla su
depreciación en cada año, hasta alcanzar la vida útil. Emplear las siguientes relaciones
para determinar el factor de depreciación:
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 125
INF-101 Introducción a la Programación
1-2010
FD = Valor original / Vida Útil
Depreciaciónn = Depreciación-1 – FD
FD es el factor de depreciación
78.- Escriba un algoritmo que encuentre la cantidad de números perfectos que
existen en el rango de 1 a n.
79.- Calcular potencias con exponentes positivos o negativos, se deben utilizar
ciclos repetitivos para tal efecto.
80.- Obtener el valor de la serie:
1/2 + 3/4 + 5/6 + .............n-1/n
81.- Una fuente de datos registra varias edades, la edad 0 indica el final de la
entrada de datos, escriba un algoritmo para determinar el promedio de las edades
ingresadas y también el porcentaje de personas mayores a los 65 años.
82.- Calcular el valor de la serie:
1/1 + 1/2 + 2/3 + 3/4 + 5/5 + 8/6 + 13/7 + 21 /8 + 34/9 + 55/10
83.- Leer un numero entero y producir un segundo numero con sus dígitos
ordenados del menor al mayor.
84.- Leer dos números enteros si no son iguales intercambie el contenido de las
variables, de ser iguales sume los mismos y muestre este resultado.
85.- Leer un número entero y determinar si la suma de sus dígitos distintos de cero
forman un número primo, de ser así imprima el mensaje respectivo.
86.- Escribir un algoritmo que permita generar 50 números al azar en el rango (199) y determine cuantos de estos elementos son números primos.
87.- Mostrar los primeros N números triangulares.
88.- Calcular el coeficiente binomial a partir de la lectura de dos números enteros, a partir
de la relación:
n
m
n!
(n m)!*m!
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 126
INF-101 Introducción a la Programación
1-2010
89.- Dados dos números determinar si son primos relativos entre si. (por definición, no
tienen ningún factor primo en común, o, dicho de otra manera, si no tienen otro divisor
común más que 1 )
90.- Simular mediante un algoritmo el comportamiento de un reloj digital, mostrando :
hh:mm:ss
91.- Generar las secuencias:
5
4
3
2
1
5
4
3
2
5
4
3
5
4
5
92.- Generar las secuencias:
1
5
1
4
1
3
1
2
1
1
2
4
2
3
2
2
2
1
3
3
3
2
3
1
4
2
4
1
5
1
3
6
9
12
15
4
8
12
16
20
5
10
15
20
25
93.- Generar la tabla:
1
2
3
4
5
2
4
6
8
10
94.- Generar :
11111
11115
11145
11345
12345
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 127
INF-101 Introducción a la Programación
1-2010
95.- Leer un valor que represente una cierta cantidad de dinero, escribir un algoritmo que
permita convertir el dicho valor en billetes y monedas, de tal forma que sea la menor
cantidad de billetes y monedas a convertir.
Ej:
Sea el monto = 655 Bs.
La salida será:
3 billetes de 200 Bs
1 billete de 50 Bs.
1 moneda de 5 Bs.
96.- Leer el nombre completo de una persona y determine si tiene uno o mas de
un nombre.
97.- Dada la fecha de nacimiento de una persona escribir un algoritmo que indique
su signo zodiacal.
98.- Escribir un algoritmo que permita convertir un numero arábigo en un numero romano
(el rango es de 1 - 3000 )
99.- Escribir un algoritmo que indique la frecuencia de repetición de las vocales de un
frase que se lea desde el teclado.
100.- Leer una cadena de caracteres y verifique si es un palíndromo (palabra que se lee
igual de izquierda a derecha o viceversa).
Ej: ORURO, OSO, ANITA LAVA LATINA, etc
101.- Leer una palabra y determinar si la misma contiene las cinco vocales.
102.- Escribir un algoritmo que acepte un número no mayor a dos dígitos y muestre el
mismo de manera literal:
Ej: 23 : Veintitrés
103.- Leer los nombres de pila, de por lo menos 5 personas y determinar cuantos de
estos nombres tienen como primera letra la „A‟
104.- Leer los nombres las capitales de varios países, deteniendo la entrada con una
cadena nula (“00000”), y luego efectué la búsqueda de alguno de estos e indique el orden
en el que registro.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 128
INF-101 Introducción a la Programación
1-2010
PROBLEMAS PROPUESTOS - PROGRAMACION
1. Asignar valor a cuatro variables e imprímalos.
2. Leer dos números y mostrar el resultado de su suma, resta, división y modulo.
3. Leer 2 números y hallar la resta del mayor menos el menor.
4. Leer 2 números e imprimir el mayor.
5. Leer un número e imprimir su cuadrado.
6. Leer un número e imprimir su raíz cuadrada.
7. Leer 2 números e imprimir de menor a mayor.
8. Leer 2 números y mostrar de mayor a menor.
9. Leer 3 números y mostrar el mayor.
10. Leer 3 números y mostrar de mayor a menor.
11. Asignar valor a 5 variables e imprimir el resultado de su suma, el producto del 1° con el
4° y la diferencia del 5° con el 2°.
12. Asignar valor a 3 variables e imprimir el producto de la suma del 1° con el 3°, por el 2°.
13. Leer 2 números e imprimir el resultado de su suma.
14. Leer 2 números e imprimir el resultado de su resta.
15. Leer 2 números e imprimir el resultado de su producto.
16. Leer 2 números e imprimir el resultado de su división.
17. Leer 2 números e imprimir el resultado de las 5 operaciones fundamentales (CASE).
18. Leer un número y determinar si es positivo.
19. Leer un número y determinar si es positivo, negativo o neutro.
20. Leer un número y determinar si es par.
21. Leer un número y determinar si es par o impar.
22. Leer un número y determinar si es múltiplo de 3.
23. Leer un número y determinar si es múltiplo de 5.
24. Leer un número y determinar si es mayor que 100.
25. Leer un número y determinar si es mayor que 300.
26. Leer un numero y determinar si esta en el rango de 70 y 150.
27. Leer 4 números y hallar la resta del mayor menos el menor.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 129
INF-101 Introducción a la Programación
1-2010
28. Leer 4 números e imprimir de menor a mayor.
29. Leer 2 números y efectuar la resta del mayor menos el menor.
30. Leer 2 números e imprimir el resultado de su división (si se puede) verificando si es
infinito o indeterminado.
31. Calcular los salarios mensuales de los empleados de una empresa, sabiendo que estos
se calculan en base a las horas semanales trabajadas y de acuerdo a un monto por
hora trabajada. Si pasa de 40 horas semanales, las horas extra se pagana razón de 1.5
veces la hora ordinaria.
32. Calcular el área de un triangulo sabiendo que la formula es:
S=(1/2)*b*h
b=Base
h=Altura
33. Convertir una temperatura dada en Celcius a grados Farenheit sabiendo que:
F°=9/5*C°+32
34. Calcular el salario Neto mensual de un trabajador en función a sus horas trabajadas y
la tasa de impuestos, tomar en cuenta que:
a. Las primeras 120 horas se paga a tarifa normal.
b. Las horas extra se pagan a razón de 1.5 veces la hora ordinaria.
c. Las tasas de impuestos son:
i. Los primeros 700 Bs son libres de impuestos.
ii. El resto tiene un impuesto del 13% IVA (se deduce AFP 10% y Fonvis 2%
del salario Bruto).
d. Se paga 20 Bs la hora.
35. Hallar el área y el perímetro de un círculo.
36. Hallar el área y el perímetro de un rectángulo.
37. Hallar el volumen y área de un prisma rectangular.
38. Hallar el volumen y área de un cilindro.
39. Hallar el volumen y área de una esfera.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 130
INF-101 Introducción a la Programación
1-2010
40. Introducir por teclado una fecha en formato (D) día, (M) mes, (Y) año. Determinar la
fecha del día siguiente:
Y=1971

D=25 M=4
Y=1971
D=31 M=12 Y=1996

D=1
Y=1997
D=24 M=4
M=1
41. Leer mes y año, y obtener el número de días del mes.
Estructura While
42. Leer 10 números y hallar su suma de todos los elementos (sin while).
43. Leer 10 números hallar la suma de los primeros 10 números naturales.
44. Hallar su suma de todos los elementos (con while).
45. Hallar la suma de los primeros 5 números pares naturales.
46. Leer 10 números e imprimir la cantidad de positivos.
47. Leer 20 números e imprimir la cantidad de pares y la cantidad de impares.
48. Leer 20 números e imprimir la suma de pares y la suma de impares.
49. Leer 15 números e imprimir la cantidad de números múltiplos de 3 y 5 que existan.
50. Leer 40 números e imprimir la cantidad de números que se encuentran en el rango de
15 a 30.
51. Leer 30 números e imprimir la cantidad de números que sean iguales a 40 y la cantidad
de mayores a 200.
52. Leer 4 números e imprimir su promedio.
53. Leer N números e imprimir el promedio de los múltiplos de 7 y la cantidad de los
múltiplos de 3.
54. Leer N números e imprimir la sumatoria de ellos.
55. Leer N números e imprimir el promedio de impares y la sumatoria de los restantes.
56. Leer un número e imprimir el número de dígitos que tiene.
57. Leer un numero decimal entero e imprimir su equivalente en binario.
58. Leer un numero decimal entero e imprimir su equivalente en octal.
59. Leer un numero decimal entero e imprimir su equivalente en hexadecimal.
60. Leer un número e invertirlo.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 131
INF-101 Introducción a la Programación
1-2010
61. Leer un número y verificar si es capicúa.
62. Leer un número decimal y obtener el primer digito decimal.
63. Leer N números e imprimir la sumatoria de los que se encuentren en el rango del 10 y
100 y el promedio de los múltiplos de 4 y 9.
64. Obtener el producto de 2 números utilizando sumas sucesivas.
65. Obtener la división de 2 números utilizando restas sucesivas.
66. Obtener la potencia de un numero N a la I utilizando multiplicaciones sucesivas.
67. Leer un número e imprimir sus múltiplos.
68. Leer N números e imprimir el promedio de los múltiplos de 8 y el 15vo numero leído.
69. Leer N números e imprimir la 4ta que se encuentre comprendida en el rango del 50 al
100 y el 10mo numero leído.
70. Leer N números e imprimir el porcentaje de pares y el último negativo.
71. Leer N números e imprimir el 4to número leído si este es mayor de 400.
72. Leer N números e imprimir el 10mo numero si este es mayor que 5.
73. Leer N números e imprimir el 15 número si este es igual a la suma del primer par con
el último impar.
74. Leer N números e imprimir el 7mo si es que es el doble del primero.
75. Leer N números e imprimir el 13 si es el doble del quinto impar.
76. Leer N números e imprimir el mayor.
77. Leer N números e imprimir el promedio de pares y el porcentaje de los múltiplos de 4.
78. Leer N números e imprimir el promedio de los menores que 100, porcentaje de los
mayores que 200, y la cantidad de los que se encuentren en el rango de 100 y 200.
79. Hallar 10 números y hallar el promedio.
80. Leer N números e imprimir el 5to leído.
81. Leer N números e imprimir el 5to número impar.
82. Leer N números e imprimir el tercer número par que se encuentre en el rango de 10 y
20 y el número mayor de todos.
83. Leer N números e imprimir la 4ta posición leída y el mayor de los impares.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 132
INF-101 Introducción a la Programación
1-2010
84. Leer N números e imprimir la cantidad de positivos, promedio de los pares, porcentaje
de los múltiplos de 4 y el mayor de los impares.
85. Leer N números e imprimir la cantidad de pares que estén entre los dos primeros
impares.
86. Leer N números hasta que la sumatoria de los pares sea mayor o igual a 500, imprimir
la cantidad de números leídos.
87. Leer números hasta que aparezca el 7mo múltiplo de 4, imprimir la cantidad total de
números leídos, y la primera negativa.
88. Leer 10 números y hallar la cantidad de números que están entre [100-200].
89. Leer 10 números y hallar el último par.
90. Leer 10 números y hallar el primer par.
91. Leer N números y hallar el promedio.
92. Leer un número y mostrar la cantidad de dígitos que tiene.
93. Leer un número y mostrar el número invertido.
94. Verificar si un número es capicúa.
95. Leer el número y mostrar 2 números: uno con los dígitos pares, y el otro con los
impares, pero invertidos.
96. Leer el número y mostrar 2 números: uno con los dígitos pares, y el otro con los
impares, pero ordenados.
Estructura FOR
97. Generar e imprimir los números del 1 al 10.
98. Generar e imprimir los números del 10 al 1.
99. Generar e imprimir N números aleatorios.
100.
Generar e imprimir N números aleatorios que se encuentren entre A y B.
101.
Generar e imprimir N números pares aleatorios.
102.
Generar e imprimir N números aleatorios múltiplos de 7.
103.
Leer 10 números y mostrar la cantidad de números pares.
104.
Leer N números y mostrar el promedio.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 133
INF-101 Introducción a la Programación
1-2010
105.
Generar la serie para N números:
1 3 5 7 8 11 13 …
106.
Generar la tabla de sumar del 1 al 10 de un numero X.
107.
Generar la tabla de restar del 1 al 10 de un numero X.
108.
Generar la tabla de multiplicar del 1 al 10 de un numero X.
109.
Generar la tabla de dividir del 1 al 10 de un numero X.
110.
Leer un número N y mostrar la cantidad de dígitos pares e impares.
111.
Leer 30 números y mostrar el porcentaje de pares e impares.
112.
Leer N números y mostrar el mayor de todos.
113.
Leer N números y mostrar el menor de todos.
114.
Leer N números y mostrar el 1er positivo.
115.
Leer N números e imprimir el último múltiplo de 5.
116.
Leer N números y mostrar la cantidad de pares que se encuentran entre los dos
primeros impares.
117.
Generar la serie para N números:
1357…
118.
Generar la serie para N números:
1 2 3 4 5 6 7 8 9 10 11 …
119.
Generar la serie para N números:
2 4 6 8 10 12 14 …
120.
Generar la serie para N números:
1 2 4 7 11 16 22 29 …
121.
Generar la serie para N números:
100030005000700090…
122.
Generar la serie para N números:
2242462468…
123.
Generar la tabla de multiplicar de 1 hasta N del numero X.
124.
Hallar el factorial de un numero N.
125.
Imprimir el resultado de 0!+1!+2!+…+N! (N menor a 20)
126.
Imprimir el resultado de 1/1+1/2+1/3+…+1/N
127.
Imprimir el resultado para N términos:
128.
Generar el factorial de los N números secuenciales.
129.
Verificar si un número es perfecto.
N=6
1*2*3 = 1+2+3
130.
Hallar el mcm y MCD para dos números.
131.
Verificar si un número es primo.
S=X - X^3/3!+ X^5/5!- X^7/7!+…
(sus múltiplos)  Si es perfecto
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 134
INF-101 Introducción a la Programación
1-2010
132.
Generar la serie para N números:
N=6
100 1 99 2 98 3 97 …
133.
Generar la siguiente serie para N términos: N=6
134.
Generar la siguiente serie para N términos (Fibonacci):
135.
Generar la siguiente serie para N términos: 1 0 2 0 3 0 4 0 …
136.
Generar la siguiente serie:
137.
Generar N Fibonaccis, e imprimir el promedio de los múltiplos de 9 que se
615243…
0 1 1 2 3 5 8 13 …
A B C D E F G ..
encuentren en el rango de 40 y 80.
138.
Generar N Fibonaccis e imprimir el factorial del 5to elemento par.
139.
Imprimir la secuencia 100, 1 , 99 , 2 , 98, 3 , …
140.
Generar los primeros N números primos.
141.
Leer un numero N y mostrar un numero con los dígitos del medio.
N=4521  52
142.
Leer un numero N y mostrar la suma de sus dígitos.
143.
Leer un número y mostrar la cantidad de dígitos pares y la cantidad de dígitos
impares.
144.
Convertir un número entero positivo en su equivalente en romano.
N=3276  MMMCCLXXVI
Vectores
145.
Llenar un vector de longitud N y mostrarlo por pantalla.
146.
Llenar un vector de longitud N y mostrarlo por pantalla los elementos pares.
147.
Llenar un vector de longitud N y mostrar la suma de todos sus elementos.
148.
Llenar un vector de tamaño N y mostrar en X la suma de los elementos impares y
en Y la suma de las posiciones pares.
149.
Leer dos vectores de tamaño N, e intercambiar sus elementos.
150.
Leer un numero N y almacenar los dígitos pares en el vector P y los dígitos impares
en el vector 1.
151.
Llenar 2 vectores de tamaño N y mostrar en el vector C la suma de dos vectores.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 135
INF-101 Introducción a la Programación
152.
1-2010
Llenar 2 vectores (A y B) de diferentes tamaños y copiar en el vector C de tamaño
del vector mayor. El vector C debe ser llenado con los elementos mayores de cada
celda correspondiente al índice de A y B, y los elementos sobrepasen al Vector de
menor tamaño, cópielos.
153.
Llenar un vector de tamaño N con la siguiente serie:
1 0 1 0 1 0 ..
154.
Generar 2 vectores de tamaño N con los siguientes elementos:
12345
54321
155.
Generar un vector de tamaño N con la siguiente serie:
2 4 6 8 10 12 14 …
156.
Generar un vector de tamaño N con la siguiente serie:
1 2 4 7 11 16 22 …
157.
Generar un vector de tamaño N con la siguiente serie:
0 1 1 2 3 5 8 13 …
158.
Llenar un vector de tamaño N y buscar un elemento X introducido por teclado
(imprimir la posición).
159.
Llenar un vector y contar cuantos elementos X hay en el vector.
160.
Llenar un vector de tamaño N y ordenarlo en forma ascendente.
161.
Llenar un vector A de tamaño N, y generar un vector B de tamaño N con los
elementos invertidos de A.
162.
Llenar un vector, ordenarlo, leer un elemento X por teclado e introducir en el
vector en la posición que corresponde.
163.
47 21847 21847 218
164.
317231722713
Matrices
165.
Calcular la sumatoria de los elementos de la diagonal principal de una matriz
cuadrada.
166.
Calcular la sumatoria de los elementos de la diagonal secundaria de una matriz
cuadrada.
167.
Hallar la transpuesta de una matriz.
168.
Realizar la suma de 2 matrices NxN.
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 136
INF-101 Introducción a la Programación
1-2010
169.
Verificar si la matriz cuadrada leída es simétrica.
170.
Intercambiar los elementos de la triangular superior izquierda de una matriz, por la
triangular inferior derecha.
171.
Llenar una matriz N x N de la siguiente forma:
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
1
1
1
1
0
1
1
1
0
0
1
1
0
0
0
1
172.
173.
174.
175.
Generar una Matriz de tamaño NxN, y el elemento X
X
0
0
X
0
X
X
0
0
X
X
0
X
0
0
X
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 137
INF-101 Introducción a la Programación
1-2010
176.
1
1
1
1
1
0
0
1
1
0
0
1
1
1
1
1
177.
Llenar una matriz NxM y hallar la suma de sus elementos.
178.
Llenar una matriz NxN y mostrar en la variable X la suma de la diagonal principal y
en la variable Y la suma de la diagonal secundaria.
179.
Llenar 2 matrices NxM y su suma almacenar en otra matriz C.
180.
Llenar una matriz NxM, y generar la suma de los elementos de cada fila.
181.
Llenar una matriz Mx2, y generar en un vector la resta de los elementos de las filas.
182.
Llenar una matriz NxM, y generar un vector con las suma de cada columna.
183.
Llenar un matriz y sumar los elementos de las filas y columnas externas.
184.
Generar la siguiente serie.
5
25
45
65
185.
10
30
50
70
15
35
55
75
20
40
60
80
Generar la matriz:
0
0
0
1
186.
0
0
1
2
0
1
2
3
1
2
3
4
0
1
2
3
0
0
1
2
N=4
0
0
0
1
Generar la matriz
1
1
1
1
1
1
2
2
2
1
1
2
3
2
1
1
2
2
2
1
1
1
1
1
1
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 138
INF-101 Introducción a la Programación
187.
1-2010
Llenar la matriz: n=5 (n impar)
5
5
0
5
5
188.
5
5
0
5
5
0
0
0
0
0
5
5
0
5
5
5
5
0
5
5
Llenar la matriz: n=5
1
0
0
0
1
189.
1
1
0
1
0
1
0
1
0
0
1
1
0
1
0
1
0
0
0
1
Llenar una matriz Nx3 de tal forma:
m[i,3]=abs(m[i,1]-m[i,2])
2 5
6 7
4 6
6 13
190.
3
1
2
7
Llenar la matriz: n=5
1
16
15
14
13
191.
2
17
24
23
12
3
18
25
22
11
4
19
20
21
10
5
6
7
8
9
Llenar la matriz: n=5
17
18
19
20
21
10
11
12
13
22
5
6
7
14
23
2
3
8
15
24
1
4
9
16
25
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 139
INF-101 Introducción a la Programación
192.
1-2010
Llenar la matriz: n=5
1
3
6
10
15
193.
2
5
9
14
0
4
8
13
0
0
7
12
0
0
0
11
0
0
0
0
Llenar la matriz: n=5
1
3
4
10
11
194.
2
5
9
12
19
6
8
13
18
20
7
14
17
21
24
15
16
22
23
25
Llenar la matriz: n=5
1 10 11 20 21
2 9 12 19 22
3 8 13 18 23
4 7 14 17 24
5 6 15 16 25
195.
Llenar la matriz: n=5
1
2
3
4
5
22
21
20
19
6
23
24
25
18
7
14
15
16
17
8
13
12
11
10
9
Ingeniería de Sistemas – Universidad Católica Boliviana “San Pablo”
Pagina - 140
Descargar