resumen taller de informática

33
Universidad Nacional de Misiones Facultad de Ingeniería Taller de Informática Resumen Teórico según Planificación 2.010 Autor: Krujoski Matías Gabriel Observación: para un mejor aprovechamiento del espacio en el papel todos los ítems distribuidos con viñetas están alineados al margen derecho; pero respetan el siguiente esquema de jerarquía: o Donde la viñetas escapan a la jerarquía y se utilizan simplemente para listar elementos en cualquier nivel.

Upload: matias-gabriel-krujoski

Post on 28-Jun-2015

264 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Resumen taller de informática

Universidad Nacional de Misiones

Facultad de Ingeniería

Taller de Informática

Resumen Teórico según Planificación 2.010

Autor:

Krujoski Matías Gabriel

Observación: para un mejor aprovechamiento del espacio en el papel

todos los ítems distribuidos con viñetas están alineados al margen

derecho; pero respetan el siguiente esquema de jerarquía:

o Donde la viñetas

escapan a la jerarquía y se utilizan simplemente para listar elementos en cualquier nivel.

Oberá, Misiones

2010

Page 2: Resumen taller de informática

Tema 1: introducción a la informática

La informática: ciencia encargada del estudio y desarrollo de máquinas y métodos para procesar

información; nació para trabajos repetitivos y rutinarios: Cálculo, gestión. En término es de origen

francés, en el año 1962 (INFORmation autoMATIQUE). Estudio de tratamiento automático porque

utilizan máquinas que capturan, procesan y presentan la información y racional porque el proceso está

organizado según el razonamiento humano.

Incluye:

Desarrollo de nuevas máquinas

Desarrollo de nuevos métodos de trabajo

La construcción de aplicaciones informáticas

Mejorar neto de aplicaciones existentes

Hardware:

Computadora: tecnologías de la información y las comunicaciones son todas aquellas

tecnologías que intervienen en la colección, emisión, recepción, almacenamiento, procesamiento y

recuperación de datos e información a través del uso de señales electrónicas analógicas y digitales.

Componentes:

Hardware: componentes físicos de una computadora, de una red o dispositivos electrónicos.

o Unidad central de proceso (CPU): es parte del procesador central, controla los demás elementos de

cálculo, está integrado por la Unidad De Control y la Unidad Aritmético Lógica; trabaja con el

almacenamiento primario almacenando temporalmente los datos y las instrucciones del programa

durante el procesamiento.

o Unidad Aritmético-Lógica: realizar las principales operaciones de lógica y aritméticas (suma y resta,

además de operaciones lógicas para números y letras).

o Unidad De Control: coordina y controla otras partes del sistema, lee un programa almacenado, una

instrucción a la ves y dirige otros componentes para realizar la tarea que se requiere.

o Almacenamiento primario: almacena temporalmente instrucciones de programación y datos que

usados en las instrucciones de la CPU; tiene tres funciones:

Almacenar todo o parte del programa que se está ejecutando

Almacenar los programas del sistema operativo que administra la operación de la computadora.

Guarda los datos que están siendo usados por el programa que se está ejecutando.

Se la conoce como RAM (Random Acces Memory) porque puede acceder a puntos aleatorios de

memoria simultáneamente; se divide en celdas de un byte y cada una tiene una dirección individual.

o Almacenamiento Secundario: es perdurable en el tiempo, no volátil, está fuera de la CPU (discos,

flash, etc.); tiene un mayor tiempo de acceso que la RAM.

o Dispositivos de Entrada:

Teclado: es la forma tradicional de introducir datos; el estándar actual es de 101 teclas, con 12

teclas de función además de teclas de control y cursores; existen modelos exclusivos para

aplicaciones específicas.

Page 3: Resumen taller de informática

Mouse: es un dispositivo manual que captura los movimientos y con ellos controla la posición

del cursor en pantalla, permitiendo hacer selecciones rápidas en íconos y menús.

Pantalla sensible al tacto: permite realizar selecciones y accesos al tocar la superficie de la

pantalla de video.

Automatización de datos fuente: permite acceder a datos legibles para la computadora en el

lugar en que se originan los datos; estas tecnologías evitan los erros cometidos al introducir

datos por teclado. Podemos listar los siguientes:

Dispositivos ópticos: lector de marcas o rastreador de marca óptica: usa luz reflejada para

determinar la posición de marcas de lápiz en formularios estándar; lector de códigos de barras;

lápiz óptico: usa luz para leer caracteres escritos con un tipo especial de letra también legible

para las personas; rastreador de página: rastrea e interpreta los caracteres alfanuméricos de las

páginas impresas normales, se utiliza para digitalizar libros y documentos.

Dispositivos magnéticos: MICR (magnetic ink character recognition) lector de caracteres

magnéticos: lee los caracteres impresos con tinta magnética en los cheques, son muy precisos y

rápidos; lector de bandas magnéticas: son los utilizados con las tarjetas de créditos.

Digitalizadores: de imágenes (scanner): obtiene una representación digital de cualquier imagen

impresa; cámara digital: permite tomar fotografías; de audio: puede digitalizar sonidos

provenientes de un micrófono y otro dispositivo de audio para procesarlo con la computadora;

de video: con los circuitos apropiados digitaliza señales de video para procesarla en la

computadora; dispositivos sensores: permiten medir parámetros físicos en tiempo real.

o Dispositivos de salida:

Monitor: es una VDT (Video display terminal) permite recibir mensajes visuales del computador;

las imágenes en él se construyen con pequeños puntos llamados pixeles, la cantidad de éstos

por pulgada cuadrada (DPI: dot per inch) determina la calidad de imagen del monitor.

Impresora: permite realizar una copia impresa (física) de cualquier información que esté en la

computadora.

Trazadores: es un dispositivo automatizado para crear gráficos de alta calidad, lo logra moviendo

una pluma sobre el papel (o ambos) todo coordinado por la computadora.

Respuesta audible: permiten generar señales audibles para informar eventos; pueden hacerlo

utilizando un mensaje grabado o con un sintetizador de voz.

Principios de funcionamiento: para que la información pueda procesarse dentro de la computadora

todos los símbolos, imágenes o palabras deben ser reproducidos mediante una cadena de dígitos

binarios, estas cadenas están compuestas por:

o bit: dígito binario que representa la unió a información más pequeña; tiene sólo dos estados

representados por 0 o 1.

o byte: cadena de ocho bits que se emplea para representar un número carácter almacenado en un

sistema de cómputos.

Page 4: Resumen taller de informática

SOFT. DE SISTEMA

HARDWARE

SOFT. DE APLICACIÓN

SOFT. DE USUARIO FINAL

Como el usuario no puede trabajar con números binarios se desarrollaron Códigos Binarios Estándar,

ASCII (American Standard Code For Information Interchanges), donde se establecen las asociaciones

pertinentes entre los códigos numéricos binarios y los caracteres que le usuario si puede interpretar.

Software: es un conjunto de instrucciones detalladas que controlan la operación de un sistema de

cómputos; sus principales funciones son: administrar los recursos de cómputos; proporcionar las

herramientas a los usuarios para que aprovechen estos recursos; actuar como intermediarios entre

los usuarios y la información almacenada.

