Está en la página 1de 18

Unidad 2

Sistema de Computación

Sistema de Computación 1
Partes de un sistema de computación 1
Hardware 1
Software 1
Peopleware 2
Programa de computación 2
Sistemas operativos 3
Tecnología de computadoras - Breve reseña 3
Programas de Usuario 5
Entrada 5
Procesamiento 5
Salida 6

Lenguaje de programación 7

Aprendiendo a programar 8
Distintos tipos de sentencias 8
Órdenes 8
Condicionales 9
Repeticiones 11
Bloques 11
Resumen 12

Pensamiento computacional 12
Análisis y comprensión del problema 12
Elaboración de la solución 13
Verificación de la solución 13

Conclusión 15

Ejercicios 16

Referencias 17
Unidad 2 - Sistemas de Computación

Sistema de Computación
En esta unidad se introducen los conceptos generales de la computación. Es un conjunto de
contenidos netamente teóricos, pero su conocimiento sirve de base conceptual para las
siguientes unidades.

Partes de un sistema de computación


Por definición un sistema [1] es un objeto complejo cuyas partes o componentes se
relacionan con al menos alguno de los demás componentes. Ejemplo de sistemas son:
Sistema planetario: Los planetas se afectan unos a otros por la gravedad y estos con el Sol.
Ecosistema: Un conjunto de especies animales y vegetales interactuando en un
determinado ambiente.
Entonces, ¿ qué es un sistema de computación? Se puede decir que es un sistema donde
interactúan Hardware, Software y personas (peopleware) [2].

Hardware
Sencillamente es lo que podemos tocar, lo que existe físicamente. Un
monitor, un teclado, mouse, pendrive, teléfonos, tablet, etc.

Software
Son los programas que existen dentro de las computadoras. Son ejemplos
de software:
● Sistemas operativos: Windows, Linux, Unix, etc.
● Aplicaciones: Navegadores, como el Edge, Firefox, etc.
● Juegos
● Cualquier otro programa.

1
Unidad 2 - Sistemas de Computación

Peopleware
Finalmente las personas. ¿Qué sería de un sistema de computación sin las
personas? Los sistemas computacionales son realizados por personas, y
para las personas. En este sentido, se comprende por peopleware a:
● Desarrolladores. Tanto individuales como todo lo relativo a los
equipos, su gestión, comunicación, organización
● Usuarios. Usuarios finales del sistema
Cuando un sistema está caído sus usuarios tienen consecuencias, se fastidian, se enojan.
También se producen pérdidas económicas, y hasta pueden producirse pérdidas de vidas
humanas, por fallos de software principalmente. Desarrollar software tiene sus implicancias
y debe comprenderse su alcance y posibles efectos, y tomarse con la mayor
responsabilidad posible.
Recordemos siempre que eventualmente todos somos usuarios de algún sistema
En las carreras de TUARI y TUDAI nos centramos principalmente en el software, pero sin
dejar de conocer el hardware y atentos a las expectativas de los usuarios.

Programa de computación
Un programa de computación es una secuencia de instrucciones escrita en algún lenguaje,
de manera que la computadora pueda entenderla. El lenguaje que naturalmente entiende la
computadora es muy complejo (se escribe en bytes), se llama lenguaje máquina, y
desarrollar programas en lenguaje máquina es prácticamente imposible, por lo tanto existen
lenguajes que se parecen un poco más a la forma de hablar de las personas, y hay
programas que traducen estos últimos a lenguaje máquina. Se llaman compiladores. De
esta forma para hacer programas no necesitamos escribir en lenguaje máquina, sino en
lenguajes que el compilador pueda traducir correctamente al lenguaje máquina. A
continuación veremos un tipo de programa particular, diseñado para interactuar solo con la
computadora: el sistema operativo. Más adelante veremos otros tipos de programas.

2
Unidad 2 - Sistemas de Computación

