Introducción y conceptos generales

55
Introducción y conceptos generales

Transcript of Introducción y conceptos generales

Introducción y conceptos

generales

INTRODUCCIÓN A LA PROGRAMACIÓN

Presentación de los diferentes paradigmas de los

lenguajes de programación. Así como de sus

carácterísticas fundamentales. Introducción a las formas

de descripción formal de los lenguajes de programación.

Objetivo

Temas

Definición de LP

Características de los lenguajes de programación

Paradigmas de programación

Definición de programa

Proceso de programación

Definición de algoritmos

Pseudo-código

Diagramas de flujo

Diagrama básico del

computador

¿ Qué es un LP ?

Computación

Legibilidad por parte de la máquina

Legibilidad por parte del ser humano

Definición: Un lenguaje de programación es un sistema

notacional para describir operaciones computacionales de

una forma legible tanto para la máquina como para el ser

humano.

Características

Eficiencia

Expresividad

Capacidad de mantenimiento

Legibilidad

Confiabilidad

Seguridad

Simplicidad

Productividad

Abstracciones

Clases: Datos y control

Niveles: básicas, estructuradas y unitarias

Abstracciones de datos:

● Básicas: tipos básicos (enteros, reales, ...)

● Estructuradas: tipos estructurados (arreglos, registros)

● Unitarias: Tipos abstractos de datos (TDAs), paquetes,

módulos, clases, componentes

Abstracciones

Abstracciones de control

Básicas: asignación, goto

Estructuradas: condicionales e iteradores

Unitarias: paquetes, módulos, hilos y tareas.

Paradigmas de programación

Imperativo

Modelo de Von Neuman, cuello de botella de

Von Neuman

Funcional

Noción abstracta de función, recursividad, listas

Orientado a Objetos

TDAs, encapsulación, modularidad, reutilización

Lógico

Lógica simbólica, programación declarativa

Paradigmas de programación

Tipos de programación

Distintas formas de programar una aplicación

– Programación secuencial

– Programación estructurada

– Programación orientada a objetos

– Programación lógica

Paradigmas de programación

Programación secuencial

Conjunto de sentencias escritas de forma secuencial

Su ejecución sigue la secuencia

Se utilizan etiquetas para marcar parte del código

Se accede a una etiqueta utilizando la sentencia goto

Basic, Assembler, Fortran, Cobol

Programación orientada a objetos

Cada componente del programa es concebido como un objeto que tiene

propiedades y métodos

Las propiedades y métodos de los objetos se especifican en su clase

Primero se definen las clases y luego se crean instancias de objetos

JAVA, C++, Delphi, ASP.NET, VISUAL BASIC

Paradigmas de programación

Programación lógica

Lo importante es definir un conjunto de hechos y un conjunto de reglas

Hechos y reglas conforman la base del conocimiento

Utiliza lenguajes de alto nivel que se parecen mucho a los lenguajes de las

personas

Una de las utilidades es la inteligencia artificial

Paradigmas de programación

Definición del lenguaje de

programación

Sintaxis (estructura)

Gramáticas libres de contexto, estructura léxica,

tokens

Semántica (significado)

Lenguaje natural

Semántica operacional

Semántica denotacional

Traducción del lenguaje

Traductor es un programa que acepta otros

programas escritos en un lenguaje y:

los ejecuta directamente (interprete)

los transforma en una forma adecuada para su

ejecución (compilador).

entrada

código

fuente

salida intérprete

Traducción

Pseudointérpretes: intermedio entre

interprete y compilador: lenguajes

intermedios

Operaciones de un traductor: analizador

léxico (tokens), analizador sintáctico,

analizador semántico, preprocesador

código

fuente traducción

adicional compilación

código

objeto código

ejecutable

Traducción

Tiempo de compilación y tiempo de

ejecución

Propiedades estáticas: tiempo de

compilación

Propiedades dinámicas: tiempo de

ejecución

Recuperación de errores (compilación y

ejecución)

Eficiencia y optimización (compilación o

ejecución)

LENGUAJES DE PROGRAMACIÓN

Programa

Conjunto de reglas, herramientas y condiciones

Permiten crear programas o aplicaciones