Clasificación de software: existen tres tipos principales:

de Sistema: administran los recursos de la computadora: CPU, dispositivos de comunicaciones y los

periféricos.

de Aplicación: son programas específicos escritos para

una finalidad exclusiva que le dan los usuarios finales.

de Usuario Final: tipo especial de aplicación que

contiene herramientas de software que permiten el

desarrollo de aplicaciones por los usuarios finales con

muy poca o nula intervención de programadores

profesionales.

Estos tres tipos están interrelacionados y deben interactuar.

Datos e información: los datos son símbolos, valores, etc que describen o miden una situación; en

cambio la información es una adecuada organización de los datos para comprender una determinada

situación, generar ideas, modelos o conclusiones.

Tema 2: Introducción a la Programación:

Análisis y resolución de problemas:

Problema: es un asunto o conjunto de cuestiones que se plantean para ser resueltas; varían según el

contexto, en informática sólo se consideran aquellos que pueden calcularse utilizando una serie de

reglas introducidas en la computadora. En general la resolución de este tipo de problemas puede

dividirse en tres etapas:

Análisis del problema: se pretende comprender y definir claramente la naturaleza del mismo, es

importante establecer con claridad que debe realizar el programa que se pretende construir; para

poder encuadrar bien la situación problemática es importante considerar los siguientes aspectos:

o Definición del problema

o Especificaciones de entrada

o Especificaciones de salida

Diseño del algoritmo: se determina cómo hace el programa la tarea solicitada; es esta etapa se

construye un algoritmo que resuelva el problema utilizando alguna herramienta algorítmica como el

diagrama de flujo, que permite trabajar de forma organizada y estructurada.

Page 5: Resumen taller de informática

Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos,

definidos y finitos; debe obtener un resultado en un tiempo finito.

Implementación del algoritmo en la computadora: consiste en codificar el algoritmo siguiendo las

reglas sintácticas y semánticas de un determinado lenguaje de programación. Comprende los

siguientes aspectos:

o Codificación

o Compilación y ejecución

o Verificación

o Depuración

o Documentación

Programa: es la implementación de un algoritmo en un determinado lenguaje de programación;

puede considerarse una secuencia de acciones o instrucciones que manipulan un conjunto de

objetos, los datos.

Partes de un programa: contiene dos bloques:

Declaraciones: se especifican todos los objetos que utiliza el programa; constantes, variables, tablas,

registros, archivos, etc.

Instrucciones: contiene todo el conjunto de operaciones que se han de realizar para la obtención de

los resultados deseados.

Elementos principales:

o Entrada de datos: todas aquellas instrucciones que toman datos de algún dispositivo externo y los

almacenan para ser utilizados.

o Proceso: instrucciones que modifican los objetos desde su estado inicial hasta dejarlos almacenados

en la memoria principal en su estado final.

o Salida de resultados: toman los datos de la memoria central y los envían a los dispositivos externos.

Etapas de creación de un programa:

Análisis del problema: evaluar estos tres aspectos fundamentales:

o Para que (salidas)

o Que hacer (proceso)

o Con que (entradas)

Diseño: consiste en diseñar como el programa cumple con la tarea encomendada; generalmente se

divide el programa en sub-programas y a su vez éstos en módulos, para ir de lo más general a lo más

específico. Esta descomposición generalmente se hace por un criterio funcional, dónde cada módulo

ejecuta una o más funciones.

Implementación del algoritmo en la computadora: sus principales elementos son:

o Codificación: se escribe en un lenguaje de programación la representación del algoritmo

desarrollado; su producto es un programa fuente.

o Compilación y ejecución: utilizando un compilador se traduce el programa fuente al lenguaje

máquina que la computadora puede comprender; su producto es el programa objeto que con el

Page 6: Resumen taller de informática

sistema operativo se carga con las librerías del compilador para obtener finalmente el programa

ejecutable que ya puede evaluarse.

o Verificación y depuración: se comprueba que el programa trabaje correctamente y cumpla con los

requerimientos del usuario.

Verificar: se ejecuta el programa con una amplia variedad de datos de entrada (con los valores

habituales, y los valores extremos para evaluar los límites del programa).

Depurar: proceso de encontrar y eliminar los errores que puede contener el programa; los

errores pueden ser: de compilación: suelen provenir de errores de sintaxis; de ejecución: suelen

ser instrucciones que la computadora comprende pero no puede realizar (por ejemplo: división

por cero); de lógica: son errores en el algoritmo del programa, se detectan por los resultados

incorrectos.

Documentación y mantenimiento: se debe indicar los pasos a dar en proceso de resolución de un

problema. El mantenimiento es la actualización de los programas con los cambios requeridos por el

usuario o corrección de posibles errores futuros.

Técnicas de programación: al diseñar un algoritmo y luego escribir su código habitualmente se

procede a dividir el programa un subprogramas más pequeños y luego estos en módulos, esta forma

de trabajo permite simplificar la tarea que realiza cada módulo y así facilitar el trabajo de

programación, permite pasar de lo general a lo más específico, esta forma de organizar la

programación se conoce como “top-down”; en rasgos generales podemos identificar las siguientes

filosofías a la hora de programar:

Programación no estructurada: este tipo de códigos son sencillos y poseen un solo programa

principal; es decir una secuencia de comandos o instrucciones que modifican datos que son globales

en el transcurso de todo el programa; entonces se opera directamente sobre datos globales. Esta

técnica tiene desventajas cuando el programa se hace lo suficientemente extenso y complejo.

Programación procedimental: en esta se pueden combinar aquellas secuencias de código repetibles

en un solo lugar, entonces con una “llamada de procedimiento” (funciones) se puede invocar la

secuencia necesaria en cualquier sección del código que sea requerida. Esta técnica permite que los

programas sean mas estructurados y libres de errores; de este modo el programa es visto como una

secuencia de llamados a procedimientos.

Programación modular: en esta técnica los procedimientos con una funcionalidad común son

agrupados en módulos separados; quedando el programa fraccionado en secciones y sub-secciones,

donde cada una puede contener sus propios datos, manejándose en cada una un estado interno con

sus propias llamadas a procedimientos; sin embargo sólo hay un estado por módulo y cada módulo

existe una única vez dentro del programa.

Tema 3: Algoritmos:

Algoritmo: es un conjunto ordenado y finito de pasos o instrucciones que conducen a la solución

de un problema.

Características:

Page 7: Resumen taller de informática

Líneas de Flujo

Operación de Proceso

Entrada de datos

Salida de datos

Decisión

Terminal (inicio, fin)

Preciso: tiene que indicar el orden de realización en cada paso.

Definido: si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo

resultado.

Finito: tiene que tener un número determinado de pasos

Debe producir un resultado en un tiempo finito.

Diseño: existen diversas formas de representar un algoritmo, pueden ser:

Pseudocódigo: es una combinación de símbolos, términos y otras características comúnmente

utilizadas en uno o más lenguajes de alto nivel.

Diagramas de Flujo: [sección particular].

Aplicación de estrategias de resolución de problemas: todos los planteamientos descriptos para la

resolución de problemas son valederos y aplicables en la construcción de algoritmos; en rasgos