Sistemas operativos
Un sistema operativo es un programa particular, sin el cual la computadora no puede
funcionar. Este programa gestiona los recursos de la computadora y se los provee
organizadamente a los otros programas. Por ejemplo, si un programa necesita crear un
archivo en el disco, le pide al sistema operativo que lo haga. Si necesita mostrar algo en
pantalla, le indica al sistema operativo, y es este el que le indica a la placa gráfica que lo
muestre.
Si lo pensáramos como los componentes de una casa, son los cimientos, por eso se gráfica
como el nivel más básico de programa que debe existir, y sobre él se montan otros
programas.

Tecnología de computadoras - Breve reseña


Inicialmente las computadoras eran máquinas destinadas a las empresas o entes
gubernamentales, como municipios, o el ejército. Pero en 1980, la empresa IBM, decidió
crear una computadora que fuera única para cada persona (Personal Computer) y la
denominó PC. Estas computadoras fueron evolucionando hasta las computadoras que
tenemos actualmente, con mejores procesadores, más memoria y más disco. Desde su
salida al mercado y con alguna excepción, mayormente se distribuían con el sistema
operativo de Microsoft, el cual evoluciona hasta
el Windows actual. Hace unos 20 años tratando
de romper con este monopolio surgió otra
variante de sistema operativo que funciona en
estas PC, se llama Linux, es gratuito y tiene
muchas variantes, como pueden ser Ubuntu,
Fedora, Debian, Red-Hat, y otros. La diferencia
que podemos notar es que los programas que
funcionan en Windows no funcionan en Linux, y viceversa (salvo por el uso de emuladores).

3
Unidad 2 - Sistemas de Computación

Además de las PC, existen, mas o menos desde la


misma época, las Apple (de la empresa Apple
Inc.). Estas necesitan otro tipo de sistema
operativo, genéricamente MacOS. Obviamente
tampoco los programas de MacOS funcionan en
PC, sin importar si usan Windows o Linux.
Existen diversos sistemas operativos, por ejemplo
para PC, el más conocido es Windows, de la empresa Microsoft. Existe desde hace muchos
años y tiene muchas variantes Linux. Finalmente podemos hablar de
los SmartPhones o teléfonos inteligentes. Estos dispositivos son
verdaderas computadoras portátiles, y por ende tienen un sistema
operativo.
Los iPhone, de la empresa Apple Inc., utilizan iOS, mientras que los
restantes (tecnología ARM) utilizan mayormente Android.
Para agregar un poco más de complejidad, Android existe también
para PC y hasta Google ha desarrollado algún sistema operativo
(Chrome OS)
A continuación una tabla comparativa

Sistema Tecnología Costo Ventajas Desventajas


Operativo

Windows PC Se compra Fácil de usar. Problemas de


Existen muchos seguridad.
programas Consume
desarrollados. muchos
Apto para recursos.
Gamers.

Linux PC Gratuito para Aprovecha En general la


usos no mejor los calidad visual
comerciales. recursos. de las
Seguro para el aplicaciones no
usuario. es la mejor.
Código abierto

MacOS Apple Incluido en el Es muy estable. Restricciones

4
Unidad 2 - Sistemas de Computación

precio de la para desarrollo


computadora. de aplicaciones.

Android ARM Incluido en el En general no Suele ser un


celular. requiere de poco inseguro e
actualizaciones. inestable.

Programas de Usuario
Ya vimos un tipo particular de programa, el sistema operativo. Ahora vamos a ver otro tipo
de programas, las aplicaciones. Pensadas para interactuar con el usuario, para que pueda
usar el software, pero a través de un sistema operativo: Los programas de usuario.
Un programa es, según lo que vimos, un conjunto de instrucciones, ahora en un
lenguaje entendible (alto nivel), que le indica a la computadora (en realidad sistema
operativo) una secuencia de acciones.
Cuando el programa se está ejecutando, se llama proceso. Un proceso siempre va a tener
una entrada, un procesamiento o transformación de esa entrada, que se apreciará como
una salida.

Entrada
La entrada puede venir desde:
● el teclado o mouse, siendo ingresada por un usuario,
● un archivo, ya que podría leer contenido
● internet, cualquier tipo de información
● sensores de temperatura, lluvia, etc.
● otro proceso, o incluso el mismo

