Tema 1 Fundamentos de la programación PDF

Title Tema 1 Fundamentos de la programación
Author Carlos Gonzalez
Course Fundamentos de Programación
Institution Universidad Complutense de Madrid
Pages 8
File Size 585.2 KB
File Type PDF
Total Downloads 51
Total Views 146

Summary

Download Tema 1 Fundamentos de la programación PDF


Description

Informática, computadora, y programación

Fundamentos de programación

¿Qué es la Informática?

¿Qué es una computadora?

Grado Grado en en Ingeniería Ingeniería Informática Informática Grado Grado en en Ingeniería Ingeniería del del Software Software Grado Gradoen enIngeniería Ingenieríade deComputadores Computadores

Hardware vs. software

Material Materialde dela laProf.ª Prof.ªMercedes MercedesGómez Gómez Albarrán Albarrán

¿En qué consiste la programación de computadoras?

Versión revisada y ampliada del material del Prof. Luis Hernández Yáñez

Facultad Facultad de de Informática Informática Universidad Complutense Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

El hombre y sus primeros intentos de procesar la información

Página 1

Comienza la era de la Informática

Ábaco – 2.000 a.c.

1945 

El Elsumador sumadorde dePascal Pascal– mediados s.XVII

La Pascalina (Wikipedia)

La Lacalculadora calculadorade deG.W. G.W.von vonLeibniz Leibniz– finales s.XVII



ElElmodelo modelode deJ.J.von vonNeumann: Neumann:estructura estructurade delalacomputadora computadora El Elconcepto conceptode deprograma programainterno interno Dispositivos de E/S

La Lamáquina máquinade dediferencias diferenciasde deBabbage Babbage– s.XIX  El Elconcepto conceptode deprograma programaexterno externo

C.P.U. (Procesador) ALU Unidad AritméticoAritmético-Lógica

Lady Lady Ada Ada Lovelace Lovelace es es considerada la primera programadora

Memoria

Unidad de Control Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 2

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 3

Las computadoras están por todas partes

Algunos hitos en la vida de la Informática ¿Cuándo ¿Cuándosesecrean creanlos losprimeros primeroslenguajes lenguajesdedeprogramación? programación?¿cuáles ¿cuáles fueron? fueron?¿Es ¿EsC++ C++mayor mayordedeedad? edad?¿Quién ¿Quiénesesmás másjoven: joven:C++ C++ooJava? Java?

¡Con ¡Con múltiples múltiples formas formas distintas distintas de de un un PC! PC!

¿Cuál ¿Cuálpuede puedeconsiderarse considerarseelelprimer primervirus virusinformático? informático? ¿Quién ¿Quiénsurge surgeprimero: primero:MS MS -DOS, Windows, UNIX, Linux, Android ? ¿Cuándo ¿Cuándose secrea creala laWWW? WWW? ¿Qué ¿Quésoportes soportesexternos externosconoces: conoces:disquete, disquete,CD, CD,DVD? DVD?¿Alguno ¿Algunonació nació antes antes que que tú? tú? ¿Quién ¿Quién es es Alan Alan Turing Turing?? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 4

¿Qué entiende la computadora?

Página 5

Lenguaje máquina a = (b + d)/(c + e)

Computadora:: Máquina Máquina electrónica electrónica digital digital,, dotada dotada de de ... ... Pasos

sumar c y e , ,yyguardar guardarelelresultado resultadoen enuna unadirección direcciónde dememoria memoria temporal X  sumar b y d, ,yyguardar guardarelelresultado resultadoen enuna unadirección direcciónde dememoria memoria temporal Y dividir el el contenido contenido de deY guardar en en la la dirección dirección de dea Y por el de X yy guardar a  dividir



La Lacomputadora computadoramanipula manipulainformación informacióndigital: digital:esquema esquemabinario binario ¿Por ¿Porqué quéno noseseusa usauna unarepresentación representaciónanalógica analógicade delalainformación? información?

Ejemplo de código máquina ¿A ¿Aqué quénos nosconduce conducelalasolución soluciónadoptada adoptadapara paraevitar evitarelelproblema problema tecnológico?



