Está en la página 1de 27

CFGS

DESARROLLO DE APLICACIONES
WEB

FUNDAMENTOS DE
PROGRAMACIÓN

FRANCISCO PÉREZ RODRÍGUEZ DE VERA


francisco.perez7@murciaeduca.es
CONTENIDO

1. INTRODUCCIÓN
2. ARQUITECTURA VON NEUMANN
3. COMPILADORES E INTÉRPRETES
4. LENGUAJES DE PROGRAMACIÓN
5. ALGORITMOS
6. IMPLEMENTACIÓN DE PROGRAMAS
FUNDAMENTOS DE PROGRAMACIÓN
1. INTRODUCCIÓN

CONCEPTO DE PROGRAMA

UN PROGRAMA ES UNA
SECUENCIA DE
UN COMPUTADOR ES UNA
INSTRUCCIONES QUE EL
MÁQUINA CON CAPACIDAD
COMPUTADOR PUEDE
PARA RESOLVER UNA TAREA
COMPRENDER Y EJECUTAR
PARA RESOLVER UNA TAREA

PROGRAMA TRADUCCIÓN EJECUCIÓN RESULTADOS


•CONTIENE •SE CONVIERTEN LAS •EL COMPUTADOR •EL COMPUTADOR
INSTRUCCIONES PARA EL INTSTRUCCIONES A UN ANALIZA Y EJECUTA GENERA UNA SALIDA O
COMUPTADOR FORMATO QUE EL CADA INSTRUCCIÓN DEL PRODUCE ALGÚN
PROGRAMA ACTIVANDO
COMPUTADOR PUEDE RESULTADO
•ESCRITO EN UN LOS COMPONENTES
RECONOCER INTERNOS NECESARIOS
LENGUAJE DE
PROGRAMACIÓN PARA PROCESAR LA
INSTRUCCIÓN
FUNDAMENTOS DE PROGRAMACIÓN
2. ARQUITECTURA VON NEUMANN

PROBLEMAS DE LAS ARQUITECTURAS PREVIAS (HASTA 1947)

AUSENCIA DE UN MODELO DE ARQUITECTURA FORMAL

NO HAY DIFERENCIACIÓN ENTRE HARDWARE Y SOFTWARE

NO EXISTEN LOS PROGRAMAS TAL Y COMO LOS CONOCEMOS EN LA


ACTUALIDAD

TODA LA LÓGICA ESTÁ CODIFICADA EN EL HARDWARE

Esto va a ser cosa del embrague… o de la junta de la trócola

CADA VEZ QUE ES NECESARIO CAMBIAR O MODIFICAR LA FUNCIÓN


QUE EJECUTA LA COMPUTADORA, ES NECESARIO RECABLEAR O
INTRODUCIR CAMBIOS EN EL HARDWARE
FUNDAMENTOS DE PROGRAMACIÓN
2. ARQUITECTURA VON NEUMANN

CARACTERÍSTICAS DE LA ARQUITECTURA VON NEUMANN

PROPUESTA EN 1947

ES LA ARQUITECTURA VIGENTE EN LAS COMPUTADORAS


ACTUALES

DIFERENCIA EL PROGRAMA DE LA MÁQUINA MISMA


(SEPARACIÓN HARDWARE – SOFTWARE)

DEFINE UNA COMPUTADORA DE PROGRAMA


ALMACENADO

PARA SU EJECUCIÓN, TANTO EL PROGRAMA COMO LOS


DATOS SE ALMACENAN EN UNA MEMORIA TEMPORAL

FACILITA LA CREACIÓN DE COMPONENTES HARDWARE


John von Neumann junto a la computadora EDVAC, la primera
DISCRETOS E INTEROPERABLES
computadora con arquitectura von Neumann.

FACILITA LA CREACIÓN DE SOFTWARE INDEPENDIENTE DEL HARDWARE


FUNDAMENTOS DE PROGRAMACIÓN
2. ARQUITECTURA VON NEUMANN

ESQUEMA GENERAL DE LA ARQUITECTURA VON NEUMANN

