Está en la página 1de 130

T E M A 1 : INTRODUCCIÓN A LA

CIENCIA DE LA COMPUT ACIÓN.


HARDWARE
¿Qué es una computadora?. Hardware. Tipos de computadoras. Clasificación.
Organización y arquitectura. Estructura y funcionamiento. Bloques funcionales.
Composición básica. Periféricos. Unidades de entrada. Unidades de salida. Unidades
de Almacenamiento. Memorias. Unidad de Medidas.

1.1 QUE ES UNA COMPUTADORA

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


obtener resultados.

Una computadora es un sistema digital con tecnología microelectrónica capaz de


procesar datos a partir de un grupo de instrucciones denominado programa. La estructura
básica de una computadora incluye microprocesador (CPU), memoria y dispositivos de
entrada/salida (E/S), junto a los buses que permiten la comunicación entre ellos. La
característica principal que la distingue de otros dispositivos similares, como una
calculadora no programable, es que puede realizar tareas muy diversas cargando distintos
programas en la memoria para que los ejecute el procesador.
Si buscamos la definición exacta del término computadora encontraremos que se trata de
una máquina electrónica capaz de recibir, procesar y devolver resultados en torno a
determinados datos y que para realizar esta tarea cuenta con un medio de entrada y uno
de salida.
Hardware es término propio del idioma inglés (literalmente
traducido: partes duras); mientras que Software se traduce como
partes blandas. El anglicismo "software" es el más ampliamente
difundido al referirse a este concepto, especialmente en la
jerga técnica; el término sinónimo "logical", derivado del
término francés "logiciel", sobre todo es utilizado en países y
zonas de influencia francesa.

1.2 HARDWARE, SOFTWARE

Un computador se divide fundamentalmente en dos partes: el Hardware y el Software. El


hardware es la parte física del computador, la parte tangible; es decir aquello que
podemos tocar del computador. El software es la parte lógica del computador, es decir el
conjunto de instrucciones que le ordenan al hardware que tarea debe realizar.
El término hardware se refiere a la “circuitería electrónica” que posee un determinado
computador y software a los programas que dicho computador puede ejecutar. Dentro del
hardware están, entre otras cosas, el procesador, la memoria RAM, el disco duro, la placa
madre, la tarjeta de sonido, el monitor y el lector de CD. Incluidos en el software están el
sistema operativo y programas tales como procesadores de texto, planillas de cálculo,

Informática – Año 2020 Página 1


Tema 1: Introducción a la ciencia de la computación. Hardware

agendas y juegos. El sistema operativo es un conjunto de programas que permiten que el


hardware funcione correctamente y que el usuario cree otros programas para usos más
específicos.
Una computadora necesita tanto del hardware como del software para poder ser usada
real y prácticamente. El hardware de la computadora sin el software que le acompañe es
como si tuviéramos un libro con páginas en blanco. La portada, contraportada y las
páginas interiores constituyen el hardware del libro, pero el libro no es útil son ningún
texto, el software.

1.3 TIPOS DE COMPUTADORAS

De acuerdo a la manera en la que procesa los datos que recibe puede llamarse: digital,
analógica o híbrida.
La computadora digital son las que convierten los datos o información de entrada
codificada en forma numérica, utilizando el sistema binario de dos signos: 0 y 1.
Es un ordenador numérico, automático, secuencial y universal.
Es numérico porque toda la información que se puede encontrar
dentro de la computadora está codificada por un conjunto
ordenado de ceros y unos. Esta codificación es de tal naturaleza
que un conjunto de ceros y unos, puede estar representando una
letra o un número, por esto decimos que la información dentro de
una computadora puede ser alfanumérica.
Decimos que es automática pues puede operar sin la intervención
del operador al pasar de una operación a otra en la resolución de un determinado
problema.
Decimos que es secuencial pues debe seguir una serie ordenada de pasos para la
resolución de cada problema.
Y decimos que es universal porque está capacitada para resolver cualquier tipo de
problema que se plantee, dependiendo de cómo se haya programado a la máquina.
La computadora analógica son las que transforman los datos o
información de entrada en función de alguna señal continua
registrada con un determinado grado de precisión como: el tiempo,
presión, temperatura. Para obtener resultados, las computadoras
analógicas miden, mientras que las computadoras digitales
cuentan. Ejemplo: termostatos, bombas de suministros de gasolina.
Pero tienen el inconveniente que al cambiar el problema a resolver,
hay que realambrar la circuitería (cambiar el Hardware).
La computadora híbrida son las que reciben o dan salida a señales analógicas que son
procesadas digitalmente. Esto puede realizarse gracias a los conversores
analógicos/digitales.

Combinan las características más favorables de las computadoras


digitales y analógicas, tienen la velocidad de las analógicas y la
precisión de las digitales.
Generalmente se usan en problemas especiales en los que los datos de
entrada provienen de mediciones convertidas a dígitos y son
procesados por una computadora por ejemplo las computadoras
híbridas controlan el radar de la defensa de Estados Unidos y de los
vuelos comerciales

Informática – Año 2020 Página 2


Tema 1: Introducción a la ciencia de la computación. Hardware

1.4 CLASIFICACION DE COMPUTADORAS

Las computadoras se clasifican según su velocidad de procesamiento de datos, la


cantidad de datos que puede almacenar y el precio.

Debido a la rápida mejora de la tecnología, es difícil diferenciar en que categoría se


encuentra una computadora.

Dependiendo de su velocidad y tamaño de la memoria, estos son los cuatro grupos


principales de la clasificación de las computadoras.

1. Supercomputadora
2. Macrocomputadoras
3. Minicomputadora
4. Microcomputadora o PC

La supercomputadora

Es la más poderosa y más rápida,


claro que también mucho más cara.
Fue desarrollado en 1980. Se utiliza
para procesar gran cantidad de datos
y para resolver problemas
científicos complejos. Es capaz de
realizar más de un trillón de cálculos
por segundo.

En un solo supercomputador miles


de usuarios pueden estar
conectados al mismo tiempo y la supercomputadora maneja el trabajo de cada usuario
por separado.

Informática – Año 2020 Página 3


Tema 1: Introducción a la ciencia de la computación. Hardware

La supercomputadora se utilizan principalmente para:

 Pronóstico del tiempo.


 Investigación sobre la energía nuclear.
 Diseño de Aviones.
 Diseño de Automóviles.
 La banca en línea.
 Para controlar las unidades industriales.

Las supercomputadoras se utilizan en las grandes organizaciones, laboratorios de


investigación, centros aeroespaciales, las grandes
industrias, etc.

Macrocomputadoras

También conocidas como Mainframes, son muy


grandes, a menudo ocupan todo un cuarto entero
(pero las supercomputadoras son más grandes).
Pueden almacenar enormes cantidades de
información, realizar muchas tareas al mismo
tiempo, se puede comunicar con muchos usuarios
al mismo tiempo, y son muy caras.

Las macrocomputadoras suelen tener muchos terminales conectados a ellos. Estas


terminales parecen pequeñas computadoras pero sólo son dispositivos utilizados para
enviar y recibir información del equipo real utilizando cables.

Los usuarios acceden por medio de terminales o computadoras personales. Hay


básicamente dos tipos de terminales que se utilizan con los sistemas de
macrocomputadoras. Estos son:

1. terminal tonta. Estas terminales no tienen procesador propio ni tampoco


dispositivos de almacenamiento de información.
2. terminal inteligente. Estas terminales si cuentan con su propio procesador y
cuentan con dispositivos de almacenamiento propio. Normalmente las PCs son
utilizadas como terminales inteligentes.

Las macrocomputadoras se utilizan especialmente en los servidores de la World Wide


Web, también en grandes organizaciones como bancos, aerolíneas, etc. , universidades
donde muchas personas (usuarios) necesitan acceso frecuente a los mismos datos, que se
organizan generalmente en una o varias bases de datos enormes. IBM es el mayor
fabricante de computadoras centrales.

Las grandes empresas, agencias gubernamentales y universidades


suelen utilizar este tipo de equipo.

Minicomputadoras

Las minicomputadoras son mucho más pequeñas que las


macrocomputadoras y también son mucho menos costosas. Puede
tener muchos terminales, pero no tantos como las anteriores. Pueden
almacenar una enorme cantidad de información. Empresas medianas y
pequeñas suelen utilizar estos equipos.

Informática – Año 2020 Página 4


Tema 1: Introducción a la ciencia de la computación. Hardware

Son usados comúnmente como servidores en entorno de red y cientos de computadoras


personales se pueden conectar a la red con una minicomputadora en calidad de servidor,
minicomputadoras se utilizan como servidores web. Las minicomputadoras con un único
usuario se utilizan para tareas de diseño sofisticado.

Microcomputadoras

Las microcomputadoras son también conocidas como


computadoras personales o simplemente PC. El
Microprocesador se utiliza en este tipo de equipo. Estos son
muy pequeños en tamaño y costo.

La primera microcomputadora fue diseñado en 1981 por IBM y


fue nombrado como IBM-PC, después de esto muchas empresas
de hardware informático copiaron el diseño de la IBM-PC. El
término “PC-compatibles” se refiere a cualquiera computadora personal basada en el
diseño original de IBM.

Las microcomputadoras o Computadoras Personales (PC´s) tuvieron su origen con la


creación de los microprocesadores. Un microprocesador es una computadora en un chip, o
sea un circuito integrado independiente. Las PC´s son computadoras para uso personal y
relativamente son baratas y actualmente se encuentran en las oficinas, escuelas y hogares.
En la actualidad existen variados tipos en el diseño de PC´s:
Computadoras personales, con el gabinete tipo minitorre, separado
del monitor; las de tipo todo incluido (all in one); computadoras
personales portátiles "Laptop" o "Notebook" y Computadora de
mano (hand held) ejemplos: PDA, PALM, teléfonos celulares…

Informática – Año 2020 Página 5


Tema 1: Introducción a la ciencia de la computación. Hardware

1.5 ESTRUCTURA Y FUNCIONAMIENTO

La estructura básica de un ordenador personal no se diferencia mucho de cualquier otro


sistema microprocesado y, de algún modo, también es comparable con la de un ser
humano. Ambas están basadas en un elemento que procesa y almacena datos (cerebro), y
elementos de entrada/salida o periféricos que permiten la comunicación con el exterior,
detectando y modificando su entorno (sentidos, manos, brazos, piernas, etc).

El computador, habiendo sido diseñado para el procesamiento de datos, su organización


es similar a la de cualquier otro proceso. Indiferente de lo que se desee procesar, siempre
se tendrán tres elementos importantes, la materia prima, la transformación que es el
proceso en sí, y el producto final, es decir la materia prima transformada en un nuevo
producto.

Prácticamente todas las computadoras ya sean de escritorio, portátiles, o cualquier tipo de


computadoras como calculadoras y otros, se organizan en tres componentes principales:
Unidad de Entrada, Unidad Central de Proceso (Unidad de Memoria, Unidad de
Control, Unidad Aritmético-Lógica) y Unidad de Salida.

Modelo de Von Neuman


Antes: programar era
conectar cables...
Hacer programas era más
una cuestión de
ingeniería electrónica.
Cada vez que había que
calcular algo distinto
había que reconectar
todo.
Imaginen eso !
John Von Neumann (1903 – 1957) Matemático. Publicó y publicitó la idea
de programa almacenado en memoria.

La mayoría de las computadoras de la actualidad se han diseñado basándose en los


conceptos desarrollados por John Von Neumann en el Instituto de Estudios Avanzados de la
Universidad de Princeton. Este diseño se conoce con el nombre Arquitectura de Von
Neumann y se basa en estos conceptos claves:

 Los datos y programas se almacenan en una misma memoria de lectura-escritura


 Los contenidos de esta memoria se direccionan indicando su posición sin importar
su tipo
 Ejecución en secuencia (salvo que se indique lo contrario)
 Representación binaria

Informática – Año 2020 Página 6


Tema 1: Introducción a la ciencia de la computación. Hardware

Para comprender el funcionamiento de una computadora, desde el punto de vista de su


organización, se tomará como base un esquema de bloques funcionales.

Bloques funcionales
En el procesamiento de datos en cualquier computadora, se realizan los siguientes
procesos:

ENTRADA MEMORIZACION PROCESAMIENTO SALIDA

Con independencia del tamaño o potencia de una computadora digital, todas ellas están
compuestas por unidades o módulos dedicados a tareas concretas. Esta construcción
modular facilita su mantenimiento y ampliación. En todas las computadoras digitales se
pueden identificar los siguientes bloques o unidades funcionales principales:
 Unidad de entrada.
 Unidad de memoria.
 Unidad de salida.
 Unidad central de proceso.
 Unidad de almacenamiento secundario.
Para que las unidades más importantes de una computadora puedan "comunicarse" entre
sí, existe un elemento que las interconecta, llamado bus del sistema. Físicamente, el bus
del sistema es un conjunto de cables. En la siguiente figura se representan, de manera
gráfica, las unidades funcionales más importantes de una computadora; las flechas indican
las direcciones que pueden tomar los datos.

Informática – Año 2020 Página 7


Tema 1: Introducción a la ciencia de la computación. Hardware

Unidad de Entrada: Tiene por función la conversión de señales a nivel humano, en


señales que sean entendibles por la máquina. La unidad de entrada traduce la información
de nivel humano a nivel de máquina, usando el sistema binario (ceros y unos codificados).

Unidad de Salida: Es el traductor inverso de la unidad de entrada, es decir, la información


que estaba a nivel máquina se transforma en lenguaje humano.

CPU/UCP (Unidad central de proceso): También denominada microprocesador. Como


su nombre indica es la encargada de procesar todos los datos presentes en cualquier
momento en el sistema, por lo que puede considerarse el elemento más importante y a su
vez más complejo que conforma el ordenador personal. Podríamos dividirla en varios
bloques:

Unidad de Memoria: Los dispositivos electrónicos o electromagnéticos en donde


se almacena la información recibida del exterior antes de ser procesada, y la que
fue procesada, constituye la MEMORIA. En la memoria residen los programas que
serán procesados, los datos y los resultados del proceso.

Lo constituyen los módulos de memoria conectada directamente al


microprocesador y se denomina interna por encontrarse en el interior de la unidad
central (U.C) o caja del ordenador, montada en la misma placa madre que el
microprocesador. La memoria interna de almacenamiento puede contener tanto
datos como código de programa y se divide, a grandes rasgos, en memoria RAM de
lectura/escritura y memoria ROM de sólo lectura. En la primera se almacenan los
códigos de los programas en ejecución y sus datos temporales, de forma que al
apagar el ordenador, toda esta información desaparece. En la segunda se suele
cargar el FirmWare del sistema o programa de inicialización o arranque del
sistema. En los PC se conoce como BIOS.

ALU: La información se procesa matemáticamente y se compara lógicamente


dentro de la Unidad Aritmético-Lógica, conocida como ALU.

Unidad de Control (UC): Se encarga que las operaciones se realicen en las


secuencias que correspondan (por ejemplo no calcular antes de recibir los datos,
no comunicar información al exterior mientras no se terminen los cálculos, etc.).

Informática – Año 2020 Página 8


Tema 1: Introducción a la ciencia de la computación. Hardware

Unidad de almacenamiento secundario: En una computadora, el disco duro es el


elemento más distinguido de la unidad de almacenamiento secundario, que permite
"almacenar" o "guardar" por tiempo indefinido, grandes cantidades de datos y programas.
Otros dispositivos de almacenamiento secundario son: el disco flexible o disquete, el CD
(Compact Disc), el DVD (Digital Versatile Disc), blu-ray (Formato de disco óptico de alta
densidad de 12 cm de diámetro) etc. A la unidad de almacenamiento secundario también
se le llama memoria auxiliar o memoria externa.

Distinción entre almacenamiento primario y secundario

Las memorias de almacenamiento secundario se distinguen de las primarias porque:

- Son una forma de transportar información físicamente.


- Son no volátiles
- Son extraíbles
- La CPU no accede directamente a estas.

El bus: El bus es un camino de comunicación entre los componentes de una computadora.


Usualmente está constituido por varios caminos de comunicación o líneas. Cada línea es
capaz de transmitir señales binarias representadas por 0 y 1.

Las computadoras poseen diferentes tipos de buses que proporcionan comunicación entre
sus componentes a distintos niveles dentro de la jerarquía del sistema. El bus que conecta
los componentes principales del procesador (procesador, memoria, E/S) se denominada
bus del sistema (system bus).

El bus del sistema está constituido por líneas. A cada línea se le asigna una función
particular, que en general se clasifican en: líneas de datos, líneas de dirección y líneas de
control.

Informática – Año 2020 Página 9


Tema 1: Introducción a la ciencia de la computación. Hardware

VIDEO 1.1 dentro de una PC

1.6 COMPOSICION BASICA

Hasta ahora se analizaron los componentes de una computadora, desde el punto de vista
funcional.

El propósito de este apartado es describir la composición básica de una computadora,


tomando como ejemplo una PC, con el objeto de tener idea de la ubicación física de los
componentes anteriormente descriptos.

A simple vista lo que vemos de una computadora son tres elementos diferentes: teclado,
monitor y unidad central o "gabinete". Tanto el teclado como el monitor forman parte de
los periféricos de la computadora, siendo la unidad central la parte principal de la
computadora.

Los componentes físicos básicos de un equipo PC se enumeran a continuación:


a. Placa base o placa madre: Contiene la circuitería básica del ordenador:
microprocesador, memoria, ranuras de expansión, controladores de dispositivos, etc.
b. Dispositivos internos: Fundamentalmente son de dos tipos:
- Dispositivos de almacenamiento masivo de datos (disco, disquetera, CD-ROM. etc.).
- Tarjetas auxiliares (tarjeta de vídeo, tarjeta de sonido, etc.).
c. Fuente de alimentación: Suministra la corriente eléctrica adecuada a los
componentes internos de la computadora. Necesita de uno o varios ventiladores para

Informática – Año 2020 Página 10


Tema 1: Introducción a la ciencia de la computación. Hardware

disipar el calor generado. Esos ventiladores son los que generan el ruido característico
de las computadoras actuales.
Placa madre: Es un circuito impreso que permite el pinchado y comunicación de todas las
tarjetas y chips que forman parte de la torre del PC, que no es más que una caja metálica o
de plástico que protege el conjunto de circuitos.

Bus

Puerto: Se define como el lugar donde los datos entran o salen o ambas cosas. Se
denominan “puertos de entrada/salida" (o abreviado puertos E/S) y son interfaces para
conectar dispositivos mediante cables. Generalmente tienen un extremo macho con
clavijas que sobresalen o tipo hembra la cual tiene una serie de agujeros para alojar los
conectores machos.

Se denomina puerto por el hecho de permitir la transmisión de


datos hacia un dispositivo externo (periférico), desde la
computadora.

Algunos de estos son

Puerto Paralelo/ LPT.


Un puerto paralelo es una interfaz entre una computadora y un periférico, cuya principal
característica es que los bits de datos viajan juntos, enviando un paquete de byte a la vez.
Es decir, se implementa un cable o una vía física para cada bit de datos formando un bus.
Mediante el puerto paralelo podemos controlar también periféricos como focos, motores
entre otros dispositivos, adecuados para automatización.

Puerto Serial COM: Un puerto serie o puerto serial es una interfaz de comunicaciones de
datos digitales, frecuentemente utilizado por computadoras y periféricos, donde la
información es transmitida bit a bit enviando un solo bit a la vez, en contraste con el
puerto paralelo que envía varios bits simultáneamente. La comparación entre la
transmisión en serie y en paralelo se puede explicar usando una analogía con las
carreteras. Una carretera tradicional de un sólo carril por sentido sería como la
transmisión en serie y una autovía con varios carriles por sentido sería la transmisión en
paralelo, siendo los vehículos los bits que circulan por el cable.

Puerto USB: Un puerto USB es una entrada o acceso para que el usuario pueda compartir
información almacenada en diferentes dispositivos como una cámara de fotos, un

Informática – Año 2020 Página 11


Tema 1: Introducción a la ciencia de la computación. Hardware

pendrive, entre otros, con un computador. Las siglas USB quieren decir Bus de Serie
Universal en inglés.
Es una arquitectura de bus desarrollada por las industrias de computadoras
y telecomunicaciones, que permite instalar periféricos sin tener que abrir la máquina para
instalarle hardware, es decir, que basta con conectar dicho periférico en la parte posterior
del computador.
Puerto RJ-45: La sigla RJ-45 significa ("Registred Jack 45") ó Conector 45 registrado. Es un
conector de forma especial con 8 terminales, que se utilizan para interconectar
computadoras y generar redes de datos de área local (LAN - red de computadoras
cercanas interconectadas entre sí). Se les llama puertos porque permiten la transmisión de
datos entre una red (periférico) con las computadoras.
La RJ-45 es una interfaz física comúnmente usada para conectar redes de cableado
estructurado, (categorías 4, 5, 5e y 6).
Puertos de Audio: Tienen la función de capturar audio procedente del exterior, grabar
señales de audio reproducir sonidos hasta bocinas y capturar la señal del micrófono.
Puertos de Juegos: Permiten la transmisión de datos desde un dispositivo externo con la
computadora.
Puertos de Video: El puerto de video es el intermediario entre la tarjeta de video de la
computadora y el dispositivo que muestre el grafico. Tales como un monitor CRT, una
pantalla de plasma, o un proyector. Ejemplos de puerto de video: BGA, VGA, DBI, HDMI, S-
VIDEO, RCA.
El puerto VGA es el puerto estandarizado para conexión del monitor a la PC. Su conector es
un HD 15, de 15 pines organizados en 3 hileras horizontales. Es de forma rectangular, con
un recubrimiento plástico para aislar las partes metálicas.

Informática – Año 2020 Página 12


Tema 1: Introducción a la ciencia de la computación. Hardware

Ubicación física de los componentes de una PC

1.7 PERIFERICOS

Concepto general: Se entiende como periférico a cualquier elemento que se encuentre


rodeando a otro principal, que interactúe con él y que tenga relación.

Para efecto de comprender el término hagamos la siguiente analogía:

 En este sentido es semejante al periférico de una ciudad, esta es una vía que se
encuentra rodeando la ciudad, recibe autos y también permite que se incorporen al
interior, además se relaciona porque ambas forman parte del ámbito urbano.
 En el sentido informático, los periféricos se encuentran alrededor de la
computadora, reciben y envían datos entre sí y ambos forman parte de un entorno
informático.

