1. Computadores y programación

1. Computadores y programaci´on Jaime Sánchez. Sistemas Informáticos y Computación, UCM Inform´atica y computadora (RAE) Inform´ atica (Ciencia de l

1 downloads 64 Views 650KB Size

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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.