generales se pueden seguir las siguientes pautas de resolución:

Comprender el problema

Trazar un plan para resolverlo

Poner en práctica el plan

Comprobar los resultados.

Diagrama de Flujo: utiliza símbolos (cajas) estándar q contienen los pasos del algoritmo escrito en

ellas y unidas por flechas, denominadas “líneas de flujo” que indican la secuencia en la que se

deben ejecutar. Siempre contienen:

Una caja de “Inicio”

Otra caja de “Fin”

Otras cajas con formas diversas que representan distintas operaciones.

Símbolos: cada símbolo representa el tipo de operación a ejecutar y el diagrama indica la secuencia

de ejecución de las operaciones:

Prueba de escritorio: es una herramienta útil para entender que hace un determinado algoritmo, o

para verificar que un algoritmo cumple con la especificación sin necesidad de ejecutarlo.

Básicamente, una prueba de escritorio es una ejecución ‘a mano’ del algoritmo, por lo tanto se

debe llevar registro de los valores que va tomando cada una de las variables involucradas en el

mismo, esto habitualmente se hace en una tabla con columnas independientes para cada variable y

las filas corresponden a la ejecución de una secuencia o instrucción.

Estructuras básicas: cada proceso posee subprocesos y estos a su vez de subprocesos mas

elementales; así los programas están formados por conjuntos de funciones hasta llegar a las

operaciones elementales del procesador u operaciones máquina. Las instrucciones son

Page 8: Resumen taller de informática

construcciones de lenguaje máquina (cadenas finitas de dígitos) que permiten invocar a las

operaciones elementales; por cada operación hay sólo una instrucción. Como principales

estructuras de ejecución tenemos:

Lineales:

Instrucción de entrada o lectura de datos: permite asignar valores desde dispositivos para

almacenarlos en memoria.

Instrucción de salida o escritura: permite visualizar resultados mediante los dispositivos de salida.

Instrucción de asignación: consiste en dar a una variable el valor de una expresión, el de otra

variable o un valor constante; la asignación es destructiva porque destruye el valor previo de la

variable que recibe la asignación.

Selectivas: en los algoritmos es necesario realizar “tomas de decisiones” que determinan los pasos

siguiente en la ejecución; en concreto estructuras de programación que se utilizan cuando se desea

ejecutar una acción dependiendo de si una expresión es verdadera o falsa. Se clasifican de la

siguiente forma:

Estructura de selección simple IF (SI): posee una condición lógica, o combinación de ellas, que el

programa las evalúa; al ser verdadera(s) ejecuta las instrucciones contenidas dentro de la

estructura de selección y cuando la condición lógica resulta falsa ignora las instrucciones interiores

y continúa la ejecución con la instrucción siguiente a la selección.

Estructura de selección doble IF-ELSE (SINO): permite bifurcar el flujo de ejecución según el

argumento (condición lógica) del IF; esta sentencia ejecuta las instrucciones dentro del IF sí la

condición es verdadera y de lo contrario ejecuta las instrucciones etiquetadas con el ELSE.

Estructura de selección doble en cascada (IF – ELSE IF – ELSE): las estructuras de selección doble

están en cascada cuando la instrucción que sigue a un ELSE es otro IF a excepción del último ELSE;

las condiciones se evalúan en orden descendente pasando de una a otra si la anterior resulta falsa

hasta encontrar una expresión que resulta verdadera y se ejecute sus instrucciones ó hasta llegar al

último ELSE y ejecutar sus instrucciones.

Estructura de selección múltiple (CASE): permite elegir entre diferentes opciones; está compuesta

por varias sentencias simples y al ejecutarse sólo una de ellas se selecciona y ejecutan sus

instrucciones.

Estructuras de Control Repetitivas: permiten repetir un conjunto o bloque de instrucciones

mientras una condición dada sea cierta; iterativas son aquellas en las que se ejecuta el bloque de

instrucciones un número determinado de veces, dependiendo de un valor predefinido o el

cumplimiento de una determinada acción. Son estructuras con una entrada y una salida que en su

interior ejecutan los bloques de instrucciones.

Bucle: es una serie de sentencias que pueden ser de cualquier tipo las cuales serán repetidas n

veces; dependiendo n de un valor o una condición lógica.

Estructura While (mientras): en ella el cuerpo del bucle se repite mientras se cumple una

determinada condición; ésta realiza primero la evaluación de la condición luego la ejecución por

Page 9: Resumen taller de informática

ello se debe tener precaución con los valores iniciales para la expresión lógica, pues esta puede no

ejecutar ni una sola vez el bucle.

Estructura Do … While (Hacer … mientras): se repite mientras la expresión sea verdadera; pero en

ésta primero se ejecuta el bloque y luego se evalúa la condición por lo tanto su bucle se ejecutará al

menos una vez independientemente de los valores iniciales para la expresión.

Estructura For (desde/para): ejecuta el bucle un número específico de veces y de modo automático

controla el número de iteraciones o pasos a través del bucle.

Estructuras anidadas: se denominan así a todos los bloques de instrucciones que estén incluidos

dentro de otros bloques de instrucciones; es importante que la inclusión sea correctamente

“cerrada” sin que se “crucen” distintos niveles de anidamiento.

Contadores y acumuladores: la computadora al ejecutar un programa guarda todos los datos en

variables que se almacenan en la memoria, lo hace mediante expresiones de asignación; pero

existen algunas asignaciones particulares de gran utilidad:

Contadores: es un juego de expresión que permite incrementar una variable en una unidad o una

cantidad específica constante de incremento.

Acumuladores: es una variable que se incrementa a una cantidad variable por cada iteración.

Introducción a las Estructuras de Datos: las estructuras o arreglos de datos son una colección de

datos de un determinado tipo organizados de una manera en particular; poseen un único nombre

de variable que representa a todos sus elementos los cuales deben identificarse individualmente

por un índice que acompaña al nombre del arreglo.

Vectores: o arreglos unidimensionales son una lista o columna de datos del mismo tipo; poseen un

número finito de elementos que debe ser conocido a la hora de compilar el programa; todos sus

elementos son almacenados en posiciones contiguas de memoria; cada elemento se puede

procesar como variable simple indicando el nombre del arreglo y el índice correspondiente: vector2

vector[2] se hace referencia al tercer (los índices comienzan en 0) elemento del arreglo vector.

Operaciones con vectores: se requiere el uso de estructuras repetitivas para recorrer todos los

elementos de un vector; las operaciones más comunes son:

o Lectura / Escritura: son similares, sólo cambia la instrucción (lectura o escritura) del bucle en la

estructura repetitiva la cual se utiliza para “cambiar” o “incrementar” los valores numéricos que

denotan los índices del vector, por lo general se utiliza una sentencia FOR que está limitada a la

“longitud” del vector, es decir a su cantidad de elementos.

o Búsqueda: permite encontrar la/las ubicacion/es del/los elemento/s coincidente/s con un patrón

de referencia para buscar, se utiliza una sentencia de selección cuya condición es la igualdad del

elemento del vector con el patrón de referencia, cuando se hace verdadera puede registrarse o

visualizarse la posición (índice) de coincidencia.

o Orden: permite organizar los elementos del vector según algún criterio dado; por ejemplo