Un periférico es un dispositivo
electrónico físico que se conecta o
acopla a una computadora, pero no
forma parte del núcleo básico (CPU,
memoria, placa madre, alimentación
eléctrica) de la misma.

Los periféricos sirven para comunicar


la computadora con el exterior (ratón,
monitor, teclado, etc) o como
almacenamiento de información (disco
duro, unidad de disco óptico, etc).

Así como el periférico de una ciudad cuenta con sus entradas y salidas para autos, la
computadora cuenta con puertos (conectores con formas especiales y características

Informática – Año 2020 Página 13


Tema 1: Introducción a la ciencia de la computación. Hardware

propias), para la entrada y salida de datos. Ejemplos de ellos son los puertos USB, puerto
serial, puerto FireWire, IrPort, etc.
USB SERIAL

1.7.1 UNIDADES DE ENTRADA

Son aquellos que permiten el ingreso de información, en general desde alguna fuente
externa o por parte del usuario. Los dispositivos de entrada proveen el medio fundamental
para transferir hacia la computadora (más propiamente al procesador) información desde
alguna fuente, sea local o remota. También permiten cumplir la esencial tarea de leer y
cargar en memoria el sistema operativo y las aplicaciones o programas informáticos, los
que a su vez ponen operativa la computadora y hacen posible realizar las más diversas
tareas.

Ejemplos típicos de periféricos de entrada y porqué se clasifican así:

Mouse/Ratón: el ratón transmite las coordenadas de su propia


posición hacia la computadora por medio del puerto miniDIN,
puerto COM, puerto USB ó inalámbricamente.

Teclado: es el dispositivo que se encarga de enviar a la


computadora por medio del puerto DIN, miniDIN ó USB la
información de las teclas oprimidas por el usuario.

Escáner: se encarga de transformar las imágenes físicas de un


papel en imágenes digitales almacenables en forma de archivo y
enviarlas hacia la computadora por medio del puerto LPT ó el
puerto USB.

Palanca de mando / Joystick: de acuerdo a los botones oprimidos


por el jugador y la posición de la palanca, se envían los pulsos
hacia la computadora por medio del Gameport ó el puerto USB y
se interpretan como movimientos en el videojuego.

Micrófono para computadora: capta el sonido del exterior y


permite que la señal sea guardada en la computadora en forma
de archivo desde el puerto Jack 3.5".

Informática – Año 2020 Página 14


Tema 1: Introducción a la ciencia de la computación. Hardware

WebCam: capta las imágenes del exterior e incluso el sonido,


enviándolos a la computadora para su proceso por medio del
puerto USB.

Lector de código de barras: permite captar la imagen de un


código de barras y enviar los datos contenidos hacia la
computadora por medio del puerto RS-232 o puerto USB.

Capturadora de video externa: recibe las señales de audio y video


procedentes de videograbadoras, cámaras de video
profesionales, lectores domésticos de DVD etc. por medio de los
puertos RCA, VGA ó S-Video, y los transmite hacia la
computadora.

1.7.2 UNIDADES DE SALIDA

Son aquellos que permiten emitir o dar salida a la información resultante de las
operaciones realizadas por la CPU (procesamiento).
Los dispositivos de salida aportan el medio fundamental para exteriorizar y comunicar la
información y datos procesados; ya sea al usuario o bien a otra fuente externa, local o
remota.
Los dispositivos más comunes de este grupo son los monitores clásicos (no de pantalla
táctil), las impresoras, y los altavoces.
Algunos ejemplos son:
Monitor: recibe la señal de video de la computadora por medio
del puerto correspondiente y las transforma en imágenes por
medio de un cañón de electrones.

Impresoras: plasma sobre una hoja la información que le envía la


computadora desde el puerto correspondiente.

Alta voces / Bocinas /Parlantes: Dispositivos por los cuales se


emiten sonidos procedentes de la tarjeta de sonido

Informática – Año 2020 Página 15


Tema 1: Introducción a la ciencia de la computación. Hardware

Proyector digital: recibe la señal de video de la computadora por


medio del puerto VGA ó puerto HDMI y la transforma en luz por
medio de espejos permitiendo proyectar imágenes hacia una
superficie.

Auriculares: Son dispositivos colocados en el oído para poder


escuchar los sonidos que la tarjeta de sonido envía.

1.7.3 UNIDADES MIXTAS O ENTRADA/SALIDA

Son aquellos dispositivos que pueden operar de ambas formas: tanto de entrada como de
salida.

Periférico Entrada-Salida / Periférico Mixto / Periférico Bidireccional: dentro de la


Informática, es todo aquel dispositivo electrónico externo capaz de enviar y recibir de
manera continua por medio de cables ó de manera inalámbrica, los datos entre la
computadora y el dispositivo.

Los periféricos se conectan a la computadora por medio de los puertos y también


actualmente de manera inalámbrica, es importante mencionar que SIEMPRE son externos.

Algunos ejemplos son:


La pantalla táctil: (no el monitor clásico) es un dispositivo que
se considera mixto, ya que además de mostrar información y
datos(salida)puede actuar como un dispositivo de entrada de
datos(reemplazando por ejemplo las funciones del mouse).

Reproductor MP3: permite recibir archivos musicales desde la


computadora por medio del puerto USB y enviar grabaciones
de voz hacia la computadora.

Teléfono celular moderno: recibe y envía imágenes de la


computadora por medio de cable USB ó inalámbricamente por
medio de ondas Bluetooth y puede proveer datos de Internet
hacia la computadora.

Adaptador USB-BlueTooth: se conecta al puerto USB, permite


enviar y recibir datos entre dispositivos compatibles con esta
tecnología y la computadora.

Informática – Año 2020 Página 16


Tema 1: Introducción a la ciencia de la computación. Hardware

Cámara fotográfica digital: permite recibir y enviar fotos /


videos desde y hacia la computadora por medio del puerto
USB.

Fax Módem externo: recibe la señal telefónica y la transforma a


digital para la computadora y viceversa por medio del puerto
RJ11.

1.7.4 UNIDADES DE ALMACENAMIENTO

Dispositivo de almacenamiento es todo aparato que se utilice para grabar los datos de la
computadora de forma permanente o temporal. Una unidad de disco, junto con los discos
que graba, es un dispositivo de almacenamiento. A veces se dice que una computadora
tiene dispositivos de almacenamiento primarios (o principales) y secundarios (o
auxiliares). Cuando se hace esta distinción, el dispositivo de almacenamiento primario es
la memoria de acceso aleatorio (RAM) de la computadora, un dispositivo de
almacenamiento permanente pero cuyo contenido es temporal. El almacenamiento
secundario incluye los dispositivos de almacenamiento más permanentes, como unidades
de disco y de cinta.

En función de la tecnología utilizada para el almacenamiento se clasifican en:

 Dispositivos magnéticos
- Disco magnético (discos rígidos, disquetes, Zip, Jaz)
- Cinta magnética
 Dispositivos ópticos:
- Disco compacto (CD)
- Disco digital versátil (DVD)
 Dispositivos de almacenamiento electrónico ó de estado sólido
- Discos duros
- Tarjetas para cámaras digitales, reproductores de audio y video, pen-drive

disquetes disco rígido Cinta


Unidad zip Unidad jaz
magnética

Informática – Año 2020 Página 17


Tema 1: Introducción a la ciencia de la computación. Hardware

CD-ROM MO-Mini disc


DVD

Pen drive
disco duro Memoria flash

1.8 MEMORIAS

Memoria componente imprescindible del ordenador que mantiene disponibles las


instrucciones para el microprocesador o CPU pueda ejecutarlas. También la memoria se
encarga de almacenar temporalmente el resultado de los procesos ejecutados.
Son dispositivos que retienen datos informáticos durante algún intervalo de tiempo.
Las memorias de computadora proporcionan una de las principales funciones de la
computación moderna, la retención o almacenamiento de información.
Es uno de los componentes fundamentales de todas las computadoras modernas que,
acoplados a una unidad central de procesamiento (CPU por su sigla en inglés, central
processing unit), implementa lo fundamental del modelo de computadora de Arquitectura
de von Neumann, usado desde los años 1940.
En la actualidad, memoria suele referirse a una forma de almacenamiento de estado sólido
conocido como memoria RAM (memoria de acceso aleatorio, RAM por sus siglas en inglés
random access memory) y otras veces se refiere a otras formas de almacenamiento rápido
pero temporal.
De forma similar, se refiere a formas de almacenamiento masivo como discos ópticos y
tipos de almacenamiento magnético como discos duros y otros tipos de almacenamiento
más lentos que las memorias RAM, pero de naturaleza más permanente.
Estas distinciones contemporáneas refleja una diferencia técnica importante y
significativa entre memoria y dispositivos de almacenamiento masivo, que se ha ido
diluyendo por el uso histórico de los términos "almacenamiento primario" (a veces

Informática – Año 2020 Página 18


Tema 1: Introducción a la ciencia de la computación. Hardware

"almacenamiento principal"), para memorias de acceso aleatorio, y "almacenamiento


secundario" para dispositivos de almacenamiento masivo.

MEMORIA DE COMPUTADORAS

Memoria no volátil (ROM)


Los chips de memoria no volátil mantienen los datos aun cuando se desconecte la
computadora. Los datos se colocan es los chips durante el proceso de fabricación. Durante
su uso normal, los datos de estos chips sólo se leen y utilizan (no se modifican) por lo que
esta se memoria se conoce también como memoria de sólo lectura o ROM (Read Only
Memory).

Cuando una computadora se enciende necesita saber por dónde empezar. Las
instrucciones de inicio están contenidas en una memoria ROM, denominada BIOS (Basic
Input Oputput system o Sistema Básico de Entrada Salida). Este chip contiene la
información necesaria para realizar determinadas tareas rutinarias de bajo nivel, tales
como, arrancar la computadora, configurar la placa madre y administrar los códigos de las
Interrupciones BIOS que son necesarias para realizar la entrada y salida de datos.

Memoria volátil (RAM)


La memoria volátil requiere de energía eléctrica para almacenar los datos. La memoria
volátil de una computadora se conoce como memoria de acceso aleatorio o RAM (Random
Access Memory). Esta memoria almacena los programas y los datos mientras los
programas se ejecutan.

La RAM está diseñada para ser inmediatamente accesible para la CPU o para los
programas. La palabra “aleatorio” en la RAM implica que cualquier parte de ella puede ser
accesible en cualquier momento. Esto contribuye a que la RAM sea muy rápida.

Como se explicó antes, la computadora no necesita buscar en toda su memoria cada vez
que tiene que encontrar datos, debido a que la CPU utiliza una dirección de memoria para
almacenar y recuperar cada fragmento de datos.

Se utiliza memoria RAM no sólo asociada a la CPU, otros componentes del procesador
también utilizan memoria, por ejemplo, las placas de video y de sonido tienen su propia
RAM integrada.

Informática – Año 2020 Página 19


Tema 1: Introducción a la ciencia de la computación. Hardware

Memoria caché:
Mover los datos entre la RAM y los registros de la CPU es una de las operaciones que
consume más tiempo para la CPU, debido a que la RAM es más lenta que la CPU. Para
solucionar este problema se incluye una caché de memoria en la CPU. Una memoria
caché es similar a la RAM pero mucho más rápida.

La memoria caché se usa en varias partes de la computadora. La mayoría de las unidades


de disco y tarjetas de red tienen un caché para acelerar el acceso de datos.

Resumiendo, las memorias caché aceleran la adquisición de datos en la mayoría de los


casos.

Memoria flash
La memoria flash es un tipo especial de chip de memoria que combina las ventajas de la
RAM y la ROM. Al igual que la RAM, la memoria flash permite acceder a los datos de
manera aleatoria, asimismo, permite sobrescribir cualquier parte o todo el contenido en
cualquier momento. Igual que la ROM, la memoria es flash es no volátil, por lo que puede
mantener los datos sin necesidad de provisión continua de energía eléctrica.

La memoria flash tiene muchos usos. Se utiliza para el almacenamiento de las imágenes en
una cámara digital, en los reproductores multimedia como el MP3 y MP4. Los pendrive
proveen la facilidad de transportar los datos de un equipo a otro. Se conectan a través del
puerto USB ó FireWire de la computadora.

Es un dispositivo en forma de tarjeta, que se encuentra orientado a realizar el


almacenamiento de grandes cantidades de datos en un espacio reducido, permitiendo la
lectura y escritura de múltiples posiciones de memoria en la misma operación.

Permiten un número limitado de veces que se escriben/borran, generalmente de 100 mil a


un millón de veces.

Informática – Año 2020 Página 20


Tema 1: Introducción a la ciencia de la computación. Hardware

VIDEO 1.2

1.9 UNIDADES DE MEDIDAS

Una computadora no entiende palabras, números, dibujos ni notas musicales,


ni incluso letras del alfabeto.

En el interior de las computadoras, la información se almacena y se transfiere de un sitio a


otro según un código que utiliza sólo dos valores (un código binario) representado por 0 y
1. En la entrada y salida de la computadora se efectúan automáticamente los cambios de
código oportunos para que en su exterior la información sea directamente comprendida
por los usuarios.

La unidad más elemental de información es un valor binario conocido


como BIT, es una posición o variable que toma el valor 0 ó 1. Representa la información
correspondiente a la ocurrencia de un suceso de entre dos posibilidades distintas:
prendido o apagado, abierto o cerrado.

Dijimos que la información se representa por medio de caracteres y que internamente se


codifica en un alfabeto binario, es decir, en bits. Por tanto a cada carácter le corresponde
un cierto número de bits.

Un byte es el número de bits necesarios para almacenar un carácter. Este número


depende del código utilizado por la computadora, siendo generalmente 8, por lo que
habitualmente byte se utiliza como sinónimo de 8 bits.

La capacidad de almacenamiento de una computadora o de un soporte de información, (tal


como disco, disquete o cinta magnética) se mide en bytes. Como es una unidad
relativamente pequeña, es usual utilizar múltiplos, que se muestran en la tabla siguiente:

Informática – Año 2020 Página 21


Tema 1: Introducción a la ciencia de la computación. Hardware

MEDIDA
EQUIVALENCIA

1 Byte 8 bits

1 Kilobyte (KB) 1024 bytes = 210 bytes

1 Megabyte (MB) 1024 KB = 220 bytes = 1.048.576 bytes

1 Gigabyte (GB) 1024 MB = 230 bytes = 1.073.741.824 bytes

1 Terabyte (TB) 1024 GB = 240 bytes

1 Petabyte (PB) 1024 TB = 250 bytes

1 Exabyte (EB) 1024 PB = 2 60 bytes

La razón por la que se utiliza el factor multiplicador 1024 en lugar de 1000 es por ser la potencia de 2 más
próxima a 1000, cuestión importante desde el punto de vista electrónico.

En informática, cada letra, número o signo de puntuación ocupa un byte (8 bits). Por
ejemplo, cuando se dice que un archivo de texto ocupa 5.000 bytes estamos afirmando que
éste equivale a 5.000 letras o caracteres. Ya que el byte es una unidad de información muy
pequeña, se suelen utilizar sus múltiplos: kilobyte (kB), megabyte (MB), gigabyte (GB).

Ampliación del Tema

Apuntes de cátedra: Algoritmos y Estructuras de Datos I. Licenciatura en sistemas de


información.

Informática – Año 2020 Página 22


Tema 2: Estructura de la información

Tema 2: Estructura de la información

Introducción. Sistemas de numeración: decimal, binario, hexadecimal. Teorema


fundamental de la numeración. Conversiones. Operaciones. Unidades de medida.
Representación de la información. Codificación. Códigos de presentación de la
información en las computadoras. Datos numéricos: enteros, reales. Representación de
sonido. Representación de imágenes.

2.1 Introducción

Dos de los aspectos más importantes que se presentan en Informática, relacionados


con la información, es cómo representarla y cómo materializarla o registrarla
físicamente.
En la representación al interior de las computadoras, se consideran cuatro tipos de
información: textos, datos numéricos, sonidos e imágenes. Cada uno de ellos presenta
características diferentes.
El objetivo es comprender los procesos que transforman la información externa a la
computadora en patrones de bits fácilmente almacenables y procesables por los
elementos internos de la misma.

1
Tema 2: Estructura de la información

2.2 Sistemas de numeración:

2.2.1 sistema decimal

El más importante factor en el desarrollo de la ciencia y la matemática fue la invención


del sistema decimal de numeración. Este sistema utiliza diez símbolos:
0,1,2,3,4,5,6,7,8,9, denominados generalmente "cifras decimales". La costumbre de
contar por decenas se originó probablemente en el hecho de tener el hombre diez
dedos.

(VIDEO 2.1)

2.2.2 sistema binario


El sistema numérico binario (de base 2) usa solamente dos símbolos diferentes, 0 y 1,
que significan "ninguna unidad" y "una unidad" respectivamente. A diferencia del
sistema decimal, el valor relativo de los dígitos binarios a la izquierda del dígito
menos significativo aumenta en una potencia de dos cada vez, en lugar de hacerlo en
potencias de diez.

2
Tema 2: Estructura de la información

Específicamente, los valores de posición de la parte entera de un número binario son


las potencias positivas de dos:
24 23 22 21 20 (de derecha a izquierda)
Y los valores de posición de la parte fraccionaria de un número binario son las
potencias negativas de dos:
2-1 2-2 2-3 2-4 (de izquierda a derecha)

Potencia Valor Potencia Valor


de dos decimal de dos decimal
210 1024 22 4

29 512 21 2

28 256 20 1

27 128 2-1 0,5

26 64 2-2 0,25

25 32 2-3 0,125

24 16 2-4 0,0625

23 8 2-5 0,03125

Representación
Un número binario puede ser representado por cualquier secuencia de bits (dígitos
binarios), que a su vez pueden ser representados por cualquier mecanismo capaz de
estar en dos estados mutuamente exclusivos. Las secuencias siguientes de símbolos
podrían ser interpretadas todas como el mismo valor binario numérico:
1010011010
|-|--||-|-
xoxooxxoxo
ynynnyynyn
El valor numérico representado en cada caso depende del valor asignado a cada
símbolo. En un ordenador, los valores numéricos pueden ser representados por dos
voltajes diferentes y también se pueden usar polaridades magnéticas sobre un disco
magnético. Un "positivo", "sí", o "sobre el estado" no es necesariamente el equivalente
al valor numérico de uno; esto depende de la arquitectura usada.

3
Tema 2: Estructura de la información

De acuerdo con la representación acostumbrada de cifras que usan números árabes,


los números binarios comúnmente son escritos usando los símbolos 0 y 1.
Por ejemplo, el número binario 101101,11 significa:
101101,11 = 1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2 =
= 1 x 32 + 0 + 1 x 8 + 1 x 4 + 0 +1 x 1 + 1 x 0,5 + 1 x 0,25 =
= 45,75 (En el sistema decimal)
Para evitar confusiones, cuando se emplean varios sistemas de notación, se
acostumbra encerrar cada número entre paréntesis y escribir la base como subíndice,
en notación decimal. Utilizando el ejemplo precedente, tenemos que: (101101,11)2 =
(45,75)10

2.2.3 sistema hexadecimal


Los números binarios de gran magnitud consisten en largas series de ceros y unos,
que son difíciles de interpretar y manejar. Como un medio conveniente para
representar esos números binarios de gran magnitud se utiliza el sistema numérico
hexadecimal (de base 16). Cada dígito hexadecimal representa cuatro dígitos binarios.
La notación hexadecimal requiere el uso de 16 símbolos para representar 16 valores
numéricos. Dado que el sistema decimal proporciona solamente diez símbolos
numéricos (de 0 a 9), se necesitan seis símbolos adicionales para representar los
valores restantes. Se han adoptado para este fin las letras A, B, C, D, E, y F aunque
podrían haberse utilizado cualesquiera otros símbolos.
La lista completa de símbolos hexadecimales consta, por lo tanto, del 0, 1, 2, 3, 4, 5, 6,
7, 8, 9, A, B, C, D, E y F, en orden ascendente de valor. La tabla 1 muestra los números
decimales, hexadecimales y binarios equivalentes (hasta el número 31). Nótese que al
alcanzarse el número decimal 16, se terminan los símbolos hexadecimales y se coloca
un "1 de acarreo" delante de cada símbolo hexadecimal en el segundo ciclo, que
abarca los números decimales de 16 a 31.
El significado de los números hexadecimales se hace evidente con el desarrollo en
potencias de 16.
Por ejemplo el número hexadecimal 2CA significa (reemplazando los símbolos
hexadecimales con símbolos decimales):
2 x 162 + 12 x 161 + 10 x 160
= 2 x 256 + 12 x 16 + 10 x 1
= 512 + 192 + 10 = 714
Al resolver un ejemplo de este tipo, es más conveniente disponer los productos en
columna, para facilitar la suma.

Decimal Hexadecimal Binario

0 0 0000

4
Tema 2: Estructura de la información

1 1 0001

2 2 0010

3 3 0011

4 4 0100

5 5 0101

6 6 0110

7 7 0111

8 8 1000

9 9 1001

10 A 1010

11 B 1011

12 C 1100

.. .. ..

16 10 10000

.. .. ..

25 19 11001

26 1A 11010

.. .. ..

31 1F 11111

2.3 Teorema fundamental de la numeración


Una determinada cantidad, que denominaremos número decimal (N en este caso), se
puede expresar de la siguiente manera:
n
N = ∑(digito)i x (Base) i
i=-d
Donde:
- Base = 10
- i = posición respecto de la coma
- d = nro. de dígitos a la derecha de la coma

5
Tema 2: Estructura de la información

- n = nro. de dígitos a la izquierda de la coma, menos 1


- digito = cada uno de los que componen el número
Supongamos una cantidad expresada en un sistema cuya base es B y representamos
por Xi, cada uno de los dígitos que contiene dicha cantidad, donde el subíndice indica
la posición del dígito con respecto a la coma decimal, posición que hacia la izquierda
de la coma se numera desde 0 en adelante y de 1 en 1, y hacia la derecha se enumera
desde -1 y con incremento -1.
El Teorema Fundamental de la Numeración relaciona una cantidad expresada en
cualquier sistema de numeración, con la misma cantidad expresada en el sistema
decimal. El valor total del número será la suma de cada dígito multiplicado por la
potencia de la base correspondiente a la posición que ocupa en el número:
..........+ X4 * B4 + X3* B3 + X2* B2 + X1* B1 + X0* B0
+ X-1* B-1 + X-2* B-2 + X-3* B-3 + X-4* B-4 + .......
Ejemplo: 201,1 es una cantidad expresada en un sistema de numeración en base 3.
¿Cuál será la representación de la misma cantidad en el sistema decimal?.
201,1 = 2 * 3 2+ 0 * 3 1 + 1 * 3 0 + 1 * 3 -1

