fundamentos de programación 1. diseño de algoritmos

52
Ing. Edward Ropero Magister en Gestión, Aplicación y Desarrollo de Software

Upload: edward-ropero

Post on 20-Jul-2015

1.030 views

Category:

Education


4 download

TRANSCRIPT

Ing. Edward RoperoMagister en Gestión,

Aplicación y Desarrollo de Software

Modelaje y solución de problemas

Es la capacidad de abstraer la información de la realidad relevante para un problema, de expresar dicha realidad en términos de algún lenguaje y proponer una solución en términos de modificaciones de dicha abstracción.

Se denomina “análisis” al proceso de crear dicha abstracción a partir de la realidad, y “especificación del problema” al resultado de expresar el problema en términos de dichaabstracción.

Algorítmica

Es la capacidad de utilizar un conjunto de instrucciones para expresar las modificaciones que se deben hacer sobre la abstracción de la realidad, para llegar a un punto en el cual el problema se considere resuelto. Se denomina “diseño de un algoritmo” al proceso de construcción de dicho conjunto de instrucciones

Tecnología y programación

Herramientas de programación

OperadorAritmético

Operación Ejemplo Resultado

¨ Potencia 4¨3 64

. ó x Multiplicación 4 . 8 ó 4x8 32

/ ó ÷ División 15/3 ó 15÷3 5

+ Suma 13+7 20

- Resta 25-8 17

mod Módulo (residuo)

15 mod 2 1

div División Entera 17 div 3 5

Operador Jerarquía Operación

¨ (mayor)

(menor)

Potencia

·,/,MOD, DIV Multiplicación, división, módulo,

división Entera

+, - Suma, resta

5¨3/10-4+(24·3DIV5)-48MOD5/35¨3/10-4+(24·3DIV5)-48MOD5/35¨3/10-4+ (72DIV5) -48MOD5/35¨3/10-4+ 14 -48MOD5/3

125/10-4+14-48MOD5/312,25-4+14-48MOD5/3

12,25-4+14-3/312,25-4+14-1

8,25+14-122,25-121,25

Resolver la siguiente operación:

Operador Operación Ejemplo Resultado

= Igual que ‘hola’=‘lola’ Falso

<> Diferente a ‘a’ <> ‘b’ Verdadero

< Menor que 8 < 29 Verdadero

> Mayor que 45 > 27 Verdadero

< = Menor o Igual que 14 <= 22 Verdadero

> = Mayor o Igual que 33 >= 12 Verdadero

5¨3/10-4<(24·3DIV5)≥48MOD5/35¨3/10-4<(24·3DIV5)≥48MOD5/35¨3/10-4< (72DIV5) ≥48MOD5/35¨3/10-4< 14 ≥48MOD5/3

125/10-4<14≥48MOD5/312,25-4<14≥48MOD5/3

12,25-4<14≥3/312,25-4<14 ≥ 1

8,25<14 ≥ 1TRUE ≥ 1

ERROR

Operador Jerarquía Ejemplo Resultado

No (mayor)

(menor)

No P~ P

NO PNo es cierto que P

Es FALSO que P

Y P y Q P^QP sin embargo Q

O P o Q P o Q o P o Q o ambas

P Q ~ P ~ Q P o Q P y Q

Verdadero Verdadero Falso Falso Verdadero Verdadero

Verdadero Falso Falso Verdadero Verdadero Falso

Falso Verdadero Verdadero Falso Verdadero Falso

Falso Falso Verdadero Verdadero Falso Falso

Operadores Jerarquía

() (mayor)

(menor)

¨

· , / , MOD, DIV

+, -

=, <>, <, >, <=, >=

NO

Y

O