Procesamiento
Las computadoras toman la entrada de donde sea y la transforman de alguna forma, para
mostrarla, registrarla o enviarla por internet o a otro programa.
Por ejemplo, el cálculo de un sueldo de un empleado. Se debe ingresar la categoría, las
cargas sociales, la antigüedad en el cargo y, por medio de una fórmula, se genera el haber

5
Unidad 2 - Sistemas de Computación

mensual. La fórmula es el algoritmo que calcula en función de las entradas necesarias y


transforma esa información en otro valor.

Salida
La salida puede emitirse hacia:
● el monitor o un parlante o una impresora,
● un archivo, ya que podría escribir contenido
● internet, enviando cualquier tipo de información
● actuadores, como motores de un arduino
● otro proceso, o incluso el mismo

Mito: Las computadoras NO generan información. La información viene desde la entrada.


Por ejemplo, los precios de un artículo de supermercado, son ingresados por un usuario, no
se generan en la computadora. La información de Wiki, o de Youtube, alguien en algún
momento la subió a los servidores.

6
Unidad 2 - Sistemas de Computación

Lenguaje de programación
Como vimos, en el núcleo del procesamiento, se encuentra un algoritmo. El algoritmo se
encuentra escrito en un determinado lenguaje de programación. Este lenguaje nos permite
indicarle acciones a la computadora. No existe un único lenguaje, sino que existen
muchos lenguajes y por familias, se orientan a distintos tipos de problemas.

En la siguiente tabla se muestra un principio de clasificación de los lenguajes de


programación. Van a notar que algunos lenguajes se pueden utilizar para distintos tipos de
problemas.

Tipo de Lenguaje
Programa

Aplicaciones .NET, Java, C++, Embarcadero Delphi


de escritorio

Aplicaciones Javascript, Java, NodeJS, PHP, Python, Perl, ASP


Web

Aplicaciones ReactNative, Flutter, Javascript, Kotlin, Swift


para celulares

Juegos C, C++, C#, Java, Haxe, Scratch, Python

Aplicaciones MatLab, Python, R, Octave, Prolog, Clips, Scala


Científicas

Nota: Convengamos que hay más de 200 lenguajes de programación y la anterior es una
lista MUY reducida, y de los lenguajes más populares en la actualidad.
Puede verse un ejemplo de 200 formas de hacer lo mismo en distintos lenguajes en la
siguiente página web:

7
Unidad 2 - Sistemas de Computación

https://web.archive.org/web/20011201034342/http://www.latech.edu/~acm/HelloWorld.shtml

Aprendiendo a programar
Saber programar, debido a la cantidad de lenguajes que existen y a los desafíos de la
actualidad, no consiste en conocer exhaustivamente un lenguaje de programación, sino más
bien, saber en qué contexto corresponde aplicar un determinado lenguaje. Entonces es
importante iniciarnos en la programación de manera de poder adaptarnos a distintos
lenguajes.
En las siguientes secciones abordaremos un enfoque más generalista, que va desde lo
general a lo particular, de manera de poder iniciarnos en este mundo de la programación de
la mejor forma posible.
En principio no se trabajará con ningún lenguaje en particular. Más adelante
profundizaremos los mismos ítems, sobre un lenguaje actual.

Distintos tipos de sentencias


No importa cual sea el lenguaje de programación, todas las instrucciones que pueden
usarse, se agruparán dentro de los siguientes cuatro tipos:
● Órdenes
● Condicionales
● Repeticiones
● Bloques

Órdenes
También conocidas como imperativas, son instrucciones que dan una orden
directa y la computadora obedece, o falla emitiendo un error. Pueden ser
muy sencillas como:

Mostrar un mensaje
Leer una entrada de teclado
Limpiar la pantalla
Abrir un archivo
Leer de un archivo

También pueden ser muy complejas, tal como:

Encender un motor

8
Unidad 2 - Sistemas de Computación

Leer un sensor
Abrir una puerta

Sencillas o complejas, cada instrucción es indivisible, y puede que su ejecución requiera


varias acciones en el nivel inferior (sistema operativo). Por ejemplo, para limpiar la pantalla,
la computadora necesitará interactuar repetitivamente con la placa de video.