creciente, etc.; existen varios métodos para ordenar.

o Intercalación: se combinan los elementos de más de un vector según se indique.

Page 10: Resumen taller de informática

Matrices: o arreglos bidimensionales; es un arreglo de arreglos unidimensionales, es un conjunto

de m por n elementos de igual tipo cada uno identificado por dos índices que hacen referencia a las

filas y columnas respectivamente, por ejemplo matriz1;2 matriz[1][2] hace referencia al

elemento de la segunda fila y tercer columna del arreglo matriz.

Recorrido: por tener dos dimensiones pueden ser recorridas en dos sentidos, por columnas o por

filas; en ambos casos se utiliza la estructura básica para recorrer un vector anidada dentro de una

estructura igual, para recorrer por filas la sentencia más interna debe corresponder al índice de

columnas y la externa al índice de filas, en cambio para recorrer por columnas la más interna

corresponde al índice de filas y la externa al índice de columnas. Esta operación de recorrido es

utilizada tanto para lectura y escritura, como para búsqueda y demás procesamientos del arreglo;

pudiendo por supuesto además acceder a elementos individuales o grupos de ellos, por ejemplo

una fila o columna en particular.

Almacenamiento: al igual que los vectores, todos los elementos de una matriz son almacenados en

posiciones contiguas de memoria, entonces la calidad de bidimensional es sólo a efectos de

organizar la información y facilitar su acceso y procesamiento.

Tema 4: Lenguajes de Programación

Lenguaje de Programación: es un conjunto de símbolos y palabras con reglas de sintácticas y

semánticas que le permiten a las personas con el conocimiento suficiente escribir algoritmos de

computadoras para que éstas puedan luego interpretarlos y llevarlos a cabo. En un sentido más

estricto, las computadoras sólo manejan un lenguaje binario, bivalente: cero y uno, que es bastante

complejo de ser comprendido con rapidez por las personas entonces a la hora de crear un

programa de computadora o un sistema operativo para éstas se hace prácticamente imposible

escribir este programa directamente en ese lenguaje binario, porque para determinadas

operaciones que se deben dirigir en el hardware son muy complejas las operaciones matemáticas

para codificarlas, por ello surgieron casi con las computadoras mismas los lenguajes de

programación que son mucho más versátiles y comprensibles para los seres humanos y nos

permiten, siguiendo una secuencia apropiada de procesamiento, obtener finalmente una programa

de computadora en el lenguaje binario que la máquina comprende y puede ejecutar.

Alto y Bajo nivel: se define como lenguaje de alto nivel a aquellos que son adecuados a la

capacidad cognitiva del ser humano, es decir los que pueden ser fácilmente comprensibles por

estos; en cambio los lenguajes de bajo nivel son aquellos que “están más cerca de la máquina”, es

decir pueden ser comprendidos por la computadora, proporcionan un set de instrucciones

aritmeticológicas sin la capacidad de encapsular dichas instrucciones en funciones que no estén ya

contempladas en la arquitectura del hardware, por lo tanto son muy focalizados para cada

hardware en especial según sus especificaciones técnicas, esto los hace difícil de ser portables y

adaptables, además secuenciar las operaciones de un programa en este nivel de lenguaje es

extremadamente complicado.

Page 11: Resumen taller de informática

Compiladores: dentro del proceso de creación de un programa es necesario “traducir” el código

fuente que el programador escribe, utilizando un lenguaje de programación porque puede

entenderlo, a un lenguaje que la computadora pueda comprender, pare eso se utilizan los

compiladores que se encargan de tomar el código fuente de un programa y “compilarlo” en un

“programa objeto” el cual no tiene un significado directo para el ser humano pero que la

computadora puede comprenderlo y procesarlo para hacer los “enlaces” (linkeo) correspondiente

para obtener el programa ejecutable. Los compiladores son diferentes para distintos sistemas

operativos aunque compilen para los mismos lenguajes de programación, esto se debe a la forma

que tiene cada sistema operativo de tratar a los programas ejecutables.

Interpretes: son programas que tienen la capacidad de comprender el lenguaje de programación y

ejecutarlo sin la necesidad de compilar, se utilizan para evaluar las distintas porciones de código de

un programa fuente; habitualmente los intérpretes no traducen todo el código sino que lo hacen

instrucción por instrucción a medida que lo vaya requiriendo, nunca guardan el resultado de esa

“traducción” que hacen.

Lenguaje C: es un lenguaje de programación de propósito general que ofrece una “economía de

expresión”, control de flujo, estructuras de datos modernas y un amplio conjunto de operadores.

Fue creado por Dennis Ritchie en 1972 en la compañía Bell Telephone; surgió como una evolución

del ya existente lenguaje B que carecía de los “tipos de datos” que se incorporan en C, en particular

fue diseñado para construir el sistema operativo UNIX de la DEC PDP 11, pero debido a su

versatilidad evolucionó y se requirieron algunos controles en cuanto a sus variantes que surgieron;

para ello en 1983 el ANSI (American National Standards Institute) estableció un comité que tuvo

por resultado el Standard ANSI C, donde se proporcionó una nueva forma de declaración de

funciones, especifica una biblioteca estándar con un amplio conjunto de funciones de entrada y

salida, administración de memoria, manipulación de cadenas, etc. Sus principales características

son: su poder y flexibilidad, que es común por su amplia difusión, transportable porque puede

correr en cualquier tipo de computadora, tiene pocas palabras clave, es modular. En 1980 Bjarne

Strousrup desarrolló el C++ que es una ampliación del C orientada a Objetos; pero mantiene

absoluta compatibilidad con éste; sus nuevas características son: concepto de clases, herencia,

funciones virtuales y sobrecarga de operadores. El C++ también está regulado por el estándar ANSI,

donde se indican un conjunto de reglas que debe cumplir un compilador para ser considerado de C

o C++.

Convenciones léxicas: un programa consiste en una o más unidades de traducción almacenadas en

archivos; este es traducido en varias fases, las primeras fases realizan transformaciones léxicas de

bajo nivel, ejecutan directivas del preprocesador y realizan definiciones (prototipos) y expansiones;

cuando estas fases están completas el programa quedó reducido a una secuencia de componentes

léxicos (tokens) éstos son traducidos individualmente según la siguiente clasificación por categorías:

Identificadores

Palabras reservadas

Constantes

Page 12: Resumen taller de informática

Cadenas literales

Operadores

Separadores

Todos estos componentes serán descriptos con mayor profundidad luego.

Estructura de un programa: básicamente todos los programas de computadora deben ingresar y

almacenar datos, procesarlos y mostrar, almacenar o imprimir los resultados obtenidos; por eso

para cada dato a utilizar se debe indicar de que tipo es para que el compilador sepa como debe

almacenarlo y recuperarlo y cuanta memoria debe reservar para ese dato. Por ello todos los

programas en C tienen una función main() que indica donde comienza la ejecución y finaliza la

ejecución; se debe declarar todas las variables antes de utilizarlas. Las partes más importantes de

un programa en C son:

Directivas del Preprocesador: se identifica la línea con #, puede utilizar la instrucción include que

