Story Transcript
1. Computadores y programaci´on
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Inform´atica y computadora (RAE) Inform´ atica (Ciencia de la computaci´ on) Conjunto de conocimientos cient´ıficos y t´ecnicos que hacen posible el tratamiento autom´ atico de la informaci´ on por medio de ordenadores. Computadora M´ aquina electr´ onica, anal´ ogica o digital, dotada de una memoria de gran capacidad y de m´etodos de tratamiento de la informaci´ on, capaz de resolver problemas matem´ aticos y l´ ogicos mediante la ejecuci´ on de programas inform´ aticos.
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Hardware y Software (RAE)
Hardware Componentes que integran la parte f´ısica de una computadora. Software Conjunto de programas, instrucciones y reglas inform´ aticas para ejecutar ciertas tareas en una computadora.
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
El Sistema Operativo • Es el software b´asico para manejar el hardware y proporcionar un conjunto de servicios gen´erico al resto de programas, las aplicaciones. • Es la primera capa de software que tiene un computadora, que establece un puente entre el hardware y el resto del software (aplicaciones)... pero en definitiva es un programa • Sistemas operativos m´as usuales: Linux, Windows (en sus distintas versiones), Mac OS, Solaris, Unix, Android... • En FP nos interesa aprender a dise˜ nar aplicaciones. No vemos los sistemas operativos a fondo. Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Programas, algoritmo, c´omputo Algoritmo Descripci´ on precisa y ordenada de una secuencia (finita) de operaciones que permite hallar la soluci´ on de un problema. Conocemos alg´ un algoritmo? Al ser una secuencia finita de instrucciones, siempre terminar´ a... es cierto? NO Programa Codificaci´ on de un algoritmo en un lenguaje de programaci´ on concreto (C#, C++, Java, ...), mediante una secuencia de instrucciones que entiende la computadora. un programa? Son distintos programa y algoritmo? Conocemos alg´ C´ omputo Ejecuci´ on de un programa en un ordenador. Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Cuantos c´ omputos puede hacer un programa?
Arquitectura de una computadora
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Arquitectura elemental
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Memoria Principal
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Unidad Central de Proceso (CPU)
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Programas a bajo nivel: el lenguaje m´ aquina • La CPU trabaja en sistema binario, con ceros y unos (bits, unidad m´ınima de informaci´ on/dato) Byte: grupo de 8 bits (unidad b´ asica de acceso a memoria) En el lenguaje m´aquina TODO se representa en binario: instrucciones del programa, datos, direcciones de memoria, etc. I
Es habitual utilizar representaci´ on en sistema hexadecimal As´ı, el byte 01011011 se representa como: 0101 |{z} 1011 |{z} 5
B
01011011 binario ≡ 5B hexadecimal Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Lenguaje m´aquina Un ejemplo de programa en lenguaje m´ aquina para sumar dos n´ umeros Instrucci´on A0 2F 3E 01 A0 30 3E 02 1D B3 31
Significado Acceder a la posici´ on de memoria 2F Copiar el dato en el registro 1 de la ALU Acceder a la posici´ on de memoria 30 Copiar el dato en el registro 2 de la ALU Sumar (registros 1 y 2) Guardar el resultado en la posici´ on de memoria 31
Este lenguaje es dependiente de la computadora concreta (de la CPU de la misma). Es distinto para un PC o un MAC... incluso es (ligeramente) distinto para cada CPU de esas arquitecturas. Muy dif´ıcil programar directamente en lenguaje m´ aquina. Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Lenguaje m´aquina (II)
Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Lenguaje ensamblador. Un poco m´as f´acil
Pero sigue siendo lenguaje bajo nivel, dif´ıcil Jaime un Sánchez. Sistemas de Informáticos y Computación, UCM de utilizar.
El siguiente paso: los lenguajes de alto nivel I
M´ as pr´oximos al lenguaje natural y matem´ atico resultado = dato1 + dato2;
I
Programas mucho m´as f´ aciles de escribir (y de leer)
I
Despu´es vino la programaci´ on estructurada, la abstracci´ on procedimental, la estructuraci´ on de datos, la programaci´on orientada a objetos... capas de abstracci´on para acercar el lenguaje a la persona y facilitar el dise˜ no de programas.
I
Infinidad de lenguajes: C++, Java, Python, Fortran, Prolog, Haskell, Pascal, Cobol, Lisp, Smalltalk, C#,... Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Muchos lenguajes de programaci´on
En https://es.wikipedia.org/wiki/Anexo: Lenguajes_de_programacion hay una lista muy incompleta con m´ as de 600 lenguajes de programaci´ on. Jaime Sánchez. Sistemas Informáticos y Computación, UCM
¿Por qu´e C#? I
Lenguaje moderno (2000)
I
Influido por lenguajes consolidados Java, C++, Eiffel, Modula-3, Pascal... incorporando lo mejor de ellos.
I
Elecciones de dise˜ no muy acertadas, dise˜ nado por programadores experimentados como Anders Hejlsberg es elegante, simple, con tipos seguros...
I
Completamente integrado en la plataforma .NET de MS Windows, pero multiplataforma
I
Descriptores (Wikipedia) Multiparadigma: estructurado, imperativo, orientado a objetos, dirigido por eventos, funcional, gen´erico, reflexivo
Por qu´e se llama C#? # (sostenido musical, un semitono por arriba: superior a C). Es otra evoluci´ on de C. Jaime Sánchez. Sistemas Informáticos y Computación, UCM
¿Por qu´e C# en el grado de videojuegos? I
Porque se integra perfectamente con el motor Unity
I
Es un lenguaje de prop´ osito general... no sirve solo para videojuegos, sino para cualquier tipo de aplicaci´ on.
I
Es un lenguaje con futuro y es perfecto para el curr´ıculum de un alumno de este grado.
I
Es un buen lenguaje de iniciaci´ on a la programaci´ on... pero adem´as es un lenguaje profesional!
Por otro lado: I
El objetivo prioritario del curso NO es aprender C#... es aprender programaci´on estructurada: C# es muy razonable.
I
Un programador debe conocer distintos (y variados) lenguajes de programaci´on y aprender constantemente otros nuevos.
I
¿Cu´al es el mejor lenguaje de programaci´ on? Cada programador tiene su(s) favorito(s). Lo ideal es dominar Jaime Sánchez. Sistemas Informáticos y Computación, UCM muchos y utilizar uno u otro dependiendo de la aplicaci´ on.
Sintaxis y sem´antica de los lenguajes Un lenguaje (formal) queda definido (formalmente) por dos aspectos esenciales: I
Sintaxis: reglas que determinan las construcciones v´ alidas del lenguaje. ¿Est´a bien escrito?
I
Sem´ antica: significado que se atribuye a las construcciones v´ alidas del lenguaje. ¿Qu´e hace?
Un lenguaje de programaci´ on es un lenguaje formal. I
La sintaxis determina lo que es un programa v´ alido.
I
La sem´antica determina lo que hace un programa v´ alido (el resultado que produce su ejecuci´ on).
En los sucesivo nos centramos en lenguajes de programaci´ on. Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Sintaxis de los lenguajes de programaci´on Se define mediante Diagramas de flujo o Gram´ aticas • Diagramas de flujo: representaci´ on gr´ afica de la forma de construcci´on de elementos del lenguaje. Por ejemplo, para los n´ umeros enteros:
De acuerdo con esto, ¿est´ an bien formados los siguientes n´ umeros? 23, −159, +5, 1 − 34, 3.14, 002 Jaime Sánchez. Sistemas Informáticos y Computación, UCM
Sintaxis de los lenguajes de programaci´on. Gram´aticas La forma m´as habitual de definir la sintaxis es con • Gram´ aticas BNF (Bakus-Naur Form) o EBNF (Extended Bakus-Naur Form): m´as formal, m´ as potente, m´ as precisa. Por ejemplo, para los enteros: entero signo secDigitos digito I I
I I I
→ → → →
signoOp secDigitos +|-| digito | digito secDigitos 0|1|2|3|4|5|6|7|8|9
Cada l´ınea es una producci´ on gramatical Los s´ımbolos no terminales son los que tienen una producci´on asociada o m´ as (los que aparecen a la izquierda de →) Los s´ımbolos terminales son el resto. | significa alternativa (´ o) Jaime Sánchez. Sistemas Informáticos y Computación, UCM significa secuencia vac´ıa
Gram´aticas. Reconocimiento, generaci´on. entero signoOp secDigitos digito
→ → → →
signoOp secDigitos +|-| digito | digito secDigitos 0|1|2|3|4|5|6|7|8|9
De acuerdo con esto, ¿est´an bien formados los n´ umeros 23, -159, +5, 1-34, 3.14, 002?
Por ejemplo, para el 23: → → → → → → Jaime Sánchez.
entero
signoOp secDigitos secDigitos ≡ secDigitos digito secDigitos 2 secDigitos 2 digito 23 Sistemas Informáticos y Computación, UCM