~(5¨3/10-4 <= 7+24 · 3DIV3) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~(5¨3/10-4 <= 7+24 · 3DIV3) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~(125/10-4 <= 7+24 · 3DIV3) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~(12,5 -4 <= 7+24 · 3DIV3) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~( 12,5 -4 <= 7+72DIV3) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~(12,5-4 <= 7+24) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~(8,5 <= 7+24) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~(8,5 <= 31) AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~ VERDADERO AND ~(8-20 · 4/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~ V AND ~(8-80/5 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~ V AND ~(8-16 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~ V AND ~ (-8 > 56) OR (48MOD5/3 · 149 = 34+120-5)

~ V AND ~FALSO OR (48MOD5/3 · 149 = 34+120-5)

~ V AND ~F OR ( 3/3 · 149 = 34+120-5)

~ V AND ~F OR ( 1 · 149 = 34+120-5)

~ V AND ~F OR ( 149 = 34+120 -5)

~ V AND ~F OR ( 149 = 154-5)

~ V AND ~F OR VERDADERO

F AND ~F OR V

F AND V OR V

F OR V

V

Utilizar la coma (,) para indicar los decimales y el punto (.)para la multiplicación

Resolver los puntos paso a paso Los paréntesis se resuelven de adentro hacia afuera Los paréntesis tienen la mayor gerarquía, por lo tanto se

resuelven primero Cada parentesis divide el ejercicio en partes Los ejercicios se resuleven de izquierda a derecho No confundir división con división entera La respuesta o solución de una operación relacional es un

valor lógico FALSO o VERDADERO VERDADERO siempre es mayor que FALSO No se puede realizar una comparación entre un valor lógico

y un valor numérico, utilizando un operador relacional

Simple Estructurado

Datos Simples

• Entero (integer)• Real (real)• Carácter (char)• Lógico (boolean)

Datos Estructurados

dinámicos

estáticos

• Lista (pila/cola)• Lista enlazada• árbol• grafo

• Arreglo(array)• Registro• Archivo (fichero)• Conjunto• Cadena (string)

Datos numéricosDatos alfanuméricos

Datos lógicos

Llamaremos identificador al nombre que se les da a las casillas de memoria

Reglas Para Contruir Identificadores

El primer caracter que forma un identificador debe ser una letra (a, b, c, z).

Los demás caracteres pueden ser letras (a,b,c,...,z), dígitos (0,1,2,...,9) o el siguiente símbolo especial: _

La longitud del identificador es igual a 7 en la mayoría de los lenguajes de programación.

Constantes

Las constantes son datos que no cambian durante la ejecución de un programa

Variables

Las variables son objetos que pueden cambiar su valor durante la ejecución de un programa

Asigna valores o expresiones a una variable.

Operación destructiva

Variable expresión o valor

La expresión puede ser aritmética o lógica, o una constante o variable.

Contendor ContenidoVariable = Dato

Ejemplo

Supongamos que las variables i, ACUM y J son de tipo entero, REA y SUM de tipo real, CAR de tipo caracter y BAND de tipo booleano. Consideremos también que tenemos que realizar las siguientes asignaciones

1. i =02. i = i + 13. ACUM = 04. J =5 ¨ 2 DIV 35. CAR = ‘a'6. ACUM = J DIV i7. REA = ACUM/3

8. BAND = (8 > 5) AND (15 <2 ¨ 3)9. SUM = ACUM . 5 / J ¨ 210. i = i . 311. REA = REA/512. BAND = BAND OR (i = J)13. i = REA14. CAR = J

Número de Asignación

i J ACUM REA SUM CAR BAND

1 0

2 1

3 0

4 8

5 ‘a’

6 8

7 2,66

8 FALSO

9 0,625

10 3

11 0,532

12 FALSO

13 ERROR

14 ERROR

Conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema

Etapas para la solución de un problema

Problema

Análisis profundo

del problema

Construcción del

Algoritmo

Verificación del

Algoritmo

Características:

Precisión: Los pasos a seguir en el algoritmo deben ser precisados claramente

Determinismo: El algoritmo, dado un conjunto de datos idénticos de entrada, siempre debe arrojar los mismos resultados

Finitud: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita

Módulos o secciones de un algoritmo:

Entrada de Datos

Procesamiento de datos

Impresión de resultados

Algoritmo

Qué es pseudocódigo?

Para qué sirve y cómo se usa el pseudocódigo?

Ejemplo de pseudocódigo

Qué son los diagramas de flujo?

Para qué sirve y cómo se usan los diagramas de flujo?

Ejemplo de un diagrama de flujo

Representación del Símbolo Explicación del Símbolo

Marca el inicio o fin del diagrama

Símbolo utilizado para Introducir los datos de entrada. Expresa lectura

Símbolo utilizado para representar un proceso.

No

Si

Símbolo utilizado para representar una decisión

Símbolo utilizado para representar una decisión múltiple

Representación del Símbolo Explicación del Símbolo

5ímbolo utilizado para representar la Impresión de un resultado. Expresa escritura

Símbolos utilizados para expresar la dirección del flujo del diagrama

Símbolo utilizado para expresar conexión dentro de una misma página

Símbolo utilizado para expresar conexión entre páginas diferentes

Símbolo utilizado para expresar un módulo de un problema

Inicio

Lectura de

datos

Procesamiento de datos

Impresión de resultados

Fin

Inicio

Fin

Reglas3. Todas las líneas deben estar conectadas

4. El diagrama debe ir de arriba hacia abajo, de izquierda a derecha

5. La notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación

1. Todo diagrama de flujo debe tener un inicio y un fin

2. Las líneas deben ser rectas, verticales y horizontales

Reglas

6. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o ayuden a entender lo que hicimos

7. Si el diagrama de flujo requiriera más de una hoja para su construcción, debemos utilizar los conectores adecuados y enumerar las páginas convenientemente.

8. No puede llegar más de una línea a un símbolo

Conjunto de instrucciones que sigue la computadora para alcanzar un resultado específico

Un lenguaje de programación, por otra parte, está constituido por un conjunto de reglas sintácticas y semánticas, que hacen posible escribir un programa.

Determinar las entradas y salidasReconocer o determinar cada uno de los pasos

para el desarrollo del algoritmoAl solicitar un dato, siempre se “Imprime o

escribe primero la pregunta” y luego se solicitaSe debe pensar en términos de que quién

realiza las preguntas es la máquina no el programador

https://www.youtube.com/watch?v=X5Wkp1gsNik

La mejor forma de aprender, no es compilando por cada línea, deben de imaginar el flujo de la ejecución del programa mientras lo realizas

La programación es una forma estructurada de expresar pensamientos

Es muy importante no ignorar los errores Reconocer el significado de las palabras en inglés que se

manejan

Una instrucción sigue a la otra en secuencia

InicioAcción 1Acción 2Acción 3::Acción N

Fin

Inicio

Fin

Acción 1

Acción 2

Acción N

Ejemplo: Escriba el pseudocódigo y diagrama de flujo para un algoritmo que sume dos números enteros

InicioInt num1, num2, sumEscribir “Diga dos números enteros”Leer num1, num2sum = num1 + num2Escribir “La suma es: ”, sum

Fin

Inicio

Int num1, num2, sum

“Diga dos números enteros”

Fin

num1, num2

sum = num1 + num2

“La suma es: ”, sum

Se utilizan en el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.

Estructura selectiva simple

SI ENTONCES

Estructura selectiva doble

SI ENTONCES / SINO

Estructura selectiva múltiple

SI MULTIPLE

Estructura selectiva anidada (cascada)

condición

operación

Donde:

CONDICION expresa la condición o conjunto de condiciones a evaluar.

OPERACION expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta verdadera.

Si (verdadero)

No (falso)

Si condición entonceshacer operación

{Fin del condicional}

Ejemplo:

Construya un diagrama de flujo y pseudocódigo tal que ingresando la calificación de un alumno en un examen, escriba “aprobado” en caso de que esa calificación sea mayor o igual a 3.

Inicio

Double nota

“Digite la nota”

Fin

nota

“Aprobado”

nota >= 3

Si

No

InicioDouble notaEscribir “Digite la nota”Leer notaSi (nota >= 3) Entonces

Escribir “Aprobado”Fin

Donde:

CONDICION expresa la condición o conjunto de condiciones a evaluar.

OPERACIÓN 1 expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta verdadera.

OPERACIÓN 2 expresa la operación o conjunto de operaciones que se van a realizar si la condición resulta falsa.

Si condición entonceshacer operación 1

Si nohacer operación 2

{Fin del condicional}

condición

Operación 1

Si verdadero

No falso

Operación 2

Ejemplo:

Construya un diagrama de flujo tal que dado como dato la calificación de un alumno en un examen, escriba “aprobado” si su calificación es mayor o igual que 3 y “reprobado” en caso contrario.

Inicio

Double nota

“Digite la nota”

Fin

nota

“Aprobado”

nota >= 3Si No

“Reprobado”

InicioDouble notaEscribir “Digite la nota”Leer notaSi (nota >= 3)

EntoncesEscribir “Aprobado”

SinoEscribir “Reprobado”

Fin

Donde:SELECTOR es la variable o expresión a evaluarse, según la cual se tomará una de las “múltiples” decisiones o Alternativas

ACCION 1 expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el valor 1.

ACCION 2 expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el valor 2.

ACCION N expresa la operación o conjunto de operaciones que se van a realizar si el selector toma el valor N.

ACCION N + l expresa la operación que se va a realizar cuando se continúe con el flujo normal del diagrama.

Acción 1

Valor 1

Acción 2 Acción N

Acción N+1

Selector

Valor NValor 2Si selector igual

valor 1 hacer acción 1

valor 2hacer acción 2

valor Nhacer acción N

{Fin del condicional}hacer acción N+1

Ejemplo:

Su empresa implementará una nueva forma de ajustar los sueldos según la experiencia laboral:Si la experiencia es de 1 año, el sueldo actual aumenta en 10%, si esta es de 2 años el incremento es del 15% y si es de 3 años el incremento es del 20%De acuerdo a lo anterior, construya un diagrama de flujo y pseudocódigo que calcule el salario final.

Inicio

Double sue, nsueInt exp

“Digite su sueldo y años de experiencia”

Fin

sue, exp

1 3

exp

“Su nuevo sueldo es: ”, nsue

nsue = sue * 0.1 + sue

nsue = sue * 0.2 + sue

nsue = sue * 0.15 + sue

2

InicioDouble sue, nsueInt expEscribir “Digite su sueldo y años de experiencia”Leer exp, sueSi exp igual

1: nsue = sue * 0.1 + sue2: nsue = sue * 0.15 + sue3: nsue = sue * 0.2 + sue

Escribir “Su nuevo sueldo es: ”, nsueFin

condición

Si (verdadero)

No (falso)

condición

Operación 1

Si verdadero

No falso

Operación 2

Ejemplo:

Desarrolle el diagrama de flujo y pseudocódigo que: dados 3 números enteros determine cual es el mayor.

Inicio

int n1, n2, n3

“Ingrese 3 números enteros”

n1,n2,n3

“El número mayor es: ”, n1

n1 > n2No

n1 > n3 n2 > n3

“El número mayor es: ”, n3

“El número mayor es: ”, n2

n3 > n2

“El número mayor es: ”, n2

“El número mayor es: ”, n3

n3 > n1

“El número mayor es: ”, n1

Fin

No No

NoNoSi

Si

Si

Si

Si

InicioInt n1, n2, n3Escribir “Ingrese 3 números enteros”Leer n1, n2, n3Si (n1 > n2)

EntoncesSi (n1 > n3)

EntoncesEscribir “El número mayor es: ”, n1

SinoSi (n3 > n2)

EntoncesEscribir “El número mayor es: ”, n3

SinoEscribir “El número mayor es: ”, n2

SinoSi (n2 > n3)

EntoncesEscribir “El número mayor es: ”, n2

SinoSi (n3 > n1)

EntoncesEscribir “El número mayor es: ”, n3

SinoEscribir “El número mayor es: ”, n1

Fin

Inicio

int n1, n2, n3

“Ingrese 3 números enteros”

n1,n2,n3

“El número mayor es: ”, n1

n1 > n2No

n1 > n3 n2 > n3

“El número mayor es: ”, n3

“El número mayor es: ”, n2

“El número mayor es: ”, n3

Fin

No NoSi Si

Si

InicioInt n1, n2, n3Escribir “Ingrese 3 números enteros”Leer n1, n2, n3Si (n1 > n2)

EntoncesSi (n1 > n3)

EntoncesEscribir “El número mayor es: ”, n1

SinoEscribir “El número mayor es: ”, n3

SinoSi (n2 > n3)

EntoncesEscribir “El número mayor es: ”, n2

SinoEscribir “El número mayor es: ”, n3

Fin