indica al preprocesador que incluya en la compilación el archivo indicado (# include

<archivo>), ó define que permite definir un reemplazo o sustitución para una determinado

nombre (#define nombre valor).

Declaración de variables globales: son espacios de memoria asignados con nombres que tienen

determinado un tipo de dato para almacenar y al declararse aquí son accesibles desde cualquier

parte del programa.

Prototipos de Funciones: permiten indicarle al compilador las funciones personalizadas que se

utilizaran como así el número y tipo de argumentos que requiere.

Función main: es la función que indica el inicio y fin de la ejecución, con la apertura y cierre de sus

llaves respectivamente (main() {…}).

Definición de Funciones: se encabeza la función igual a su definición pero sin cerrar la línea con

punto y coma, luego va el cuerpo de instrucciones pertenecientes a la función entre llaves.

Declaraciones: consisten en detallar todos y cada uno de los datos que han de utilizarse durante la

ejecución del programa, para que el procesador puede almacenarlos de la forma correcta y

asignarles el espacio de memoria suficiente, cada uno se almacena bajo un nombre único.

Datos: son todos aquellos datos utilizados durante la ejecución del programa que deben

almacenarse y procesarse.

Tipos de datos: en C++ existen tipos básicos de datos, aunque en versiones distintas del lenguaje

pueden aparecer otros tipos; los fundamentales son:

Carácter: character char

Entero: integer int

Punto flotante: floating point float

Enumerados: enum

Booleano: bool

Variables: es un espacio de memoria cuyo contenido se modificará durante la ejecución del

programa, todas deben ser declaradas antes de ser utilizadas indicando su tipo y de ser necesario

tamaño (tipo nombre;); en el nombre o identificador sólo se pueden utilizar letras mayúsculas y

Page 13: Resumen taller de informática

minúsculas (se distinguen), números y ciertos caracteres alfanuméricos (pero no punto, coma, gión,

comillas o símbolos matemáticos o interrogantes), sólo los primeros 32 dígitos son significativos

para los identificadores. A veces conviene inicializar las variables, es decir darle un valor inicial, esto

se puede hacer al declararlas (tipo nombre=valor_inicial).

Constantes: éstas sólo toman un valor en el momento de la declaración, luego cualquier intento de

modificación será considerado un error. Se declaran del mismo modo que las variables pero

anteponiendo el prefijo const antes del tipo de dato (const tipo nombre=valor).

Operadores: son elementos o caracteres que producen ciertos cálculos cuando son aplicados a

variables u otros objetos en expresiones, es un símbolo que le dice al compilador que realice

manipulaciones matemáticas o lógicas específicas.

Tipos de operadores:

o Aritméticos: se utilizan para crear expresiones matemáticas.

Unitarios: ‘+’, ‘-‘, ‘++’, ‘--‘, dónde los dos últimos sólo trabajan sobre variables como asignaciones de

incremento y decremento.

Binarios: ‘+’, ‘-‘, ‘*‘, ‘/’ , ‘%’.

o Relacionales: permiten determinar la relación entre un valor o cantidad con respecto a otro;

funciona mediante la idea de verdadero o falso, siendo cualquier valor distinto de cero verdadero y

cero es falso. Estos operadores son: ‘>’, ‘<’, ‘>=’, ‘<=’, ‘==’ (igual), ‘!=’ (distinto).

o Lógicos: permiten determinar como se presentan las relaciones entre las expresiones involucradas,

son:

&& AND o Y

|| OR u O

! NOT

o Asignación: consiste en dar el nombre de la variable a asignarle un valor, seguido del nombre igual

y del valor; siempre el valor de la izquierda se asigna a la variable de la derecha, no son ecuaciones.

Existen prácticas combinaciones especiales de asignación que se tabulan:

Operador Descripción Uso Equivalente a+= Suma y asignación x+=y x=x+y-= Resta y asignación x-=y x=x-y*= Multiplicación y asignación x*=y x=x*y/= División y asignación x/=y x=x/y%= Resto y asignación x%=y x=x%y

o Sizeof: devuelve el tamaño de la variable o tipo que está operando, si se utiliza para un tipo de dato

este va entre paréntesis (sizeof expresión; ó sizeof (tipo)).

o Condicional: opera con tres argumentos, ( expresión_lógica ? expresión_1 : expresión_2)

entonces se evalúa la expresión lógico, si es verdadero se evalúa la expresión 1 y si la expresión

lógica es falsa se evalúa la expresión 2.

o Coma: este operando permite encadenar diversas expresiones, provoca una secuencia de

operaciones a realizar, separa elementos en una lista de argumentos y separa expresiones.

Expresiones: es la combinación de variables, constantes definidas o números con uno o más

operadores, que dan como resultado un valor; según el diccionario “un conjunto de términos que

Page 14: Resumen taller de informática

representan una cantidad”. Reconocemos como operando cada una de las cantidades, variables,

constantes o expresiones que participan de una expresión. Clasificamos las expresiones según el

tipo de objetos que manejan:

Aritméticas: cuyo resultado es numérico; son análogas a las fórmulas matemáticas, las variables y

constantes son numéricas (enteras o punto flotante) y las operaciones son aritméticas.

Lógicas: cuyo resultado es del tipo lógico (verdadero o falso).

Carácter: cuyo resultado es del tipo carácter.

Reglas de precedencia: en expresiones dónde hay más de un operador es necesario establecer

reglas matemáticas que determinen el orden de las operaciones; estas son:

Las operaciones entre paréntesis se evalúan primero, si existen paréntesis anidados primero se

evalúa el más interno.

Si coinciden varios operadores de igual prioridad, el orden es de izquierda a derecha.

El orden de prioridad de operadores es el siguiente:

Orden de evaluación

Operadores

1º ^, **2º *, /3º DIV, MOD4º +, -

Evaluación de expresiones: existen ciertos aspectos relacionados con el orden de precedencia de

los operadores y la forma en que el programa evaluará cada expresión que no están contemplados

en el estándar ANSI C, por lo tanto existe la posibilidad que un mismo código produzca resultados

diferentes al ser compilados con distintos compiladores o en diferentes equipos; para evitar estos

inconvenientes es aconsejable no escribir el código basándose en el orden de precedencia, sino que

procurando dejar explícita la secuencia de evaluación para cada expresión.

Sentencias: o instrucciones son las acciones de nuestro programa para resolver el problema,

describen la secuencia de pasos; podemos clasificarlas por funcionalidad predominante:

Asignación: consiste en dar a una variable el valor de una expresión, el de otra variable o de una

constante; sitúa un valor determinado en una posición de memoria.

Modificación de valores almacenados: tener en cuenta que al guardar un valor sobre una variable

se “pisa” el valor históricamente existente en ella, es decir que es reemplazado por el nuevo valor.

Control: son estructuras que permiten dirigir el flujo de la ejecución según se requiera y bajo el

cumplimiento de determinadas condiciones; podemos separarlas en:

Condicionales: permiten seleccionar distintas sentencias en función de diferentes valores para un

expresión que se evalúa; existen las siguientes:

o If: evalúa una condición lógico o combinación de éstas y sí el resultado de la evaluación es

verdadero ejecuta el bloque de instrucciones que le preceden (If(condición){bloque};).

o If – else: bajo las mismas reglas de ejecución que el If pero sí la evaluación resulta falsa se ejecuta el

bloque de instrucciones correspondiente al else (sino) (If(condición){bloque_verdadero}

Else {bloque_falso};).

Page 15: Resumen taller de informática

o Switch: al utilizar esta sentencia el flujo de ejecución se transfiere al punto etiquetado con el “case)

