clase 5

13
09/08/2013 1 Objetivo: definir el concepto, uso y creación de algoritmos. Universidad Católica de El Salvador Facultad de Ingeniería y Arquitectura Programación I, Sección A Docente: Ma. Ing. Giovanni Acosta Usos de la programación Una persona piensa y se comporta obedeciendo a un secuencial lógico, por ejemplo para realizar actividades cotidianas, como: bañarse, vestirse, conducir el automóvil, etc. Una computadora realiza tareas y maneja datos en memoria obedeciendo a una secuencia de pasos lógicos para lo cual ha sido programada. Programar computadoras es indispensable en cualquier área profesional, ya que diferentes problemas que se puedan presentar tardan tiempo resolverlos de manera manual. La computadora resuelve problemas (de acuerdo como se le haya programado) de manera rápida.

Upload: leo-avila

Post on 13-Jun-2015

203 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase 5

09/08/2013

1

Objetivo: definir el concepto, uso y creación de algoritmos.

Universidad Católica de El SalvadorFacultad de Ingeniería y ArquitecturaProgramación I, Sección ADocente: Ma. Ing. Giovanni Acosta

Usos de la programación

Una persona piensa y se comporta obedeciendo a unsecuencial lógico, por ejemplo para realizar actividadescotidianas, como: bañarse, vestirse, conducir elautomóvil, etc.

Una computadora realiza tareas y maneja datos en memoriaobedeciendo a una secuencia de pasos lógicos para lo cual ha sidoprogramada.

Programar computadoras es indispensable en cualquier áreaprofesional, ya que diferentes problemas que se puedan presentartardan tiempo resolverlos de manera manual. La computadoraresuelve problemas (de acuerdo como se le haya programado) demanera rápida.

Page 2: Clase 5

09/08/2013

2

¿Qué es un lenguaje de

programación?

Se puede definir un lenguaje de programación como un conjunto dereglas o normas, símbolos y palabras especiales utilizadas paraconstruir un programa y con él, darle solución a un problemadeterminado.

El lenguaje de programación es el encargado de que la computadorarealice paso a paso las tareas que el programador a diseñado en elalgoritmo.

Se puede decir que un lenguajede programación es elintermediario entre la máquinay el usuario (programador) paraque este último pueda resolverproblemas a través de lacomputadora haciendo uso depalabras (comandos oinstrucciones) que le traducendicho programa a lacomputadora para la realizaciónde dicho trabajo.

Niveles de los lenguajes de

programación

Desde que se desarrollaron las computadoras programables se han creadolenguajes con los cuales las personas puedan dar órdenes a éstas. En su orden loslenguajes de programación se pueden clasificar de la siguiente manera:

Lenguaje de máquina

• Las primeras computadoras se programaban en código de máquina. Se puede decir que los programas eran diseñados en código binario. Eran difíciles de leer, difíciles de entender y por su puesto difíciles de corregir. Los programas se caracterizaban por ser pequeños.

• Ej. 55 89 e5 53 83 ec 04 f0 e8 31...

Lenguajes de Bajo Nivel

• Para dar solución a lo difícil que era programar en código máquina, se desarrolló un lenguaje conocido como lenguaje ensamblador. Este lenguaje era encargado de tomar algunas palabras comunes a una persona y traducirlas al código máquina. Lo anterior facilitaría un poco la escritura de programas.

• Ej. subl, pushl, movl, ...

Lenguajes de alto nivel

• Como las personas resuelven problemas y se comunican en lenguajes naturales (español, ingles, francés, etc.), se desarrollaron lenguajes de programación que estuvieran mas cerca de ésta manera de resolver problemas. De los lenguajes de alto nivel se puede citar el Basic, Cobol, Fortran, Pascal, Turbo Pascal, C, Modula, Ada. Como es necesario traducir el programa a lenguaje de máquina, en los lenguajes de alto nivel esa operación la realiza el compilador

Page 3: Clase 5

09/08/2013

3

Tipos de programación