Condicionales
En el caso anterior, la instrucción era una orden que la computadora debía
ejecutar. Las instrucciones condicionales, se ejecutan sólo si se cumple una
condición.
Su formato, variando un poco en cada lenguaje, tendrá la siguiente forma

si llueve entonces
emitir mensaje usar paraguas

Nótese que la condición es que llueva, y esa condición sólo admite dos valores: Verdadero
o Falso. Si de alguna forma la computadora recibe una entrada de un sensor que indica que
llueve, el procesamiento de esa señal, emitirá un mensaje indicando al usuario que use
paraguas.
Una extensión del caso anterior, podría sugerir que si no llueve, se puede usar gorra.
Bastará agregar el caso contrario:

si llueve entonces
emitir mensaje usar paraguas
si no
emitir mensaje usar gorra

Analicemos un poco más la sentencia anterior:

9
Unidad 2 - Sistemas de Computación

Podemos ver la condición lógica, que actúa como un selector sobre cuál rama de acciones
se va a seguir. Si la condición se cumple, solo se ejecuta o ejecutan las acciones de la
“rama” de verdadero. Si la condición no se cumple, entonces se ejecuta solo la “rama” de
acciones por Falso.
En programación no hay una sola solución para cada problema. Podemos hacer lo mismo,
pero de otra forma, invirtiendo la condición de la siguiente forma:

si no llueve entonces
emitir mensaje usar gorra
si no
emitir mensaje usar paraguas

Ahora si la condición tuviera múltiples valores, existe otro tipo de condicional que nos
permitirá expresarlo. Supongamos que queremos que la computadora salude dependiendo
de un idioma seleccionado por el usuario. Si el idioma es español dirá “Hola”, si el idioma es
inglés dirá “Hello”, pero si el idioma es portugués emitirá “Olá”, y es más, si el idioma es
francés que emita “Salut”. Para hacer esto con los condicionales que ya vimos deberíamos
hacer algo como:

si idioma = 'Español' entonces


emitir 'Hola !'
sino si idioma = 'Inglés' entonces
emitir 'Hello'
sino si idioma = 'Portugués' entonces
emitir 'Olá'
sino si idioma = 'Francés'
emitir 'Salut'
sino
emitir 'Idioma no conocido'
Si bien lo anterior es correcto, existe una construcción presente en todos los lenguajes
que lo implementa mejor. Para el caso anterior se utilizaría de la siguiente forma:

caso de idioma = 'Español' entonces


'Español': emitir 'Hola !'
'Inglés': emitir 'Hello'
'Portugués': emitir 'Olá'
'Francés': emitir 'Salut'
por defecto: 'Idioma no conocido'

10
Unidad 2 - Sistemas de Computación

La anterior construcción es un caso especial de condicional, que se denomina case o


switch o selector.

Repeticiones
Ya vimos sentencias u órdenes directas, y sentencias que se ejecutan sólo
si se cumple una condición. Ahora veremos sentencias que se repiten si se
cumple una condición.
Supongamos un ejemplo de un vehículo que funciona mientras aún tiene
combustible:

mientras auto tenga combustible


avanzar auto
consumir combustible
En el ejemplo anterior, hay una condición que es que el auto tenga combustible. Esta
condición puede ser verdadera o falsa. Si es verdadera, el auto avanza y luego consume
combustible. De esta forma, llegará un momento en que no tendrá más combustible y la
condición será falsa, por lo tanto no ejecutará las sentencias.
La repetición es una primitiva muy importante. Ya que la computadora puede repetir el
mismo grupo de acciones tantas veces como sea, sin cansarse, aburrirse o equivocarse, y
esto le da un gran poder de cálculo.
Otra forma de repetición es sobre una cantidad fija de veces:

hacer 10 veces
caminar hacia adelante
Avanzaremos con este tipo de construcciones más adelante, por ahora es solo una
presentación para su reconocimiento.