CPU BUSES MEMORIA PRINCIPAL UNIDAD DE E/S PERIFÉRICOS

• ES EL COMPONENTE • SON LÍNEAS QUE • ES UNA MEMORIA • SE ENCARGA DE LA • SON DISPOSITIVOS


ENCARGADO DE COMUNICAN LAS TEMPORAL, DE COMUNICACIÓN CON EXTERNOS, CON
EJECUTAR LAS UNIDADES LECTURA/ESCRITURA, LOS PERIFÉRICOS FUNCIONES
INSTRUCCIONES FUNCIONALES EN LA QUE SE ESPECÍFICAS, QUE
CARGAN LOS INTERACTÚAN CON EL
• TRANSMITEN DATOS, PROGRAMAS ANTES COMPUTADOR
INSTRUCCIONES Y DE SER EJECUTADOS
DIRECCIONES DE
MEMORIA
FUNDAMENTOS DE PROGRAMACIÓN
2. ARQUITECTURA VON NEUMANN

EJECUCIÓN DE UN PROGRAMA EN UN COMPUTADOR VON NEUMANN

CARGA DEL PROGRAMA EL CONTADOR DE LA UNIDAD DE


DESDE MEMORIA PROGRAMA (PC) CONTROL (UC) ANALIZA
SECUNDARIA A APUNTA A LA PRIMERA LA INSTRUCCIÓN
PRINCIPAL INSTRUCCIÓN
APUNTADA POR EL PC

LA UC ENVÍA SEÑALES A
EL PC APUNTA A LA LAS DEMÁS UNIDADES
SIGUIENTE FUNCIONALES PARA
INSTRUCCIÓN EJECUTAR LA
INSTRUCCIÓN

EL RESULTADO DE LA
EJECUCIÓN PUEDE
GUARDARSE EN UN
REGISTRO O EN
MEMORIA PRINCIPAL
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

EL PROCESO DE TRADUCCIÓN

ES NECESARIO TRADUCIR EL
LA CPU SÓLO PUEDE EJECUTAR PROGRAMAR UNA APLICACIÓN LENGUAJE DE PROGRAMACIÓN
ESTA OPERACIÓN LA REALIZAN
INSTRUCCIONES DE CÓDIGO DE EN CÓDIGO DE MÁQUINA ES (CÓDIGO FUENTE) A UNA
LOS TRADUCTORES
MÁQUINA (BINARIO) INVIABLE, POR SU COMPLEJIDAD REPRESENTACIÓN EQUIVALENTE
EN CÓDIGO DE MÁQUINA

TRADUCCIÓN
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

EL PROCESO DE TRADUCCIÓN

C#
...
int resultado = operando1 + operando2;

TRADUCCIÓN

CÓDIGO DE MÁQUINA
... EJEMPLO DEL FORMATO DE INSTRUCCIÓN DE UN
PROCESADOR MIPS DE 32 BITS
000000 10001 10010 01000 00000 100000
000010 00000 10010 01000 00000 100000
000001 10001 11010 01000 00000 100000
...
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

TIPOS DE TRADUCTORES

COMPILADOR INTÉRPRETE
TOMA SECUENCIALMENTE CADA INSTRUCCIÓN
ANTES DE REALIZAR LA TRADUCCIÓN, ANALIZA EL DEL CÓDIGO FUENTE, LA TRADUCE Y LA EJECUTA,
CÓDIGO FUENTE EN SU TOTALIDAD, EN BUSCA EN UN SÓLO PASO
DE ERRORES
NO SE ANALIZA LA TOTALIDAD DEL CÓDIGO (NO
SE DETECTAN ERRORES ANTES DE LA EJECUCIÓN)

GENERA UNA VERSIÓN OPTIMIZADA Y EN SI SE PRODUCE UN ERROR, EL PROGRAMA SE


FORMATO BINARIO DEL CÓDIGO FUENTE DETIENE

NO SE GENERA CÓDIGO OPTIMIZADO

ALMACENA EL CÓDIGO TRADUCIDO EN UN