Un paradigma de programación provee (y determina) la visión y métodos de unprogramador en la construcción de un programa:

Paradigma Imperativo

•Describe la programación como una secuencia de instrucciones o comandosque cambian el estado de un programa. El código máquina en general estábasado en el paradigma imperativo. Su contrario es el paradigmadeclarativo. En este paradigma se incluye el paradigma procedimental(procedural) entre otros. Ej. Basic, C, Fortran, PHP, etc.

Paradigma Declarativo

•No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso),sino que describe (declara) cómo es algo. Se enfoca en describir laspropiedades de la solución buscada, dejando indeterminado el algoritmo(conjunto de instrucciones) usado para encontrar esa solución. Ej. SQL, etc.

Paradigma Estructurado

•La programación se divide en bloques (procedimientos y funciones) quepueden o no comunicarse entre sí. Además la programación se controla consecuencia, selección e iteración. Permite reutilizar código programado yotorga una mejor compresión de la programación. Ej. Algol, Ada, Pascal, etc.

Paradigma Orientado a

Objetos

•Está basado en la idea de encapsular estado y operaciones en objetos. Engeneral, la programación se resuelve comunicando dichos objetos a travésde mensajes. Se puede incluir dentro de este paradigma, el paradigmabasado en objetos. Ej. Java, Smalltalk, VB .NET, etc.

Paradigma Funcional

•Este paradigma concibe a la computación como la evaluación de funcionesmatemáticas y evita declarar y cambiar datos. En otras palabras, hacehincapié en la aplicación de las funciones y composición entre ellas, más queen los cambios de estados y la ejecución secuencial de comandos. Ej.Scheme, Lisp, etc.

Paradigma Lógico

•Se basa en la definición de reglas lógicas para luego, a través de un motor deinferencias lógicas, responder preguntas planteadas al sistema y así resolverlos problemas. Ej. Prolog, etc.

Otros paradigmas y

subparadigmas

•Paradigma orientado al sujeto, paradigma reflectante, programación basadaen reglas, paradigma basado en restricciones, programación basada enprototipos, paradigma orientado a aspectos, etc.

Fases en la resolución de

problemas con computadora

1- Análisis del problema

El problema se analiza teniendopresente la especificación de losrequisitos dados por el cliente opersona que solicita elprograma.

2- Diseño del algoritmo

Se diseña una solución queconducirá a un algoritmo queresuelva el problema.

3- Codificación

La solución se escribe en lasintaxis del lenguaje deprogramación. Ejemplo: VisualBasic, C, C++, C#, etc.

4- Compilación y ejecución

El programa fuente se conviertea código de maquina y se ejecutael programa.

5- Verificación

Se comprueba que el programacumpla con los requisitosestablecidos y funcionecorrectamente.

6- Depuración

Se eliminan todos los erroresexistente y se vuelve a compilar,ejecutar y verificar el programahasta que este libre de errores.

7- Mantenimiento

El programa se actualiza ymodifica, cada vez que seanecesario, de modo que secumplan las nuevas necesidades.

8- Documentación

Es la escritura de las diferentesfases del ciclo de vida delsoftware, especialmente: elanálisis, diseño y codificación,entre otros manuales.

Page 4: Clase 5

09/08/2013

4

¿Qué es un algoritmo?

La palabra algoritmo se deriva de la traducción

al latín de la palabra árabe alkhowarizmi,

nombre de un matemático y astrónomo árabe

que escribió un tratado sobre manipulación de

números y ecuaciones en el siglo IX.

Un algoritmo es un método para resolver un

problema mediante una serie de pasos precisos,

definidos y finitos.

Características de un algoritmo:

1. Preciso (indica el orden de realización en cada paso)

2. Definido (si se sigue dos veces, obtiene el mismo resultado cada vez)

3. Finito (tiene fin; un número determinado de pasos)

Tipos de algoritmos

Algoritmo para preparar “Pechugas depollo en salsa de elote y chile poblano”

Ingredientes (para 6 personas): 3 pechugas deshuesadas, sin piel y