Bloques
El último tipo de primitiva, o construcción, es la sentencia de agrupamiento.
El bloque agrupa una o más sentencias. Este bloque puede tener un
nombre o ser anónimo. La construcción de un bloque fijo, puede ser una
función tal como las conocemos en el sentido matemático, por ejemplo el
cálculo de la superficie de un triángulo. Una vez que encontramos como
programar el cálculo de la superficie, cada vez que lo necesitemos, podremos reutilizarlo, en
lugar de volver a programarlo. La reutilización es otro de los principios de la programación.
Un bloque también podría ser un paquete de funciones matemáticas, que realizan distintos
tipos de cálculos.

11
Unidad 2 - Sistemas de Computación

Cualquiera sea el lenguaje de programación, existen paquetes o conjuntos de funciones que


permiten reutilizar código realizado por otras personas, extendiéndolo o mejorándolo. De
hecho, la cantidad de paquetes predefinidos, es uno de los atributos a considerar a la hora
de elegir un lenguaje de programación.

Resumen
Estos cuatro tipos básicos de sentencias, se encuentran en todos los lenguajes de
programación. En próximas unidades las abordaremos en detalle, sobre un lenguaje de
programación.

Pensamiento computacional
El pensamiento computacional [3] está dotado de una serie de etapas para
llevar a cabo el proceso cuyo fin como sabemos es la resolución del
conflicto objeto de estudio. Estas etapas suelen ser tres grupos
principales:

Análisis y comprensión del problema


Esta etapa parece obvia y normalmente es la que se atraviesa con mayor
celeridad. Sin embargo, es fundamental y muchas veces la situación de
bloqueo ante un problema se debe justamente a que no lo hemos entendido
completamente.
Tenemos una cierta lista de items que podemos aplicar en esta etapa:
● Leer con detenimiento TODO el enunciado.
● Comprender claramente el significado de cada palabra y cada frase.
● Poner especial atención a los signos de puntuación, ya que de ellos depende el
significado de cada frase.
● Identificar la incógnita.
● Identificar datos explícitos (puede haber relevantes o irrelevantes).
● Identificar datos implícitos (puede haber relevantes o irrelevantes) y hacerlos
explícitos.
● Eliminar dobles negaciones o transformar negaciones en afirmaciones.
● Detectar imprecisiones o ambigüedades, y resolverlas antes de seguir avanzando.
● Hacer inferencias a partir de los datos detectados y transformarlos en explícitos.
● Construir un enunciado simple y sencillo con los datos considerados relevantes.

12
Unidad 2 - Sistemas de Computación

● Verificar la equivalencia entre la especificación inicial y el enunciado obtenido.

Nota: La mayoría de los intentos por resolver un problema, falla en esta primera etapa de
análisis. Estamos más apurados por resolver, que por pensar lo que tenemos que resolver.
Entonces encontramos una solución a un problema que no era. En términos de
programación esto se traduce como un mal análisis de requerimientos del cliente. El
desarrollador puede llegar a hacer muy bien un programa que al cliente no le sirve.

Elaboración de la solución
Una vez bien entendido lo que tenemos que hacer, pasamos a la
etapa de construcción de la solución. En esta etapa se elige y se
aplica una estrategia o un conjunto de estrategias combinadas.
Las siguientes técnicas, no implican una secuencia y sirven para
resolver el problema siempre que se cuente con las herramientas
necesarias. Son una guía de alternativas para cuando nos encontramos bloqueados o con
incertidumbre.
● Hallar una representación gráfica que permita visualizar los datos del problema y sus
relaciones.
● Identificar la similitud con otros problemas ya resueltos
● Reformular el problema
● Dividir el problema en varios subproblemas más simples
● Razonar hacia atrás
● Partir de un supuesto
Elegir una solución, consiste en darnos cuenta a cual problema ya resuelto, se parece el
problema que estamos resolviendo. Este mecanismo de reducción es propio de los seres
inteligentes, y se mejora y se extiende la lista, a medida que resolvemos problemas.
Nota: Cuantos más problemas resolvamos, más y mejores problemas podemos resolver.
Nota: En la unidad 7 abordaremos en detalle el método de resolución de dividir el problema
en varios subproblemas.