2.4 Conversiones entre los distintos sistemas


a) Binario a decimal: Para realizar la conversión de binario a decimal, realice lo
siguiente:
1. Inicie por el lado derecho del número en binario, cada número multiplíquelo
por 2 y elévelo a la potencia consecutiva (comenzando por la potencia 0).
2. Después de realizar cada una de las multiplicaciones, sume todas y el número
resultante será el equivalente al sistema decimal.
Ejemplos:
(Los números de arriba indican la potencia a la que hay que elevar 2)

También se puede optar por utilizar los valores que presenta cada posición del
número binario a ser transformado, comenzando de derecha a izquierda, y sumando
los valores de las posiciones que tienen un 1.
(Video2.2)

b) Hexadecimal a decimal: Se multiplica el número representado por el valor


posicional que le corresponde, y se suman los resultados:

6
Tema 2: Estructura de la información

Ej. AE1B = A x 163 + E x 162 + 1 x 161 + B x 160


= 10 x 4096 + 14 x 256 + 1 x 16 + 11 x 1
= 40960 + 3584 + 16 + 11 = (44571)10
(Video 2.3)

c) Decimal a binario: Se divide el número del sistema decimal entre 2, cuyo resultado
entero se vuelve a dividir entre 2, y así sucesivamente. Ordenados los restos, del
último al primero, este será el número binario que buscamos.
(Video 2.4)

Ejemplo
Transformar el número decimal 131 en binario. El método es muy simple:
131 dividido por 2 da 65 y el resto
es igual a 1 131 2
65 dividido por 2 da 32 y el resto 1 65 2 es
igual a 1 1 32 2
32 dividido por 2 da 16 y el resto 0 16 2 es
igual a 0 0 8 2
16 dividido por 2 da 8 y el resto 0 4 2 es
igual a 0 0 2 2
8 dividido por 2 da 4 y el resto es 0 1 igual
a0
4 dividido por 2 da 2 y el resto es igual a 0
2 dividido por 2 da 1 y el resto es igual a 0
1 dividido por 2 da 0 y el resto es igual a 1
-> Ordenamos los restos, del último al primero: 10000011
d) Decimal a hexadecimal: El mecanismo de conversión es el mismo que el descripto
en el punto c), pero dividiendo el número por 16, que es la base del sistema
hexadecimal.
Para convertir una fracción decimal a su equivalente hexadecimal, aplicamos el
algoritmo parte entera, con base 16.
(Video 2.5)

e) Binario a hexadecimal: Para realizar la conversión de binario a hexadecimal, realice


lo siguiente:
1. Agrupe la cantidad binaria en grupos de 4 en 4 iniciando por el lado derecho. Si
al terminar de agrupar no completa 4 dígitos, entonces agregue ceros a la
izquierda.

7
Tema 2: Estructura de la información

2. Posteriormente vea el valor que corresponde de acuerdo a la tabla que se


presentó en apartado de hexadecimal
3. La cantidad correspondiente en hexadecimal se agrupa de derecha a izquierda.
Ejemplos:
110111010 (binario) = 1BA (hexadecimal). Proceso:
1010 = A
1011 = B
1 entonces agregue 0001 = 1
Agrupe de derecha a izquierda: 1BA
(Video 2.6)
f) Hexadecimal a binario: De la misma manera, para convertir números hexadecimales
en binarios reemplace cada símbolo hexadecimal por el correspondiente grupo de
cuatro dígitos binarios, y descarte los ceros innecesarios.
Ejemplo:
(6C4F2E)16 = 0110/1100/0100/1111/0010/1110 = (11011000100111100101110)2
(Video 2.7)

2.5 operaciones

Suma de números Binarios


Las posibles combinaciones al sumar dos bits son:
0+0=0
0+1=1
1+0=1
1 + 1 = 10 al sumar 1+1 siempre nos llevamos 1 a la siguiente operación.

Ejemplo
10011000
+ 00010101
——————
10101101
Se puede convertir la operación binaria en una operación decimal, resolver la decimal,
y después transformar el resultado en un (número) binario. Operamos como en el
sistema decimal: comenzamos a sumar desde la derecha, en nuestro ejemplo, 1 + 1 =
10, entonces escribimos 0 en la fila del resultado y llevamos 1 (este "1" se llama
acarreo o arrastre). A continuación se suma el acarreo a la siguiente columna: 1 + 0 +
0 = 1, y seguimos hasta terminar todas la columnas (exactamente como en decimal).
Resta de números binarios
El algoritmo de la resta en sistema binario es el mismo que en el sistema decimal. Pero
conviene repasar la operación de restar en decimal para comprender la operación

8
Tema 2: Estructura de la información

binaria, que es más sencilla. Los términos que intervienen en la resta se llaman
minuendo, sustraendo y diferencia.
Las restas básicas 0 - 0, 1 - 0 y 1 - 1 son evidentes:
0-0=0
1-0=1
1-1=0
0 - 1 = 1 (se transforma en 10 - 1 = 1) (en sistema decimal equivale a 2 - 1 = 1)
La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad
prestada de la posición siguiente: 0 - 1 = 1 y me llevo 1, lo que equivale a decir en el
sistema decimal, 2 - 1 = 1.
Ejemplos
10001 11011001
-01010 -10101011
———— —— ———
00111 00101110
En sistema decimal sería: 17 - 10 = 7 y 217 - 171 = 46.

(video 2.8)
Producto de números binarios
El algoritmo del producto en binario es igual que en números decimales; aunque se
lleva cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1
es el elemento neutro del producto.

Por ejemplo, multipliquemos 10110 por 1001:


10110
x 1001
—————————
10110
00000
00000
10110
—————————
11000110
(video 2.9)

2.6 Códigos de representación de la información en las


computadoras
Según el tipo de información que se tenía que codificar, se han seguido distintas
soluciones. ¿Qué tipos de información tenemos?

 Datos numéricos

9
Tema 2: Estructura de la información

 Caracteres
 Imágenes
 Sonido
 Vídeo
 Presentaciones, etc

 BCD de 6 bits
 EBCDIC
Texto  ASCII
 UNICODE
Dígitos decimales  Empaquetado
codificados en  Desempaquetado
Binario
(BCD)
Enteros
Datos  Módulo y Signo
Numéricos Representación  Complemento a 1
Binaria - Coma  Complemento a 2
Fija -  Exceso a 2 elevado a
N-1
Coma Flotante
Reales – Notación exponencial
– Normalización IEEE754
Sonido WAV, MIDI, MP3
Mapa de Bits BMP, TIFF, JPEG, GIF, PNG
Imágenes
Mapa de Vectores CDR, AI, EPS, WMF,PDF,CAD

10
TEMA 5: ESTRUCTURA DE
DATOS SIMPLES
Introducción. Concepto de información. Tratamiento de la información. Instrucciones y
tipos de instrucciones. Elementos básicos de un programa. Datos. Tipos de Datos.
Operaciones Primitivas. Constantes y variables. Expresiones. La operación de asignación.
Entrada y salida de información. Escritura de Algoritmos / Programas

5.1 INTRODUCCION

A partir de este tema, se desarrollaran los temas de fundamentos de programación


relacionando conceptos de algoritmos (diagrama de flujo, seudocódigo), estructura de datos,
programación, lenguaje C. Dichos conceptos se profundizaran en temas siguientes.

En la práctica, la mayor parte de información útil no aparece aislada en forma de datos


simples, sino que lo hace de forma organizada y estructurada. Los diccionarios, guías,
enciclopedias, etc., son colecciones de datos que serían inútiles si no estuvieran
organizadas de acuerdo con unas determinadas reglas. Además, tener estructurada la
información supone ventajas adicionales, al facilitar el acceso y el manejo de los datos. Por
ello parece razonable desarrollar la idea de la agrupación de datos, que tengan un cierto
tipo de estructura y organización interna.
Como tendremos ocasión de ver, la selección de una estructura de datos frente a otra, a la
hora de programar es una decisión importante, ya que ello influye decisivamente en el
algoritmo que vaya a usarse para resolver un determinado problema.

PROGRAMACION = ESTRUCTURAS DE DATOS + ALGORITMOS

La estructura de datos simples es uno de los conceptos fundamentales de cualquier


lenguaje de programación.
Estos definen los métodos de almacenamiento disponibles para representar información,
junto con la manera en que dicha información ha de ser interpretada.
Para todo ello necesitaremos conocer conceptos previos.

5.2 CONCEPTO DE INFORMACION

De una manera informal, podemos considerar la información como un conjunto de


datos ordenados que nos aportan conocimiento sobre las cosas. Para dar una
definición más formal tendremos en cuenta dos nuevos conceptos: carácter y dato.

Carácter: es cualquier símbolo numérico, alfabético o especial que se emplea en la


escritura y en el cálculo:

 Letras minúsculas del alfabeto inglés: { a, b, c, ..., x, y, z }


 Letras mayúsculas del alfabeto inglés: { A, B, C, ..., X, Y, Z }
 Números (dígitos del Sistema Decimal): { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
 Caracteres especiales: { +, -, *, /, @, #, ñ, Ñ, á, é, ... }

Informática – Año 2020 Página 1


Tema 5: Estructura de datos simples

 Caracteres gráficos: { ♣, ♦, ♥, ♠, ... }


 Caracteres de control: { Salto de línea, Tabulador horizontal, ... }

Dato: es cualquier conjunto de caracteres (puede ser un único carácter). Existen


tres tipos básicos de datos:

- Numéricos: Formados exclusivamente por dígitos. Ej. 213, 21.419.

- Alfabéticos: formados exclusivamente por letras del alfabeto. Ej. Juan, x, Costo.

- Alfanuméricos: Formados por caracteres numéricos, alfabéticos y especiales. Ej.


Valor5, PA4, Junín 455.

Considerando lo anterior, se puede definir la información como un

conjunto de datos (numéricos, alfabéticos y alfanuméricos) ordenados con los que se


representan convencionalmente hechos, objetos e ideas.

En esta definición debemos resaltar el término relativo al orden. En la información, es


importante el orden de los datos, ya que un conjunto de datos empleados sin ningún orden
nos daría una información diferente de la deseada o incluso podría no aportar ninguna
información.

Ej. Estos son conceptos básicos de Informática (Correcto).

Básicos son conceptos de estos Informática (Incorrecto).

5.3 TRATAMIENTO DE LA INFORMACION

Tratamiento de información quiere decir operar o procesar un conjunto de datos


iniciales o datos de entrada, y, como resultado de este procesamiento, obtener un conjunto
de datos finales o de salida. El procesamiento de datos está constituido por tres
actividades básicas:

Captura de datos de entrada: Los datos deben ser registrados antes de procesarse. Los
datos pueden ser captados directamente por la computadora (por ejemplo, detectando
electrónicamente un sonido, una temperatura, un código de barras) o pueden ser dados en
forma de letras o números (caracteres).

Manipulación de los datos: Sobre los datos de entrada podemos realizar las siguientes
operaciones:

- Agrupación: consiste en organizar o clasificar elementos similares por grupos o


clases.

Informática – Año 2020 Página 2


Tema 5: Estructura de datos simples

- Cálculo: consiste en la manipulación aritmética de los datos.

- Clasificación: consiste en el ordenamiento de los datos agrupados según una


secuencia lógica (de mayor a menor, del más antiguo a más reciente).

Manejo de los resultados de salida: Una vez que han sido manipulados los datos de
entrada, sobre ellos se pueden realizar las siguientes operaciones:

- Almacenamiento y recuperación: Con el proceso de almacenamiento nos


aseguramos de poder conservar los datos para el futuro. Para realizar la consulta
utilizaremos el proceso de recuperación.

- Comunicación y reproducción: El proceso de comunicación de datos consiste


en la transferencia de los mismos de un lugar a otro, donde serán utilizados o se
procesarán de nuevo. Este proceso continúa hasta que la información llega al
usuario. Cuando la recibe puede necesitar copiar o duplicar la información (por
ejemplo un listado de las ventas del último mes) y esta tarea de reproducción la
realiza una máquina.

5.4.1. OPERACIONES PARA EL TRATAMIENTO DE LA INFORMACIÓN

En el tratamiento de la información aparecen implicadas algunas o todas las operaciones


elementales que exponemos a continuación:

- Lectura: consiste en adquirir la información que después utilizará el resto de las


operaciones elementales.

- Almacenamiento: consiste en guardar/grabar la información durante el tiempo que sea


necesario para hacer uso de ella cuando se precise.

- Clasificación: Permite ordenar la información guardada usando la operación anterior de


almacenamiento. De este modo podemos acceder cuando sea necesario a parte o a la
totalidad de la información.

- Cálculo aritmético y lógico: Este tipo de operación elemental nos permite procesar la
información realizando sobre ellas operaciones aritméticas y lógicas.

- Copia: Consiste en poder transcribir información a un soporte dado de forma


automática.

- Escritura: Consiste en mostrar la información de una manera clara y ordenada sobre un


soporte dado. La diferencia con respecto a la copia radica en que, en el caso de tratarse de
un tratamiento automático de la información, la información es mostrada de manera que
sea inteligible para las personas mientras que en la copia dicha información se encuentra
en el lenguaje que la máquina entiende.

5.5 INSTRUCCIONES Y TIPOS DE INSTRUCCIONES.

Se denomina algoritmo a un grupo finito de operaciones organizadas de manera


lógica y ordenada que permite solucionar un determinado problema. Se trata de una
serie de instrucciones o reglas establecidas que, por medio de una sucesión de pasos,
permiten arribar a un resultado o solución.
Un algoritmo es un conjunto de acciones que se han de ejecutar para la resolución de un
problema. A cada una de estas acciones se le denomina Instrucción o Sentencia.

Informática – Año 2020 Página 3


Tema 5: Estructura de datos simples

Un conjunto de instrucciones forma un programa. Las instrucciones se deben escribir y


luego almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en
secuencia.
Las instrucciones básicas que se pueden implementar en un algoritmo soportan todos los
lenguajes de programación. Dicho de otro modo, las instrucciones básicas son
independientes del lenguaje de programación.
La clasificación más corriente es:
 Instrucciones de Comienzo y Fin
 Instrucciones de transferencias
 Instrucciones de entrada/lectura
 Instrucciones de salida/escritura
 Instrucciones de bifurcación

Algunas de estas instrucciones las podemos ilustrar en la tabla 5.1

TIPO DE DIAGRAMA DE PSEUDOCÓDIGO LENGUAJE C


INSTRUCCIÓN FLUJO

COMIENZO DE INICIO MAIN


PROCESO

FIN DE PROCESO FIN END

ENTRADA LEER SCANF


(LECTURA)

SALIDA ESCRIBIR PRINTF


(ESCRITURA)

TRANSFERENCIA A=5 A=5

BIFURCACION A=B
IF (A==B)

Tabla 5.1: Instrucciones/acciones básicas

5.5.1 INSTRUCCIONES DE COMIENZO Y FIN

Son las instrucciones que ordenan el comienzo o fin del programa.

Todo programa debe comenzar con la instrucción INICIO o COMENZAR.

Todo programa debe finalizar con la instrucción FIN o PARAR o END.

Informática – Año 2020 Página 4


Tema 5: Estructura de datos simples

5.5.2 INSTRUCCIONES DE TRANSFERENCIA

Mueven el contenido entre elementos de almacenamiento, repite el contenido del campo


emisor en el campo receptor.
Cualquier transferencia que se desea realizar tiene dos etapas:

 La ejecución de la operación, que implica la obtención de un resultado del campo


emisor.

 Una transferencia para almacenar en un campo receptor de la memoria el resultado


obtenido asignándole dicho valor.

La forma general es:

ba o a=b

donde :

 a es el nombre de una variable donde se almacena el resultado de b, y


 b es una expresión

Ejemplo 5.1: Sumar el contenido de los campos A y B

La instrucción sería:

A+BC o C=A+B

ANTES
10 20 8

A B C

DESPUES
10 20 30

A B C

5.5.3 INSTRUCCIONES DE ENTRADA/LECTURA


Una instrucción de entrada implica la introducción de datos en la memoria principal del
ordenador desde dispositivos externos a la misma, por ejemplo, el teclado, pantalla táctil,
entre otros.

Ejemplo 5.3

a) Leer (NUMERO, HORAS)


scanf (NUMERO, HORAS)

Informática – Año 2020 Página 5


Tema 5: Estructura de datos simples

Se lee del terminal los valores NUMERO y HORAS, archivándolo en la memoria; si los dos
valores que se introducen son 7845 y 18, significa que se han asignado a las variables esos
valores y equivaldría a la ejecución de las instrucciones

NUMERO = 7845
HORAS = 18

b) Leer (A, B,C)


scanf (A,B,C)
Si leen del terminal 10, 20, 30, se le asignara a las variables los siguientes valores:

A = 10
B = 20
C = 30

5.5.4 INSTRUCCIONES DE SALIDA/ESCRITURA

Permiten la salida de datos desde la memoria principal del ordenador hacia dispositivos
externos de salida; por ejemplo impresoras, pantalla, disquete, disco duro, etc.-

Ejemplo: Si queremos imprimir o visualizar en pantalla los valores de las variables


anteriores A, B y C

escribir (A, B,C)


printf (A,B,C)
el resultado sería: 10, 20, 30

5.5.5 INSTRUCCIONES DE BIFURCACIÓN


El modo en que un ordenador ejecuta las instrucciones contenidas en un programa es,
normalmente, secuencial; es decir, una detrás de otra en el orden que están escritas. Sin
embargo, si esta fuera la única forma de ejecución posible, el programa tendría que
realizar siempre las mismas acciones, independientemente de los datos que se le dieran de
entrada en cada ejecución.

Con el fin de poder dotar a los programas de cierta capacidad de decisión sobre los
tratamientos que debe aplicar a cada caso, los lenguajes de programación permiten la
definición de instrucciones de bifurcación distintas a la secuencial. Este es el caso de las
instrucciones condicionales e incondicionales.
CONDICIONAL
Recibe también el nombre de bifurcación condicional, y es aquella que, bajo la
comprobación de veracidad o falsedad de una condición, ejecuta dos grupos de acciones
diferentes.

En diagramación las interrogaciones se realizan mediante el símbolo de decisión, dentro


de este se especifica la comparación deseada con dos salidas.

Informática – Año 2020 Página 6


Tema 5: Estructura de datos simples

ACCION 2 NO A<B SI ACCION 1

ACCION 3

Instrucción de bifurcación condicional


En pseudocódigo y lenguaje

Si A<B entonces if (A<B)


Acción 1 Acción 1
Sino else
Acción 2 Acción 2;
fin
Acción 3 Acción 3;
Acción 4 Acción 4;

INCONDICIONAL
Recibe también el nombre de bifurcación incondicional, e indica un cambio en la secuencia
de una ejecución sin evaluar ninguna condición previa.

Acción 1 SI A <B No Accion 2

Accion 3

Instrucción de bifurcación incondicional

Informática – Año 2020 Página 7


Tema 5: Estructura de datos simples

5.6 ELEMENTOS BÁSICOS DE UN PROGRAMA


Tomada la decisión de realizar un programa, el programador debe establecer
conjunto de especificaciones que debe contener el programa: entrada, salida y
algoritmo de resolución, que es el que va a incluir las técnicas para obtener las
salidas a partir de las entradas.

Conceptualmente un programa puede ser considerado como una caja negra. La


caja negra o el algoritmo de resolución, en realidad, es el conjunto de códigos que
transforman las entradas del programa (datos) en salidas (resultados).

El programador debe establecer de donde provienen las entradas del programa.


Las entradas, en cualquier caso, procederán de un dispositivo de entrada (teclado,
disco, etc.-). El proceso de introducir la información de entrada (datos) en la
memoria de la computadora se denomina entrada de dados, operación de lectura o
acción de leer.

Las salidas de datos se deben presentar en dispositivos periféricos de salida:


pantalla, impresoras, discos, et.-. La operación de salida de datos se conoce como
escritura o acción de escribir.

Para que un algoritmo pueda ser resuelto por una computadora el mismo debe ser
escrito (codificado) en el lenguaje de programación elegido, siguiendo las reglas de
sintaxis del mismo.

Esta tarea se denomina programación y el algoritmo escrito se llama programa.

Los elementos de programación son aquellos que permiten definir un lenguaje de


comunicación con la computadora, y como todo lenguaje consta de:
 Palabras reservadas (INICIO, FIN, SI-ENTONCES-THEN...)
 Identificadores (nombres de variables, funciones, procedimientos, etc.)
 Caracteres especiales (coma, apóstrofos, etc.)
 Constantes
 Variables
 Expresiones
 Instrucciones

Además de estos elementos básicos, existen otros cuya comprensión y funcionamiento es


esencial para el diseño correcto de algoritmos y programas. Estos elementos son: Bucles,
contadores, acumuladores, estructuras de control (1-secuencia, 2-selección, 3-repetitivas).

El conocimiento adecuado de todos estos elementos y de cómo se integran en un


programa, constituyen las técnicas de programación que todo buen programador debe
conocer.

Informática – Año 2020 Página 8


Tema 5: Estructura de datos simples

5.7 DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS


Un dato es la expresión general que describe los objetos con los que opera la computadora.
En general, las computadoras pueden operar con varios tipos de datos. Los programas y
algoritmos operan sobre esos tipos de datos.

En el proceso de resolución de problemas el diseño de las estructura de los datos es tan


importante como el diseño del algoritmo y del programa que se basa en el mismo.

Ejemplos de datos son: el nombre de una persona, el valor de una temperatura, una cifra
de venta de supermercado, la fecha de un cheque, etc.

Tipos de datos:

Los distintos tipos de datos se representan en diferentes formas. A nivel de máquina, un


dato es un conjunto de bits (dígitos 0 o 1). Los datos pueden ser: simples o compuestos

Un tipo de dato simple es aquel cuyo contenido se trata como una unidad que no puede
separarse en partes más elementales. Los más usuales son:

 Numéricos (integer, real)


 Lógicos (boolean)
 Carácter (char)