Tres grandes grupos

–Lenguaje máquina

–Lenguaje de bajo nivel

–Lenguaje de alto nivel

LENGUAJES DE PROGRAMACIÓN

Lenguaje máquina

Lo entiende una computadora sin necesidad de ninguna conversión

Las instrucciones se escriben en binario

Existen programas que transforman el código que escribe un programador en

código binario

LENGUAJES DE PROGRAMACIÓN

Lenguaje de bajo nivel

Las sentencias están formadas por códigos nemotécnicos

Dependen de la arquitectura de cada procesador

Una vez escrito un programa en lenguaje de bajo nivel, el programa

ensamblador lo traduce a lenguaje máquina

Lenguaje de alto nivel

Poseen sentencias formadas por palabras similares al lenguaje de las personas

Algunos ejemplos: Pascal, Delphi, Cobol, FoxPro, JAVA

Lenguajes visuales: Visual Basic, Visual FoxPro

LENGUAJES DE PROGRAMACIÓN

LENGUAJES DE PROGRAMACIÓN

Historia

1950 1960 1970 1980 1990

Fortran(54)

PL/I(66)

Ada(95)

Java(96)

Basic(66)

C(72)

Pascal(70)

Cobol(58)

Algol(60)

Simula(67) Smalltalk(80)

C++(89)

EN

SA

MB

LA

DO

R

Eiffel (86)

Ada(83)

Visual

Basic(93)

Proceso de programación

Análisis del problema

Recolectar y analizar información para identificar

– Datos de entrada

– Datos de salida

– Proceso, que permita obtener los datos de salida deseados

Proceso de programación

Construcción de un algoritmo

Determinar cómo se llevará a cabo el proceso

Dividir el proceso en tareas más fáciles de implementar

Escribir el algoritmo

Ejemplo: incrementar un número de unidad en unidad hasta llegar a 100,

mostrando dicho número en cada iteración

Codificación del algoritmo

Elegir el lenguaje de programación adecuado a las necesidades del problema

Pruebas, ajustes y documentación

Depuración: para encontrar errores siguiendo la ejecución de un programa paso

a paso

Documentación

– Para el trabajo futuro

– Manuales de usuario

Definición algoritmos

Algoritmos

Método para resolver un problema mediante una serie de pasos precisos,

definidos y finitos

– preciso, tiene que indicar el orden de realización en cada paso

– definido, si el algoritmo se prueba dos veces, se debe obtener el mismo

resultado

– finito, el algoritmo tiene que tener un número determinado de pasos

Preguntas hasta aquí

Instrucciones

Expresión: constante o variable, es un conjunto de operadores

y operandos.

Ejemplo: x = 12 + 3 * 4

Operador

Numérico: +, -, *, /, div, mod

Relaciones: >, <, ==, >=, <=, <>

Lógicos: NOT, AND, OR

Operando: es una variable, una constante, etc.. un elemento que

tiene un valor.

Algoritmos

Representación de los algoritmos

Modo

Gráfico

Texto Pseudocódigo

diagrama de

flujo

Algoritmos

Pseudocódigo

• Lenguaje natural

• Permite escribir las instrucciones que conducen a la resolución

de problema utilizando estructuras básicas de programación

• Reglas

• Cada instrucción en una línea

• Conjunto de palabras reservadas: Inicio, Si, Si entonces, Si

no, Ciclo, Fin ciclo, Repetir Hasta, Mientras, Fin, etc …

• Referencia a módulos entre <NOMBRE-MODULO>

• Código identado

Pseudo-Código

Pseudo-Código

El pseudocódigo se utiliza para escribir

algoritmos en un lenguaje natural

Ejemplo 1: Sumar dos números. Desarrollo

Inicio

“Ingrese los 2 números a sumar”

Almacenarlos en num1,num2

resultado = num1 + num2

“La suma es: resultado”

Fin

Estructura

Programa: NOMBRE correspondiente al programa

Entorno:

Declaración de las estructuras de datos en general.

Algoritmo:

Secuencia de instrucciones que forman el programa.

Fin del programa.

Programa: ARRANCA_VEHICULO

Entorno:

Algorítmo:

Empujar el “clutch” con pie izquierdo

Poner en neutro

Dar ignición

Empujar el “clutch”

Poner la marcha primera

Quitar el freno de mano

Levantar el pie del “clutch” y acelerar

Fin del programa

Ejemplo

Pseudo-código

Ejemplo 2: Sacar el promedio de “n”

números. Desarrollo

Inicio

“Ingrese los n números”

Almacenarlos en X1,X2,…,Xn

resultado = X1+X2+…+Xn

resultado = resultado/n

“El promedio es: resultado”

Fin

Pseudo-Código

Ejemplo 3: Determinar el mayor de dos

números. Desarrollo

Inicio

“Ingrese los 2 números”

Almacenarlos en num1,num2

Si (num1 > num2) entonces

“El mayor es: num1”

Si no

“El mayor es: num2”

Fin

Pseudo-Código

Ejemplo 4: Sumar del 1 al 1000. Desarrollo

Inicio

x = 0

resultado = 0

Ciclo (x =< 1000)

resultado = resultado + x

x = x + 1

Fin Ciclo

“La suma es: resultado”

Fin

Pseudo-Código

EJEMPLO

Cambio de bombillo

Práctica

Determinar el mayor de TRES números.

Solución: Determinar el mayor de TRES

números. Desarrollo

Inicio

“Ingrese los 3 números”

Almacenarlos en X1,X2,X3

mayor = X1

Si (mayor < X2) entonces

mayor = X2

Si (mayor < X3) entonces

mayor = X3

“El mayor es: mayor”

Fin

El valor de X1 se

almacena en mayor

Pseudo-Código

Son diagramas que modelan un algoritmo, se

aprecia en ellos el flujo de los datos y las

acciones que los procesan.

Hay de 3 tipos:

1.- Secuenciales

2.- Selectivos

3.- Repetitivos

Diagramas de Flujo

Características de un diagrama de flujo

• Inicio y Fin

• Arriba abajo, izquierda derecha

• Un símbolo por acción

• A todos los procesos debe llegar una flecha y salir otra.

• Simetría en los elementos

Diagramas de flujo

Representa el flujo de datos de un proceso

Si No

Inicio

Entrada / Salida

Instrucción

Decisión

Fin

Elementos de un

diagrama de flujo

Diagramas de flujo

Elementos

Proceso. Acciones del programa

Decisión. Indica operaciones lógicas o de

comparación, así como expresiones

Entrada/Salida. Nos permite introducir datos en un

periférico, así como mostrarlos

Conector. Se coloca al principio y fin de un pedazo

de programa, enlaza dos partes de un programa.

Linea de flujo. Indica la dirección de ejecución del

algoritmo.

Salida. Usado para mostrar datos por impresora.

Terminal. Representa el inicio y fin de un programa

Subprograma. Usado para realizar una llamada a un

subprograma o subrutina.

Diagramas de flujo

Diagramas de Flujo Secuenciales

Inicio

acción 1

acción 2

acción n

Fin

Diagrama de Flujo

acción 1

acción n

acción 2

Pseudo-Código

Diagramas de Flujo Secuenciales

Inicio

“Ingrese los números”

Almacenar en X1,X2,…,Xn

prom=(X1+X2+…+Xn)/n

“El promedio es: prom”

Fin

Diagrama de Flujo

Almacenar en X1,X2,…,Xn

Pseudo-Código

Ejemplo: Calcular promedio de ‘n’ números

prom=(X1+X2+…+Xn)/n

“Ingrese los números”

“El promedio es: prom”

Diagramas de Flujo Selectivos

Diagrama de Flujo Pseudo-Código

Si (condición)

entonces acción 1

Si no

acción 2

acción 2

condición no si

acción 1

Diagramas de Flujo Selectivos

Diagrama de Flujo Pseudo-Código

Inicio “Ingrese los 2 números” Almacenarlos en num1,num2 Si (num1 > num2) entonces “El mayor es: num1”

Si no “El mayor es: num2”

Fin

num1>num2

no si

Ejemplo: Determinar el mayor de dos números

“Ingrese los 2 números”

Almacenarlos en num1,num2