codigoOp direccOp1 direccOp2 direccRes 0000 00001000 00001100 00001110 0000 00011000 00011100 00011110 0101 00011110 00001110 00000100 Código de la división

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 6

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Código de la suma

Direcc. Temporal X

Direcc. Temporal Y Página 7

Lenguaje máquina

Lenguaje ensamblador

Lenguaje Lenguajede deprogramación programaciónde debajo bajonivel nivel Nulo Nulonivel nivelde deabstracción: abstracción:los loscódigos códigoscontienen contienenlos losceros cerosyyunos unos que quegobiernan gobiernandirectamente directamentelos loscircuitos circuitosde delalaCPU CPU

 Lenguaje Lenguajesimbólico simbólicocon conuna unamínima mínimacapacidad capacidadde deabstracción abstracción  Nemotécnicos Nemotécnicospara paralos loscódigos códigosque querepresentan representan

instrucciones  Nombres Nombressimbólicos simbólicospara paralas lasdirecciones direccionesde dememoria memoria

Totalmente Totalmentedependiente dependientede delalamáquina máquina Cada Cadafamilia familiade deprocesadores procesadoresusa usasus suspropios propioscódigos, códigos, distintos distintosde delos losde deotras otrasfamilias familias

a = (b + d)/(c + e) Código fuente (lenguaje (lenguaje ensamblador) ensamblador

ADD C, E, X ADD B, D, Y DIV Y, X, A

 Programación: Programación: muy muytediosa

Programa Programa ensamblador ensamblador

Grandes Grandesposibilidades posibilidadesde deerror error  Mayor Mayor legibilidad legibilidad  ¿Cómo ¿Cómoentiende entiendelalamáquina máquinaeste estecódigo? código?

Código objeto (lenguaje máquina)

 Dependiente Dependientede delalamáquina máquina

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 8

Lenguajes de programación de alto nivel

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 9

Lenguajes de programación de alto nivel

Lenguaje Lenguajeque quepermite permiteexpresar expresarelelmecanismo mecanismodederesolución resolucióndede

Prolog

problemas problemasusando usandoinstrucciones instruccionesindependientemente independientementededelala computadora computadora

 Más Máscercanos cercanosaalos loslenguajes lenguajesnatural naturalyymatemático matemático

COBOL 1959

1970

Java

PL/I

C++

1964

1983

FORTRAN 1954

C#

C

CPL

2000

1971

1963

a = (b + d)/(c + e);

1995

Python Python

 Capacidad Capacidadde deabstracción abstracción

ALGOL

Pascal

Modula

1958

1970

1975

Abstracciónprocedimental procedimental  Abstracción

1991

BASIC 1964

 Abstracción Abstracción de de datos datos

Ada

Eiffel Eiffel

1979

1986

Simula 1964

 Mayor Mayorlegibilidad, legibilidad,mayor mayorfacilidad facilidadde decodificación codificación

Smalltalk Smalltalk

Ruby

1971

1993

¿Cómo ¿Cómoconseguir conseguirque quelalacomputadora computadora“entienda” “entienda”los losprogramas programas

escritos escritosen enlenguajes lenguajesde dealto altonivel? nivel?

Haskell Scheme

Lisp

1987

1975

1958

 Compiladores Compiladoreseeintérpretes intérpretes

Logo 1968

Fuente: http://www.levenez.com/lang/ http://www.levenez.com/lang/ Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 10

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 11

Programas y más programas

La programación: resolución de problemas  PROGRAMAR ES RESOLVER RESOLVER PROBLEMAS PROBLEMAS

El sistema operativo



Actividades Actividadesimplicadas implicadasen enlaladescripción, descripción,eleldesarrollo desarrolloyylala implementación implementación de de soluciones solucionesalgorítmicas algorítmicaseficaces eficacesyyeficientes eficientes a problemas problemasbien bien especificados especificados —



Programas de aplicación



 PROGRAMAR NO ES CONOCER CONOCER LA LA SINTAXIS SINTAXIS DE DE MUCHOS MUCHOS

LENGUAJES LENGUAJES DE DE PROGRAMACIÓN PROGRAMACIÓN — —

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 12

Los Loslenguajes lenguajesde deprogramación programaciónson sonun unmedio mediopara paraexpresar expresar algoritmos Programa: Programa:algoritmo algoritmoexpresado expresadoen enun uncierto ciertolenguaje lenguajede de programación

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

La programación: resolución de problemas

La programación: resolución de problemas

El Elprimer primerproblema problemadel delmontón montónde defichas fichas

El Elsegundo segundoproblema problemadel delmontón montónde defichas fichas

Supongamos que tenemos una secuencia de fichas, cada una de las cuales tiene escrito el nombre de una persona junto con otros datos personales (fecha de nacimiento, dirección, número de teléfono). Las fichas están ordenadas alfabéticamente por el nombre. Queremos felicitar por teléfono a los que cumplen años hoy. ¿Cómo detectamos a los cumpleañeros?

 ¿Cuál ¿Cuál es es la la entrada? entrada?

Página 13

Supongamos que volvemos a tener la misma secuencia de fichas. Nos pasan el nombre de una persona a la que hay que felicitar por teléfono. ¿Cómo lo hacemos?

 ¿Cuál ¿Cuál es es la la entrada? entrada?

 ¿Cuál ¿Cuál es es la la salida? salida?

 ¿Cuál ¿Cuál es es la la salida? salida?

 ¿Cuál ¿Cuál es es el el algoritmo? algoritmo?

 ¿Cuál ¿Cuál es es el el algoritmo? algoritmo?

 ¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo

 ¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo

anterior?

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

anterior? Página 14

Estado inicial

Estado inicial - Entrada Entrada del del problema problema - Precondiciones Datos Datosiniciales iniciales yy relaciones relacionesentre entre ellos ellos Algoritmo Estado final - Salida Salida del del problema problema - Postcondiciones Postcondiciones Datos Datosfinales finalesyy relaciones relacionesentre entre ellos ello Algoritmo: Algoritmo:sistemática sistemáticaque quetransforma transformalalaentrada entradaen enlalasalida salida Estado

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 15

final

La programación: resolución de problemas

La programación: resolución de problemas

El Eltercer tercerproblema problemadel delmontón montónde defichas fichas

El Elcuarto cuartoproblema problemadel delmontón montónde defichas fichas

Supongamos que volvemos a tener la misma secuencia de fichas. Nos pasan el nombre de una persona y su nuevo número de teléfono. ¿Cómo hacemos el cambio? ¿Y si la persona no está?

 ¿Cuál ¿Cuál es es la la entrada? entrada?

De nuevo tenemos la misma secuencia de fichas. Nos dan una nueva ficha y hay que incorporarla al montón existente sin romper el orden. ¿Cómo averiguamos dónde incorporarla?

 ¿Cuál ¿Cuál es es la la entrada? entrada?

 ¿Cuál ¿Cuál es es la la salida? salida?

 ¿Cuál ¿Cuál es es la la salida? salida?

 ¿Cuál ¿Cuál es es el el algoritmo? algoritmo?

 ¿Cuál ¿Cuál es es el el algoritmo? algoritmo?

 ¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo

 ¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo

anterior? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 16

anterior? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

La programación: resolución de problemas

La ingeniería del software

El Elquinto quintoproblema problemadel delmontón montónde defichas fichas

El Elmodelo modelode dedesarrollo desarrollo“en “encascada” cascada”

¡Nos han desordenado la secuencia de fichas! De nuevo nos pasan el nombre de una persona a la que hay que felicitar. ¿Cómo lo hacemos ahora?

Página 17

Recursos necesarios, presupuesto, plan, …

Planificación

¿Qué?

Análisis

¿Cómo?

Diseño Implementación Implementación

 ¿Cuál ¿Cuál es es la la entrada? entrada?  ¿Cuál ¿Cuál es es la la salida? salida?

Aplicación Aplicación validada

Prueba y depuración

 ¿Cuál ¿Cuál es es el el algoritmo? algoritmo?  ¿Qué ¿Quélenguaje lenguajeutilizamos utilizamospara paradescribir describirlas lasrespuestas respuestasaatodo todololo

anterior? Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 18

Aplicación modificada

Mantenimiento Mantenimiento

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 19

La ingeniería del software

Los aspectos de los lenguajes de programación Los Los lenguajes lenguajes de de programación programación pueden pueden describirse: describirse:

Casa

Software

Quiero Quiero 33 habitaciones, habitaciones, 22 baños, baños, garaje, garaje, ... ...

Análisis

¿Qué ¿Qué tiene que hacer exactamente exactamente el el software? software?

Planos, Planos, diseño diseño circuito circuito eléctrico eléctrico yy de de agua, agua, ... ...

Diseño

¿Cómo vamos a organizar organizar el software? software? ¿Qué hará cada parte?

Se Se construye construye la la casa. casa.

Implementación Implementación

Se Se construye construye el el software. software.

Se Se comprueba comprueba la la solidez solidez de de la la estructura, estructura, el el funcionamiento funcionamientode de las las instalaciones, instalaciones,el el acabado, acabado,... ...

Prueba

Ponemos Ponemos aa prueba prueba nuestro nuestro software, software,incluso inclusoen en situaciones situaciones límite. límite.

Algunas Algunas reformas: reformas: se se cierra cierra la la terraza, terraza, se se instala instala aire aire acondicionado, acondicionado, ... ...

Mantenimiento

Pequeñas Pequeñas modificaciones modificaciones oo correcciones, correcciones, actualizaciones, actualizaciones, etc...

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 20

Sintaxis de los lenguajes de programación





Descripción Descripciónde decómo cómosesepueden puedenconstruir construiryysecuenciar secuenciarlos los elementos elementos del del lenguaje lenguaje Es Esuna unadescripción descripciónhecha hechausando usandoalgún algúnformalismo formalismoartificial artificial

 A A nivel nivel semántico semántico —

Descripción Descripcióndel delsignificado significadode decada cadaelemento elementodel dellenguaje lenguaje



Puede Puedeusarse usarselenguaje lenguajenatural naturalooexpresarse expresarsede demanera maneraformal formal

 A A nivel nivel pragmático pragmático —

Descripción Descripciónde decómo cómose seutiliza utilizaelellenguaje lenguajede deforma formapráctica práctica



Lo Lotípico: típico:usar usartutoriales tutorialesyyejemplos ejemplosde deprogramas programas

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 21

Sintaxis de los lenguajes de programación: BNF

Sintaxis Sintaxis==reglas reglasque queespecifican especificanyypermiten permitenverificar verificarlalacorrección correcciónde delas las sentencias sentencias de de un un lenguaje lenguaje Formalismos:  BNF ((Backus Backus--Naur Form Form))  EBNF ((Extended Extended Backus Backus--Naur Form Form))  Diagramas Diagramas sintácticos

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

 A A nivel nivel sintáctico sintáctico

Página 22

 TERMINAL

Símbolo del lenguaje que se está definiendo Símbolo que se define en términos de otros (terminales y no terminales)  Regla de producción Descripción de símbolos no terminales. Parte izquierda: símbolo no terminal Parte derecha: combinación de terminales y no terminales; vacío  Metasímbolos Símbolos del formalismo ::= Equivalencia | Alternativa 

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 23

Sintaxis de los lenguajes de programación: BNF

Sintaxis de los lenguajes de programación: EBNF

 Reglas BNF para expresar la sintaxis de un número entero positivo

en un cierto lenguaje de programación

+23

::= ::= + | ::= | ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ::=

1374 1+34 3.4

BNF  TERMINAL   Metasímbolos ::= Equivalencia | Alternativa

EBNF  “terminal”  No-terminal  Metasímbolos ::= Equivalencia | Alternativa { } {...} Aparición ó 0, 1, 2,... veces [...] Opcionalidad (...) Agrupaciones

 Recursividad

 Recursividad no permitida

002

 Reglas BNF para expresar la sintaxis de un número entero

 Coincidencia de metasímbolo con

símbolo del lenguaje: el metasímbolo entre comillas simples

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y programación y programación

Página 24

Fundamentos Fundamentos dede programación: programación: Computadoras Computadoras y ...


Similar Free PDFs