En cambio, un tipo de dato compuesto o estructurado, es aquel que permite almacenar


un conjunto de elementos bajo una estructura particular, darle un único nombre, pero con
la posibilidad de acceder en forma individual a cada componente. Ejemplo de datos
estructurados son los arreglos y registros, que veremos en detalle en temas posteriores.

Características de los principales tipos de datos simples:

a) datos numéricos

El tipo numérico es el conjunto de los valores numéricos. Pueden representarse en dos


formas distintas:

-Numérico entero (int)


-Numérico real (float)
Enteros:

El tipo entero es un subconjunto finito de los números enteros. Pueden ser positivos o
negativos y no tienen decimales. Ejemplos: 3, 14, -250, 54321. Los enteros son
denominados también números de punto o coma fija. La mayoría de los lenguajes de
programación utilizan enteros que se almacenan en 2 bytes (entero corto), de ahí que los
valores mínimo y máximo son, respectivamente, -32768 y 32767.
Real:

El tipo real es un subconjunto de los números reales. Pueden ser positivos o negativos y
tienen punto decimal. Un número real consta de una parte entera y de una parte decimal.
Ejemplos: -57.80, 10.0, 0.0085 -1234.01.

En aplicaciones científicas se requiere una representación especial para manejar números


muy grandes, como la masa de la Tierra, o muy pequeños, como la masa de un electrón.
Una computadora sólo puede representar un número fijo de dígitos. Si bien este número
puede variar de una computadora a otra, este límite, dado por el tamaño de la palabra,

Informática – Año 2020 Página 9


Tema 5: Estructura de datos simples

provocará problemas para representar y almacenar números muy grandes o muy


pequeños, de aquí surge la coma flotante o notación exponencial para disminuir estas
dificultades.

b) datos lógicos (boolean)

El tipo lógico, también denominado booleano, puede tomar 2 valores: Verdadero(true) o


falso(false).
La asignación prueba = true, asigna el valor lógico verdadero a una variable de tipo
lógico.
c) datos de tipo Carácter (Char) y tipo Cadena (String)

El tipo carácter (char) es el conjunto finito y ordenado de caracteres que la computadora


reconoce. Un dato de este tipo contiene un solo símbolo. Los caracteres que reconocen las
diferentes computadoras no son estándar, pero la mayoría reconoce:
alfabéticos: letras A la Z en mayúsculas y minúsculas
dígitos del 0 al 9
caracteres especiales: signos de puntuación y otros símbolos

Una cadena (string) de caracteres representa un conjunto de caracteres. Se puede


trabajar con una variable de este tipo como si se tratara de una unidad, sin embargo, no es
un dato de tipo simple porque está compuesto por elementos a los cuales se puede acceder
en forma individual. Se trata de un tipo de datos estructurado.
Una cadena de caracteres tiene dos características importantes: la longitud física (espacio
máximo de memoria necesario para almacenar el valor) y la longitud dinámica o lógica (la
longitud real que ocupa el valor)

Ejemplo:

string nombre[15]
nombre = ‘Francisco’
En este ejemplo, nombre tiene una longitud física de 15 y como longitud dinámica 9.
Las constantes de tipo string se escriben también entre apóstrofos.

Tipos de datos en C

C no soporta un gran número de tipos de datos predefinidos, pero tiene la capacidad para
crear sus propios tipos de datos. Todos los tipos de datos simples o básicos de C son,
esencialmente, números. Los tres datos básicos son:

Tipo Descripción Definición en C ejemplo

Entero Números completos y sus negativos int 1024


Reales Numero decimales float 10.5
double 0.00045
long double 1e-8
Caracter Letras, dígitos, símbolos, signos de char ‘C’
puntuación

Informática – Año 2020 Página 10


Tema 5: Estructura de datos simples

5.8 CONSTANTES Y VARIABLES


En informática, cuando hacemos mención a una constante o variable, nos estamos
refiriendo a una pequeña zona de la memoria principal donde se va a alojar un valor.
Las variables son palabras que manipulan datos. Dicho valor puede ser modificado en
cualquier momento durante el algoritmo o la ejecución del programa.
Una constante es una variable cuyo valor no puede ser modificado.
Las variables pueden almacenar todo tipo de datos: caracteres, números, estructuras, etc.
Dependiendo del valor de la variable, decimos que dicha variable es de un tipo de dato.
El nombre que se le da a una variable lo elige el programador y se debe componer de
caracteres alfanuméricos, generalmente se elige como primer carácter una letra. No se
deben utilizar como nombre de variables palabras reservadas del lenguaje de
programación.
Tanto las variables como las constantes están constituidas por un nombre y un valor. El
nombre lo llamaremos identificador (Nombre simbólico para referirse a variables,
funciones y cualquier otro objeto definido por el usuario en un programa).

Diagrama Pseudocódigo Lenguaje

Constante PI= 3,1415 PI=3,1415 const float PI = 3,1415

Variable Total= 0 Total=0 int total = 0


3,1415

Un identificador debe cumplir las siguientes normas:


1. Longitud máxima: 32 caracteres. Debe comenzar por una letra o un símbolo de
subrayado (_) seguido por letras, números o subrayado.
Bien: cont, prueba25, a_3
Mal: 1cont, hola!, b...total
2. C distingue entre mayúsculas y minúsculas: a y A son <>.
3. No puede llamarse igual que una palabra clave, o que una función.
4. Es aconsejable elegir nombres que sean significativos.
No aconsejable: float funcion1(int a, int b)
Si aconsejable: float media(int teoria, int practica)

5.9 EXPRESIONES
Una expresión es una combinación de valores y operaciones que, al ser evaluados,
entregan un valor
Las expresiones son combinaciones de constantes, variables, símbolos de operación,
paréntesis y nombre de las funciones especiales. Las mismas ideas son utilizadas en
notación matemática tradicional, por ejemplo:

A + (b+3) + sqr(c)

Informática – Año 2020 Página 11


Tema 5: Estructura de datos simples

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
operandos y operadores.

 Aritméticas
 Relacionales
 Lógicas
 Carácter

5.9.1 EXPRESIONES ARITMÉTICAS


Las expresiones aritméticas son combinaciones de constantes, variables, símbolos de
operación, paréntesis y nombres de funciones especiales. Las mismas son utilizadas en
notación matemática tradicional.
a + (b – 20) * 2

(a + b)** 2

REGLAS DE PRIORIDAD
Las expresiones que tengan dos o más operadores requieren reglas matemáticas que
permitan determinar el orden de las operaciones, dichas reglas son de prioridad o
precedencia y son:

 Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen
paréntesis anidados, los mismos se resuelven de adentro hacia fuera.
 Las operaciones aritméticas dentro de una expresión siguen el siguiente orden de
prioridad:
 Operador exponencial  o **
 Operadores * y / (multiplicación y división)
 Operadores + y - (suma y resta)
En el caso de coincidir operadores de igual jerarquía en una expresión encerrada entre
paréntesis, el orden de prioridad se resuelve de izquierda a derecha.

Ejemplo

( (5 + 1) / 2) ** 2 – (4 + 3)

( 6 / 2) ** 2 – (4 + 3)

3 ** 2 – (4 + 3)

3 ** 2 – 7

9 –7

Las operaciones aritméticas usuales en todos los lenguajes de programación se indican en


la siguiente tabla (Tabla 5.2)

Informática – Año 2020 Página 12


Tema 5: Estructura de datos simples

Símbolo Operación Tipos de operandos Tipo de resultado

 o ** Exponenciación Entero o Real Entero o Real


* Multiplicación Entero o Real Entero o Real
/ División Real Real
+ Suma Entero o Real Entero o Real
- Resta Entero o Real Entero o Real
Entero (cociente de la
Div (\) División Entera Entero
división)
Entero (Resto de la
Mod Módulo (Resto) Entero
división)
Tabla 5.2 Operadores Aritméticos

OPERADORES
Hay tres tipos de operadores: aritméticos, relacionales y lógicos

OPERADORES ARITMÉTICOS
+ Suma
- Resta
* Multiplicación
/ División
** o ^ Potenciación

REGLAS DE PRIORIDAD
Las operaciones aritméticas siguen reglas de prioridad o precedencia y son:

operador exponencial *, ^
operadores de multiplicación y división, /
operadores de suma y resta +, -

5.9.2 EXPRESIONES LÒGICAS

Un segundo tipo de expresión es la expresión lógica o booleana, cuyo valor es


siempre verdadero o falso. Las variables lógicas solo pueden tomar estos valores.
Se denominan también expresiones booleanas en honor al matemático británico George
Boole, que desarrolló el Álgebra lógica de Boole.

Las expresiones lógicas se forman combinando constantes lógicas, variables lógicas y otras
expresiones lógicas, utilizando operadores lógicos not, and y or y los operadores
relacionales (de relación o comparación) =,<,>, >=,<=, <>.

OPERADORES RELACIONALES
Permiten realizar comparaciones de valores de tipo numérico o carácter. Los operadores
de relación sirven para expresar las condiciones en los algoritmos.

== Igual
< Menor que
<= Menor o igual que

Informática – Año 2020 Página 13


Tema 5: Estructura de datos simples

> Mayor
>= Mayor o Igual que
<> Distinto
El formato general para las comparaciones es

Expresión 1 operador de relación expresión 2

Los operadores de relación se pueden aplicar a cualquiera de los cuatro tipos de datos
estandar: enteros, real, lógico, carácter.
Veamos los siguientes ejemplos:

A B Expresión lógica Ejemplo Resultado

2 8 A<B 2<8 verdadero


0 1 A>B 0>1 falso
9 6 A == B 9=6 falso
8 7 A <= B 8 <= 7 falso
5 5 A <> B 5 <> 5 falso
3 3 A >= B 3 >= 3 verdadero

OPERADORES LÓGICOS
Los operadores lógicos o de Boole permiten relaciones lógicas (si/no) y sirven para
representar relaciones compuestas. Los operadores lógicos básicos son not (no) and (si) y
or (o)

AND && Y
OR || O
NOT ! NO

5.10 INSTRUCCIONES DE ASIGNACIÓN.


La instrucción de asignación se utiliza para asignar valores a variables o, cambiar
el valor almacenado en la posición de memoria de una variable. La operación de
asignación se denota con el símbolo  , algunos otros lenguajes utilizan el símbolo
= o :=.

Nombre de variable = expresión o valor

El nombre de variable debe ser escrito a la izquierda del operador de asignación y


a la derecha se sitúa una expresión cuyo valor proporciona a la variable situada a
la izquierda.

A=5 Significa que a la variable A se le asigna el valor 5

La operación de asignación es destructiva, significa que al almacenarse el nuevo


valor borra el que tenía antes.

Todo tiene el mismo tratamiento que lo visto en el apartado 5.5.2

Informática – Año 2020 Página 14


Tema 5: Estructura de datos simples

5.11 ESCRITURA DE ALGORITMOS / PROGRAMAS


Video 5.1 ¿Qué es un algoritmo?

Hasta acá, hemos comenzado a conocer los fundamentos de programación, como


son los datos, los tipos de datos que maneja la computadora y como los trabaja,
instrucciones, expresiones, transferencia de datos. Estaremos en condiciones de
inicializarnos en la tarea de programador.

La escritura de un algoritmo mediante una herramienta de programación debe ser


lo más clara posible y estructurada, de modo que su lectura facilite el
entendimiento del algoritmo y su posterior codificación en un lenguaje de
programación.

Los algoritmos constan de dos componentes: cabecera del algoritmo y bloque de


algoritmo. La cabecera del algoritmo contendrá simplemente el nombre del
algoritmo que será el nombre del programa. El bloque de algoritmo es el resto del
programa y consta de dos secciones o componentes: las acciones de declaración y
las acciones ejecutables.

Cabecera del algoritmo


Bloque de algoritmo
Sección de declaración
Sección de acciones o instrucciones

Cabecera del algoritmo


Todos los algoritmos o programas deben comenzar con una cabecera en la que se
exprese el nombre correspondiente con la palabra reservada del lenguaje. En
lenguaje de programación suele ser la palabra program, en algorítmica se
denomina algoritmo.

Algoritmo demo1 Program demo1

Bloque de algoritmo
Sección de declaración
Se declaran o describen todas las variables utilizadas en el algoritmo, indicando
sus nombres y tipo.

Suma = 0 int Suma=0,A =8, B=7;


A=8
B= 7

Sección de acciones o instrucciones


Se desarrolla el algoritmo con las instrucciones correspondientes

Suma = A + B Suma = A + B
Mostrar “Suma=” Suma printf ("Suma= ",Suma);

Informática – Año 2020 Página 15


Tema 5: Estructura de datos simples

Problema

Desarrollar un algoritmo que lea dos números distintos y que escriba el mayor de los dos.

Algoritmo: DosNumeros
Leer “Escriba el primer número” N1
Leer “Escriba el segundo número” N2
Si N1 es mayor que N2
Entonces escribir “el mayor es”
N1
Sino
escribir “el mayor es” N2
Fin

Pseudocodigo En programación C seria:


Algoritmo: DosNumeros Program: DosNumeros
Inicio #include <stdio.h>
Leer “Escriba el primer número” N1 #include<stdlib.h>
Leer “Escriba el segundo número” N2 int main()
Si N1 es mayor que N2
{
Entonces escribir “el mayor es” N1
double N1,N2;
Sino
printf("Escribe el primer número ");
escribir “el mayor es” N2
scanf("%lf",& N1);
Fin
printf("Escribe el segundo número ");
scanf("%lf",& N2);
if(N1>N2) printf("El mayor es %.2f
\n", N1);
else printf ("El mayor es %.2f \n",
N2);
system("pause");
return 0;
}

Informática – Año 2020 Página 16


TEMA 6: RESOLUCION DE
PROBLEMAS CON
COMPUTADORAS Y
HERRAMIENTAS DE
PROGRAMACION. ALGORI TMOS
Fundamentos de programación. Fases en la resolución de problemas. Concepto y
características de algoritmos. Estrategias de resolución. Escritura de algoritmos.
Representación de algoritmos. Diagrama de Flujos. Pseudocódigos. Verificación de
la solución del problema.

Video 6.1

6.1 FUNDAMENTOS DE PROGRAMACIÓN

Los ordenadores o computadoras han revolucionado todos los aspectos de la vida en los
últimos 40 años. Hoy en día los encontramos en todos lados: escritorios de oficinas,
aviones, microondas y teléfonos celulares entre otros. Pero el equipo físico que podemos
ver es solo la mitad de la historia. Cada una de estas computadoras también necesita un
soporte lógico que le indique como realizar las tareas que esperamos que ejecute. Estas
instrucciones se codifican en una gran variedad de lenguajes de programación. Cada uno
tiene sus características específicas, sintaxis y mecanismos diferentes para llevar a cabo
diversas tareas. Sin embargo todos comparten un conjunto fundamental de características
y conceptos que deben dominar todas las personas interesadas en crear programas para
resolver problemas o realizar tareas con ordenadores.

En este proyecto de aprendizaje nos familiarizaremos con los conceptos para que
posteriormente podamos aprender con mayor facilidad uno o varios lenguajes de
programación específicos, teniendo en cuenta que las técnicas básicas para construir
programas y desarrollar algoritmos para resolver problemas serán las mismas. De esta
forma, al aprender un lenguaje nuevo, solo deberemos preocuparnos por conocer los
aspectos que los diferencian de otros lenguajes.

6.2 FASES EN LA RESOLUCIÓN DE PROBLEMAS

El proceso de resolución de un problema con una computadora conduce a la escritura de


un programa y a su ejecución de la misma. Aunque el proceso de diseñar programa es
esencialmente creativo, se puede considerar una serie de fases o pasos comunes, que
generalmente deben seguir todos los programadores.

Informática – Año 2022 Página 1


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

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

1. Análisis del problema


2. Diseño del algoritmo
3. Codificación
4. Ejecución
5. Prueba

6.2.1 ANÁLISIS DEL PROBLEMA

El análisis consiste en estudiar el problema planteado para obtener una idea clara y
concisa de los pasos necesarios para proponer un modelo para su solución.
Para resolver un problema con un ordenador hay que disponer de los datos de entrada,
estudiar el tratamiento que se ha de realizar a dichos datos, la información que se desea
obtener como resultado y de qué manera debe presentarse. Es decir, después de analizar
el problema, se han de conocer claramente tres cosas.

Datos de Entrada de que se dispone


Proceso o Tratamiento que ha de realizarse con estos datos.
Información de salida deseada.
Una de las técnicas más empleadas recibe el nombre de H.I.P.O. (Hierarchy the plus input
process output) que consiste en esquematizar cada programa, o una parte del mismo en los
tres bloques (los descritos anteriormente).

Informática – Año 2022 Página 2


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

EJEMPLO 6.1
Por ejemplo, y sin entrar en el campo de la informática, para hacer la nómina de los
mejores alumnos de una carrera, se necesita saber:

– ENTRADA: Los datos de cada uno de los alumnos y si estos datos están en papel o
en un fichero donde está toda la información de los alumnos.
– PROCESO: La fórmula matemática para calcular el promedio de notas es:
(nota 1 + nota 2 + nota 3 + .....+ nota n) / cantidad de notas

– SALIDA: El modelo del informe donde se desean imprimir el promedio de los


alumnos.

6.2.2 DISEÑO DEL ALGORITMO

Teniendo en cuenta que un algoritmo es un método para resolver problemas, una vez
analizado el mismo se precisa diseñar un algoritmo que indique claramente los pasos a
seguir para resolverlo.

Para realizar un determinado proceso, se le debe suministrar al ordenador una fórmula


para la resolución de un problema (algoritmo), cuyo diseño debe ser independiente de la
computadora.

Dada la importancia del algoritmo en la ciencia de la computación, un aspecto relevante


será el diseño del algoritmo, el cual requiere en la mayoría de los casos, creatividad y
conocimientos profundos de la técnica de programación. Es decir, la solución de un
problema se puede expresar mediante un algoritmo.

La solución de un problema complejo puede requerir muchos pasos, es necesario dividir el


problema en subproblemas más sencillos de resolver.

Este método se denomina divide y vencerás y es aplicable a la resolución y escritura de


algoritmos y programas para computadora.

El método de división de un problema en otros subproblemas más sencillos se puede


expresar para conseguir su solución en una computadora, mediante el método
denominado diseño descendente.

Informática – Año 2022 Página 3


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

El proceso de la rotura de un problema principal en etapas o subproblemas más sencillos


se denomina refinamiento paso a paso o sucesivos

Luego corresponde realizar una representación gráfica clara y detallada que muestre la
secuencia en que se deben ejecutar las diferentes operaciones. Estas representaciones
gráficas son las herramientas de programación utilizadas para el análisis y pueden ser:
diagramas de flujo, pseudocódigos y/o tablas de decisión, entre otras.

6.2.3 CODIFICACIÓN DEL ALGORITMO

Una vez que el algoritmo de resolución del problema está definido se pasa a la fase de
codificación del programa en cualquier lenguaje (c, basic, cobol, pascal, etc.) cuyo
resultado será el programa fuente el cual sigue las reglas de sintaxis que el lenguaje
escogido exija.

Después de codificado el programa, se introduce en el ordenador mediante unos


programas especiales llamados editores.

Una vez dentro del ordenador, el programa deber ser traducido al único lenguaje que éste
entiende: Lenguaje de máquina. Dicha operación se realiza mediante el correspondiente
programa traductor o compilador del lenguaje en el que está escrito el programa. Este
proceso se repite hasta que no se producen errores, obteniéndose el programa objeto que
todavía no es ejecutable directamente.

6.2.4 EJECUCIÓN

A partir del programa objeto se instruye al sistema operativo para que realice un montaje
o enlace, carga, del programa objeto a las librerías del programa compilador. El proceso
de montaje produce el programa ejecutable, que una vez creado ya se puede ejecutar
(correr) desde el sistema operativo. Suponiendo que no existen errores durante la
ejecución (llamados errores en tiempo de ejecución), se obtendrá la salida de resultados de
programa. Ver siguiente figura.

6.2.5 PRUEBA

El hecho de haber diseñado un buen algoritmo y luego haberlo codificado en algún


lenguaje de programación no significa que el programa resuelva correctamente el
problema en cuestión.

Por eso, antes de dar por finalizada cualquier labor de programación, es fundamental
preparar un conjunto de datos lo más representativo posible del problema, que permitan
probar el programa cuando se ejecute y así verificar los resultados.

Cuanto más exhaustivas sean las pruebas de un programa, mayor seguridad se tendrá de
que éste funcione correctamente y, por lo tanto, menor posibilidad de errores y por ende,

Informática – Año 2022 Página 4


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

mayor probabilidad habrá de evitar la tarea de revisar un antiguo programa, cuando ya la


lógica que se empleó en el mismo se recuerda muy poco.
El programa se considera terminado cuando se han realizado pruebas y ensayo de su
fiabilidad con el conjunto de datos seleccionados y otros nuevos, hasta incluso con datos
reales, y no se encuentren errores de ningún tipo.

6.3 CONCEPTO Y CARACTERÍSTICAS DE ALGORITMOS

Definimos un algoritmo como un conjunto de pasos, procedimientos o acciones que nos


permiten alcanzar un resultado o resolver un problema.

Los algoritmos son independientes del lenguaje de programación en que se expresan


como así también de la computadora que se ejecuten. Un algoritmo se puede expresar en
distintos lenguajes de programación y en computadoras distintas, pero el algoritmo, los
pasos a seguir para la solución del problema es siempre el mismo. Así como, cualquier
cosa que ocurra en la vida cotidiana, por ejemplo, poner en movimiento un automóvil,
tiene un número de pasos a seguir, sea quien sea el conductor: argentino, español, alemán,
etc.- y sea cual sea el auto a conducir.
En la ciencia de la computación y específicamente en la programación, los algoritmos son
más importantes que los lenguajes de programación e incluso que las computadoras, dado
que los lenguajes de programación son solo un medio para expresar un algoritmo y las
computadoras la herramienta que los ejecuta.
Las características que debe cumplir un algoritmo son:
Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin
criterios de interpretación.
Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el
cual deberá finalizar al completarlos.
Tener cero o más entradas: Datos son proporcionados a un algoritmo como insumo (o
estos son generados de alguna forma) para llevar a cabo las operaciones que comprende.
Tener una o más salidas: Debe siempre devolver un resultado; de nada sirve un
algoritmo que hace algo y nunca sabemos que fue. El devolver un resultado no debe ser
considerado como únicamente “verlos” en forma impresa o en pantalla, como ocurre con
las computadoras. Existen muchos otros mecanismos susceptibles de programación que
no cuentan con una salida de resultados de esta forma. Por salida de resultados debe
entenderse todo medio o canal por el cual es posible apreciar los efectos de las acciones
del algoritmo.
Efectividad: El tiempo y esfuerzo por cada paso realizado debe ser preciso, no usando
nada más ni nada menos que aquello que se requiera para y en su ejecución.

6.4 ESTRATEGIAS DE RESOLUCIÓN

Las herramientas de programación utilizadas como lenguajes algorítmicos, antes de ser


convertido a lenguaje de programación, son las que utilizan algunos métodos de
representación escrita, gráfica o matemática. Los métodos más conocidos son:

 Diagramación libre (Diagramas de flujo)


 Pseudocódigo
 Diagramas Nassi-Shneiderman
 Lenguaje natural (español, inglés, etc.)

Informática – Año 2022 Página 5


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

 Fórmulas matemáticas.

El lenguaje natural puede no ser suficientemente preciso, permitiendo ambigüedades,


obteniendo una descripción no del todo satisfactoria. Las fórmulas, propias del lenguaje
matemático, son un buen sistema de representación, pero no suelen ser fáciles de
convertir en programas. Por lo tanto, trataremos en este curso los dos primeros modelos

– Pseudocódigo: es un lenguaje algorítmico, muy parecido al español/lenguaje natural


pero más conciso que permite la redacción rápida del algoritmo.
– Diagramas de flujo: ha sido la herramienta de programación por excelencia, y aún hoy
sigue siendo muy utilizada. Es fácil de diseñar pues el flujo lógico del algoritmo se muestra
en un diagrama en lugar de palabras.

6.4.1 ESCRITURA DE ALGORITMOS.

Como se comentó anteriormente, el sistema para describir (escribir) un algoritmo consiste


en realizar una descripción paso a paso de un lenguaje natural del citado algoritmo.
Recordando que un algoritmo es un método o conjunto de reglas para solucionar un
problema. En cálculos elementales estas reglas tienen las siguientes propiedades:

- Deben estar seguidas de alguna secuencia definida de pasos hasta que se obtenga un
resultado coherente,

- solo puede ejecutarse una operación a la vez

El flujo de control usual de un algoritmo es secuencial; consideraremos el siguiente


ejemplo:
Si a un experimentado conductor se le preguntase
¿cómo pone en movimiento su automóvil?
Contestaría: “Se pone en marcha el motor y se mete la primera”.
Efectivamente es fácil. Pero ¿Qué ocurriría si el individuo nunca condujo un automóvil?. El
resultado no sería muy efectivo debido a que según las instrucciones o pasos impartidos
anteriormente, si estuviera en algún cambio, al poner en marcha se hubiese estrellado con
lo primero que estuviese adelante o atrás.
La conclusión que se debe sacar de este ejemplo es que el conductor con experiencia no
tuvo en cuenta todas las posibilidades que se pueden presentar para obtener el resultado
de poner el automóvil en movimiento. Por lo tanto, su algoritmo sería:
 Poner en marcha el motor
 Meter la primera

El algoritmo consta de dos 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 descripto es muy sencillo; sin embargo, como ya se ha indicado en párrafos
anteriores, el algoritmo general se descompondrá en pasos mas simples en un
procedimiento denominados refinamiento sucesivo. Así por ejemplo, un primer
refinamiento del algoritmo poner en movimiento un coche se puede describir de la forma
siguiente:
 Pisar el embrague con el pie izquierdo

Informática – Año 2022 Página 6


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

 Poner en punto muerto


 Dar a la llave de contacto
 Pisar el embrague
 Meter la primera
 Quitar el freno de mano si lo tuviese puesto.
 Levantar lentamente el pie del embrague a la vez que pisa el pedal del acelerador con
el pie derecho

¿Por qué es más correcto este algoritmo?


1) Desglosa el problema en instrucciones simples y concretas, comprensibles para
cualquier individuo.
2) Indica claramente el orden en que deben ejecutarse dichas instrucciones.

