Taller de Informática I Introducción Año 2010 Lic. Andrea Manna Presentación • • • • Teórico/Práctico Miércoles 18:00 a 22:00 – Laboratorio 6 2 trabajos prácticos y un coloquio final Promocional Docentes • Profesor: Javier Marenco (jmarenco@dc.uba.ar) • JTP: Andrea Manna (amanna@dc.uba.ar) • Ay. Primera: Cristian Rocha (crocha@dc.uba.ar) • Ay. Primera: Silvana Wider (swider@dc.uba.ar) Apuntes • Página web: ▫ www.dc.uba.ar ▫ http://www-2.dc.uba.ar/materias/t1/index.html Objetivos • La intención de la materia es dar una introducción al uso de la computadora para aplicaciones científicas, que involucren el manejo de volúmenes de datos, cálculos estadísticos, visualización y simulación numérica de procesos. Se buscará dar una introducción general a la programación para estudiantes de ciencias (en particular para estudiantes de Geología), de modo tal que comprendan las potencialidades y limitaciones de la computadora. • Como objetivos formativos, se pretende que luego de cursar la materia el estudiante: ▫ entienda de qué se tratan las ciencias de la computación, ▫ entienda una publicación científica interdisciplinaria entre su carrera y computación, y ▫ logre relacionar un problema matemático con problemas computacionales. Conceptos básicos • Computadora: Una computadora es un dispositivo capaz de realizar cálculos y tomar decisiones lógicas a velocidades hasta miles de millones de veces más rápidas que las alcanzables por los seres humanos. Básicamente surgen para ayudar a las personas en la resolución de cálculos matemáticos. De ahí su nombre computadora que deriva de la palabra “cómputo” o sea cálculo • En la actualidad, una computadora es una herramienta que se utiliza para resolver problemas. Funciones • Una computadora realiza 4 funciones básicas: ▫ ▫ ▫ ▫ Ingreso de datos Procesamiento de la información Salida de datos Almacenamiento de los resultados • El dato es la información elemental y se pueden distinguir datos de diferentes tipos: números, caracteres, fechas, etc. • Los procesos son un conjunto de operaciones a realizarse con los datos, para obtener resultados Representación de la información • Como se ha visto, una computadora es una máquina capaz de procesar información. Para realizar este proceso se precisa información de dos tipos: Las instrucciones del programa Los datos a procesar • Pero…¿Cómo le brindamos esta información? Representación de la información • Normalmente un operador le da a la computadora los datos en un lenguaje conocido, utilizando los símbolos del lenguaje diario. Estos símbolos pueden ser: Números Letras Símbolos Alfanuméricos • Obviamente estos símbolos no son los que utiliza internamente una computadora Representación de la información • Por lo tanto tenemos dos niveles de representación de la información: Externa: Utilizada por las personas e inadecuada para la computadora Interna: Utilizada por la computadora y no legible fácilmente por un ser humano • De aquí se desprende que hay una transformación de la información que otorga una persona a la computadora, a elementos que una computadora puede ser capaz de almacenar Representación de la información Las primeras computadoras eran muy simples: • Wilhelm Schickard: 1623, primera calculadora automática (Reloj calculador). La máquina realizaba las 4 operaciones, basada en “Huesos de Napier” y en un mecanismo de sumas parciales. Utilizaba números de hasta 6 dígitos. El prototipo y los planos fueron perdidos hasta el siglo 20, cuando su diseño fue descubierto entre los papeles de Kepler. Murió a los 43 años víctima de la peste bubónica Representación de la información • Blas Pascal: 1642, sólo suma y resta (Pascalina) Fue un niño prodigio y matemático de primer orden. Pascalina se usó para el cálculo de impuestos en Francia hasta 1799. Ayudó a crear dos grandes areas de investigacion: Geometria proyectiva y Teoría de Probabilidades. Murió a los 39 años. Autor del triángulo de Pascal (el triangulo representa los coeficientes binomiales) Representación de la información • Von Leibniz: 1672, las 4 operaciones Fue filósofo, matemático, jurista, bibliotecario y político alemán, considerado “El último genio universal” de los siglos XVII y XVIII. Descubrió el cálculo infinitesimal, el sistema binario, anticipa la lógica moderna y la filosofía analítica. La máquina de Leibniz era superior a la de Pascal, ya que multiplicaba por repetición de sumas y dividía por repetición de restas Representación de la información • En la década del ’40: ▫ Z1: Konrad Zuse, Ing alemán, diseño Z1 en 1936, considerada la primera computadora programable. Recibía datos de una cinta perforada y utilizaba lógica booleana. Hacía cálculos en punto flotante. ▫ Mark1: Usaba el 0 para representar el positivo y el 9 para el negativo. Procesaba 1 instrucción cada 6 segundos. ▫ ENIAC: Pesaba 30 tn. Tenía 20 registros capaz de almacenar un número de 10 dígitos. Usaba aritmética en base 10 Primeras Computadoras Mark1 Eniac Z1 Representación de la información • Despues de mucho investigar, se decidió que la mejor opción para almacenar la informacion en una computadora, era utilizando el sistema binario, o sea basado en 1 y 0. • Una de las ventajas es que podemos adaptar fácilmente el sistema electrico, usando presencia y ausencia de voltaje para representar físicamente el 1 y el 0. • Hay una ventaja sustancial en los cálculos, dado que resultan mucho más simples para una máquina que usando un sistema en otra base Representación de la información: el sistema binario • El antiguo matemático hindú Pingala presentó la primera descripción que se conoce de un sistema de numeración binario en el siglo III a.C., lo cual coincidió con su descubrimiento del concepto del número cero. • El sistema binario moderno fue documentado totalmente por Leibniz, en el siglo XVII, en su artículo "Explication de l'Arithmétique Binaire". En él se mencionan los símbolos binarios usados por matemáticos chinos. Leibniz usó el 0 y el 1, al igual que el sistema de numeración binario actual. • En 1854, el matemático británico George Boole, publicó un artículo que marcó un antes y un después, detallando un sistema de lógica que terminaría denominándose Álgebra de Boole. Dicho sistema desempeñaría un papel fundamental en el desarrollo del sistema binario actual, particularmente en el desarrollo de circuitos electrónicos. Representación de la información: el sistema binario • El sistema binario, en matemáticas e informática, es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). decimal binario hexa • Bit: Es el acrónimo de Binary Digit o dígito binario. Es la unidad mínima de información utilizada en informática. Un bit es un dígito del sistema binario que puede tomar dos valores: 0 ó 1. • Byte: Byte Es la unidad básica de almacenamiento de la información. Equivale a 8 bits. • Otras medidas útiles: 8 bits -> 1 Byte 1KByte -> 1024Byte 1MByte ->1024KByte 1Gbyte -> 1024MByte Sistema de numeración: como el conjunto de símbolos y reglas que se utilizan para la representación de cantidades. En ellos existe un elemento característico que define el sistema y se denomina base, siendo ésta el número de símbolos que se utilizan para la representación. Representación de la información: caracteres • Código ASCII (American Standard Code for Information Interchange). Es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Representación de la información: caracteres • Unicode: Es propuesto por un consorcio de empresas y entidades que trata universalizar y hacer compatibles todos los sistemas del mundo bajo una misma norma • Inconvenientes del sistema ASCII: ▫ Los símbolos codificados no alcanzan para representar los caracteres especiales que requieren numerosas aplicaciones ▫ Los símbolos y códigos añadidos en las versiones ampliadas a 8 bits no están normalizados ▫ Están basados en los caracteres latinos, existiendo otras culturas que utilizan otros símbolos muy distintos • Propiedades buscadas: ▫ Universalidad, trata de cubrir la mayoría de lenguajes escritos existentes en la actualidad: 16 bits 65.356 símbolos ▫ Unicidad, a cada carácter se le asigna exactamente un único código (sin importar plataforma ni idiomas) ▫ Uniformidad, ya que todos los símbolos se representan con un número fijo de bits (16) Representación de la información: caracteres • Características: ▫ Está basado en ASCII (lo cual facilita la migración) ▫ Evita el problema de ASCII que sólo cuenta con caracteres latinos. • Actualmente cuenta con tres formas de codificar la información: en 8, 16 o 32 bits. • Las tres formas de codificar tienen el mismo repertorio de caracteres comunes y es posible cambiar una en otra sin pérdidas de datos. • Las tres formas son referidas como UTF-8, UTF-16 y UTF-32 • Link: http://www.unicode.org/charts/ Hardware y Software • Hardware: Es la parte física de la computadora, es decir, todo aquello que podamos percibir con el sentido del tacto, los componentes mecánicos, magnéticos, electromagnéticos que hacen que la máquina funcione. El hardware por sí solo no realiza ninguna tarea, sólo puede llevarlas a cabo a través de un software adecuado. • Software: Es la parte lógica de la computadora, los procedimientos que el hardware realiza inducidos por el software y este a su vez por nosotros. El software es como un traductor que hace que nuestras órdenes se conviertan en realidad, manipulando el hardware o la parte física. Hardware: Partes de una computadora • • • • • Memoria principal: también llamada RAM (Random Access Memory - Memoria de Acceso Aleatorio), es el almacén primario de la computadora. Esta memoria es la más importante de la computadora, porque almacena información necesaria para que la computadora pueda arrancar y funcionar. Unidad de Control: Es la que se utiliza para coordinar y controlar las operaciones que se realizan para procesar la información. Unidad Aritmética y Lógica : Es el dispositivo que se encarga exclusivamente de los cálculos, es decir realiza todas las operaciones artitméticas (suma, resta, multiplicación, division, etc) y lógicas (mayor, menor, etc) Unidad Central de Procesamiento: Es la UC + ALU. Es básicamente el cerebro de la computadora. Se encarga de supervisar, controlar y regular el procesamiento de todos los elementos de la computadora. Unidades de Entrada: Es la parte de la computadora por la cual ingresa la información: teclado, mouse, escaner, lápiz óptico, etc. Unidades de Salida: Es la parte de la computadora a través de la cual se muestra el resultado del procesamiento de los datos: impresora, pantalla, parlantes, etc. Hardware: Partes de una computadora • Buses: Son las líneas o caminos a través de los cuales la información fluye desde una parte a otra de una computadora. Básicamente se trata de un conjunto de cables que sirven para interconectar los diferentes dispositivos. Se pueden dividir en, según su función: ▫ Internos: a la CPU (transportando datos entre la ALU y los registros) ▫ Externos: Conectan a la CPU con la memoria y con los diferentes dispositivos de Entrada/Salida • Memoria Secundaria: Son dispositivos que se utilizan para almacenar información que debe perdurar a través del tiempo. Disco duro Regrabador de CD Memoria flash USB Unidad de discos de 3 1/2 Hardware: Partes de una computadora Software: Tipos • Podemos distinguir tres tipos de software diferentes: ▫ Sistemas Operativos: Tiene por objetivo efectuar la interrelación entre los elementos físicos de la máquina (hardware) con el entorno (usuario, periféricos, dispositivos, otros programas, etc.), tendiendo a minimizar las operaciones humanas y maximizar la utilidad del sistema en función del tiempo. ▫ El sistema operativo ejecuta las tareas básicas, como de reconocer entradas desde el teclado, enviar mensajes a pantalla, manteniendo rastro de los archivos y directorios en el disco, y controlar los dispositivos periféricos como las impresoras. LINUX Software: Tipos ▫ Lenguajes de programación: Tienen por objetivo permitir a un ser humano generar software con un fin específico. Una definición más estricta sería: es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Se utiliza para controlar el comportamiento físico y lógico de una computadora. Trozo JAVA Fichas estadoTablero[][]; public Tablero(){estadoTablero=new Fichas [6][7];}; Tablero miTablero = New Tablero(); public Tablero(){estadoTablero=new Fichas [6][7];}; NombreDeLaClase.nombreDelMetodo(pa rámetros del método); Trozo Visual Basic Open Text1(1) & "\" & nameFile & ".bat" For Append As #3 i=1 archivoBAT = ("copy /b ") + Chr(34) & (i) & _ (nameFile) + Chr(34) + Chr(32) + Chr(34) + (nameFile) + Chr(34) Print #3, archivoBAT lenResto = tamaño Mod CLng(Combo1) For i = 1 To CByte(Combo1) If i = CByte(Combo1) Then ReDim FileData(CLng(Text1(2)) + lenResto - 1) Trozo Pascal PROGRAM Primera_Prueba; CONST Mensaje = 'Introduce un valor entero: '; Respuesta = 'El valor es: '; VAR Entero : Integer; BEGIN Write(Mensaje); ReadLn(Entero); WriteLn(Respuesta, Entero); END. Software: Tipos ▫ Software de aplicación: Son los programas realizados por las personas con un fin específico. Lenguajes de programación ▫ Es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo. Ejemplos: ▫ Pascal, C, Java, Basic, C++… Entrada Algoritmo Salida Escrito en algún lenguaje de programación Lenguajes de programación • La computadora entiende lenguaje de máquina, o sea, basado en 0 y 1. Entonces, nuestro algoritmo debe ser traducido a lenguaje de máquina. Esta traducción puede hacerse mediante: Compilación Interpretación Lenguajes de programación • Compilador: programa que recibe como entrada un conjunto de sentencias escritas en algún lenguaje de alto nivel y produce, como salida, un programa en lenguaje de máquina (normalmente denominado ejecutable) que puede ser ejecutado por la máquina donde fue compilado. Generalmente hay dos pasos: el análisis sintáctico y la generación de código objeto. Con esta información el linker se encarga de generar el ejecutable. • Interprete: En lugar de tomar un código fuente y traducirlo íntegramente a código ejecutable, el intérprete realiza la doble tarea de traducir y ejecutar simultáneamente, sin producir un código objeto ni un ejecutable. Se traduce línea a línea a medida que se precisa, o sea, al momento de ejecutar En general, la ejecución de un código interpretado es más lenta que la de un código compilado (¿Por qué?).