ARCHIVO PARA PODER SER EJECUTADO NO SE GENERA UN ARCHIVO EJECUTABLE, POR LO
POSTERIORMENTE QUE PARA VOLVER A EJECUTAR EL PROGRAMA,
HAY QUE VOLVER A TRADUCIRLO
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

FASES DE UN COMPILADOR

LA MAYORÍA DE COMPILADORES OPERAN EN TRES FASES:

VERIFICACIÓN DE ANÁLISIS LÉXICO GENERACIÓN DE


PREPROCESAMIENTO

FASE DE ANÁLISIS

FASE DE SÍNTESIS
FICHEROS ANÁLISIS CÓDIGO
EXPANSIÓN DE SINTÁCTICO INTERMEDIO
MACROS ANÁLISIS OPTIMIZACIÓN DE
SEMÁNTICO CÓDIGO
GENERACIÓN DE
CÓDIGO OBJETO
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

FASES DE UN COMPILADOR

Código fuente Preprocesamiento Análisis léxico


Instrucciones del Comprobación de Comprobación de los
lenguaje de ficheros y expansión tokens del código
programación de macros fuente

Análisis Análisis Generación de


sintáctico semántico código intermedio
Comprobación de las Comprobación del Traducción a código
construcciones significado de las máquina para un
gramaticales del construcciones procesador virtual
código fuente

Optimización de Generación de Enlace


código código objeto
Traducción a una Traducción a código Generación del
versión optimizada y máquina relocalizable ejecutable
más rápida de
ejecutar
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

FASES DE UN COMPILADOR

• El código fuente se traduce a un código equivalente, en • El proceso de traducción en un lenguaje compilado


un formato ejecutable directamente por el procesador. tiene lugar en tres fases: preprocesamiento, análisis y
síntesis. Cada una de estas fases se divide en varias
• La traducción se almacena en un fichero (llamado etapas.
ejecutable o binario).
• En la fase de preprocesamiento se preparan los ficheros
• El binario se puede ejecutar directamente, sin de código fuente y se ejecutan las directivas de
necesidad de volver a realizar la traducción desde el preprocesamiento (expansión de macros).
código fuente.
• Durante la fase de análisis se examina el código para
• Se debe disponer de un compilador específico para el identificar sus componentes léxicos y sintácticos y se
sistema de destino (procesador y sistema operativo). El recaba información sobre los errores detectados para
ejecutable no es multiplataforma (portable). que el programador pueda depurar el código