6.4.2 REPRESENTACIÓN GRAFICA DE ALGORITMOS.

La representación gráfica independiza al algoritmo del lenguaje de programación elegido,


permitiendo de esta manera que pueda ser codificado indistintamente en cualquier
lenguaje. Para conseguir este objetivo se necesita que el algoritmo sea representado
gráficamente, de modo que las sucesivas acciones puedan ser traducidas fácilmente a un
programa, es decir, su codificación.

Para representar de una forma clara, concisa y esquemática la secuencia de acciones que
se han de realizar para resolver un problema se puede usar una de las técnicas más
antigua y a la vez más utilizada: diagramas de flujo, que no es más que un diagrama o
esquema que utiliza símbolos estándar y que tiene los pasos del algoritmo escritos en esos
símbolos unidos por flechas, llamados flujo de datos o líneas de flujo, que indican la
secuencia en que se deben ejecutar las órdenes, instrucciones o sentencias.

Es importante señalar que en la actualidad se utilizan técnicas más modernas para la


descripción de algoritmos. Sin embargo, la naturaleza gráfica de los diagramas de flujo
facilita inicialmente la comprensión de dichos algoritmos.

Pseudocódigo es un lenguaje de pseudoprogramación, es decir, muy parecido a un


lenguaje de programación. El pseudocódigo es muy fácil de utilizar, ya que es muy similar
al lenguaje natural.

6.5 DIAGRAMA DE FLUJO

El diagrama de flujo representa la esquematización gráfica de un algoritmo. En realidad


muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un
problema. La construcción correcta del mismo es muy importante, ya que a partir de este
se escribe el programa en un lenguaje de programación determinado. El diagrama de flujo
representa la solución del problema mientras que el programa representa la
implementación en un lenguaje de programación.

El uso de diagramas de flujo como herramienta de programación tiene beneficios que


resumidamente se detallan:

 Rápida comprensión de las relaciones


 Se pueden usar como modelos de trabajo para el diseño de nuevos programas

Informática – Año 2022 Página 7


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

 Documentación adecuada de los programas


 Produce una codificación eficaz en los programas
 Depuración y pruebas ordenadas de programas
 Fácil de traducir a cualquier lenguaje de programación.
Pero en algunas circunstancias nos encontramos con limitaciones o inconvenientes en su
uso, en forma resumida diremos:

 Los diagramas complejos y detallados suelen ser laboriosos en su planteamiento y


gráfica.

 No existen normas fijas para la elaboración de los diagramas de flujo que incluyan
todo lo que el usuario desea introducir.

SIMBOLOGÍA
La estandarización de los símbolos para la elaboración de Diagramas de Flujo tardó varios
años. Con el fin de evitar la utilización de símbolos diferentes para representar procesos
iguales, la Organización Internacional para la Estandarización (ISO, por su sigla en inglés)
y el Instituto Nacional Americano de Estandarización (ANSI, por su sigla en inglés),
estandarizaron los símbolos que mayor aceptación tenían en 1985. Los siguientes son los
principales símbolos para elaborar Diagramas de Flujo:

Informática – Año 2022 Página 8


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Plantilla Standard Graph ISO 5807 para la elaboración manual de Diagramas de Flujo.

Informática – Año 2022 Página 9


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

NORMAS PARA SU REPRESENTACIÓN


Para confeccionar un diagrama de flujo, es aconsejable respetar las siguientes reglas:
 Todo diagrama de flujo debe indicar
claramente donde comienza (INICIO o
COMENZAR) y donde termina (FIN o
PARAR).

 El orden en que deben escribirse los


símbolos es de arriba abajo y de izquierda a
derecha.

 Es aconsejable emplear un símbolo para


cada acción.

 Dentro de los símbolos no especificar


instrucciones propias de algún lenguaje de
programación.

 La secuencia se indica mediante flechas o


líneas de conexión (horizontales /
verticales), las cuales deben ser siempre
rectas, no se deben cruzar ni deben estar
inclinadas.

 A todos los símbolos (excepto al INICIO), les debe llegar una línea de conexión.

 De todos los símbolos, excepto FIN y el de DECISIÓN, debe salir una sola línea
de conexión.

 Es aconsejable usar conectores cuando las líneas de conexión entre


operaciones no adyacentes son muy largas, pero hay que tener en cuenta que
el uso exagerado de conectores dificulta el entendimiento.

 Cuando trabajamos con operaciones lógicas recurrir preferentemente a la


lógica positiva antes que a la lógica negativa. Es más claro decir si A = B, en vez
de: si no es A <> B.

 El diagrama de flujo deberá ser lo más claro posible de forma tal que cualquier
otro programador pueda seguirlo o usarlo con total facilidad de entendimiento.

 El diagrama de flujo en conjunto debe guardar una cierta simetría.

Informática – Año 2022 Página 10


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Ejemplo
Diseñar un algoritmo que lea cuatro variables y calcule e imprima su producto, suma y
media aritmética.

Informática – Año 2022 Página 11


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

6.6 PSEUDOCÓDIGO

Otra herramienta muy útil en el análisis de programación es el pseudocódigo. En donde,


pseudo o seudo significa “falso” o “imitación” y código se refiere a las instrucciones escritas
en algún lenguaje de programación; por lo tanto cuando hablamos de pseudocódigo no
estamos hablando de código sino de una imitación o simulacro de instrucciones reales
abreviadas para las computadoras.

El pseudocódigo nació como un lenguaje similar al inglés y era un medio para representar
las estructuras de control de programación estructurada que se verá en capítulos
posteriores. Se puede considerar como un primer intento de programa o como un
programa borrador, dado que el pseudocódigo por si solo no puede ser ejecutado en una
computadora sino que debe traducirse a un lenguaje de programación.

El uso de ésta herramienta tiene la ventaja en la planificación de un programa. El


programador se concentra en las estructuras de control, en la lógica y deja en este
momento de lado las reglas del lenguaje de programación al cual debe luego traducir.
Además para la corrección de errores de lógica es más fácil realizarlo desde el
pseudocódigo que desde un programa ya codificado.

El pseudocódigo original utiliza palabras en inglés – similares a las de los lenguajes de


programación - para representar acciones sucesivas, tales como start , end , stop, repeat,
until , etc. pero también se pueden usar las mismas palabras en español comienzo, fin,
parar, repetir, hasta, etc. lo cual facilita considerablemente el aprendizaje. En este curso
usaremos la terminología en español.

En la actualidad el pseudocódigo es una técnica muy utilizada sobretodo en la


programación de lenguajes estructurados como Pascal, C, o bien utilizando técnicas de
programación estructurada en otros lenguajes.

Informática – Año 2022 Página 12


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

NORMAS PARA SU ESCRITURA


No hay una forma estándar de diseñar un pseudocódigo, pero se aconseja respetar lo más
rigurosamente posible las siguientes normas:

 Todo pseudocódigo debe empezar con la


palabra reservada comenzar y debe finalizar
con la palabra reservada parar.
 Cada instrucción se debe escribir en una
línea.
 Las instrucciones utilizan para su
descripción las siguientes series de palabras
reservadas: comenzar, parar, si, entonces,
sino, fin_si, ir_a, leer, imprimir, informar grabar, mientras, fin_mientras, hasta,
fin_hasta, desde, fin_desde, etc.-
 La escritura de pseudocódigo exige la sangría o identación (en el margen
izquierdo) de diferentes líneas a los efectos de observar claramente las
dependencias de control dentro de los módulos.
 Cada estructura utilizada tendrá un solo punto de comienzo y un solo punto de fin
de estructura.
 Se escribirá en minúscula, excepto las que elige el programador como ser los
nombres de variables, ficheros, rutinas, etc., que se escribirán en mayúscula.
 Usar apóstrofos o comillas simples solo para apertura y cierre de cadenas de
caracteres, dado que podría dar lugar a confusión debido a que, por ejemplo Basic
de Microsoft usa estos caracteres para comentarios.
 Cuando se quiera colocar una línea de comentario para documentación interna del