partidas a la mitad. 1 diente de ajo. 4 gramos de pimienta negra. Sal 6 cucharadas de aceite. 5 chiles poblanos asados y limpios. ½ tasa de leche. ¼ tasa de crema ligera. 1 lata de crema de elote.

Algoritmo (preparación)1. Muela el ajo, la pimienta y un

poco de sal y únteselo a las pechugas.

2. Caliente el aceite y dore las pechugas.

3. Licue los chiles con la leche y la crema, y mézclelos con la crema de elote.

4. En una fuente coloque las pechugas y báñeselas con la mezcal anterior.

5. Cubra el platón con papel de aluminio y hornee a 200º C, durante 15 minutos.

Algoritmo para obtener el promediosimple de un estudiante a partir de sustres notas de periodo.

Algoritmo:

Proceso promedioEscribir 'Nota primer periodo:'

Leer per1

Escribir 'Nota segundo periodo:'

Leer per2

Escribir 'Nota tercer periodo:'

Leer per3

prom <- (per1+per2+per3)/3

Escribir 'Nota promedio final: ', prom

FinProceso

Cualitativos

• son aquellos en los que describen los pasos utilizando palabras

Cuantitativos

• son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso

Page 5: Clase 5

09/08/2013

5

Ejercicios

PROBLEMA 1: elaborar un algoritmo para preparar una tasa de caféinstantáneo, teniendo un recipiente con agua caliente, un bote de café,la tasa, azúcar y cuchara; listos.

PROBLEMA 2: elaborar un algoritmo para cambiar la llanta pinchada deun carro, teniendo un gato mecánico en buen estado, una llanta derepuesto y una llave cruz; listos.

Los algoritmos pueden ser:

1. Lenguaje Natural: es el lenguaje común (coloquial).

2. Lenguaje Estructurado: Es un lenguaje más limitado que el anterior, con reglasde sintaxis y semántica definidas, esto quiere decir que consiste en crearprogramas con instrucciones agrupadas en un estricto orden secuencial, el cuales imprescindible conservar para la resolución de un problema.

a. Pseudocódigo: lenguaje universal para comunicarse entre programadores,esto quiere decir que es un conjunto de instrucciones en lenguaje natural,como el castellano o el inglés, de acuerdo a la persona que desarrollará unalgoritmo basado en dicho lenguaje natural, en conclusión, es elaborar elalgoritmo usando palabras y frases que se comprendan fácilmente.

b. Código: lenguaje orientado a un tipo de compilador especifico, para serinterpretado por el computador, en otras palabras es un conjunto deinstrucciones que son parte de un lenguaje de programación especifico quese escriben en orden secuencial y se almacenan en un archivo al que sedenomina programa, cuando el programa es pequeño se le denomina mini-programa o con el nombre de macro (en inglés se le denomina Script)

Page 6: Clase 5

09/08/2013

6

Ejemplo seudocódigo

Algoritmo (en pseudocódigo) para un juego de adivinar un número:

Ejemplo Código

Código (en C++) para un juego de adivinar un número:

Page 7: Clase 5

09/08/2013

7

Los algoritmos pueden ser:

(cont…)

3. Lenguaje Simbólico: es una representación que usa símbolospredefinidos para diagramar un algoritmo, con el fin de que sea fácil de seguirla lógica de la solución que se desea expresar en forma de un flujo de pasos arealizar, indicando el inicio y el termino de los mismos.

a. Diagramas de flujo: es un esquema para representar gráficamente unalgoritmo. Se basan en la utilización de diversos símbolos pararepresentar operaciones específicas. Se les llama diagramas de flujoporque los símbolos utilizados se conectan por medio de flechas paraindicar la secuencia de operación.

b. Carta N-S: el diagrama N-S (Nassi Schneiderman) o también conocidocomo diagrama de Chapín es una técnica de especificación de algoritmosque combina la descripción textual, propia del pseudocódigo, con larepresentación gráfica del diagrama de flujo.