• En los sistemas Windows, un ejecutable suele tener • Durante la fase de síntesis se generan sucesivas
extensión “.exe” (aunque existen ejecutables con otras traducciones hasta llegar a obtener código máquina
extensiones, como los ejecutables en modo comando, ejecutable.
‘.com”.
• El trabajo de traducción del compilador gira en torno a
• En los sistemas Linux, los ficheros ejecutables se tres estructuras: la tabla de símbolos, el árbol
pueden identificar por tener asociado un permiso de sintáctico y la tabla de literales. En ellas se registran
ejecución. (fase de análisis) y consultan (fase de síntesis) los
elementos léxicos, las construcciones gramaticales y los
• Algunos de los lenguajes compilados más conocidos literales del código fuente, respectivamente.
son C o C++.
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

FASES DE UN COMPILADOR

• La fase de análisis consta de las siguientes etapas: • La fase de síntesis consta de las siguientes etapas:

✓ Análisis léxico: se analiza el código fuente para ✓ Generación de código intermedio: se consulta la
identificar los tokens que lo componen y verificar tabla de símbolos para obtener una traducción a
que se corresponden con elementos del código genérico (para un procesador abstracto).
lenguaje.
✓ Optimización: se obtiene una versión optimizada
✓ Análisis sintáctico: se verifica que las del código generado en la etapa anterior.
construcciones del código fuente cumplen las
✓ Generación de código objeto: a partir del código
reglas gramaticales del lenguaje.
generado en la etapa anterior, se obtiene una
traducción a un formato que el procesador real
✓ Análisis semántico: verifica que las puede identificar: código máquina relocalizable
construcciones gramaticales del código fuente o código objeto. Este código todavía no es
tienen significado. ejecutable puesto que no define en qué lugar de
la memoria se ubicarán las instrucciones y las
variables. Además, en el código relocalizable, las
referencias a otras bibliotecas tampoco están
resueltas. Esto permite compilar separadamente
los distintos módulos y bibliotecas del programa.

✓ Etapa de enlace: se especifican las posiciones de


memoria absolutas y se efectúa el enlace con las
bibliotecas, generando el código máquina
ejecutable.
FUNDAMENTOS DE PROGRAMACIÓN
3. COMPILADORES E INTÉRPRETES

INTÉRPRETE

OPERA SECUENCIALMENTE, REALIZA LA TRADUCCIÓN Y LA


TRADUCIENDO Y EJECUTANDO EJECUCIÓN DE FORMA DIRECTA,
INSTRUCCIÓN A INSTRUCCIÓN. EN UN SOLO PASO

NO HAY FASE DE ANÁLISIS, POR


AL NO HABER FASE DE ANÁLISIS,
LO QUE LOS ERRORES SE
LAS OPTIMIZACIONES, SI EXISTEN,
DETECTAN EN TIEMPO DE
SON MUY LIMITADAS
EJECUCIÓN

POR TODO ELLO, LA EJECUCIÓN


NO GENERA UN EJECUTABLE POR DE UN PROGRAMA
LO QUE HAY QUE REPETIR LA INTERPRETADO ES MENOS
TRADUCCIÓN CADA VEZ QUE SE EFICIENTE QUE LA EJECUCIÓN DE
EJECUTA EL PROGRAMA UN PROGRAMA COMPILADO DE
SIMILARES CARACTERÍSTICAS
FUNDAMENTOS DE PROGRAMACIÓN
4. LENGUAJES DE PROGRAMACIÓN

COMPONENTES

REGLAS SINTÁCTICAS
DEFINEN LAS
CONSTRUCCIONES QUE
PUEDEN REALIZARSE CON LOS
SÍMBOLOS.
SÍMBOLOS REGLAS SEMÁNTICAS
(ELEMENTOS LÉXICOS O TOKENS)
DEFINEN EL SIGNIFICADO DE LAS
PUEDEN CONSIDERARSE COMO LAS CONSTRUCCIONES.
‘PALABRAS’ QUE FORMAN EL
LENGUAJE DE PROGRAMACIÓN.

LENGUAJE DE
PROGRAMACIÓN
FUNDAMENTOS DE PROGRAMACIÓN
4. LENGUAJES DE PROGRAMACIÓN

CLASIFICACIÓN EN FUNCIÓN DEL NIVEL DE ABSTRACCIÓN SOBRE EL HARDWARE

BAJO NIVEL MEDIO NIVEL ALTO NIVEL


• Utiliza conceptos “próximos” • Proporcionan un primer paso • Son lenguajes próximos al
al procesador, como en la abstracción sobre las lenguaje natural.
direcciones de memoria y características del hardware,
registros. aunque aún manejan • Utilizan construcciones
punteros (direcciones de gramaticales que reducen la
• Difícil de leer, depurar y memoria) y otros conceptos cantidad de código
modificar. de bajo nivel. desarrollado.

• Alta legibilidad, facilidad


para depurar y modificar.

• Abstraen al programador de
las particularidades del
hardware.

• Código máquina • C • Java


• Ensamblador • C++ • C#
• … • Python
• …
FUNDAMENTOS DE PROGRAMACIÓN
4. LENGUAJES DE PROGRAMACIÓN

CLASIFICACIÓN EN FUNCIÓN DEL MODO DE TRADUCCIÓN

COMPILADO A MÁQUINA
COMPILADO INTERPRETADO
VIRTUAL
• Se necesita un compilador • Se necesita un intérprete • Se necesita un motor de
específico para la arquitectura específico para la arquitectura ejecución específico para la
y sistema operativo en el que y sistema operativo en el que arquitectura y sistema
se ejecutará el programa. se ejecutará el programa. operativo en el que se
ejecutará el programa.
• No son multiplataforma. • Generalmente, son
multiplataforma. • Son multiplataforma

• C • Python • Java
• C++ • Javascript • C#
• … • … • …
FUNDAMENTOS DE PROGRAMACIÓN
4. LENGUAJES DE PROGRAMACIÓN

LENGUAJES COMPILADOS A MÁQUINA VIRTUAL

CÓDIGO LA COMPILACIÓN PRODUCE UNA


FUENTE REPRESENTACIÓN INTERMEDIA O
IL (INTERMEDIATE LANGUAGE)

COMPILACIÓN A IL
EL IL ES EL CÓDIGO DE MÁQUINA
DE UNA MÁQUINA ABSTRACTA
INTERMEDIATE
(MÁQUINA VIRTUAL)
LANGUAGE

EJECUCIÓN EL IL SE ALMACENA EN UN
INTERPRETADA FICHERO. ES UN EJECUTABLE
MULTIPLATAFORMA

TRADUCCIÓN A
CÓDIGO
MÁQUINA REAL DURANTE LA EJECUCIÓN, EL
Y EJECUCIÓN MOTOR DE EJECUCIÓN DEL
LENGUAJE INTERPRETA EL IL
FUNDAMENTOS DE PROGRAMACIÓN
4. LENGUAJES DE PROGRAMACIÓN

CLASIFICACIÓN EN FUNCIÓN DEL PARADIGMA

ORIENTADO A
IMPERATIVO ESTRUCTURADO DECLARATIVO FUNCIONAL LÓGICO
OBJETOS
• Secuencia de • Añade restricciones • Incluye al • Se declara el • Evolución del • Evolución del
instrucciones dadas al paradigma paradigma anterior dominio del paradigma paradigma
al procesador que imperativo. pero lo envuelve en problema mediante declarativo pero declarativo pero
indican cómo debe una capa de proposiciones, centrado en centrada en
ejecutar una tarea. • Programas con un abstracción condiciones y aplicaciones aplicaciones de
único punto de semántica. transformaciones. matemáticas inteligencia
• No hay una entrada y salida artificial.
metodoLgía que • Se representa el • Se solicita un • Basado en la teoría
defina cómo debe • Cualquier programa dominio del resultado sin del cálculo lambda • Basado en la teoría
organizarse el puede (debe) problema mediante especificar cómo se del cálculo lambda.
programa. escribirse objetos. debe obtener. • Centrado en la
combinando utilización de • Centrado en el uso
únicamente 3 funciones de proposiciones y
estrucutas: • Los objetos tienen aritméticas predicados.
sencuencial, propiedades y
condicional e pueden realizar • Únicamente utiliza
iterativa. acciones. definiciones de
funciones y
• Introduce el uso de recursividad.
subrutinas
(funciones y
procedimientos)

• Ensamblador • Pascal, C • Java, C++, C# • SQL, PL-SQL, • F#, Haskell • Prolog, LISP
Transact-SQL
FUNDAMENTOS DE PROGRAMACIÓN
4. LENGUAJES DE PROGRAMACIÓN

CLASIFICACIÓN EN FUNCIÓN DEL PARADIGMA

IMPERATIVO
ESTRUCTURADO
1ª Generación
ORIENTADO A OBJETOS
2º Generación 3ª Generación
- Eventos 4ª generación
- Diseño visual

1950 1960 1970 1980 1990 …


DECLARATIVO

4ª generación

LÓGICO

5ª generación

FUNCIONAL

5ª generación
FUNDAMENTOS DE PROGRAMACIÓN
5. ALGORITMOS

CONCEPTO Y REPRESENTACIÓN

PERMITE TENER UNA


GUÍA DE LA
SECUENCIA DE PASOS
A IMPLEMENTAR,
ES UNA QUE PUEDE SER
DESCRIPCIÓN CONSULTADA
ORDENADA Y DURANTE EL
SISTEMÁTICA DE PROCESO DE
LOS PASOS IMPLEMENTACIÓN
NECESARIOS PARA
REALIZAR UNA
TAREA DEL
PROGRAMA
ALGORITMO
EL ALGORITMO
DEBE PODER SER
TRADUCIDO A
CUALQUIER DEL
LENGUAJE DE
PROGRAMACIÓN
(ES AGNÓSTICO AL
LENGUAJE)
SE PUEDE
REPRESENTAR
DE FORMA
GRÁFICA O EN
PSEUDOCÓDIG
O
FUNDAMENTOS DE PROGRAMACIÓN
5. ALGORITMOS

REPRESENTACIÓN GRÁFICA MEDIANTE DIAGRAMAS DE FLUJO

NO SÍ
xx+4 k>j mód(i, j)

COMIENZO ASIGNACIÓN: CONDICIÓN: LLAMADA A UN MÓDULO DEL


"Incrementa x en 4 unidades" "Si k es mayor que j …" PROGRAMA:
"Llama al módulo mód,
pasando las variables i y j como
parámetros"

Desde i = 0
hasta i = 20

Leer (x)
sentencias

ITERACIÓN: ENTRADA O SALIDA: FIN


"Repite sentencias desde i = 0 "Lee un dato y almacénalo en x"
hasta que i = 20"
FUNDAMENTOS DE PROGRAMACIÓN
5. ALGORITMOS

REPRESENTACIÓN GRÁFICA MEDIANTE DIAGRAMAS DE FLUJO

ALGORITMO
QUE PIDE DOS
NÚMEROS, LOS
SUMA, Y Leer (i)
MUESTRA EL
RESULTADO

Leer (j)

ki+j

Escribir (k)
FUNDAMENTOS DE PROGRAMACIÓN
5. ALGORITMOS

REPRESENTACIÓN EN PSEUDOCÓDIGO

Leer (i)
Inicio
LA REPRESENTACIÓN EN
Escribir ("Introduce un número: ")
PSEUDOCÓDIGO UTILIZA
i  <número_1>
Leer (j) LENGUAJE NATURAL
Escribir ("Introduce otro número: ")
j  <número_2>

ki+j k  i + j NO ES UNA
REPRESENTACIÓN
Escribir ("La suma es: ") ESTANDARIZADA: PUEDE
Escribir (k) USARSE CUALQUIER
TÉRMINO QUE SE
Escribir (k) Fin CONSIDERE ADECUADO
FUNDAMENTOS DE PROGRAMACIÓN
5. ALGORITMOS

DISEÑO DE ALGORITMOS
DISEÑO
• Identificar tareas
1 principales.
DESCENDENTE
(TOP-DOWN)
PROBLEMA A RESOLVER
• Ordenación de TAREA TAREA
tareas. TAREA PRINCIPAL 1 PRINCIPAL PRINCIPAL
2 2 …

• Especificar y
concretar SUBTAREA SUBTAREA
SUBTAREA 1.2
3 subtareas. 1.1 …

• Implementar OPERACIÓN OPERACIÓN OPERACIÓN


(codificar) CONCRETA CONCRETA CONCRETA
4 algoritmo. 1.1.1 1.2.1 1.2.2 IMPLEMENTACIÓN
ASCENDENTE
(BOTTOM-UP)
• Ejecución.
5

• Depuración.
6
FUNDAMENTOS DE PROGRAMACIÓN
6. IMPLEMENTACIÓN DE PROGRAMAS

ELEMENTOS DE LOS LENGUAJES DE PROGRAMACIÓN

INSTRUCCIONES
DE CONTROL DE
FLUJO
INSTRUCCIONES
INSTRUCCIONES
DE DECLARACIÓN
DE LLAMADA A
DE CONSTANTES Y
MÓDULOS
VARIABLES

BIBLIOTECAS DE
TIPOS DE DATOS Y LENGUAJE DE
PROGRAMACIÓN FUNCIONES Y/O
OPERADORES
CLASES

También podría gustarte