programa usar [.
 Las rutinas o módulos serán referenciadas por su nombre en mayúscula entre los
símbolos < >.
 Usar siempre las mismas palabras reservadas para cada tipo de acción.

El mismo problema anterior escrito en pseudocódigo:


Pseudocódigo
Inicio
leer (a, b, c, d)
producto = (a * b *c* d)
suma = (a + b + c + d)
media = (a + b + c + d) / 4
escribir (producto, suma, media)
fin

Video 6.2: Definición y características de un algoritmo

Informática – Año 2022 Página 13


Tema 6: Resolución de problemas con computadoras y herramientas de programación. Algoritmos.

Ejemplo
Se desea encontrar la longitud y el área de un círculo de radio 5.

Solución

El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio


conocido y de valor 5.

Las salidas serán entonces la longitud y el área. (Paso 5 del algoritmo) Sabemos que la
longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por
pi * radio al cuadrado. (paso 4 del algoritmo) Si definimos las variables como: (paso 1 al 3
del algoritmo)

L = Longitud; A = área; R = radio; pi = 3.1416

Se obtiene el siguiente algoritmo:

Inicio
Pi = 3.1416 [definición de un valor
constante]

R = 5 [radio constante ya que es


conocido su valor]

A = Pi * R ^ ² [asignación del
valor del área]

L = 2 * Pi * R [asignación del
valor de la longitud]

Escribir (A, L) [salida del algoritmo]


Fin

#include <stdio.h>
#include<stdlib.h>
int main()
{
#define PI=3.1415
int const radio = 5;
float area, longitud;

longitud = 2 * PI * radio;
area = (PI * (radio ^ 2));

printf("El area es %.2f \n", area);


printf ("la longitud es %.2f \n",
longitud);
system("pause");
return 0;
}

Informática – Año 2022 Página 14


TEMA 7: ESTRUCTURA
GENERAL DE UN PROGRA MA
Concepto de programa. Partes constitutivas de un programa. El Lenguaje.
Estructura general de un programa. Fases en la creación y ejecución de programas.
Tipos de datos primitivos. Variables y constantes. Operadores y expresiones.
Entradas y salidas.

7.1 CONCEPTO DE PROGRAMA

Programa es un concepto con numerosas acepciones. Puede tratarse de una planificación,


un temario, un cronograma, una unidad temática o una emisión de radio o televisión, por
citar algunas posibilidades.

Cuando hablamos específicamente de programa en informática, estamos haciendo


referencia a un software. Se trata de aplicaciones y recursos que permiten desarrollar
diferentes tareas en una computadora (ordenador), un teléfono, placas u otros equipos
tecnológicos.

Entonces, un programa informático o programa de computadora es una secuencia de


instrucciones, escritas para realizar una tarea específica en una computadora.

7.2 PARTES CONSTITUTIVAS DE UN PROGRAMA.

Tomada la decisión de realizar un programa, el programador debe establecer conjunto de


especificaciones que debe contener el programa: entrada, salida y algoritmo de resolución,
que es el que va a incluir las técnicas para obtener las salidas a partir de las entradas.

Conceptualmente un programa puede ser considerado como una caja negra. La caja negra
o el algoritmo de resolución, en realidad, es el conjunto de códigos que transforman las
entradas del programa (datos) en salidas (resultados).

Bloques de un programa

El programador debe establecer de donde provienen las entradas del programa. Las
entradas, en cualquier caso, procederán de un dispositivo de entrada (teclado, disco, etc.-).
El proceso de introducir la información de entrada (datos) en la memoria de la
computadora se denomina entrada de dados, operación de lectura o acción de leer.

Las salidas de datos se deben presentar en dispositivos periféricos de salida: pantalla,


impresoras, discos, et.-. La operación de salida de datos se conoce como escritura o acción

Informática – Año 2020 Página 1


Tema 7: Estructura general de un programa

de escribir. Estos conceptos fueros dados en el tema 5.3 Tratamiento de la información,


apartado 5.5.3- 5.5.4

7.3 EL LENGUAJE

Para desarrollar un programa informático, se necesita apelar a los lenguajes de


programación que posibilitan el control de las máquinas. A través de diversas reglas
semánticas y sintácticas, estos lenguajes especifican los datos que transmite el software y
que tendrá que operar la computadora.

¿Qué es C?

C es un lenguaje de programación de alto nivel de propósito general asociado, de modo


universal, al sistema operativo UNIX. Fue desarrollado en el año 1972. Sin embargo, la
popularidad, eficacia y potencia de C se ha producido porque este lenguaje no está
prácticamente asociado a ningún sistema operativo, ni a ninguna máquina en especial.
Esta es la razón fundamental por la que C es conocido como el lenguaje de programación
de sistemas por excelencia.

En la actualidad, el lenguaje C sigue siendo uno de los más utilizados en la industria del
software, así como en institutos tecnológicos, escuelas de ingeniería y universidades.

Prácticamente todos los fabricantes de sistemas operativos (tomando en cuenta a: UNIX,


Linux, MacOS, Solaris, Windows, entre otros.), soportan diferentes tipos de compiladores
de lenguaje C.

El lenguaje C tiene una gran cantidad de ventajas sobre otros lenguajes y constituyen
precisamente la razón fundamental que C siga siendo uno de los lenguajes más populares,
utilizados en empresas, organizaciones y fábricas de software de todo el mundo. La
legibilidad, facilidad de mantenimiento y la portabilidad son algunas de las ventajas de
este lenguaje, además que permite descender a nivel de hardware, característica la que le
da más potencia y dominio sobre los recursos del sistema.
Entre una de las características más importantes de C está la portabilidad, esto es, un
programa escrito en C se puede trasladar fácilmente entre distintos sistemas operativos
como Windows, DOS o Linux.
El lenguaje C está formado por un conjunto pequeño de palabras claves (reservadas) o
comandos (keywords), y una serie de operadores. Todas las palabras claves de C están en
minúsculas (C distingue entre las mayúsculas y minúsculas).
Algunas de estas palabras son:
auto break case char const continue default
do double else enum extern float for
goto if int long register return short
signed sizeof static struct typedef union unsigned
void volatile while

A este conjunto de palabras se les denomina "palabras reservadas".

Características

Informática – Año 2022 Página 2


Tema 7: Estructura general de un programa

 Lenguaje de programación de propósito general


 Lenguaje estructurado
 Lenguaje pequeño
 Lenguaje muy eficiente
 Lenguaje portable (independiente de la máquina)
 A menudo es elegido para el desarrollo de software de sistemas: es un lenguaje de
programación caracterizado por su acusada proximidad a la máquina.
 Origen de muchos de los lenguajes usados actualmente. (C++, Java, C#...)

7.4 ESTRUCTURA GENERAL DE UN PROGRAMA EN C

Un programa en el lenguaje C consta de tres partes básicas. (visto en tema 5)


 Declaración de librerías o directivas. Aquí se declaran las librerías que vamos a
utilizar en el programa, para hacerlo se utiliza la línea “#include
<nombre.h>” donde nombre es el nombre de la librería y todas tienen una
extensión “.h”.
 La función principal “main”. Esta función es el componente más importante en el
lenguaje C, aquí es donde se inician todas las instrucciones programadas o inicia el
programa.
 Las sentencias. Esta parte es donde entra la programación, aquí se utilizan las
funciones o instrucciones que el lenguaje C nos proporciona en
las librerías antes mencionadas.
Veamos el típico ejemplo de hola mundo en lenguaje C.
#include <stdio.h> //declaramos las librerías

main() //declaramos la función principal

{
printf("hola mundo"); //zona de sentencias. Con la instrucción printf
imprimimos un mensaje en pantalla
}

#include <stdio.h>

Con esta línea le decimos al compilador que vamos a utilizar funciones o instrucciones que se
encuentran en el archivo “stdio.h”

stdio.h, que significa "standard input-output header" (cabecera estándar E/S), es el archivo
de cabecera que contiene las definiciones de las macros, las constantes, las declaraciones de
funciones de la biblioteca estándar del lenguaje de programación C para hacer operaciones,
estándar, de entrada y salida, así como la definición de tipos necesarias para dichas operaciones.

main()
{

}
Esta línea sirve para declarar la función principal y indicar el fin y el inicio del programa,
todas las instrucciones que vamos a programar se deben de poner entre los llaves { } los
cuales indican el fin e inicio del programa.

Informática – Año 2022 Página 3


Tema 7: Estructura general de un programa

printf("hola mundo");

Esta es una función del lenguaje C que se encuentra en la librería stdio.h, la función
printf permite insertar o imprimir un mensaje o cadena de caracteres o texto, en la
pantalla o el dispositivo de salida principal de la pc, que es la pantalla del ordenador.

El lenguaje C se caracteriza por que todas las sentencias, instrucciones o funciones que
programamos se deben separar por un punto y coma ” ; “.

LOS COMENTARIOS EN LENGUAJE C

El lenguaje C nos permite insertar comentarios o notas en nuestros códigos fuente. Esos
comentarios no interfieren con el funcionamiento del programa. En el lenguaje C existen
dos tipos de comentarios: una sola línea o de dos líneas.

Los comentarios de una sola línea se describen por la doble barra “//”.

//comentario de una sola línea

Los comentarios de dos líneas se describen por la barra / y el signo * .

/* comentarios que ocupan

VARIAS LÍNEAS DE CÓDIGO */


VIDEO 7.1

7.5 FASES EN LA CREACIÓN Y EJECUCIÓN DE PROGRAMAS EN C

Una vez creado un programa en C se debe ejecutar. ¿Cómo realizar esta tarea? Los pasos a
dar dependerán del compilador C que utilice, pero en general los pasos serian:

1. Utilizar un editor de texto para escribir el programa y grabarlo en un archivo.


Este archivo constituye el código fuente de un programa.
2. Compilar el código fuente. Se traduce el código fuente en un código objeto
(extensión .obj) (lenguaje de maquina entendible por la computadora). Un archivo
objeto contiene instrucciones en lenguaje de máquina que se pueden ejecutar por
una computadora. Los archivos estándar C y los de cabecera definidos por el
usuario son incluidos (#include) en su código fuente por el preprocesador. Los
archivos de cabecera contienen información necesaria para la compilación, como
es el caso de stdio.h que contiene información scanf() y printf().
3. Enlace. (linkaje o montaje). Los programas pueden utilizar funciones de la
biblioteca estándar de C1, tales como scanf o printf. De cada una de ellas existe
un código objeto que debe ser enlazado (unido) al código objeto del programa que
las utilice. Esto se realiza mediante un programa llamado enlazador, montador o
linkador.

1“ <stdio.h> "tenemos una biblioteca estándar del lenguaje de programación C, en esencia es el archivo
de cabecera que contiene las definiciones de macros, las constantes, las declaraciones de funciones y la
definición de tipos usados por varias operaciones estándar de entrada y salida.

Informática – Año 2022 Página 4


Tema 7: Estructura general de un programa

Como resultado del enlace, el enlazador guardará, en disco, un archivo ejecutable.


En Windows, dicho archivo tendrá extensión (.exe), abreviatura de executable.
Dicho archivo será "el ejecutable".
Finalmente, para que el código ejecutable de un programa se ejecute en la
computadora, es necesario que un programa del sistema operativo, llamado
cargador, lo lleve a la memoria principal de la misma. A partir de ese momento, la
CPU empezará a ejecutarlo.

Archivo de
cabecera

Bibliotecas

Informática – Año 2022 Página 5


Tema 7: Estructura general de un programa

El proceso de ejecución de un programa puede o no funcionar a la primera vez; es decir,


podría presentar errores de sintaxis o errores en tiempo de ejecución. El proceso de
detectar y corregir errores se denomina depuración o puesta a punto de un programa.

La figura muestra el proceso completo de puesta a punto de un programa.

Inicio

Editar programa Se comienza escribiendo el


archivo fuente con el editor.

Se compila el archivo fuente


y se comprueban mensaje de
Compilar programa errores. Se retorna el editor y
se fijan los errores de
sintaxis. Cuando el
compilador tiene éxito, el
enlazador construye el
archivo ejecutable. Se corre
el archivo ejecutable. Si se
Errores de sintaxis si encuentra un error, se puede
activar el depurador para
ejecutar sentencia a
sentencia. Una vez que se
encuentra la causa del error,
no se vuelve al editor y se repite
la compilación.
Comprobar errores
El proceso de compilar,
enlazar y ejecutar el
programa se repetirá hasta
que no se produzcan errores.

Errores en tiempo si
de ejecución

no

Fin

Video 7.3 – Como compilar

Informática – Año 2022 Página 6


Tema 7: Estructura general de un programa

7.6 TIPOS DE DATOS PRIMITIVOS EN C

El lenguaje C no soporta gran números de tipos de datos predefinidos, pero tiene la


capacidad para crear sus propios tipos de datos (modificadores). Esencialmente son
numéricos. Ellos son:
- Enteros
- Numero de coma flotante (reales)
- Caracteres

numero sin decimales, tiene un tamaño de 4 bytes y va desde el


numero -2147483648 a 2147483647
int

numero sin decimales, tiene un tamaño de 2 bytes y va desde el


short numero -32768 al 32767

numero sin decimales, tiene un tamaño de 8 bytes y va desde el


long numero -9223372036854775808 a 9223372036854775807

numero con decimales, tiene un tamaño de 4 bytes y tiene un


float tamaño suficiente para guardar hasta 6 o 7 dígitos después de la
coma

numero con decimales, tiene un tamaño de 8 bytes y nos permite


double guardar hasta 15 dígitos después de la coma

(*) Ver tema 5. Página 10. Datos numéricos - enteros

Los tipos de datos fundamentales en C son:


Enteros: (números completos y sus negativos), de tipo int
Variantes de enteros: tipos short, long y unsigned
Reales: números decimales, tipos float, double o long double
Caracteres: letras, dígitos, símbolos y signos de puntuación, tipos char
Char, int, float, double, son palabras reservadas especificadores de tipo. Cada
tipo de dato tiene su propia lista de atributos que definen las características del tipo y
pueden variar de una maquina a otra.
Los tipos char int double tienen variaciones o modificadores de tipos de datos, tales
como short, long, signed y unsigned.
Ejemplo
signed short int e1=32000;
long int e5=147483648;

Como práctica, escribir y ejecutar los problemas propuestos al final del tema.

Informática – Año 2022 Página 7


Tema 7: Estructura general de un programa

7.7 VARIABLES Y CONSTANTES

VARIABLES

Una variable no es más que un nombre simbólico que identifica una dirección de memoria

total = cantidad1 + cantidad2 {“Suma cantidad1 y cantidad2 y lo almacena en total”}

Declaración de variables en C
<tipo> identificador;
<tipo> lista de identificadores;

Las variables se han de declarar antes de poder usarlas.

Los identificadores de las variables son los nombres que utilizaremos para referirnos a
ellas.

Al declarar una variable, hay que definir su tipo: la variable sólo admitirá valores del tipo
especificado.

En una misma declaración se pueden declarar varias variables, siempre que sean del
mismo tipo. En este caso, los identificadores de las variables se separan por comas.

Ejemplo

// Declaración una variable entera x de tipo int


int x;

// Declaración de una variable real r de tipo double


double r;

// Declaración de una variable c de tipo char


char c;

// Múltiples declaraciones en una sola línea


int i, j, k;

Informática – Año 2022 Página 8


Tema 7: Estructura general de un programa

Inicialización de las variables


En una declaración, las variables se pueden inicializar:

int i = 0;

double x = 1.0, y = 1.0;

CONSTANTES

Una constante hace referencia a un valor que no puede modificarse.

En las constantes definidas se utiliza la directiva #define del preprocesador de C:

#define <IDENTIFICADOR> <valor>

Convenciones
Los identificadores asociados a las constantes se suelen poner en mayúsculas.

#define PI 3.141592

Si el identificador está formado por varias palabras, las distintas palabras se separan con
un guión de subrayado.

#define ELECTRONIC_CHARGE 1.6E - 19

No se puede modificar el valor de una constante

Para las constantes declaradas se utiliza el cualificador const que permite dar nombres
simbólicos a constantes. El formato general es:

const tipo nombre = valor;

const char LETRA = “C”;

Diferencias entre const sobre #define

Las definiciones const especifican tipos de datos, terminan con ; y se inicializan como
variables. La directiva #define no especifica tipo de datos, no utiliza el operador de
asignación (=) y no termina con ;.

#define IDENTIFICADOR valor

#define LETRA “C”

7.8 OPERADORES Y EXPRESIONES

Los programas en C constan de datos, sentencias de programas y expresiones. Una


expresión es normalmente una ecuación matemática, tal como 2+7. En esta expresión el
símbolo (+) es el operador de suma, y los números 2 y 7 se llaman operandos. En síntesis,
una expresión es una secuencia de operaciones y operandos que especifican un cálculo.

Informática – Año 2022 Página 9


Tema 7: Estructura general de un programa

Sintaxis
Variable = expresión

Una expresión es un elemento de un programa que toma un valor. En algunos casos puede
tomar también una operación.

Operador de Asignación
Al ejecutar una sentencia de asignación:
1. Se evalúa la expresión que aparece a la derecha del operador de asignación (=).
2. El valor que se obtiene como resultado de evaluar la expresión se almacena en la
variable que aparece a la izquierda del operador de asignación (=).
Ejemplo
x = x + 1;
int miVariable =20; // Declaración con inicialización
otraVariable =miVariable; // Operador de asignación

NOTA IMPORTANTE: Una sentencia de asignación no es una igualdad matemática

Operadores de Asignación en C

operadores Forma
de convencional
Símbolo Descripción
asignación
compuestos

= A=b Asigna el valor de b a A

Multiplica A por b y asigna el valor a la A=A*b


*= A *= b
variable A

Divide A entre b y asigna el valor a la variable A = A / b


/= A /= b
A

%= A %= b Fija A el resto de A/b A = mod(A / b)2

+= A += b Suma A y b y asigna el valor a la variable A A=A+b

-= A -= b Resta b y de A y asigna el valor a la variable A A = A - b

Estos operadores compuestos se usan frecuentemente y, quien se habitúa a ellos, agradece


que se hayan definido para el lenguaje C.

2
El identificador de este operador es el carácter ‗%‘. Este operador calcula el resto del cociente
entero. Por su misma definición, no tiene sentido su aplicación entre variables no enteras: su uso
con variables de coma flotante provoca error de compilación. Como en el cociente, tampoco su
divisor puede ser cero.

Informática – Año 2022 Página 10


Tema 7: Estructura general de un programa

OPERADORES DE INCREMENTACIÓN Y DECREMANTACIÒN.


De las características que implementa el lenguaje C, una de las más útiles es el incremento
++ y decremento --, que suman o restan 1 a su argumento.

Por consiguiente

a++ es igual que a = a + 1

a-- es igual que a = a - 1

Ejemplos

int i = 10;
int j;
....
j = i++
El valor de J es 11, recibe el valor de 10 + 1

Los operadores aritméticos y relacionales son los mismos vistos en el Tema 5.

7.9 ENTRADAS Y SALIDAS

Los programas interactúan con el exterior, a través de datos de entrada o datos de salida.
La biblioteca C proporciona facilidades para entrada y salida, para lo que todo programa
deberá tener el archivo de cabecera stdio.h.

SALIDA POR PANTALLA CON LA FUNCIÓN PRINTF


La salida de datos de un programa se puede dirigir a diversos dispositivos, pantalla,
impresora, archivos. La salida que se trata a continuación va a ser a pantalla, además será
formateada.

La función printf(), visualiza en la pantalla datos del programa.

#include <stdio.h>
main ()
{
suma = 0:
suma= suma + 10
printf(“%s %d”, “Suma =”, suma);
}
Se visualiza Suma = 10

El número de argumentos de printf(), es indefinido, por lo que se pueden transmitir


cuantos datos se desee. Así suponiendo que
i=5 j = 12 c = ‘A’ n = 40.791512

Informática – Año 2022 Página 11


Tema 7: Estructura general de un programa

la sentencia seria:
printf(“%d %d %c %f, i,j,c,n);
y se visualizara en pantalla 5 12 A 40.791512
La forma general que tiene la función printf():
printf(cadena_de_control1, dato1, dato2,…..)
Cadena de control: contiene los tipos de datos y forma de mostrarlos.
Dato1,dato2…………….: variables, contantes, datos de salida.
Printf() convierte, da forma de salida a los datos y los escribe en pantalla. La cadena
de control contiene códigos de formato que se asocian uno a uno con los datos. Cada
código comienza con el carácter %, a continuación puede especificarse el ancho mínimo
del dato y termina con el carácter de conversión. Así, suponiendo que:
i = 11 j = 12 c = ‘A’ n = 40.791512
printf(“%x %3d %c %.3f, i,j,c,n); El primer dato es 11 en hexadecimal
(%x), el segundo es el numero
se visualizara en la pantalla entero 12 en un ancho de 3, le sigue
el carácter A y, por último, el
B 12 A 40.792 número real n redondeando a 3
Ejemplos: Mostrar datos en función de su tipo cifras decimales (%.3f)

char c; float f;
... ...
printf (“%c”, c); printf (“%f”, f);

int i; double d;
... ...
printf (“%d”, i); printf (“%lf”, d);

long x; long double r;


... ...
printf (“%ld”, x); printf (“%Lf”, r);

Mostrar mensajes en distintas líneas

printf (“Una línea de texto.\n”);


printf (“Otra línea de texto.\n”);

Los códigos de formatos más utilizados son:

%d El dato se convierte a entero decimal

%o El dato entero se convierte a octal

%x El dato entero se convierte a hexadecimal

%u El dato entero se convierte entero sin signo

%c El dato se considera de tipo carácter

%e El dato se considera de tipo float. Se convierte a notación científica

Informática – Año 2022 Página 12


Tema 7: Estructura general de un programa

%f El dato se considera de tipo float. Se convierte a notación decimal

%g El dato se considera de tipo float. Se convierte a según código a una notación más
corta

%s El dato ha de ser una cadena de caracteres

%lf El dato se considera de tipo double.

ENTRADA DESDE EL TECLADO CON LA FUNCIÓN SCANF


La función scanf, de la biblioteca estándar de funciones de entrada/salida <stdio.h>,
nos permite leer datos desde el teclado para suministrar datos a un programa.

La forma general que tiene la función scanf():


scanf (cadena_de_control1, Var1,var2 ,…..)
Cadena de control: contiene los tipos de datos y y si se desea su anchura.
Var1,var2 …………….: variables del tipo de los código de control
Los código de formato más comun son los ya indicados en la salida. Se pueden añadir,
como sufijo de código, ciertos modificadores como l o L. El significado es “largo”, aplicado a
float(%lf) indica tipo double, aplicado a int (%ld) indica entero largo.
int n; double x;
scanf(“%d %lf, &n &x);

La entrada tiene que ser de la forma: 134 -1.4E-4


En este caso la función scanf() devuelve n=134 x=-1.4E-4 (en doble precisión). Los
argumentos Var1,var2… de la función scanf() se pasan por dirección o referencia
pues van a ser modificados por la función para devolver los datos. Por ello necesita el
operador de dirección, el prefijo &.
scanf(“%lf, &x);
Las variables que se pasan a scanf() se transmiten por referencia para poder ser
modificadas y transmitir los datos de entrada, para ello se hace preceder de &.

Mostrar datos en función de su tipo

char c; float f;
... ...
scanf (“%c”, &c); printf (“%f”, &f);

int i; double d;
... ...
scanf (“%d”, &i); printf (“%lf”, &d);

long x; long double r;


... ...
scanf (“%ld”, &x); printf (“%Lf”, &r);

Informática – Año 2022 Página 13


Tema 7: Estructura general de un programa

Ejemplo 7.1 : Leer un número y calcular su cuadrado y la cuarta parte del mismo.

#include <stdio.h>
int num, c;
float cuar;

int main()
{
printf(" \n Calcula el cuadrado de un número y su cuarta
parte ");
printf(" \n*************************************** \n ");
printf(" \n Ingrese el Numero: ");scanf("%d",&num);
c=num*num; //hallo el cuadrado
cuar=num/4;
printf(" \n Su cuadrado es: %d \n ",c);
printf(" \n Su cuarta parte es: %.2f \n ",cuar);
printf(" \n");
return 0;
}

Ejemplo 7.2 : Escribir un programa que realice las operaciones de suma, resta, producto,
cociente y módulo de dos enteros introducidos por teclado.

#include <stdio.h>
int main()
{
signed long a, b;
signed long sum, res, pro, coc, mod;
printf("Introduzca el valor del 1er. operando ... ");
scanf("%ld",&a);
printf("Introduzca el valor del 2do. operando ... ");
scanf("%ld",&b);
// Cálculos
sum = a + b;
res = a - b;
pro = a * b;
coc = a / b;
mod = a % b;
// Mostrar resultados por pantalla.
printf("La suma es igual a %ld\n", sum);
printf("La resta es igual a %ld\n", res);
printf("El producto es igual a %ld\n", pro);
printf("El cociente es igual a %ld\n", coc);
printf("El resto es igual a %ld\n", mod);
}

Ejemplo 7.3: Repetir el mismo programa del ejemplo 7.2 para números de coma flotante.

#include <stdio.h>
int main()
{
float a, b;
float sum, res, pro, coc;
printf("Introduzca el valor del 1er. operando ... ");

Informática – Año 2022 Página 14


Tema 7: Estructura general de un programa

scanf("%f",&a);
printf("Introduzca el valor del 2do. operando ... ");
scanf("%f",&b);
// Cálculos
sum = a + b;
res = a - b;
pro = a * b;
coc = a / b;
// mod = a % b; : esta operación no está permitida
// Mostrar resultados por pantalla.
printf("La suma es igual a %f\n", sum);
printf("La resta es igual a %f\n", res);
printf("El producto es igual a %f\n", pro);
printf("El cociente es igual a %f\n", coc);
}

Informática – Año 2022 Página 15


Tema 7: Estructura general de un programa

Problemas ejemplos
Problema 1: Definir variables de tipo entera, almacenar valores por asignación y mostrar
su contenido
#include<stdio.h>

int main()
{
signed char c1=65;
printf("c1 es de tipo signed char:%c \n",c1);
unsigned char c2=160;
printf("c2 es de tipo unsigned char:%c \n",c2);
signed short int e1=32000;
printf("e1 es de tipo short int:%i \n",e1);
unsigned short int e2=64000;
printf("e2 es de tipo unsigned short int:%i \n",e2);
signed int e3=-2147483648;
printf("e3 es de tipo signed int:%i \n",e3);
unsigned int e4=4294967295;
printf("e4 es de tipo unsigned int:%u \n",e4);
signed long int e5=-2147483648;
printf("e5 es de tipo signed long int:%li \n",e5);
unsigned long int e6=2147483647;
printf("e6 es de tipo unsigned long int:%lu \n",e6);
signed long long int e7=-9223372036854775807;
printf("e7 es de tipo signed long long int:%lli \n",e7);
unsigned long long int e8=18446744073709551615;
printf("e8 es de tipo unsigned long long int:%llu \n",e8);
return 0;
}

Ejecución

Informática – Año 2022 Página 16


Tema 7: Estructura general de un programa

Problema 2: Si queremos conocer cuál es el valor máximo y mínimo para cada uno de los
tipos de datos enteros del lenguaje C podemos ejecutar el siguiente programa:
#include <stdio.h>
#include <limits.h>
/* limits.h tiene una serie de macros con los valores máximos y mínimos definidos para
nuestro compilador.*/
int main() {

printf("El minimo valor para un signed char = %i\n", SCHAR_MIN);


printf("El maximo valor para un signed char = %i\n", SCHAR_MAX);
printf("El maximo valor para un unsigned char = %i\n\n",
UCHAR_MAX);

printf("El minimo valor para un signed short int = %i\n",


SHRT_MIN);
printf("El maximo valor para un signed short int = %i\n",
SHRT_MAX);
printf("El maximo valor para un unsigned short int = %i\n\n",
USHRT_MAX);

printf("El minimo valor para un signed int = %i\n", INT_MIN);


printf("El maximo valor para un signed int = %i\n", INT_MAX);
printf("El maximo valor para un unsigned int = %u\n\n", UINT_MAX);

printf("El minimo valor para un signed long int = %li\n",


LONG_MIN);
printf("El maximo valor para un signed long int = %li\n",
LONG_MAX);
printf("El maximo valor para un unsigned long int = %lu\n\n",
ULONG_MAX);

printf("El minimo valor para un signed long long int = %lli\n",


LONG_LONG_MIN);
printf("El maximo valor para un signed long long int = %lli\n",
LONG_LONG_MAX);
printf("El maximo valor para un unsigned long long int = %llu\n\n",
ULONG_LONG_MAX);
return 0;
}

Informática – Año 2022 Página 17


Tema 7: Estructura general de un programa

Problema 3: Si queremos saber cuántos bytes se necesitan reservar para cada uno de los
tipos de variables podemos ejecutar el programa:

#include<stdio.h>

int main()
{
printf("Bytes requeridos para tipo char:
%i\n",sizeof(char));
printf("Bytes requeridos para tipo short int:
%i\n",sizeof(short int));
printf("Bytes requeridos para tipo int: %i\n",sizeof(int));
printf("Bytes requeridos para tipo lont int:
%i\n",sizeof(long int));
printf("Bytes requeridos para tipo long long int:
%i\n",sizeof(long long int));

return 0;
}

Informática – Año 2022 Página 18


Tema 7: Estructura general de un programa

Problema 4: Imprimir cuantos bytes requieren cada uno de los tipos de datos decimales
que tiene el lenguaje C.

#include<stdio.h>

int main()
{
printf("Bytes requeridos para tipo float: %i\n",sizeof(float));
printf("Bytes requeridos para tipo double: %i\n",sizeof(double));
printf("Bytes requeridos para tipo long double: %i\n",sizeof(long
double));
return 0;
}

Informática – Año 2022 Página 19


TEMA 8: ESTRUCTURA S
BASICAS: SECUENCIAL Y
SELECCION
Programación estructurada. El flujo de control. Estructura Secuencial. Estructura de
selección: simple y múltiple. Estructuras de selección anidadas.

8.1 PROGRAMACION ESTRUCTURADA

La programación estructurada es una forma de escribir programas de


computadora utilizando únicamente tres estructuras: secuencia, selección e
iteración; siendo innecesario y no permitiéndose el uso de la instrucción o
instrucciones de transferencia incondicional.
La programación estructurada surge a finales de los años 1960 con el objetivo de
realizar programas confiables y eficientes, y que además fueran escritos de manera
de facilitar su comprensión posterior.
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las
necesidades de aquellos años, por lo que se desarrollaron nuevas técnicas, tales
como la programación orientada a objetos y el desarrollo de entornos de
programación que facilitan la programación de grandes aplicaciones.
De todas formas, el paradigma estructurado tiene vigencia en muchos ámbitos del
desarrollo de programas y constituye una buena forma de iniciarse en la
programación de computadoras.
El teorema del programa estructurado, de Böhm-Jacopini, demuestra que todo
programa puede escribirse utilizando únicamente las tres instrucciones de control
siguientes:
1. secuencial (es decir, poner instrucciones en orden, una detrás de otra, y
que sean ejecutadas en ese orden)
2. selectiva/condicional (es decir, hacer una cosa en función de una
condición -con estructuras como if, o if/else)
3. repetitiva (es decir, hacer una cosa varias veces, con bucles)
Solamente con estas tres estructuras o “patrones lógicos” se pueden escribir todos
los programas y aplicaciones posibles. Si bien los lenguajes de programación
tienen un mayor repertorio de estructuras de control, éstas pueden ser
construidas mediante las tres básicas mencionadas.

Informática – Año 2020 Página 1


Tema 8: Estructuras básicas: secuencial y selección

8.1.1 EL FLUJO DE CONTROL

La expresión flujo de control hace referencia al orden en el que se ejecutarán las


instrucciones de un programa, desde su comienzo hasta que finaliza. El flujo
normal de ejecución es el secuencial. Si no se especifica lo contrario, la ejecución
de un programa empezaría por la primera instrucción e iría procesando una a una
en el orden en que aparecen, hasta llegar a la última.
Algunos programas muy simples pueden escribirse sólo con este flujo
unidireccional. No obstante, la mayor eficacia y utilidad de cualquier lenguaje de
programación se deriva de la posibilidad de cambiar el orden de ejecución según la
necesidad de elegir uno de entre varios caminos en función de ciertas condiciones,
o de ejecutar algo repetidas veces, sin tener que escribir el código para cada vez.
Con frecuencia, el programador necesita que el programa no se comporte sólo de
modo secuencial. Por ejemplo, calcular una bonificación sólo para los empleados
con más de 10 años de antigüedad, o calcular un descuento si abona en efectivo.
También puede ocurrir que interese que un grupo de instrucciones se ejecute
repetidamente hasta que se le indique que se detenga. Por ejemplo, calcular el
promedio de notas para cada uno de los alumnos de un curso, o realizar algún
cálculo con cada uno de los elementos de un vector.
Para las dos situaciones planteadas existen dos soluciones: las sentencias de
control selectivas y las repetitivas. Éstas permiten que el flujo secuencial del
programa sea modificado. También cumplen con este objetivo las sentencias
denominadas de invocación o salto.
Las sentencias alternativas también son conocidas como sentencias selectivas
porque permiten seleccionar uno de entre varios caminos por donde seguirá la
ejecución del programa. En algunos casos esta selección viene determinada por la
evaluación de una expresión lógica. Este tipo de sentencias se clasifican en tres:

Informática – Año 2019 Página 2


Tema 8: Estructuras básicas: secuencial y selección

simples: SI
dobles: SI-SINO
múltiples: SEGÚN-SEA

A las sentencias repetitivas se les conoce también como sentencias iterativas ya


que permiten realizar algo varias veces (repetir, iterar). Dentro de ellas se
distinguen:
desde
mientras
repetir – hasta – que

Las sentencias de salto o invocación permiten realizar saltos en el flujo de control


de un programa, es decir, permiten transferir el control del programa, alterando
bruscamente el flujo de control del mismo. En programación estructurada se
considera una mala práctica el uso de las condiciones de salto, ya que, entre otras
cosas, restan legibilidad al código. Sin embargo, si bien se debe evitar su uso, la
mayoría de los lenguajes las incluyen.
Las sentencias de salto o invocación son:
ROMPER
CONTINUAR
IR-A
VOLVER
VIDEO 8.1

8.2 ESTRUCTURA SECUENCIAL

Una estructura secuencial es aquella en la que una acción (instrucción) sigue a otra
en secuencia. Las tareas se suceden de tal forma que la salida de una es la entrada
de la siguiente y así sucesivamente hasta el final del proceso. La estructura
secuencial tiene una entrada y una salida. Su representación grafica es:

PSEUDOCODIGO INICIO
INICIO

<ACCION1> ACCION 1
<ACCION2>

<ACCION >
ACCION 2
FIN

ACCION n

FIN
Informática – Año 2019 Página 3
Tema 8: Estructuras básicas: secuencial y selección

8.3 ESTRUCTURA DE SELECCIÓN

Al escribir un programa muchas veces nos encontramos con ciertas condiciones


que influyen sobre la secuencia de pasos que hay que dar para resolver el
problema. En este caso estamos en presencia de una sentencia de selección o
condicional: alternativa simple

SI <expresión> ENTONCES
< acción >
FIN-SI Expresion SI Accion

NO

LA SENTENCIA IF
En C, la sentencia principal de selección es la sentencia if. La sentencia if tiene dos
alternativas o formatos posibles, el más sencillo es:
if (expresión) acciòn

Expresión lógica que determina si


la acción se ha de ejecutar
La acción se ejecuta se la expresión
lógica es verdadera

La sentencia IF funciona de la siguiente manera. Cuando un programa alcanza esta


sentencia, evalúa la expresión que esta entre paréntesis. Si la expresión es
verdadera, se ejecuta la acciòn, caso contrario no se ejecuta la acciòn y
continúa con el flujo del programa.

Informática – Año 2019 Página 4


Tema 8: Estructuras básicas: secuencial y selección

Ejemplo 8.1: Prueba de divisibilidad

Inicio
include <stdio.h>
main ()

{
int n,d;
printf (“ingresar dos numeros:”);
“ingresar dos
scanf(“%d %d”,&n,&d);
numeros” n,d
if ( n%d == 0)

{Printf (“ %d es divisible por


%d\n”,n,d);
}
d“ es divisible }
n%d si por” n

== 0

no
oo EJECUCIÓN

Ingresar dos números: 18 6


Fin 18 es divisible por 6

Ejemplo 8.2:

// detecta numeros positivos / negativos / nulos


#include <stdio.h>
#include<stdlib.h>
main ()

{
float numero;

/* comparar número introducido por usuario */


printf ("Introduzca un numero positivo o negativo ");
scanf("%f",&numero);

/* comparar numero */

if ( numero > 0)
printf (" %.2f es mayor que cero \n",numero);

if ( numero < 0)
printf (" %.2f es menor que cero \n",numero);
if ( numero == 0)
printf (" %.2f es igual que cero \n",numero);

system("pause");
return 0;
}

Informática – Año 2019 Página 5


Tema 8: Estructuras básicas: secuencial y selección

Este programa simplemente añade otra sentencia if que comprueba si el numero


introducido es menor que cero. Realmente la tercera sentencia if se añade también y
comprueba si el número es igual a cero.

SENTENCIA IF DE DOS ALTERNATIVAS: IF-ELSE

La instrucción SI-ENTONCES (if) puede ser utilizada también en casos de selección de


más de dos alternativas. El segundo formato de la sentencia if es la sentencia if-else.

SI <expresión> ENTONCES
< accion1 >
SINO
< accion2>
FIN-SI

Accion 2 NO Expresion SI Accion 1

El segundo formato de la sentencia if es la sentencia if-else.

if (expresión) acciòn1 else acciòn2

La acción2 se ejecuta se la
expresión lógica es verdadera
Expresión lógica que
determina si la acción se
ha de ejecutar
La acción1 se ejecuta se la
expresión lógica es verdadera

Cuando se ejecuta la sentencia if-else, se evalúa la expresión. Si expresión es


verdadera ejecuta acciòn1, y en caso contrario se ejecuta la acciòn2.

Informática – Año 2019 Página 6


Tema 8: Estructuras básicas: secuencial y selección

Ejemplo 8.3: Prueba de divisibilidad con dos alternativas

EJECUCIÓN

Ingresar dos números: 18 5


18 no es divisible por 5

Inicio
%

“Ingresar dos
numeros” n,d

d, “NO es divisible
d, “es divisible
por” n
NO n%d == 0 SI por” n

Fin

// prueba de divisibilidad con dos alternativas


#include <stdio.h>
#include<stdlib.h>
main ()
{
int n,d;
printf ("ingresar dos numeros enteros:");
scanf("%d %d",&n,&d);

if ( n/d == 0)
printf ("%d es divisible por %d\n",n,d);
else
printf ("%d no es divisible por %d\n",n,d);
system("pause");
return 0;
}

Informática – Año 2019 Página 7


Tema 8: Estructuras básicas: secuencial y selección

8.3.1. ESTRUCTURAS DE SELECCIÓN ANIDADAS

Según lo expresado, las estructuras de decisión simple y doble permiten seleccionar entre
dos alternativas posibles. Sin embargo, la instrucción SI-ENTONCES puede ser utilizada
también en casos de selección de más de dos alternativas. Esto es posible anidando estas
instrucciones. Es decir, una estructura SI-ENTONCES puede contener a otra, y esta a su vez
a otra.
Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a
su vez una sentencia if.
Sintaxis:
If (condición1)
Sentencia1
Else if (condicion2)
Sentencia 2
………………
Else if (condición n)
Sentencia n
Else
Sentencia n

La representación gráfica y pseudocódigo es la siguiente:

Expresion 1 SI Accion 1

SI <expresion_1> ENTONCES
< accion_1 > NO
SINO
SI < expresión_2> ENTONCES
< accion_2 > Expresion 2 SI Accion 2
SINO
SI < expresión_3>
ENTONCES NO
< accion_3 >
SINO
.....
Expresion 3 SI Accion 3
FIN-SI
FIN-SI
FIN-SI NO

Como se puede observar, el anidamiento de instrucciones alternativas permite ir


descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.
A fin de que las estructuras anidadas sean más fáciles de leer, es práctica habitual aplicar
sangría al cuerpo de cada una.

Ejemplo: Incrementar contadores de números positivos, numero negativos o ceros

Informática – Año 2019 Página 8


Tema 8: Estructuras básicas: secuencial y selección

If (x>0)

Num_pos = num_pos +1;

Else

If (x<0)

Num_neg = num_neg +1;

Else

Num_ceros = num_ceros +1;

La sentencia if anidada tiene tres alternativas. Se incrementa una de las tres variables
(num_pos, num_neg y num_ceros) en 1, dependiendo de que x sea mayor que cero,
menor que cero o igual a cero, respectivamente. Las cajas muestran la estructura lógica de
la sentencia if anidada; la segunda sentencia if es la acción o tarea falta (a continuación
de else) de la primera sentencia if.

La ejecución de la sentencia if anidada se realiza como sigue: se comprueba la primera


condición (x>0); si es verdadera, num_pos se incrementa en 1 y se salta el resto de la
sentencia if. Si la primera condición es falta, se comprueba la segunda condición (x<0) ;
si es verdadera num_neg se incrementa en uno; en caso contrario se incrementa
num_ceros en uno. Es importante considerar que la segunda condición se comprueba
solo si la primera condición es falsa.

Ejemplo 8.4: Calcular el mayor de tres numero enteros

// Calcular el mayor de tres numero enteros


#include <stdio.h>
#include<stdlib.h>
main ()
{
int a,b,c, mayor;
printf ("\nCalcular el mayor de tres numero enteros");
printf ("\nIntroduzca tres números enteros: ");
scanf("%d %d %d", &a, &b, &c);

if ( a>b)
if (a>c) mayor = a;
else mayor = c;
else

if (b>c) mayor = b;
else mayor = c;

printf ("El mayor de %d \n", mayor);


system("pause");
return 0;
}

Informática – Año 2019 Página 9


Tema 8: Estructuras básicas: secuencial y selección

Ejecución: Introduzca tres números enteros 71 54 85

El mayor es 85

Al ejecutar el primer if, la condición (a>b) es verdadera, entonces se ejecuta el segundo


if. En el segundo if la condición (a>c) es falsa, en consecuencia el primer else
mayor=85 y se termina la sentencia if, a continuación se ejecutara la última línea y se
visualiza el mayor es 85.

Informática – Año 2019 Página 10


TEMA 9: ESTRUCTURA S DE
CONTROL: BUCLES
Estructuras de repetición. Estructura mientras: Estructura hacer mientras y hacer hasta.
Estructura Desde / Para. Salidas internas del bucle. Estructuras repetitivas anidadas.

9.1 ESTRUCTURA DE REPETICION

Una de las características de las computadoras que aumentan considerablemente su


potencia es su capacidad para ejecutar una tarea muchas (repetidas) veces con gran
velocidad, precisión y fiabilidad Las tareas repetitivas es al que los humanos encontramos
difíciles y tediosas de realizar. Es acá donde estudiaremos las estructuras de control
iterativas o repetitivas que realizan la repetición o iteración de acciones. C soporta tres
tipos de estructuras de control: los bucles while, for y do-while. Estas
estructuras de control o sentencias repetitivas controlan el número de veces que una
sentencia o listas de sentencias se ejecuta.
Definición: Las estructuras que repiten una secuencia de instrucciones un número
determinado de veces se denominan bucles y se denomina iteración a la ejecución de cada
repetición.

Ejemplo

Se desea sumar una lista de números que ingresa desde teclado


(por ejemplo, edades de los alumnos de una clase). El algoritmo
debería ingresar el valor y sumarlo a una variable SUMA que
contenga las sucesivas sumas parciales.
ALGORITMO suma
INICIO
Suma=0
LEER número
Suma = suma + número
LEER número
Suma = suma + número
….
FIN

Como podemos observar, si no utilizamos alguna instrucción de repetir, el algoritmo


deberá realizar tantas lecturas y sumas como alumnos se procesen: 10, 100, 1000,...
Es evidente que el método no es óptimo, pero el ejemplo sirve para identificar las
instrucciones que se repiten. En este caso, el bucle está formado por las instrucciones:
LEER número
suma = suma + número

y la cantidad de iteraciones estará relacionada con el número de alumnos que se procesen


durante la ejecución.

Informática – Año 2019 Página 1


Tema 9: Estructuras de control: bucles

Entonces, las dos cuestiones importantes cuando se utilizan estructuras repetitivas son:
¿qué contiene el bucle? y ¿cuántas veces se repite?.
Las estructuras repetitivas se diferencian en la forma en que se produce la condición de fin
del bucle y deberá utilizarse aquella más apropiada al problema particular de que se trate.
Las más usuales son:
 mientras (while)
 desde (for)
 repetir (repeat)

9.2 ESTRUCTURA MIENTRAS (WHILE/DO..WHILE)

A veces no se conoce de antemano la cantidad de veces que será necesario repetir un


conjunto de instrucciones para solucionar el problema, o bien es conveniente que estas
instrucciones sean repetidas hasta alcanzar una determinada condición (llamada
condición de parada). En estas situaciones se emplean estructuras repetitivas como la
estructura MIENTRAS.

La condición está situada al principio del bucle y las instrucciones interiores al bucle se
repetirán mientras sea cierta la condición.

ESTRUCTURA HACER MIENTRAS

El comportamiento es el siguiente:

1) se evalúa la condición bucle


2) Si condición bucle es verdadera:
a) se ejecuta la/las
sentencia especificada
denominada cuerpo.
Falsa
Condición b) Vuelve el control al paso
1
bucle 3) En caso contrario el control se
transfiere a la sentencia siguiente al
bucle
Verdadera

sentencia

Las sentencias del cuerpo del bucle se repiten mientras que la expresión lógica (condición
del bucle) sea verdadera. Cuando se evalúa la expresión lógica y resulta falsa, se termina y
se sale del bucle y se ejecuta la siguiente sentencia de programa después de la sentencia
while.

Informática – Año 2019 Página 2


Tema 9: Estructuras de control: bucles

Sintaxis:

while (condición bucle)


sentencia; // cuerpo

while (condición bucle)


{
sentencia-1;
sentencia-2;
sentencia-3; Cuerpo

sentencia-n;
}

Ejemplo 9.1: Contar y mostrar un numero hasta 5

Pseudocódigo

inicio
contador = 0  inicializacion
mientras contador < 5  Prueba /Condición
contador = contador + 1  actualización (incrementa en 1 el contador)
mostrar “contador:” , contador
fin mientras
mostrar “terminado. Contador:”, contador Inicio

Contador = 0

Contador =
Contador < 5 SI
contador +1

NO

Terminado
“contador” ,
contador”,
/* bucle de muestra while */ contador
contador

#include <stdio.h>
#include<stdlib.h>
main () Fin
{
int contador = 0; /* inicializa la condición*/
while (contador < 5) /* condición de prueba*/
{
contador ++; /*cuerpo del bucle */
printf("contador: %d \n", contador);
}
printf("Terminado. Contador: %d \n ", contador);
system("pause");
return 0;
}

Informática – Año 2019 Página 3


Tema 9: Estructuras de control: bucles

ESTRUCTURA HACER HASTA


La estructura Hacer-Hasta (do-while) se utiliza para especificar un bucle condicional
que se ejecuta al menos una vez. Se emplea cuando se tiene la seguridad de que una
determinada acción se ejecutará una o varias veces, pero al menos una vez.

El comportamiento es el siguiente:

1) se ejecuta la sentencia
sentencia 2) Si condición bucle es verdadera vuelve a
ejecutar la sentencia. Cuerpo del bucle.

3) En caso contrario el control se transfiere