cuya expresión constante coincida con el valor de la variable del switch, y a partir de ese punto son

ejecutadas todas las sentencias hasta el final del switch a menos que se intercale la ruptura

(switch(variable){case “etiqueta”: sentencias; break;… default:

sentencias;}); la etiqueta default se toma cuando la opción ingresada en la variable no

corresponde con ninguna de las declaradas, puede no estar.

Repetitivas: permiten la repetición de una serie determinada de sentencias, hay que diferenciar

bien estas sentencias a repetir escribiéndolas en un bloque, las distintas construcciones son:

o While: del inglés mientras, el bucle de sentencias se repite mientras la condición dada sea

verdadera, es una sentencia sencilla pero muy potente, es importante cuidar el valor inicial de las

variables de la condición porque puede que nunca se llegue a ejecutar el bloque y también se debe

controlar las expresiones que influyen sobre esa condición para evitar un bucle infinito

(while(condición) {sentencias};).

o Do while: en cuanto a condiciones de ejecución es igual al while; la diferencia radica en que la

condición se evalúa al final de cada ejecución, por lo tanto el bloque de sentencias se ejecuta al

menos una vez por más que inicialmente la condición resulte falsa (do {sentencias}

while(condición);).

o For: en este caso el bloque de sentencias se repite una cantidad finita de veces determinada por

una condición lógica que depende de incrementos fijos (o variables desde el interior del bucle, que

no es aconsejable), es importante “inicializar” las variables que interfieren en la condición (éstas se

pueden declarar e inicializar dentro del argumento de la sentencia) sintaxis

(for(inicialización;condición;incremento){sentencias};).

Salto: permiten romper la ejecución secuencial de un programa para llevarla al punto de ejecución

requerido; las opciones son:

continue: el uso dentro de un bucle permite pasar el control al final de la sentencia de bucle.

goto: permite saltar el flujo de ejecución a la etiqueta indicada (goto etiqueta).

Salida: permiten “sacar” el flujo de ejecución del ámbito o función que la invoca saltándose

secuencias, son:

break: el uso dentro de un bucle pasa la ejecución a la primera sentencia después del bucle.

return: sale de la función donde se encuentra y devuelve el control a la función que la llamó,

además puede devolver un valor a ésta (return(valor)).

Arreglos: es un conjunto de elementos del mismo tipo que se almacenan bajo el mismo nombre de

variable conformando una estructura organizada. Sus cualidades son: cada posición de

almacenamiento del arreglo se llama elemento, para identificar elementos en particular se utilizan

índices, todos poseen el mismo y único nombre de variable, físicamente están almacenados en

lugares contiguos de memoria, para un arreglo de n elementos se utilizan los índices desde 0 (cero)

hasta n-1, por sí sólo el nombre del arreglo apunta al primer elemento. Pueden tener distintas

dimensiones:

Page 16: Resumen taller de informática

Vectores: son aquellos de una sola dimensión, también se conocen como listas o matrices, sólo

poseen un índice que permite identificar a cada elemento en particular, declaración (tipo

nombre[número_de_elementos]). No pueden asignarse o leerse todos los elementos en una

única sentencia, para ello hay que “recorrerlos”, generalmente utilizando una estructura repetitiva

que modifica los índices del arreglo que se procesan en cada iteración.

Matrices: o tablas son arreglos bidimensionales, por lo tanto es necesario dos índices para ubicar a

cada elemento del arreglo, en genera tienen propiedades muy similares a los vectores; pero al

cargarlos o procesarlos existen dos formas de recorrerlos: por filas, dónde se coloca una estructura

repetitiva que modifique el índice de las columnas anidada en la que modifica el índice de las filas;

o por columnas, dónde la estructura anidada modifica los índices de las filas mientras la externa

hace lo propio con el índice de las columnas.

Funciones: son un conjunto de instrucciones que realizan una tarea específica, en general toman

valores de entrada llamados parámetros y devuelven uno o ningún valor de salida; al igual que las

variables las funciones se declaran y definen.

Partes de una función:

Declaración: se realizar con la sentencia prototipo, consiste en una definición de la función sin

cuerpo y terminando con ‘;’ (tipo func(tipo1 nombre1, tipo2 nombre2, tipon

nombren);).

Definición: posee las siguientes secciones:

o Tipo de almacenamiento: opcionalmente una palabra que indique lo indique, puede ser “extern” o

“static”, si no se especifica es “extern”.

o Tipo de valor de retorno: se debe indicar de que tipo es el resultado que retorna la función, para

aquellas sin retorno se utiliza “void” y sí no se especifica es tomado como “int”.

o Modificadores opcionales: son para usos muy específicos.

o Nombre de la función: se acostumbra utilizar nombres claros y descriptivos de la operación que

realiza, si se requieren varias palabras pueden utilizarse ‘_’ para separarlas.

o Lista de parámetros (entre paréntesis): se incluye una lista de todos los parámetros o valores que

la función requiere, indicando su tipo y tamaño si es necesario, se separan por comas.

o Cuerpo de la función: es el bloque de código que será ejecutado al llamar a la función, dentro de él

los datos parámetros se manejan con los nombres que se le dio en la lista de parámetros, y si la

función posee un valor de retorno la última instrucción será el (return(valor);).

Ámbito de variables: determina desde que partes del programa será o no accesible los datos

almacenados en una variable dependiendo de en que lugar fue declarada, existen dos ámbitos:

Locales: son todas aquellas declaradas dentro del cuerpo de una función, entonces sólo serán

accesibles en el interior de la misma, si son declaradas dentro de un bucle sólo son accesibles en

éste.

Globales: son aquellas que se declaran fuera del cuerpo de una función, entonces son accesibles a

todas las funciones; excepto que en el interior de alguna función se declare otro variable con igual

nombre, en cuyo caso prevalecerá la local sólo dentro de esa función.

Page 17: Resumen taller de informática

Parámetros: como ya se mencionó son todos aquellos valores que una función requiere tomar del

entorno en que se está ejecutando para poder realizar el procesamiento adecuado de los datos

dentro de la misma y devolver el resultado correspondiente a su entorno nuevamente. En el

prototipo de función puede simplemente listarse el tipo de los parámetros que requiere la función,

pero en la definición de la misma es necesario darle un nombre a cada uno que será tomado como

variable local dentro del cuerpo de la función; es muy importante respetar el orden de los

parámetros, en el mismo orden en que se dieron en el prototipo deben de cargarse (separados por

coma) en la llamada de la función y también en el mismo orden deben de declararse en la

definición de la función, de lo contrario se producirá un error de tipo en el compilador.

Recursividad: se aplica a aquellas funciones que calculan la solución llamándose a si misma, esa

llamada a si misma se conoce como recursiva, generalmente se va reduciendo el “tamaño” del