“El mayor es: num1” “El mayor es: num2”

Diagramas de Flujo Selectivos 2

Diagrama de Flujo Pseudo-Código

Caso (Alternativa)

Alternativa 1 : acción 1

Alternativa 2 : acción 2

……

Alternativa n : acción n

Selectivos Múltiples

acción 1

alternativa

acción 2 acción n

1

2

n

Diagramas de Flujo Selectivos 2

Pseudo-Código

Inicio

Caso (Color)

Rojo : “Red”

Azul : “Blue”

Verde : “Green”

Fin

Ejemplo: Colores de Español a Inglés

Diagrama de Flujo

“Red”

Color

“Blue” “Green”

Rojo

Azul Verde

Diagramas de Flujo Repetitivos

Diagrama de Flujo Pseudo-Código

Ciclo <condición>

acción

acción

condición

no

Diagramas de Flujo Repetitivos

Pseudo-Código

Inicio x = 0 suma = 0 Ciclo (x =< 1000) suma = suma + x x = x + 1 Fin Ciclo “La suma es: suma”

Fin

Ejemplo: Sumar números del 1 al 1000

Diagrama de Flujo

suma=suma+x

x=<1000

no

x = 0

resultado = 0

Contadores, acumuladores e interruptores

Existen una serie de variables especiales usadas en estructuras

de tipo repetitivo bien para evaluar una condición o bien de ayuda

para realizar acciones.

Dichas variables son las siguientes:

• Contadores

• Acumuladores

• Interruptores

Representación de algoritmos

Contadores

Un contador es una variable cuyo valor se incrementa o

decrementa en cada iteración de un ciclo, sirve para averiguar cual

es el estado de un ciclo.

PSEUDOCÓDIGO:

Inicio

X=0

Repetir

X=X+1

ESCRIBE(“HOLA”)

Hasta (X=100)

Fin X=100?

X=0

SI

X=X+1

NO

INICIO

ESCRIBE “HOLA”

FIN

Representación de algoritmos

Acumuladores

Parecido a un contador, pero su uso es almacenar cantidades

procedentes de acciones en cada iteración.

PSEUDOCÓDIGO:

Inicio

X=0

SUMA=0

Repetir

X=X+1

SUMA=SUMA+X

Hasta(X=10)

ESCRIBE(SUMA)

Fin

X=10?

X=0, SUMA=0

SI

X=X+1

NO

INICIO

FIN

SUMA=SUMA+X

ESCRIBE SUMA

Representación de algoritmos

Interruptores

Un interruptor es una variable cuyo valor puede tomar los valores

verdadero o falso. Se usa para control de ciclos y estructuras

selectivas.

PSEUDOCÓDIGO:

Inicio

LLAMADA=FALSO

Repetir

ESPERO LLAMADA

SI LLAMADA ENTONCES

FABRICO PIZZA

LLEVO PIZZA

Hasta INFINITO

LLAMADA

LLAMADA=FALSO

SI

NO

INICIO

ESPERO LLAMADA

FABRICO PIZZA

LLEVO PIZZA

Representación de algoritmos

TAREA 1: Pseudo-Código & Diagramas

de Flujo

1. Hacer un algoritmo que calcule el factorial de un número determinado de enteros:

Factorial es el producto de los n números enteros positivos que van desde 1 hasta n y se simboliza por n! es decir n!= 1*2*3...(n-2)(n-1)n ej. 4!= 1*2*3*4=24

2. Diseñe un algoritmo que lea tres longitudes y determine si forman o no un triángulo:

Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres lados iguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). Considere que para formar un triángulo se requiere que: "el lado mayor sea menor que la suma de los otros dos lados".

3. Diseñe un algoritmo para encontrar la solución a la ecuación de segundo grado: ax²+bx+c=0 donde a≠0 viene dada por la fórmula:

La cantidad D=b²-4ac recibe el nombre de discriminante de la ecuación. Si el discriminante es negativo, no existe solución real. Si D=0, entonces existe una solución única. Si D es positivo(>0), existen dos soluciones x1, x2, X=-b/2a la fórmula nos da los dos valores buscados.

a

acbbx

2

42