a la sentencia siguiente al bucle

Verdadera
Condición

bucle

Falsa

La construcción do comienza ejecutando sentencia. Se evalúa a continuación


expresión. Si expresión es verdadera, entonces se repite la ejecución de sentencia.
Este proceso continua hasta que expresión es falsa. La semántica del bucle do se
representa gráficamente en el diagrama anterior

Sintaxis:

Do
sentencia /*la sentencia se ejecuta al menos una vez */

while (condición bucle) /*expresión lógica que determina si la acción se repite*/

Ejemplo 9.2: Bucle para introducir un digito

Pseudocodigo

inicio
Hacer
Mostar “introducir un digito de 0 a 9”
Leer digito
mientras digito > 0 and digito < 10
fin

Codigo C
#include <stdio.h>
main ()

do
{

Informática – Año 2019 Página 4


Tema 9: Estructuras de control: bucles

Printf (“introduzca un digito (0 – 9)”; /* cuerpo del


bucle*/
scanf (“%c”,&digito);
}
while ((digito > 0) and (digito <10);

Este bucle se realiza mientras se introduzcan dígitos y se termina cuando se introduzca un


carácter que no sea un digito de 0 a 9

Ejecución

introduzca un digito (0 – 9)
2
introduzca un digito (0 – 9)
4
introduzca un digito (0 – 9)
8
introduzca un digito (0 – 9)
10

Una sentencia hacer hasta (do-while) es similar a la sentencia hacer mientras (while)
excepto que el cuerpo del bucle se ejecuta siempre al menos una vez. (Figura presentada
en tema 8.1)

Ejemplo 9.3: visualizar las potencias de 2 cuyos valores estén en el rango de 1 a 1.000

Realizado con while Realizado con do-while

potencia = 1; potencia = 1;
while (potencia < 1000) do
{ {
printf (%d \n”, potencia); printf (%d \n”, potencia);
potencia *= 2; potencia *= 2;
} /* fin del while*/ } while (potencia < 1000)

Informática – Año 2019 Página 5


Tema 9: Estructuras de control: bucles

9.3 LA ESTRUCTURA DESDE/PARA (FOR)

Cuando se conoce exactamente la cantidad de veces que es necesario repetir una


instrucción, la estructura más apropiada para expresarlo como algoritmo es la estructura
PARA.

La estructura para (bucle for) es un método para ejecutar un bloque de sentencias un


número fijo de veces. El bucle for se diferencia del bucle while en que las operaciones
de control del bucle se sitúan en un solo sitio: la cabecera de la sentencia.

La estructura PARA en forma general es:

PARA variable DESDE inicial HASTA final [INCREMENTO incremento]


SENTENCIAS
[…]
SENTENCIAS
FIN-PARA

Donde:
variable es el nombre de una variable de tipo numérico, en particular entero,
definida en el programa, cuyos valores se irán modificando en cada repetición. Es
común utilizar como nombre de esta variable i, que proviene de la palabra índice
(index en inglés), y si se utilizan varias instrucciones PARA, emplear las letras
siguientes del abecedario: j, k, l.

inicial es el valor que toma la variable en la primera repetición.

final es el valor que toma la variable en la última repetición.

incremento es el incremento que recibirá la variable entre repeticiones, es decir, el


valor que se le sumará a variable cada vez que se termine una repetición y antes de
iniciar la siguiente. Si se omite, se considera que vale 1. También puede tomar
valores negativos.

Inicial

sentencias

Falso
Condición
de fin incremento

Verdadero

Informática – Año 2019 Página 6


Tema 9: Estructuras de control: bucles

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 9.

Una forma de resolver este problema es sencillamente mostrar los números solicitados:

INICIO
ESCRIBIR 2
ESCRIBIR 4
ESCRIBIR 6
ESCRIBIR 8
FIN

Pero esta solución se vuelve larga y tediosa si hay un pequeño cambio en la solicitud, por
ejemplo:

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 99.

INICIO
ESCRIBIR 2
ESCRIBIR 4
[…]
ESCRIBIR 96
ESCRIBIR 98
FIN

Se dijo que la computadora es muy hábil para repetir tareas sencillas, como la del
problema. Cuando se necesita que la computadora repita una operación, con una pequeña
variación cada vez, se deben identificar las condiciones para la repetición, y expresar esta
variación de una forma comprensible para la máquina.

En este caso, lo que se desea es una secuencia de números pares, que van desde 2 hasta 98.
Estos números pueden expresarse como 2 x k, siendo k un entero que varía entre 1 y 98/2
= 49.

Cuando se conoce exactamente la cantidad de veces que es necesario repetir una


instrucción, la estructura más apropiada para expresarlo como algoritmo es la estructura
PARA. En este caso se puede escribir:

INICIO
PARA k DESDE 1 HASTA 49
ESCRIBIR k * 2
FIN-PARA
FIN

Otra opción sería:

INICIO
PARA i DESDE 2 HASTA 98 INCREMENTO 2
ESCRIBIR i
FIN-PARA
FIN

Informática – Año 2019 Página 7


Tema 9: Estructuras de control: bucles

Si ahora se solicita:

Problema: Se desea un programa que muestre en pantalla los números pares entre 1 y 200.

la solución mantiene su sencillez de expresión:

INICIO
PARA i DESDE 2 HASTA 200 INCREMENTO 2
ESCRIBIR i
FIN-PARA i=2
FIN

Falso
i = 200
i=i+2

Verdadero

La sintaxis en lenguaje C

Expresión lógica que


determina si las
sentencias se han de
ejecutar mientras sea
verdadera
Inicializa la
variable de
For (Inicializacion; condicionIteracion; incremento)
control del
bucle
Sentencias
Incrementa o
decrementa la variable
Sentencias a ejecutar de control del bucle
en cada iteración del
bucle

Ejemplo en C

include <stdio.h>
main ()
int i;
for (i = 2; i<200; i+=2);
printf i;

Informática – Año 2019 Página 8


Tema 9: Estructuras de control: bucles

COMPARACION ENTRE BUCLES : WHILE, DO-WHILE Y FOR


C proporciona tres sentencias para el control de bucles: while, for y do-while. El
bucle while se repite mientras su condición de repetición del bucle es verdadero; el bucle
for se utiliza normalmente cuando el conteo esté implicado, o bien el número de
iteraciones requeridas se pueda determinar al principio de la ejecución del bucle, o
simplemente cuando exista una necesidad de seguir el número de veces que un suceso
particular tiene lugar. El bucle do-while se ejecuta de modo similar a while excepto
que las sentencias del cuerpo del bucle se ejecutan siempre al menos una vez.
Ver tabla. Joyanes 193

VIDEO 8.1

9.5 ESTRUCTURAS REPETITIVAS ANIDADAS

En un algoritmo puede existir y es muy frecuente que existan 2 o más bucles.


Dependiendo de la forma en que estén dispuestos, estos pueden ser anidados o
independientes. Decimos que los bucles están anidados cuando están dispuestos de forma
tal que unos son interiores a otros; y los bucles serán independientes cuando son extremos
unos con otros.

Así como se podían anidar estructuras de selección, también es posible insertar un bucle
dentro de otro. Las reglas para construir estructuras repetitivas anidadas son iguales en
ambos casos: la estructura interna debe estar incluida totalmente dentro de la externa y
no puede existir solapamiento.

La figura nos representa en forma esquemática las instrucciones repetitivas anidadas


prohibidas y permitidas:

P E R M IT ID A S Y P R O H IB ID A S

IN D E P E N D IE N T E S A N ID A D A S N ID O S C R U Z A D O S

S A L IR D E L B U C L E ENTRAR AL BUCLE

Informática – Año 2019 Página 9


Tema 9: Estructuras de control: bucles

Ejemplo 9.4

El segmento de programa siguiente visualiza una tabla de multiplicación por calculo y


visualización de productos de la forma x*y para cada x n el rango de 1 a xultimo y
desde cada y en el rango de 1 a yultimo (donde xultimo y yultimo son enteros
prefijados). La tabla que se desea obtener es:

1*1=1
1*2=2 for (x = 1;x <=xultimo; x++)
1*3=3
1*4=4
{ for (y = 1;y <=yultimo; y++)
1*5=5
2*1=2
{
2*2=4 int producto;
2*3=6 producto= x * y;
2*4=8 printf("%d * %d = %d \n", x,y,producto);
2 * 5 = 10 }
….. }

Bucle
interno
Bucle
externo

El bucle que tiene x como variable de control se denomina bucle externo y el bucle que
tiene y como variable de control se denomina bucle interno.

//tabla de multiplicar ...


#include <stdio.h>
#include<stdlib.h>
main ()
{
int tabla, numero;

for (tabla=1; tabla<=10; tabla++)


{for (numero=1; numero<=10; numero++)
printf("%d por %d es %d\n", tabla, numero, tabla*numero);
printf ("\n ");
}
system("pause");
return 0;
}

Informática – Año 2019 Página 10


Informatica
TEMA 10: ESTRUCTURAS DE DATOS COMPUESTA

Definición y concepto. Arreglos. Declaración, subíndices. Arreglos unidimensionales y


bidimensionales. Tratamiento de vectores y matrices.

FA.CE.NA. 2019
Tema 10: Estructura de datos compuesta
Repaso

programación = estructura de datos + algoritmos

Estructuras de control: Repetitiva

While
do while
for

Estructura de datos

Simple
Compuesta
Tema 10: Estructura de datos compuesta

10.1 Definición y concepto

En programación, una estructura de datos es una forma de


organizar un conjunto de datos elementales con el objetivo de
facilitar su manipulación.

A diferencia de las estructuras simples de datos, los compuestas se


pueden romper en subcampos que tengan significado.

En algunas ocasiones los datos compuestos se conocen también


como datos o tipos agregados. Los tipos agregados son tipos de
datos cuyos valores constan de colecciones de elementos de datos.

Existen tres tipos agregados básicos:


- Arreglos (vectores y matrices)
- Registros
- Secuencias de texto o cadenas.
Tema 10: Estructura de datos compuesta

10.1 Definición y concepto


Entero
Real
Datos Simples ESTÁNDAR
Caracteres
Lógico
Vectores y Matrices
Registros
ESTÁTICAS Archivos

Pilas
Datos compuestos Colas
Lineales
Listas Enlazadas
DINÁMICAS
Arboles
No lineales Grafos

Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en
memoria se define antes que el programa se ejecute y el mismo no puede ser
modificado durante la ejecución. En cambio las estructuras de datos dinámicas no
tienen limitaciones en cuanto al tamaño de memoria ocupada. Para utilizar este tipo de
estructuras necesitamos usar un tipo de dato específico llamado puntero.

Los tipos de datos que vimos hasta ahora son datos simples cuya característica común
es que cada variable representa a un elemento; en cambio los tipos de datos
estructurados tienen como particularidad que con un nombre o identificador se
puede representar múltiples datos individuales y a su vez cada uno de estos
puede ser referenciado independientemente.
Tema 10: Estructura de datos compuesta

10.2 Arreglos

Un arreglo es una estructura, es decir es un conjunto de variables que se citan y manejan con un mismo
nombre, y que permite además la utilización individual de sus elementos. (Joyanes, 2008).
Arreglos se define como una colección finita, homogénea y ordenada de elementos.

Finita: Todo arreglo tiene un límite, es decir, debe determinarse cual será el número máximo de
elementos que podrán formar parte del arreglo.

Homogénea: Todos los elementos de un arreglo son del mismo tipo o naturaleza (todos enteros, todos
booleanos, etc.), pero nunca una combinación de distintos tipos.

Ordenada: Se debe determinar cuál es el primer elemento, el segundo, el tercero..... y el enésimo


elemento.

ARREGLO

1º ELEMENTO 2º ELEMENTO N - ELEMENTO


Tema 10: Estructura de datos compuesta

10.2 Arreglos
Nombre del arreglo: Números [5]

Elemento 12 3 6 8 5
Índice 0 1 2 3 4

Si un arreglo tiene la característica de que puede almacenar a N elementos del mismo


tipo, deberá tener la posibilidad de permitir seleccionar a cada uno de ellos.

Así se distinguen dos partes en los arreglos.

• Los componentes o elementos (valores que se almacenan en c/u de las casillas)


El tipo de los componentes puede ser cualquiera (entero, real, caracteres, registro,
etc.)
• Los índices (Permiten hacer referencia a los componentes)

En lenguaje C se utilizan [ ] para indicar el índice de un arreglo. Entre los [ ] se debe


escribir un valor ordinal (puede ser una variable, una constante o una expresión que dé
como resultado un valor ordinal)
Tema 10: Estructura de datos compuesta

10.2.1 Declaración, subíndices


DECLARACION
Al igual que con cualquier tipo de variable, se debe declarar un array antes de utilizarlo.
Un array se declara de modo similar a otros tipos de datos, excepto que se debe indicar al
compilador el tamaño o longitud del array.
En pseudocodigo seria: Leer numeros(i) Numeros(i)

i=1an

La sintaxis para declarar el arreglo en Lenguaje C es:


Tipo nombreArray [ numerodeElementos ];

Un array de 5 variables enteras seria:


int números [5];

Esta declaración hace que el compilador reserve espacio suficiente para contener a 5 valores enteros. En
C los enteros ocupan, normalmente 2 bytes, de modo que un array de diez enteros ocupa 10 bytes de
memoria.
Un array de enteros se almacena en bytes
12 3 6 8 5 consecutivos de memoria. Cada elemento
[0] [1] [2] [3] [4] utiliza dos bytes. Se accede a cada elemento
de array mediante un índice que comienza
en cero. Así, el elemento quinto del array
ocupa los bytes 9 y 10. (ver tema 5. Numero
enteros)
Tema 10: Estructura de datos compuesta

10.2.1 Declaración, subíndices


DECLARACION

También se puede acceder a cada elemento del array utilizando un índice en el nombre del
array. Por ejemplo:
printf (“%d \n”, números [4];

Visualiza el valor del elemento 5 del array. Los array siempre comienzan en el elemento 0.

Si por ejemplo, se quiere crear un array de números reales y su tamaño es una constante
representada por un parámetro
#define N 5
float numeros[N]

para acceder al elemento 3 y leer un valor de entrada:

scanf (“%f “, &numeros[2]);


Tema 10: Estructura de datos compuesta

10.2.1 Declaración, subíndices


SUBINDICES

El índice de un arreglo se denomina, subíndice del array. El término procede de las


matemáticas, en las que un subíndice se utiliza para representar un elemento
determinado.
Números0 equivale a números[0]
Números4 equivale a números[4]

Utilizamos el método indexación basada en cero. Su uso tiene el efecto de que el índice
de un elemento del array es siempre el mismo que el número de “pasos” desde el
elemento inicial a[0] a ese elemento. Por ejemplo, a[3]está a 3 pasos o posiciones del
elemento a[0].

Ejemplos
int edad [5] Array edad contiene 5 elementos: el primero
edad [0] y el ultimo edad [4].
int pesos [25], longitudes [15] Declara 2 array enteros

char letras[30] Declara 1 array de caracteres


Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


En cuanto a las dimensiones los arreglos pueden ser:
• Unidimensional o vector: un solo índice
• Bidimensional o matriz: dos índices
• Multidimensional: más de dos índices

Según la dimensión varia la declaración de los arreglos, pero las operaciones serían las
mismas. A continuación vemos el tratamiento de operaciones con arreglos según su
dimensión
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Lectura / escritura
Recorrido
Asignación
Actualización (Añadir, eliminar, insertar)
Ordenación
Búsqueda
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Lectura / escritura

El proceso de lectura /escritura de un arreglo se realiza de la siguiente manera:

Leer V[i] Lee todo el arreglo


Escribir V[i] Escribe todo el arreglo
Leer V[3] Lee el elemento 3 del arreglo

Si se desea leer los 30 elementos de un vector en forma consecutiva


se deberá hacer de la siguiente manera

Leer V(1) Leer


Leer V(2) V(1)

Leer V(3)
Leer V(..)
Leer V(.30) Leer
V(2)

..................

Leer
V(30)

Pero de esta forma resultaría poco práctico, por lo tanto debemos Leer V(i) i = 1 a 30

usar la siguiente notación para realizar la lectura / escritura de un


arreglo.
Este proceso es válido también para escritura, simplemente se
debe especificar dentro del símbolo la acción a realizar, en este caso Escribir V[i].
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Recorrido

Recorrer un vector significa acceder a todos y a cada uno de sus elementos desde el
principio hasta el final o viceversa.
Se puede acceder a los elementos de un vector para introducir datos (leer) en él o bien para ver
su contenido (escribir).

Esta operación se realiza usando estructuras repetitivas, cuya variable de control i, se utiliza como
subíndice del vector (por ejemplo V[i]). El incremento del contador del bucle producirá el
tratamiento sucesivo de los elementos del vector.
Tema 10: Estructura de datos compuesta
Repaso

La sintaxis en lenguaje C

Expresión lógica que


determina si las
sentencias se han de
ejecutar mientras sea
verdadera

for (Inicializacion; condicionIteracion; incremento)


….
Sentencias
Inicializa la ….. Incrementa o decrementa
variable de la variable de control del
control del bucle
bucle Sentencias a ejecutar
en cada iteración del
bucle

Ejemplo: for (i=0;i < 30; i++)


Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Recorrido Comienzo

Ejemplo 10.1 : Sumar los 30 elementos de un vector V.


SUMA = 0

#include <stdio.h>
#include<stdlib.h>
main ()
{
int vector [30]; Leer
V(i) i = 1 a 30
int i,sumavector;

for (i=0;i < 30; i++)


{
printf("Ingrese el elemento %d :", i);
scanf("%d", &vector[i]); I=1
}
for (i=0;i < 30; i++)
sumavector=sumavector+vector[i];
SUMA = SUMA + V(i)
printf("Suma total del vector %d", sumavector);
system("pause");

I = 30 No I = I +1

SI

Parar
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Asignación

En general no es posible asignar directamente un valor a todo el arreglo; se debe asignar el valor
deseado a cada componente usando la instrucción de asignación, recordando que la asignación
coloca el nuevo contenido en la variable destruyendo el valor anterior. (visto en tema 5)
15 à V[20] o V[20] = 15 asigna el valor 15 al elemento 20 del vector V
Si se quiere asignar valores a todos los componentes del vector, se debe recurrir a las estructuras
repetitivas. Por ejemplo, si se desea poner en cero al vector V[30] la solución se muestra en la
figura. C o m ie n zo

También se puede asignar una


I=1
variable tipo arreglo a otra
exactamente del mismo tipo.
A(I) à V(I) o V(I) = A(I)
V (i) = 0

I = 30 No I = I +1

SI

P a ra r
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Actualización

Muchas veces resulta interesante que dado un arreglo, puedan añadirse elementos o eliminar o
cambiar componentes. Estas resultan las tres operaciones elementales que se pueden realizar en
un arreglo: añadir, eliminar o modificar elementos.
Cuando se realiza una operación de añadir un nuevo elemento a continuación del último valor no
nulo, la única condición necesaria para esta operación es comprobar que haya espacio para el
nuevo elemento.
Ejemplo: Dado un vector C de 8 elementos que contiene una nómina de 5 direcciones de correo
ordenadas alfabéticamente. Se desea añadir la dirección valeria@server.com
alicia@server.com alicia@server.com Comenzar
1 1

2 castor@server.com castor@server.com 2

3 daniel@server.com daniel@server.com 3
C(I) I =1a8
4 marta@server.com marta@server.com 4

5 sonia@server.com sonia@server.com 5

6 valeria@server.com 6 C(6) ="valeria@server.com"

7 7

8 8 Parar
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Actualización

Muchas veces resulta interesante que dado un arreglo, puedan añadirse/cambiar elementos o
eliminar o insertar componentes. Estas resultan las tres operaciones elementales que se pueden
realizar en un arreglo: añadir, eliminar e insertar elementos.
Cuando se realiza una operación de añadir un nuevo elemento a continuación del último valor no
nulo, la única condición necesaria para esta operación es comprobar que haya espacio para el
nuevo elemento.
Ejemplo: Dado un vector C de 8 elementos que contiene una nómina de 5 direcciones de correo
ordenadas alfabéticamente. Se desea añadir la dirección valeria@server.com
alicia@server.com alicia@server.com Comenzar
1 1

2 castor@server.com castor@server.com 2

3 daniel@server.com daniel@server.com 3
C(I) I =1a8
4 marta@server.com marta@server.com 4 Con la simple
instrucción de
asignación se
5 5
añaden los
sonia@server.com sonia@server.com elementos.

6 valeria@server.com 6 C(6) ="valeria@server.com"

7 7

8 8 Parar
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Actualización

Insertar un elemento es una operación que consiste en introducir dicho elemento en el interior del
vector, en una posición i dada, de forma tal que los elementos ubicados en las siguientes
posiciones sean desplazados a las posiciones i + 1 respectivas.
La operación de eliminar un elemento al final del arreglo no presenta ningún problema; en
cambio, si el borrado se realiza en el interior del mismo esto provoca el efecto contrario al de
insertar, el movimiento deberá ser hacia arriba (i-1) de los elementos inferiores a él para
reorganizar el vector.
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
Actualización
alicia@server.com alicia@server.com Comenzar
1 1
Ejemplo: Tomamos el vector C del
ejemplo anterior, pero en este caso 2 castor@server.com castor@server.com 2
se desea eliminar del arreglo el
elemento
4. 3 daniel@server.com daniel@server.com 3
C(I) I=1a8
4 marta@server.com pascual@server.com 4

5 pascual@server.com sonia@server.com 5

6 sonia@server.com valeria@server.com 6 I=4

7 valeria@server.com 7

8 8 C(I) = C(I+1)

I=8 No I=I+1

Si

Parar
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


10.3.1 Tratamiento de vectores y matrices.
I n ic io
Búsqueda

Consiste en encontrar elemento/s dentro de un 0 --> N U L O S

arreglo
Ejemplo 10.2: Dado un arreglo A de 100 elementos, L e e r
A (I)
I= 1 ,1 0 0
averiguar e informar cuantos elementos nulos posee.
Imprimir el arreglo.
A v e r ig u a s i e l
e le m e n t o e s c e r o
1 --> I

Pseudocódigo
Comenzar
NULOS = 0 A (I) = 0 S i N U L O S = N U L O S + 1

Leer A(I)
Para I desde 1 hasta 100 N o

Si A(I) = 0
entonces NULOS = NULOS + 1 I = 1 0 0 N o I = I + 1

fin_si
fin_para S i T e r m in a
v e c to r
d e re c o rre r e l
e in f o r m a e l

Imprimir “Total nulos” NULOS " T o t a l d e n u lo s "


N U L O S
to ta l d
n u lo s
e e le m e n t o s
e n c o n tra d o s

Imprimir “Vector “ A(I)


Parar
Im p r im e e l v e c t o r d e
u n a s o la v e z
"V e c to r A "
A (I) I= 1 ,1 0 0

F in
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


Matrices

Un arreglo de dos dimensiones, también denominada matriz, se define como una tabla de tablas, o vector de
vectores, es decir, es aquella en la cual uno de sus elementos es, a su vez, una tabla unidimensional.

Podemos comparar una matriz con una hoja de papel cuadriculado en la que cada cuadrícula
corresponderá a un elemento.
Columna 1 Columna 2 Columna 3 Columna 4

En este gráfico podemos observar que cada fila está dividida en


Fila 1 varias columnas. Por lo tanto, para poder referenciar un elemento
de la matriz, hay que especificar el nombre de la misma (igual que
con los vectores) y, entre paréntesis, dos subíndices separados
por coma; el primero indicará la fila en la que se encuentra el
Fila 2 12
elemento y el segundo la columna.

Fila 3

Por lo tanto, si suponemos que la matriz representada se llama MAT, el casillero con el número 12
corresponderá al elemento ubicado en la fila 2 columna 3 y se lo representa como MAT(2,3).
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


Matrices

Se define una matriz, como un conjunto de elementos ordenados en filas y columnas. Una matriz es un arreglo
bidimensional con ordenados por filas (i) y columnas (j).

Si generalizamos, MAT(i,j) sería el elemento correspondiente a la fila i columna j.


El caso anterior, representado en forma matricial sería como muestra la figura.

Donde la matriz llamada MAT tiene filas que varían de 1 a 3 y columnas que varían de 1 a 4, por lo tanto
diremos que la matriz MAT tiene 3 x 4 elementos.
1 2 3 4
I = 1...3
J = 1....4 1

Si generalizamos el rango, resultaría:


I = 1...M
J = 1....N 2 MAT(I,J)

Y diremos que la matriz MAT tiene M x N elementos.


Existen N elementos en cada fila y M elementos en cada columna.
3

El resultado de multiplicar la cantidad de filas por cantidad de columnas es el tamaño de la matriz. En


nuestro ejemplo anterior el tamaño es de 12 (3 x 4).
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


Recorrido de una matriz

Como vimos anteriormente, recorrer una tabla de dos dimensiones significa acceder a todos y a cada uno de
sus elementos. Este proceso de recorrer la matriz se llevará a cabo mediante la estructura repetitiva anidada.

El recorrido de los elementos de la matriz se puede realizar por fila o por columna (ver figura). Para
recorrer por fila la matriz MAT se debe realizar dos estructuras repetitivas anidadas. En la primera de ellas
(las más externa) se realizan tres iteraciones para recorrer las 3 filas. En cada una de esas iteraciones, se
realizará a su vez 4 iteraciones para recorrer los 4 elementos de cada columna.

Sentido en que se Sentido en se recorre


recorre una matriz por una matriz por
fila columna
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


Recorrido de una matriz
Ejemplo Temperatura
Máxima
Temperatura
Máxima
Temperatura
Máxima
Temperatura
Máxima
Supongamos que tenemos una matriz que contiene de los doce meses 01
1 2 3 4

del año las 4 temperaturas máximas de cada mes T(12, 4) y se desea enero
30 31 33 30
imprimir los datos.
02
febrero

Si deseamos imprimir los datos por mes (fila de la matriz) debemos 29 31 30 30

recorrer la misma por fila de forma tal que por cada fila debemos 03
marzo
recorrer las 4 columnas de la misma. Pero como la matriz tiene 12 filas, 22 24 24 23

este proceso se repite 12 veces – uno por cada fila – y de esta manera
formamos dos ciclos anidados. Uno más externo – fila - que se repite 12 04
abril

veces y uno mas interno – columna – que por cada fila se repite 4 25 23 24 24

veces. ............... ........................ ............................ ......................


12
diciembre
28 26 29 30

Entonces, recorrer esta matriz consistirá en:


POR CADA FILA DEBO
12 FILAS 4 COLUMNAS
RECORRER LAS • Posicionarse en la primer fila (I=1) y recorrer todas sus
CUATRO COLUMNAS
DE LA MATRIZ columnas (desde J=1 hasta J=4).
• Posicionarse en la segunda fila (I=2) y volver a recorrer,
nuevamente, todas sus columnas (desde J=1 hasta J=4).
• Repetir estas operaciones para cada valor de I hasta que se
hayan realizado para la última fila, es decir para I=12.
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


Recorrido de una matriz
Recorrido por fila por columna
Comenzar
Comenzar

T(i
,j) T(i,j)

i=1 j=1

j=1 i=1

Ciclo de i
T (i,j) Ciclo de j T (i,j)
Ciclo de j
Ciclo de i

j=4 j=j+1 i= N i=i+1


12 O

S
i= j= I N
i=i+1 j=j+1
12 4 O

S
parar parar I
Tema 10: Estructura de datos compuesta

10.3 Arreglos unidimensionales y bidimensionales


Recorrido de una matriz
Ejemplo10.4:
Generar una matriz de M (3x3) de 9 elementos enteros, luego recorrer y mostrar por pantalla cuales fueron
sus elementos.
#include<stdio.h>
#include<stdlib.h>
int matriz[3][3];
int i,j;
main()
{
for (i=0;i < 3; i++)
{
for (j=0;j < 3; j++)
{
printf("Ingrese el elemento de la fila %d , columna %d:", i,j);
scanf("%d", &matriz[i][j]);
}
}
for (i=0;i < 3; i++)
{
for (j=0;j < 3; j++)
{
printf("El elemento de la fila %d , columna %d: ", i,j);
printf(" es: %d \n", matriz[i][j]);
}
}
system("pause");
}
Tema 10: Estructura de datos compuesta

Conclusiones

programación = estructura de datos + algoritmos


1. Esta fórmula la fuimos viendo en temas anteriores, con estructuras de
datos simples y ahora estructuras compuestas – Arreglos.
2. ARREGLOS: tema conocido desde la matemática, se refrescaron
concepto del mismo y se llevo su escritura para el campo informático,
algoritmos, con su lenguaje de programación y la sintaxis
correspondiente.
3. Conocimos un vector, sus partes (componente e índice) la forma en que
un algoritmo y lenguaje de programación lo trabaja.
4. Entonces, manipulear una matriz fue tarea sencilla porque nos nutrimos
de 2 conceptos previos: Vector y anidamiento (tema 9)
5. Trabajar con matriz es como trabajar con 2 vectores anidados.
6. Ejemplo codificado y ejecutado.
Tema 10: Estructura de datos compuesta

Bibliografía

Ampliación del Tema

Apuntes de cátedra. Aula virtual

[Luis Joyanes Aguilar] Programación en C. Metodologías, estructura de datos y


objetos. Mac Graw Hill. ISBN: 84-481-3013-8. Edición 2001
[Luis Joyanes Aguilar] Fundamentos de programación. Mac Graw Hill.
Segunda edición (2008)

También podría gustarte