Ejemplo diagrama de

flujo

Diagrama de flujo para un juego de adivinar un número:

Page 8: Clase 5

09/08/2013

8

Ejemplo diagrama N-S

Diagrama Nassi Schneiderman para un juego de adivinar un número:

Etapas a seguir para solucionar un problema a

través de Algoritmos

Problema

Análisis

Profundo del

problema

Construcción del

Algoritmo

Verificación del

Algoritmo

Page 9: Clase 5

09/08/2013

9

Módulos o secciones de un

Algoritmo

Algoritmo

Datos de

Entrada

Procesamiento

de los datos

Impresión de

resultados

Herramientas de

programación

Para la elaboración de Algoritmos en pseudocódigo, diagramas de flujo ydiagramas N-S se utilizará el programa PSeInt el cual es un softwareinterprete de pseudocódigo y generador de diagramas.

Page 10: Clase 5

09/08/2013

10

Demo uso de PSeInt

Forma general de un algoritmo

en pseudocodigo

Todo algoritmo en pseudocodigo tiene la siguiente estructura general:

Proceso Título

acción 1;

acción 2;

. . .

acción n;

FinProceso

Page 11: Clase 5

09/08/2013

11

Acciones secuenciales

Asignación: la instrucción de asignación permite almacenar un valor en una variable.

Sintaxis: <variable> <- <expresión>

Ejemplo: edad <- 20

Lectura: la instrucción Leer permite ingresar información desde el teclado.

Sintaxis: Leer <variablel> , <variable2> , ... ,<variableN>

Ejemplo: Leer nombre

Escritura: la instrucción Escribir permite mostrar valores en la pantalla de salida.

Sintaxis: Escribir <exprl> , <expr2> , ... , <exprN>

Ejemplo: Escribir ‘Buenos días: ‘, nombre

Observaciones: se puede utilizar las palabras "SIN SALTAR" o "SIN BAJAR" para evitar el salto de línea. También puede utilizarse indistintamente las palabras Imprimir y Mostrar en lugar de Escribir.

Ejemplo

Algoritmo básico utilizando las acciones de: asignación, lectura yescritura.

Page 12: Clase 5

09/08/2013

12

Operadores en PSeInt

Este pseudolenguaje dispone de un conjunto básico de operadores quepueden ser utilizados para la construcción de expresiones más o menoscomplejas.

Funciones en PSeInt

Las funciones en el pseudocódigo se utilizan de forma similar a otros lenguajes. Secoloca su nombre seguido de los argumentos para la misma encerrados entreparéntesis (por ejemplo trunc(x)).

Page 13: Clase 5

09/08/2013

13

Ejercicios

PROBLEMA 1: construya un algoritmo en pseudocódigo que lea losdatos enteros A y B. luego escriba el resultado de la siguiente expresión:

PROBLEMA 2: escriba un algoritmo en pseudocódigo que permitacalcular e imprimir el cuadrado y el cubo de un número entero positivocapturado por teclado.

PROBLEMA 3: construya un algoritmo en pseudocódigo que lea losdatos de base y altura de un rectángulo, calcule e imprima el perímetro yla superficie del mismo.

(𝐴 + 𝐵)2

3

𝑆𝑢𝑝𝑒𝑟𝑓𝑖𝑐𝑖𝑒 = 𝑏𝑎𝑠𝑒 ∗ 𝑎𝑙𝑡𝑢𝑟𝑎

𝑃𝑒𝑟í𝑚𝑒𝑡𝑟𝑜 = 2 (𝑏𝑎𝑠𝑒 + 𝑎𝑙𝑡𝑢𝑟𝑎)

Tarea

Responder las siguientes preguntas en el foro sobre la importancia de aprender programación:

1. ¿Cuál es la importancia de aprender a programar hoy en día?2. ¿Qué se necesita para aprender a programar?3. ¿Con cual de los personajes que se encuentran en el sitio www.code.org comparte su punto de

vista sobre la importancia de aprender a programar y por qué?