Verificación de la solución
Una vez encontrada la solución, debemos verificar que cumple las
restricciones del problema. Esta etapa de verificación se conoce en sistemas
como testing. Es muy importante para garantizar la calidad del trabajo.

13
Unidad 2 - Sistemas de Computación

Cuando resolvemos un problema o desarrollamos un programa, debemos verificar que


funciona apropiadamente, antes de considerarlo resuelto.
Si la solución no se pudiera verificar, se debería volver a construir otra.
Respecto de las posibles soluciones, pueden darse las siguientes situaciones:
1. Que hubiera una solución única
2. Que existieran más de una solución, incluso infinitas
3. Que no existiera solución
4. No poder determinar si existe o no existe solución
De nuevo, la experiencia y el estudio de los problemas, nos permitirá estimar en cuál de los
cuatro escenarios nos encontramos.

14
Unidad 2 - Sistemas de Computación

Conclusión
En esta unidad nos hemos introducido en el mundo de la computación. Hemos visto las
partes de un sistema computacional, como es un proceso en ejecución. También vimos
como se le pide a la computadora que realice cierta tarea a través de los lenguajes de
programación. Finalmente, presentamos un método para resolver problemas de una forma
organizada, comparándolo con el desarrollo de sistemas. En las siguientes unidades
incorporaremos conceptos matemáticos que nos permitirán abordar un lenguaje de
programación con más y mejores herramientas.

15
Unidad 2 - Sistemas de Computación

Ejercicios
1. Que otros tipos de sistemas puede identificar
2. Defina 5 (cinco) elementos de hardware
3. Defina 5 (cinco) elementos de software
4. Busque ejemplos de accidentes en personas por fallas de software
5. Describa los distintos tipos de sistemas operativos que conoce
6. Describa los sistemas operativos que utiliza
7. Respecto del punto anterior, cuales puede indicar como ventajas o desventajas.
8. Un sistema que calcula el IVA (21%) sobre un total, cuál sería la entrada, cuál la
salida, y cómo sería el cálculo o procesamiento ?
9. Si consideramos el cálculo de la fórmula resolvente (o Bascara), cuales podría
identificar como entradas, y cuales serían las salidas ?
10. Cómo implementaría un sistema que sugiera abrigo, de manera que si hace calor,
sugiera ropa ligera, y en caso contrario, sugiera ropa abrigada.
Resolución de problemas:
11. Don Manuel es un maestro pizzero. Elabora todas las combinaciones de pizza
posibles con queso y al menos uno de los siguientes ingredientes: jamón, tomate y
morrones. Si ya preparó una pizza de queso y tomate, y otra de jamón, queso y
tomate. ¿Cuántas combinaciones tiene que preparar todavía?
12. Tres parejas compartieron una excursión durante un viaje. Una de las chicas es
arquitecta, otra abogada y la tercera traumatóloga. Los varones tienen justamente
las mismas profesiones, sin embargo ninguno de ellos comparte su profesión con su
esposa. Durante el almuerzo Nicolás le comenta a su hermana:
a. - En cuanto volvamos te pido un turno, la rodilla volvió a molestarme.
b. - Primero tenés que terminar el plano que me prometiste el verano pasado.

Con esta información, ¿se podrá deducir cuál es la profesión de la esposa del
traumatólogo?

16
Unidad 2 - Sistemas de Computación

Referencias
https://es.wikipedia.org/wiki/Sistema
Peter G. Neumann "Peopleware in Systems." en Peopleware in Systems. Cleveland, OH:
Assoc. for Systems management, 1977, pp 15-18. (ISBN 0-934356-13-0)
http://tudai1-1.alumnos.exa.unicen.edu.ar/programacion-1/sede-tandil
https://piexa.exa.unicen.edu.ar/moodle/mod/page/view.php?id=2532
“Análisis y Comprensión de Problemas” - “DEPARTAMENTO DE CIENCIAS E INGENIERÍA
DE LA COMPUTACIÓN UNIVERSIDAD NACIONAL DEL SUR”, 2003 elaborado Sonia V.
Rueda y Alejandro J. García

17

También podría gustarte