problema hasta su punto más simple en el cual el programa genera una solución y a partir de allí

retrocede en la cadena de autollamadas hasta obtener la solución del problema completo.

Preprocesamiento: el Preprocesamiento son aquellas instrucciones que se dan al inicio del código y

le indican al compilador que archivos debe incluir en el compilado de ese código para que estén

disponibles las funcionalidades que ofrecen esos archivos los cuales en C se conocen como

bibliotecas; además las “directivas del preprocesador” pueden indicar al compilador una definición

(define) para que realice el reemplazo o sustitución correspondiente en el código cuando encuentre

el argumento de esta directiva. Las directivas de Preprocesamiento se reconocen porque su línea

comienza con el símbolo numeral # seguido de la instrucción apropiada.

Bibliotecas: a diferencia de otros en el lenguaje C todas las operaciones más elementales

(entrada/salida, etc.) no están incluídas como palabras reservadas del propio lenguaje y han de

realizarse con funciones escritas para tal fín; todo este tipo de funciones o funcionalidades que le

lenguaje puede ofrecer están establecidas en archivos externos al código fuente del programa que

deben ser incluidos durante la compilación para disponer de sus características, estos archivos

externos se conocen como Bibliotecas, constituyen básicamente una recopilación de ficheros con

cabeceras (headers: conjuntos de código fuente que proveen una interfaz para los diferentes tipos

de datos) y rutinas para ejecutar las distintas funciones que la biblioteca ofrece. Existe en C una

biblioteca fundamental conocida como “Biblioteca Estándar” porque está reglamentada por el

estándar ANSI C, esta biblioteca siempre está disponible en un compilador que cumple con dicha

regulación, la misma ofrece todas las funcionalidades fundamentales de entrada y salida de datos

como así también de procesamiento de los mismos; además están disponibles para el programador

otras bibliotecas estándar con funciones orientadas a ámbitos más específicos y un sin número de

bibliotecas no estándar con infinidad de posibilidades, por ejemplo la compilación del lenguaje para

plataformas diferentes a las de un PC.

Tema 5: Sistemas Operativos

Sistema Operativo: es un software que actúa de interfaz entre los dispositivos de hardware y los

programas de usuario o el usuario mismo para utilizar un computador. Es responsable de gestionar,

Page 18: Resumen taller de informática

coordinar las actividades y llevar a cabo el intercambio de los recursos y actúa como intermediario

entre el hardware de un computador y las aplicaciones que se ejecutan; es decir administra la

memoria, gestiona el uso del CPU y administra los dispositivos de E/S.

Clasificación: los sistemas se pueden clasificar o separar según los aspectos fundamentales de éstos

que deseemos considerar; en rasgos generales podemos clasificarlos según los siguientes

parámetros:

Licencia: gratis o de pago.

Tipo de ejecución: monotarea o multitarea; en la actualidad la mayoría de SO’s son del tipo

multitarea, es decir pueden ejecutar más de una aplicación en forma simultánea.

Plataforma de usuario: monousuario o multiusuario; esto depende del núcleo sobre el que está

construido el SO, porque en él se establece la posibilidad o no de manejar múltiples usuarios del

sistema, inclusive en forma simultánea.

Interfaz de usuario: por comandos o con GUI (Graphical user interface); la mayoría de los sistemas

operativos actuales se utilizan a través de una interfaz gráfica pero también ofrecen la posibilidad

de hacerlo en el modo de consola o comando, donde ha de tipearse el comando adecuado para

realizar la tarea que se requiere.

Ancho de palabra: antiguamente algunos sistemas operativos trabajaban en 16 bit o menos

inclusive (los primeros procesadores fueron de 4); luego surgieron los de 32 bit que brindaban un

aumento significativo en la capacidad de procesamiento y en la actualidad existen de 64 bit con aún

mayor capacidad de procesamiento que no se ha explotado en su totalidad porque las aplicaciones

deben de ser desarrollas para tal fin a los efectos de utilizar los recursos extra.

UNIX: es un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en

1969 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken

Thompson, Dennis Ritchie y Douglas McIlroy. En principio fue desarrollado en Lenguaje

Ensamblador para la DEC PDP-7, luego bajo solicitud de los laboratorios Bell fue reescrito para la

DEC PDP 11/20 y también le agregaron algunas herramientas como editor de textos; finalmente en

1972 fue reescrito pero ya en lenguaje C, haciéndolo portable; es decir que podía ser utilizado en

distintas máquinas; y a partir de ese momento su desarrollo continuó vertiginosamente hasta

nuestros días; teniendo en la actualidad versiones libres (gratis, como GNU/Linux) y también

versiones bajo licencia (como MacOS ó Solaris).

Interfaz de usuario: por su nombre en inglés “Graphical User Interface (GUI)” es un programa del

SO destinado a generar un “entorno amigable” al usuario para facilitar la utilización del SO; esto

consiste en representar las funcionalidades y operaciones mediante imágenes o íconos que pueden

“tocarse” con un cursor (accionado por el mouse o la pantalla táctil, como se mencionó) y de este

modo facilitar la comprensión que el usuario tiene sobre las operaciones del sistema para que le

sea más fácil usarlo. Las interfaces están disponibles en la mayoría de SO actuales, pero muchas

veces son “deshabilitadas” por los usuarios expertos que prefieren utilizar el sistema mediante

comandos para evitar el consumo de recursos de hardware por parte del GUI.

Page 19: Resumen taller de informática

Procesos: es un programa en ejecución; son sinónimos tarea y job. Un proceso es dinámico, tiene

contador de programa (program counter) y un ciclo de vida desde que se “dispara” o inicia hasta

que finaliza; en ese ciclo de vida pasas por diferentes “estados”, básicamente: nuevo (new),

ejecutándose (running), en espera (waiting), listo para ejecutar (ready), terminado (terminated).

Posee como mínimo tres partes: código o texto; datos: variables globales; stack: son dos, uno para

el modo usuario y otro para el modo kernel, en éstos se almacenan datos temporarios como

parámetros de subrutinas, variables temporales y direcciones de retorno.

Atributos de un proceso: Id de proceso y del proceso padre, usuario que lo “disparó”, si hay

estructura de grupos se indica el que lo disparó, en ambientes multiusuario de qué terminal se

disparó.

Espacio de direcciones: conjunto de direcciones de memoria que ocupa; en modo usuario puede

acceder sólo a su espacio; en modo kernel, a estructuras del kernel o a espacios de direcciones de

otros procesos.

Contexto: incluye toda la información que el SO necesita para administrar el proceso, y que la CPU

necesita para ejecutarlo correctamente; son parte del contexto: los registros de cpu, inclusive el

contador de programa, prioridad del proceso, si tiene E/S pendientes, etc.

Relación entre proceso hijo y proceso padre: el hijo consume recursos dentro de los del padre,

comparten los recursos; pero el hijo gestiona independientemente los suyos. El proceso padre

continúa su ejecución pero espera a que los hijos terminen la suya. En UNIX el proceso hijo es un

duplicado del padre para el espacio de direcciones y en VMS se crea el proceso y el programa es

cargado dentro.

Relación entre procesos: son independientes cuando no afectan ni pueden ser afectados por otros

procesos ó cooperativos cuando afectan o son afectados por otros procesos.

Comunicación entre procesos: puede hacerse por memoria compartida, espacios a donde ambos

tienen acceso; o por IPC (Inter Process Communication) que permite la comunicación con un

sistema de mensajes.

Files System: los sistemas de archivos o ficheros (filesystem en inglés), estructuran la información

guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora),

que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos; la

mayoría de los sistemas operativos manejan su propio sistema de archivos. Se utilizan dispositivos

de almacenamiento de datos que permiten el acceso a los datos como una cadena de bloques de

un mismo tamaño, a veces llamados sectores, usualmente de 512 bytes de longitud; el software del

sistema de archivos es responsable de la organización de estos sectores en archivos y directorios y

mantiene un registro de qué sectores pertenecen a qué archivos y cuáles no han sido utilizados. La

estructura de directorios suele ser jerárquica, ramificada o "en árbol", aunque en algún caso podría

ser plana. En algunos sistemas de archivos los nombres de archivos son estructurados, con sintaxis

especiales para extensiones de archivos y números de versión; en otros los nombres de archivos

son simplemente cadenas de texto y los metadatos de cada archivo son alojados separadamente.

En las estructuras jerárquicas la ubicación de un archivo en particular es determinada por una

Page 20: Resumen taller de informática

“ruta” o “path” en la cual se visualiza la estructura de jerarquía de directorios en la que se

encuentra el archivo; la sintaxis de esta ruta como así la estructura en sí depende del sistema de

archivos y su correspondiente sistema operativo.

Linux: es, a simple vista, un Sistema Operativo; pero constituye una implementación de libre

distribución UNIX para computadoras personales (PC), servidores, y estaciones de trabajo. Fue

desarrollado para el i386 y ahora soporta los procesadores i486, Pentium, Pentium Pro y Pentium II,

así como los clones AMD y Cyrix; también soporta máquinas basadas en SPARC, DEC Alpha,

PowerPC/PowerMac, y Mac/Amiga Motorola 680x0. Nació a principio de los noventa como una

adaptación del sistema Minix basado en UNIX; su escritor original fue Linus B. Torvalds, estudiante

de informática de la Universidad Helsinki en Finlandia; quien pretendía agregar a Minix

características especialmente útiles para los estudiantes de sistemas; con el paso del tiempo Linux

se fue independizando del Minix hasta conformarse en sí mismo; actualmente es el núcleo (kernel)

de todas las distribuciones GNU/Linux.

Características: Es multitarea, multiusuario, multiplataforma y multiprocesador; en las plataformas

Intel corre en modo protegido; protege la memoria para que un programa no pueda hacer caer al

resto del sistema; carga sólo las partes de un programa que se usan; comparte la memoria entre

programas aumentando la velocidad y disminuyendo el uso de memoria; usa un sistema de

memoria virtual por páginas; utiliza toda la memoria libre para cache; permite usar bibliotecas

enlazadas tanto estática como dinámicamente; se distribuye con código fuente; usa hasta 64

consolas virtuales; tiene un sistema de archivos avanzado pero puede usar los de los otros

sistemas; y soporta redes tanto en TCP/IP como en otros protocolos.

Interfaz: La interfaz primaria o básica del Unix/Linux es de tipo texto y hasta no hace mucho ha sido

la única para el sistema. Actualmente hay interfaces gráficas como el X Windows, Open Look,

GNOME o KDE.

Comandos principales: el sistema Linux fundamentalmente es manejado por medio de comandos

que se introducen en un “terminal” o consola; existe infinidad de comandos comunes a todas las

distribuciones de Linux, además de los comandos personalizados que cada usuario puede añadir;

en rasgos generales éstos son los más importantes y necesarios a la hora de operar una máquina:

man comando: visualiza la ayuda del comando comando

clear: limpia la consola

date: visualiza en pantalla el día y la hora

ls: listado de contenido de directorio

mkdir: crea directorios

chmod: cambia los permisos de los archivos

cp: copia archivos

rm: borra y directorios

mv: mover y renombrar archivos y directorios.

pwd: visualiza la posición actual dentro del directorio raíz y también el usuario que se está

utilizando.

Page 21: Resumen taller de informática

g++ -c ejemplo.cc: crea el programa objeto desde un terminal, donde ejemplo.cc es el código

fuente.

g++ - o ejemplo ejemplo.o: crea el ejecutable ejemplo a través del programa objeto ejemplo.o.

Tema 6: Software de Aplicación:

Planilla de Cálculo: también conocidas como hojas de cálculo son software para el usuario final

destinado a realizar cálculos, que además permiten generar gráficos y bases de datos; básicamente

manipulan datos numéricos y alfanuméricos organizados en forma de tablas, a cuyas casillas se

denomina celda y cada una de éstas tiene una forma única de referenciarse mediante una

combinación alfanumérica dónde la letra corresponde a la columna y el número a la fila, entonces

en todas las operaciones a realizar se puede hacer referencia (tomar el valor) de una celda

indicando esta “dirección” del dato dentro de la hoja.

Las principales funcionalidades están disponibles en la mayoría de opciones existentes de éstos

programas, a saber:

Cálculos aritméticos

Funciones estadísticas

Ordenamiento de datos

Personalización de formatos y formatos condicionales para datos

Funciones lógicas elementales

Búsqueda y filtrado de datos

Gráficos de datos

Tema 7: Conceptos de Redes e Internet:

Redes: técnicamente una red constituye una interconexión de datos entre computadoras, que

permite la transferencia de información digitalizada entre ellas, como tal surgió en 1969 con la

primer conexión de computadoras denominada ARPANET, que interconectaba tres universidades

en EEUU; luego los desarrollos tecnológicos permitieron ampliar este tipo de conexiones hasta

convertirlas en un servicio fácilmente disponible para los usuarios civiles, actualmente conocido

como Internet. El desarrollo de éstas interconexiones físicas vino acompañado del aumento de

servicios u opciones disponibles que utilizan este medio de comunicación para funcionar, así por

ejemplo existen los servicios de correo electrónico (SMTP: Simple Mail Transfer Protocol: Protocolo

Simple de Transferencia de Correo), transferencias de archivos (FTP: File Transfer Protocol:

Protocolo de Transferencia de Archivos y P2P: Peer to Peer: Redes de Pares), la Web (WWW: World

Wide Web) como forma de consulta remota de archivos de hipertexto (páginas web), mensajería

instantánea (MSN, GoogleTalk, etc.), telefonía sobre internet (VoIP: Voz sobre Protocolo de

Internet), televisión (IPTv: Internet Protocol Television); y un sin número de nuevas opciones que

pueden desarrollarse para utilizar la red como medio de interconexión debido a su vertiginosa

proliferación y versatilidad técnica - operativa.

Page 22: Resumen taller de informática

Bibliografía:

“El lenguaje de Programación C” Segunda Edición, Brian W. Kernighan – Dennis M. Ritchie, Pearson

Educación; ISBN: 968-880-205-0.

“Wikipedia” en español: http://es.wikipedia.org/

Apuntes de Cátedra: “Taller de Informática” de la Facultad de Ingeniería – Universidad Nacional de

Misiones.