clase de fundamentos de programación

35
Procesad or Salida (Información) Entrada (Datos) I UNIDAD: ALGORITMOS Y PROGRAMAS La razón principal para que el estudiante aprenda a programar es dar solución a los problemas utilizando la computadora como herramienta. Para dar solución a los problemas se siguen como mínimo los siguientes pasos: 1. Definición o análisis del problema. 2. Diseño del algoritmo. 3. Transformación del algoritmo en un programa. 4. Ejecución y validación del programa. I. SISTEMAS DE PROCESAMIENTO DE INFORMACIÓN En el uso diario, datos e información es lo mismo. En informática se suele hacer una diferencia: Datos: Se refiere a la representación de algún hecho, concepto o entidad real. Ejm: palabras escritas o habladas, dibujos , números. Información: Se refiere a datos procesados y organizados. Sistema : conjunto de componentes conectados e interactivos, que tienen un propósito y una unidad total. Sistema de procesamiento de información Es un sistema que transforma datos brutos en información organizada, significativa y útil. Se resume en tres compontes: Entrada, Procesador y Salida. Para realizar un proceso se le debe proporcionar al procesador un algoritmo adecuado; cuando el procesador es una computadora, el algoritmo tiene que expresarse en forma de programa, un programa se escribe en un lenguaje de programación, a la actividad de expresar el algoritmo en programa se le llama programación. Existen dos conceptos importantes a considerar: Hardware y software Hardware.-Es el conjunto de componentes físicos de una computadora. Software.- Es el conjunto de programas que controlan el funcionamiento de una computadora. II. ALGORITMO 1

Upload: olga-gonzales-tamay

Post on 26-Jun-2015

573 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Clase de Fundamentos de Programación

Procesador Salida (Información)Entrada (Datos)

I UNIDAD: ALGORITMOS Y PROGRAMAS

La razón principal para que el estudiante aprenda a programar es dar solución a los problemas utilizando la computadora como herramienta.

Para dar solución a los problemas se siguen como mínimo los siguientes pasos:

1. Definición o análisis del problema.2. Diseño del algoritmo.3. Transformación del algoritmo en un programa.4. Ejecución y validación del programa.

I. SISTEMAS DE PROCESAMIENTO DE INFORMACIÓN

En el uso diario, datos e información es lo mismo.

En informática se suele hacer una diferencia:

Datos: Se refiere a la representación de algún hecho, concepto o entidad real. Ejm: palabras escritas o habladas, dibujos , números.

Información: Se refiere a datos procesados y organizados.

Sistema: conjunto de componentes conectados e interactivos, que tienen un propósito y una unidad total.

Sistema de procesamiento de información

Es un sistema que transforma datos brutos en información organizada, significativa y útil.

Se resume en tres compontes: Entrada, Procesador y Salida.

Para realizar un proceso se le debe proporcionar al procesador un algoritmo adecuado; cuando el procesador es una computadora, el algoritmo tiene que expresarse en forma de programa, un programa se escribe en un lenguaje de programación, a la actividad de expresar el algoritmo en programa se le llama programación.

Existen dos conceptos importantes a considerar: Hardware y software

Hardware.-Es el conjunto de componentes físicos de una computadora.

Software.- Es el conjunto de programas que controlan el funcionamiento de una computadora.

II. ALGORITMO1. Es el conjunto de instrucciones que especifican la secuencia de operaciones a realizar, en orden, para

resolver un sistema específico o clase de problemas.2. Es una fórmula o método para la resolución de un problema.

Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa.

Los Algoritmos son independientes tanto del lenguaje de programación en que se expresan, así como de la computadora que los ejecuta. Cada algoritmo se puede expresar en un lenguaje de programación distinto y ejecutar en diferentes computadoras, pero el algoritmo va a ser siempre el mismo.

Características

Debe ser preciso e indicar el orden de realización de cada paso.

1

Page 2: Clase de Fundamentos de Programación

Estar definido si se sigue un algoritmo dos veces, se debe obtener el mismo resultado. Ser finito si se sigue un algoritmo debe tener un número finito de pasos.

III. LENGUAJES DE PROGRAMACIÓN

Los lenguajes de programación permiten comunicarse con los ordenadores o computadoras. Una vez identificada una tarea, el programador debe traducirla o codificarla a una lista de instrucciones que la computadora entienda. Un programa informático para determinada tarea puede escribirse en varios lenguajes. Según la función, el programador puede optar por el lenguaje que implique el programa menos complicado. También es importante que el programador elija el lenguaje más flexible y más ampliamente compatible para el caso de que el programa tenga varias aplicaciones.

LISTA DE INSTRUCCIONES EN LENGUAJE C PARA CALCULAR EL PROMEDIO DE UNA LISTA DE NÚMEROS

LISTA DE INSTRUCCIONES EN LENGUAJE BASIC PARA CALCULAR EL PROMEDIO DE UNA LISTA DE NÚMEROS

int datos[ ] = { 123, 32, 63, 75, 3, 742, 9648, 65}; Function Promedio

int longDatos = 8; Dim Suma as Integer

int promedio () Dim Índice as Integer

{ Dim Valor as Integer

int suma; Suma = 0

int prmd; Read LongDatos

int índice; For Índice = 1 to LongDatos

suma = 0; Read Valor

for (índice = 0; índice <longDatos; índice++) Suma= Suma + Valor

{ Next Índice

suma += datos [índice]; Promedio = Suma/LongDatos

} End Function

prmd = suma/longDatos;

DATA 8

return (prmd); DATA 123, 32, 63, 75, 3, 742, 9648, 65

}

Tipos de lenguajes

Los principales tipos de lenguajes son tres: Lenguaje máquina. Lenguaje de bajo nivel (ensamblador) Lenguaje de alto nivel

LENGUAJE MÁQUINA

El lenguaje propio del ordenador, basado en el sistema binario, o código máquina, resulta difícil de utilizar para las personas. El programador debe introducir todos y cada uno de los comandos y datos en forma binaria, y una operación sencilla puede tener el siguiente formato: 11001010 00010111 11110101 00101011. La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que muy raras veces lo que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el mismo.

Ventaja:

3. La posibilidad de cargar un programa a la memoria sin necesidad de traducción posterior, lo que supone una velocidad de ejecución superior a cualquier otro lenguaje.

Desventaja:2

Page 3: Clase de Fundamentos de Programación

4. Dificultad y lentitud en la codificación.5. Poca fiabilidad.6. Dificultad para verificar y poner a punto los programas.7. Los programas sólo son ejecutables en el mismo procesador.

LENGUAJE DE BAJO NIVEL O ENSAMBLADOR

Uno de los métodos inventados por los programadores para reducir y simplificar el proceso es la denominada programación con lenguaje ensamblador. Al asignar un código mnemotécnico (por lo general de tres letras) a cada comando en lenguaje máquina, es posible escribir y depurar o eliminar los errores. En el lenguaje ensamblador, cada comando mnemotécnico y sus operadores simbólicos equivalen a una instrucción de máquina. Un programa ensamblador traduce el código fuente, una lista de códigos de operación mnemotécnicos y de operadores simbólicos, a código objeto (es decir, a lenguaje máquina) y, a continuación, ejecuta el programa.

Ventaja:

8. La ventaja es frente a los lenguajes máquina, por su mayor facilidad de codificación y en general su velocidad de cálculo.

Desventaja:

9. Dependencia total de la máquina, que impide la transportabilidad de los programas.10. La formación de los programadores es más compleja.

LENGUAJE DE ALTO NIVEL

Los lenguajes de alto nivel suelen utilizar términos ingleses del tipo LIST, PRINT u OPEN como comandos que representan una secuencia de decenas o de centenas de instrucciones en lenguaje máquina. Los comandos se introducen desde el teclado, desde un programa residente en la memoria o desde un dispositivo de almacenamiento, y son interceptados por un programa que los traduce a instrucciones en lenguaje máquina.

Ventaja:

11. El tiempo de formación de los programadores es relativamente corto.12. La escritura de programas se basa en reglas sintácticas similares a los lenguajes humanos.13. Las modificaciones son más fáciles.14. Reducción del coste de los programas.15. Transponibilidad.

Desventaja:

16. Incremento del tiempo de puesta a punto ,para conseguir el programa definitivo.17. No se aprovechan los recursos internos de la máquina.18. Aumento de la ocupación de memoria.19. El tiempo de ejecución de los programas es mucho mayor.

Ejm de leguajes de alto nivel :

C C++ COBOL FORTRAN BASIC PASCAL VISUAL BASIC

IV. DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS

El primer objetivo de toda computadora es el manejo de la información o datos. Un dato es la expresión general que describe los objetos con los cuales opera una computadora.

3

Page 4: Clase de Fundamentos de Programación

Los algoritmos y programas correspondientes operan sobre datos.

Existen dos clases de tipos de datos:

20. Simples (sin estructura)21. Compuestos (estructurados)

Tipos de datos simples

numéricos (integer, real) lógicos (boolean) carácter (char, string)

DATOS NUMÉRICOS

Es el conjunto de los valores numéricos. Pueden representarse en dos formas distintas:

22. tipo numérico entero (integer)

Es un subconjunto finito de los números enteros. Los enteros son números completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Ejm:

5 6 -15 17 20 -17 1289 -19863 30 500También se denominan números de punto o coma fija. Los números enteros máximos y mínimos de una computadora suelen ser -32768 a + 32767. Los números enteros fuera de este rango se suelen representar como enteros largos

23. tipo numérico real (real)

Es un subconjunto de los números reales. Los números reales siempre tienen un punto decimal y pueden ser positivos o negativos. Un número real consta de un entero y una parte decimal. Ejm:

0.09 3.8956 -8.11 6478.4 7887.1548

En aplicaciones científicas se requiere una representación especial para representar números muy grande, como la masa de la tierra o números muy pequeños como la masa de un electrón, una computadora sólo puede representar un número fijo de dígitos siendo el número típico 8 dígitos.

Existe un tipo de representación denominada exponencial o científica que se utiliza para números muy grandes o muy pequeños.

Ejm: 589012000000000000000

589 012 000 000 000 000 000

5.89012x1020

De modo similar: 0.000000000024854

0.000 000 000 024854

2.4854x10-11

La representación en coma flotante es una generalización de notación científica.

DATOS LÓGICOS (BOOLEANOS)

El tipo lógico es aquel dato que sólo puede tomar uno de dos valores:

verdadero (true) y falso (false)

4

Page 5: Clase de Fundamentos de Programación

DATOS TIPO CARÁCTER Y TIPO CADENA

El tipo carácter es el conjunto finito y ordenado de caracteres que la computadora reconoce. Un dato tipo carácter contiene un solo carácter.

La mayoría de computadoras reconocen los siguientes caracteres alfabéticos y numéricos:

24. caracteres alfabéticos : A, B C, D, …..,Z, a, b, c, d,….,z25. caracteres numéricos : 1, 2, 3, 4, 5, 6, 7, 8, 9, 026. caracteres especiales : +, - , * , / , > , < , $ ,….

El tipo cadena (string) de caracteres es una sucesión de caracteres que se encuentran delimitados por una comilla (apóstrofo) o dobles comillas.

‘HOLA ALUMNOS’

’26 de agosto de 2009’

‘Sra. Martha’

V. CONSTANTES Y VARIABLES

En los programas de computadora se declaran ciertos valores que pueden ser constantes o variables

Una constante: Es una partida de datos que permanecen sin cambio durante todo el desarrollo del algoritmo o durante la ejecución del programa.Ejms: Constantes enteras : 45 256 -486 7958

Constantes reales : 2.265 5.69 -8.4

Constante tipo carácter : ‘M’ ‘m’ ‘9’ ‘+’

Constante tipo cadena : ‘Juan Pérez’ ‘lunes’

Constantes lógicas : verdad falso

Una Variable: Una variable es una partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del programa.

Una variable que es de un cierto tipo puede tomar únicamente valores de ese tipo. Ejm: una variable entera sólo puede tomar valores enteros.

Error de tipo, se produce cuando se intenta asignar a una variable de un tipo, el valor de otro tipo.

Atributos, tipo que lo describe y nombre que se le asigna.

Los nombres de variables, conocidos también como identificadores, suelen constar de varios caracteres alfanuméricos, de los cuales el primero es normalmente una letra, no está permitido usar como nombres de variables el signo - , espacios en blanco, o palabras reservadas del lenguaje de programación.

5

Page 6: Clase de Fundamentos de Programación

Ejemplos:

Nombres válidos de variables : NOMBRES SUELDO NUM1 N54 N_54

Nombres no válidos de variables : N 54 N-54 1NUM Nπ Nµ

VI. EXPRESIONESLas expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Ejm: a+(5+b)+ √ c -5+(-80+b)-aUna expresión consta de operandos y operadores.Según sea el tipo de objetos que manipulan, las expresiones se clasifican en:27. Aritméticas28. Lógicas29. Carácter

EXPRESIONES ARITMÉTICAS

Son análogas a las fórmulas matemáticas. La variables y constantes son numéricas (real o entera) y las operaciones son aritméticas.

Ejemplos:

5 + 4 se representa por 5 + 4

10 - 3 se representa por 10 - 3

5 x 7 se representa por 5*7

6 ÷ 2 se representa por 6/2

82 se representa por 8¿ 2

Operadores div y mod

13 div 4 equivale a 3 13 mod 4 equivale a 1

18 div 7 equivale a 2 18 mod 7 equivale a 4

Reglas de prioridad:

1. Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados (interiores unos a otros, las expresiones más internas se evalúan primero)

2. Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad:

6

Operador Significado+ Suma- Resta* Multiplicación/ División

, ¿ ,** Exponenciacióndiv División entera

mod Módulo (resto)

Page 7: Clase de Fundamentos de Programación

Operador exponencial (¿ ) Operadores *, / Operadores div y mod Operadores +, -

Nota: En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad es en este caso de izquierda a derecha.

EJERCICIOS

1. Cual es el resultado de las siguientes operaciones 5+9*5

10+2*5-4/2

6*(5+4)*6

5*4/2*5

-4*7+2¿ 3/4-5

81/9+45div2/12*3+(8+9*6-3)

45+5-9+(12mod3+25/5-9)*2

-4*7+2¿ 3/4-5

-5+3¿ 4+9 div2-6/2+9mod2

2. Convertir en expresiones aritméticas algorítmicas las siguientes expresiones algebraicas:

2.(x+y)-3

a2+b3-c2

x+ y

a+bc

xa−c

+b+ y+ac

EXPRESIONES LÓGICAS (BOOLEANAS)Es una expresión que sólo puede tomar dos valores: verdad y falso

1. Operadores de relación

7

Operador Significado< menor que> mayor que= igual que

<= menor o igual que

>= mayor o igual que<> Distinto de

Page 8: Clase de Fundamentos de Programación

Ejemplo: Si A=6 y B=5, entonces

A > B es verdad

(A-2) < (B – 4) es falso

A B Exp. Lógica Resultado

8 10 8<10 verdadero

2 6 2>6 falso

5 3 4=2 falso

9 4 9<=4 falso

7 7 7>=7 verdadero

6 6 6<>6 falso

2. Operadores lógicos

Los operadores lógicos o booleanos son:

Operador Lógico

Expresión Lógica Significado

no no p negación de p

y P y q conjunción de p y q

O P o q disyunción de p y q

p no p

V F

F V

p q p y

q

V V V

V F F

F V F

F F F

p q p o q

V V V

V F V

F V V

F F F

Ejercicios:

(1<5) y(2>6)

(1=5) y(2>6)

(1>5) y(2>6)

(1<5) y(2<6)

(8<5) y(2=6)

(1<5) y(8<3)

(1<5) y(2>-6)

(1>-1) y(2>6)

(5<=5) y(2>6)

(1<5) y(2>=6)

(2>=5) y(2>6)

(1<5) y(2>6)

(3<5)o(2>=6)

(1<>5) o(2>6)

(7<5) o(2<>2)

(1<6) o(8>6)

(1<-5) o(2>9)

(8<5) o(-2>6)

8

Page 9: Clase de Fundamentos de Programación

VII. FUNCIONES INTERNAS

Son funciones que se requieren en los programas, además de las ya tratadas,

operaciones aritméticas básica. Ejemplo: Para calcular la raíz cuadrada de un número

entero o real se empleará la función raiz2(x) o su equivalente sqrt(x).

Función Descripción Tipo de argumento

Resultado

abs(x) Valor absoluto de x entero o real Igual que el argumento

arctan(x) Arco tangente de x entero o real real

cos(x) Coseno de x entero o real Real

ln(x) Logaritmo neperiano de x

entero o real Real

log10(x) Logaritmo decimal de x entero o real Real

redondedo(x)

Redondeo de x real Entero

raíz2(x)sqrt(x)

Raíz cuadrado de x entero o real Real

cuadrado(x)sqr (x)

Cuadrado de x entero o real Igual que el argumento

Ejemplos:

Expresión Resultado

raiz2(25) 5

redondeo (8.3) 8

redondeo (2.8) 3

redondeo (-1.3)

-1

cuadrado (4) 16

raiz2(9) 3

9

Page 10: Clase de Fundamentos de Programación

abs(8) 8

abs(-13) 13

VIII. OPERACIÓN DE ASIGNACIÓN

La operación de asignación es la manera de darle el valor a una variable. Se

representa con el operador . Este operador de asignación se sustituye en otros

lenguajes por el =, pero en la redacción del algoritmo se utilizará , y se dejará el

símbolo = exclusivamente para las operaciones de igualdad.

A13

A28

A5

Cuando éstas se ejecutan, el último valor que toma A será 5.

La computadora ejecuta la sentencia de asignación en dos pasos. El primero calcular

el valor de la expresión del lado derecho, el segundo paso será asignar el valor a la

variable del lado izquierdo.

XY+5

NN+6

Asignación Aritmética: Las expresiones en las operaciones de asignación son

aritméticas. Ejemplos:

NH5*3+10/2

NH

V16+9*5+raiz2(81)

V24.2+0.8

RV1/V2

R

Asignación Lógica: La expresión en la operación de asignación es lógica.

10

Page 11: Clase de Fundamentos de Programación

Ejemplos: El tipo de variable A, B y C son de tipo lógico.

A6<4

B A o ( 9>=9)

CA y B

C

Asignación de cadenas de caracteres: La expresión que se evalúa es de tipo cadena.

X ’Bienvenidos’

Nom ‘Julia’

Ejercicios:

1. Asigna el valor de la expresión a la variable N1 de tipo numérico.

2+3*3+16/4-2¿ 3-3+(sqrt(25)+cuadrado(6)-3+8)+7

2. Asigna el valor de la expresión a la variable A de tipo lógico.

E1(6+4)>7 y (6+7)>=13

E2 5>(5+5) o 8<3

B E1 y E2

A no B

3. Asigna tu nombre y apellido a la variable Nombre de tipo cadena.

IX. ENTRADA Y SALIDA DE INFORMACIÓN

Para que las computadoras realicen cálculos requieren de entrada de datos una vez

realizada la(s) operación(es) que se le indiquen darán como respuesta resultados, es

decir salida de información.

11

Page 12: Clase de Fundamentos de Programación

Las operaciones de entrada permiten leer determinados valores y asignarlos a

determinadas variables. Esta entrada se conoce como operación de lectura (read). La

operación de salida se denomina escritura (write).

En la escritura de algoritmos, la lectura y escritura se representan por los siguientes

formatos:

leer (lista de variables de entrada)

escribir (lista de expresiones de salida)

Ejemplo de lectura:

leer (X, Y, Z)

Ejemplo de escritura

escribir (‘BIENVENIDOS’)

Ejemplos de diseño de algoritmos

1) Diseñar un algoritmo para que calcule la suma de dos números.

1. INICIO

2. Leer (num1, num2)

3. Sumar al num1 el num2

4. escribir (num1)

5. FIN

2) Diseñar un algoritmo para realizar la suma de los números pares entre 4 y 20

1. INICIO

2. Establecer SUMA a 0

3. Establecer NÚMERO a 4

4. Sumar NÚMERO a SUMA

5. Incrementar NÚMERO en 2 unidades

12

Page 13: Clase de Fundamentos de Programación

6. Si NÚMERO es menor o igual a 20 bifurcar al paso 4,

7. Escribir el valor de SUMA

8. FIN

EJERCICIOS

Desarrollar los siguientes algoritmos

1. Cambiar el foco quemado de un techo.

2. Preparar una taza de te.

3. Determinar el mayor de tres números enteros.

4. Dado dos números enteros, realizar el algoritmo que calcule el cociente y el resto.

5. Leer el radio de un círculo y calcular e imprimir su área o longitud. (A=π

r2 y L=2π

r)

6. Realizar un algoritmo que calcule el área de un cubo, su volumen y la longitud de su diagonal. Nota: El área total de un cubo de arista a es A = 6a2, su volumen es V = a3 y la

longitud de su diagonal d=a√3

7. Ingrese el nombre, sueldo de un empleado, éste obtendrá una asignación familiar del 10% de la remuneración mínima vital, si tiene hijos menores de edad.

8. Leer el nombre, horas trabajadas, precio de la hora; de un trabajador y deducir el salario sabiendo que se le efectúa un descuento del 25% del salario bruto.

9. Realizar un algoritmo que me de el precio de venta de un determinado producto a partir de su costo de venta. (Tener en cuenta el porcentaje de ganancia y el IGV)

10. Calcular la media de una serie de números positivos, suponiendo que los datos se leen desde un terminal. Un valor de cero (como entrada) indicará que se ha alcanzado el final de la serie de números positivos.

X. REPRESENTACIÓN GRÁFICA DE LOS ALGORITMOS

Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codificado en cualquier lenguaje. Para ello se necesita que el algoritmo sea representado gráfica o numéricamente, de modo que las sucesivas acciones no dependan de la sintaxis de ningún lenguaje de programación, sino que la descripción pueda servir fácilmente para su transformación en un programa, es decir, su codificación.

Los métodos usuales para representar un algoritmo son:

13

Page 14: Clase de Fundamentos de Programación

1. Diagrama de flujo

2. Diagrama N-S (Nassi-Schneiderman)

3. Lenguaje de especificación de algoritmos: pseudocódigo.

1. DIAGRAMA DE FLUJO

Un diagrama de flujo (flowchart) es una de las técnicas de representación de algoritmos más antigua y a la vez más utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparición de lenguajes de programación estructurados.

Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en que se deben ejecutar.

SÍMBOLOS PRINCIPALES FUNCIÓN

Terminal (representa el comienzo, “INICIO”, y el final, “FIN” de un programa. Puede representar también una parada o interrupción programada que sea necesario, realizar en un programa)

Entrada/Salida (cualquier tipo de introducción de datos en la memoria desde los periféricos, “ENTRADA”, o registro de la información procesada en un periférico, “SALIDA”

Proceso (cualquier tipo de operación que pueda originar cambio de valor, formato o posición de la información almacenada de memoria, operaciones aritméticas, de transferencia, etc.).

Decisión (indica operaciones lógicas o de comparación entre datos (normalmente 2) y en función del resultado de la misma determina cuál de los distintos caminos alternativos del programa se debe seguir; normalmente tiene dos salidas (respuestas SI o NO).

Decisión múltiple (en función del resultado de la comparación se seguirá uno de los diferentes caminos de acuerdo con dicho resultado)

Conector (sirve para enlazar dos partes cualesquiera de un organigrama a través de un conector en la salida y otro conector en la entrada. Se refiere a la conexión en la misma página del diagrama).

Indicador de dirección o línea de flujo (indica el sentido de ejecución de las operaciones).

Línea conectora (sirve de unión entre dos puntos del organigrama situado en páginas diferentes)

Conector (conexión entre dos puntos del organigrama situado en páginas diferentes

14

Page 15: Clase de Fundamentos de Programación

Llamada a subrutina o a un proceso predeterminado (una subrutina es un módulo independiente del programa principal, que recibe una entrada procedente de dicho programa, realiza una tarea determinada y regresa, al terminar, al programa principal).

Ejemplos:

1) Calcular la suma de dos números.

2) Pedir la nota de un alumno y escribir si está aprobado o desaprobado. La nota tiene que ser validada entre 0 y 20.

3) Realizar la suma de los números pares entre 4

y 20

15

Page 16: Clase de Fundamentos de Programación

2. DIAGRAMA DE NASSI – SCHNEIDERMAN (N-S)

El diagrama N-S es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una caja.

Ejemplos:

1) Calcular la suma de dos números.

16

Page 17: Clase de Fundamentos de Programación

2) Pedir la nota de un alumno y escribir si

está aprobado o desaprobado. La nota

tiene que ser validada entre 0 y 20.

3) Realizar la suma de los números pares

entre 4 y 20

3. PSEUDOCÓDIGO

El pseudocódigo nació como un lenguaje similar al inglés y era un medio de representar básicamente las estructuras de control en programación estructurada. Se considera un primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un lenguaje de programación. El pseudocódigo no puede ser ejecutado por una computadora. La ventaja del pseudocódigo es que en su uso, en la planificación de un programa, el programador se puede concentrar en la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje específico. Es también fácil modificar el pseudocódigo si se descubren errores o anomalías en la lógica del programa, mientras que en muchas ocasiones suele ser difícil el cambio en la lógica una vez que está codificado en un lenguaje de programación.

BUCLES

17

Page 18: Clase de Fundamentos de Programación

Un bucle o lazo (loop) o ciclo es un segmento de un algoritmo o programa, cuyas instrucciones se repiten un número determinado de veces mientras se cumple una determinada condición (existe o es verdadera la condición). Se debe establecer un mecanismo para determinar las tareas repetitivas. Este mecanismo es una condición que puede ser verdadera o falsa y que se comprueba una vez a cada paso o iteración del bucle (total de instrucciones que se repiten en el bucle).Un bucle consta de tres partes:

Decisión Cuerpo del bucle Salida del bucle

Bucle infinito Bucle con fin

ELEMENTOS AUXILIARES DE UN PROGRAMA

Los elementos auxiliares de un programa son variables y lo utiliza un programa por la función que realiza dentro del mismo, toma un nombre especial de acuerdo a su funcionamiento.

Son variables que realizan funciones específicas dentro de un programa. Estos son 3:

1. Contadores

2. Acumuladores

3. Interruptores

1. Contadores

18

Page 19: Clase de Fundamentos de Programación

Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se necesitan normalmente contar los sucesos o acciones internas del bucle. Una forma de controlar un bucle es mediante un contador.Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteración.Un contador toma un valor inicial antes de iniciar su función incrementándose su valor cada vez que se realiza el suceso a contar.Ejemplo:

Contador 0 (inicialización)Contador Contador + 1 ó Contador Contador + k (contabilización)

Ejercicios: Diseñar el algoritmo y su respectivo diagrama de flujo.

1. Calcular el salario semanal de los empleados de una empresa, sabiendo que éstos se calculan en base a las horas semanales trabajadas y de acuerdo a un precio especificado por hora. Si se pasan de cuarenta horas semanales, las horas extraordinarias se pagarán a razón de 1.5 veces la hora ordinaria.

2. Se desea obtener el salario neto de 50 trabajadores conociendo el número de horas trabajadas, el salariohora y la tasa de impuestos que se le debe deducir.

3. Dado una secuencia de números, contar e imprimir el número de ceros de la secuencia.

4. Calcular el valor de la suma 1+2+3+4+…..+100

2. AcumuladorUn acumulador o totalizador es una variable cuya misión es almacenar cantidades variables resultantes de sumas sucesivas. Realiza la misma función que un contador, con la diferencia de que el incremento o decremento de cada suma es variable en lugar de constante, como en el caso del contador.Se representa por la instrucción SS+N, donde N es una variable y no una constante.Ejemplo:

19

Page 20: Clase de Fundamentos de Programación

Sumar los K números enteros.

El algoritmo correspondiente es:1. Inicio2. Leer (K)3. N04. Suma05. NN+16. Sumasuma+N7. Si N=K, bifurcar al paso 98. Bifurcar al paso 59. Escribir(Suma)10. FIN

//convertir a diagrama de flujo

3. InterruptoresTambién llamados: banderas, flags, centinelas, conmutadores, switch.Es una variables que puede tomar dos valores diferentes, 1 y 0 (De ahí su nombre interruptor, “encendido”/”apagado”, “abierto”/”cerrado”.

Ejemplo: Se tiene un archivo con un conjunto de fichas con dos campos, M y N. Se desea listar el campo M de las fichas pares y el campo N de las fichas impares.

ESCRITURA DE ALGORITMOS/PROGRAMAS

L a escritura de un algoritmo mediante una herramienta de programación debe ser lo más clara posible y estructurada, de modo que su lectura facilite considerablemente el entendimiento del algoritmo y su posterior codificación en un lenguaje de programación.Los algoritmos deben ser escritos en lenguajes similares a los programas.

DECLARACIÓN DE VARIABLESEn esta sección se declaran o describen todas las variables utilizadas en el algoritmo, listándose sus nombres y especificando sus tipos. Esta sección comienza con la palabra reservada var y tiene el formato:var

tipo 1: lista de variables 1tipo 2: lista de variables 2

.

.tipo n: lista de variables n

Ejemplo:

varentera: Num_Empleadoreal: horas

real: impuestoreal: salario

es equivalente a:var

20

Page 21: Clase de Fundamentos de Programación

entera: Num_Empleadoreal: horas, impuesto, salario

DECLARACIÓN DE CONSTANTES NUMÉRICASEn esta sección se declaran todas las constantes que tengan nombre. Su formato es:const

pi =3.141592igv=19tamaño=1.60

DECLARACIÓN DE CONSTANTES Y VARIABLES CARÁCTER Declaración de constantes carácter:

Ejemplo:const

letra=’a’frase=’Hola alumnos’

Declaración de variables carácter:Ejemplo:var

carácter: letra, inicialcadena: apellido, nombres

COMENTARIOSEn la escritura de programas se suelen escribir comentarios significativos, estos van ayudar en el posterior mantenimiento del programa. Estos comentarios se representan con diferentes notaciones, según el tipo de lenguaje de programación.Ejemplo en:VISUAL BASIC : los comentarios empiezan por el carácter apóstrofo(‘)

‘este símbolo + significa sumar‘ este algoritmo realiza la suma de números pares hasta 100

PASCAL : los comentarios se encierran entre los símbolos (* *) o { }(*este símbolo + significa sumar*)(* este algoritmo realiza la suma de números pares hasta 100*)

C++ : los comentarios empiezan por la doble barra inclinada ////este símbolo + significa sumar// este algoritmo realiza la suma de números pares hasta 10

PROGRAMACIÓN ESTRUCTURADALa programación estructurada utiliza un número limitado de estructuras de control que minimizan la complejidad de los problemas y, por consiguiente, reducen los errores.

21

Page 22: Clase de Fundamentos de Programación

La programación estructurada hace los programas más fáciles de escribir, verificar, leer y mantener. Los programas deben estar dotados de una estructura.Tipos de Estructuras de Control Secuenciales Selectivas Repetitivas

1. ESTRUCTURA SECUENCIALEs aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el final del proceso.

Inicio

Instrucción 1Instrucción 2

.

.

.Instrucción n

Fin

Ejemplo:a) Calcule la suma y producto de dos números.b) Calcular el salario neto de un trabajador en función del número de horas trabajadas, precio de la hora

y considerando un descuento por impuesto del 20 por ciento.

2. ESTRUCTURA SELECTIVA (DE DECISIÓN O ALTERNATIVA)

En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o si, entonces, si_no)Las estructuras selectivas pueden ser:

Simples Dobles Múltiples

2.1. Alternativa simple (si - entonces/ if - then)La estructura alternativa si – entonces (if – then ) ejecuta una determinada instrucción cuando se cumple una determinada condición.

Si <condición> entoncesInstrucción 1

Instrucción 2.

.

.

22

Page 23: Clase de Fundamentos de Programación

Instrucción nfin_si

if <condición> thenInstrucción 1Instrucción 2

.

.

.

Instrucción nend_if

Ejemplo:a) Leer la nota de un alumno y escribir si está aprobado.b) Leer un número y escribir si es positivo.c) Ingrese el nombre, sueldo, e hijos menores de edad ( V ó F), de un empleado, éste obtendrá una

asignación familiar del 10% de la remuneración mínima vital(S/.550.00) siempre que tenga hijos menores de edad.

2.2. Alternativa doble (si – entonces – si_no / if – then – else)La estructura anterior es muy limitada y normalmente se necesitará una estructura que permita elegir entre dos opciones o alternativas posibles, en función del cumplimiento o no de una determinada condición.Si la condición C es verdadera, se ejecuta la instrucción I1 y, si es falsa, se ejecuta la instrucción I2

si <condición> entoncesInstrucción 1

si_noInstrucción 2

fin_si

Ejemploif <condición> then

Instrucción 1else

Instrucción 2end_if

1. Leer la nota de un alumno y escribir si está aprobado o desaprobado.2. Calcular el salario semanal de un trabajador sabiendo que éste se calcula en base a las horas

trabajadas y un precio por hora. Si se pasa de 40 horas, las horas extraordinarias se pagarán a razón de 1.5 veces la hora ordinaria.

3. Se desea obtener el salario semanal (salario neto) de un determinado empleado cuyo trabajo se paga por horas y del modo siguiente:

Las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa determinada que se debe introducir por teclado al igual que el número de horas y el nombre del trabajador.

Las horas superiores a 35 se pagarán como extras al precio de 1.5 horas normales. Los impuestos a deducir varían en función del sueldo semanal:

- Sueldo <=400.00 libre de impuestos- Los siguientes 200 soles al 20%

23

Page 24: Clase de Fundamentos de Programación

- El resto al 30%2.3. Alternativa múltiple (según sea, / case)

La estructura de decisión múltiple evaluará una expresión que podrá tomar n valores distintos de 1 como 2,3,4,…,n. Según que elija uno de estos valores en la expresión, se realizará una de las n instrucciones. O lo que es igual el flujo del algoritmo seguirá un determinado camino entre los n posibles.

según sea <expresión> hacere1 : Instrucción 1e2 : Instrucción 2..en : Instrucción nOtros : Instrucción x

fin_según

case <expresión> ofe1 : Instrucción 1e2 : Instrucción 2..en : Instrucción notherwise : Instrucción x

end_case

Ejemplos:

1. Diseñar un algoritmo que escriba los nombres de los días de la semana en función del valor de una variable DIA introducida por teclado, que representa su posición dentro de la semana.

2. Leída una fecha, decir el día de la semana, suponiendo que el día 1 de dicho mes fue lunes.

3. Se desea convertir las calificaciones alfabéticas A, B, C, D y E a calificaciones numéricas 20, 17, 15, 13, 10 respectivamente.

4. Escribir la condición de un alumno de acuerdo a su nota de 20 – 18: excelente, 17 – 14: Bueno13 – 11: Regular, 10 – 7: malo, 6 – 0: muy malo

5. Algoritmo que nos indique si un número entero, leído de teclado, tiene 1,2,3 o más de 3 dígitos. Considerar los números negativos.

24

Page 25: Clase de Fundamentos de Programación

3. ESTRUCTURA REPETITIVA

Las computadoras están especialmente diseñadas para todas aquellas aplicaciones en las cuales una operación o conjunto de ellas deben repetirse muchas veces.

Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan bucles, y se llama iteración al hecho de repetir la ejecución de una secuencia de acciones.

En todo bucle hay una o varias acciones que se han de repetir y una condición que determina el número de repeticiones de las mismas.

El valor de la condición debe ser afectado por las acciones para asegurar la terminación del bucle en algún momento.

Según la evaluación de la condición se realiza al comienzo, al final o dentro del bucle.

3.1. Estructura mientras (while)

mientras <condición> hacerInstrucción 1Instrucción 2

.

.

.Instrucción n

fin_mientras

while <condición> doInstrucción 1Instrucción 2

.

.

.Instrucción n

end_while

Ejemplos:

1. Contar los números enteros positivos ingresados por el teclado. Se detiene el bucle cuando se ingresa un número cero o negativo.

2. Dado una secuencia de números, contar e imprimir el número de ceros de la secuencia.

3.2. Estructura repetir (repeat)

repetir Instrucción 1Instrucción 2

.

.

.Instrucción n

hasta_que <condición>

repeatInstrucción 1Instrucción 2

.

.

.Instrucción n

until <condición>

Ejemplos:

25

Page 26: Clase de Fundamentos de Programación

1. Contar los números enteros positivos ingresados por el teclado. Se detiene el bucle cuando se ingresa un número cero o negativo.

2. Dado una secuencia de números, contar e imprimir el número de ceros de la secuencia.

PRACTICA DIRIGIDA DE FUNDAMENTOS DE PROGRAMACIÓN

Nombre: __________________________________________________________Diseñar un algoritmo para cada enunciado:

1. Calcular la media de un conjunto de notas de alumnos. Pondremos un valor centinela de -99 que detecte el fin del bucle

2. Calcular la media de un conjunto de notas de alumnos. Pondremos un valor centinela de -99 que detecte el fin del bucle. Validar que las notas sean validas.

3. Escribir los k números positivos.

4. Sumar los K números enteros.

5. Sumar una secuencia de números

6. Realizar la suma de los números pares entre 4 y 100

7. Calcular la media de una serie de números positivos, suponiendo que los datos se leen desde un terminal. Un valor de cero (como entrada) indicará que se ha alcanzado el final de la serie de números positivos.

8. Diseñar un algoritmo que escriba los nombres de los meses del año en función del valor de una variable MES (tipo entero) introducida por teclado, que representa su posición dentro del año. Validar que el mes leído sea valido.

3.3. Estructura para (for)

26

Page 27: Clase de Fundamentos de Programación

En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las acciones de un bucle. En estos casos en los que el número de iteraciones es fijo, se debe usar la estructura “para”(“for”).La estructura para ejecuta las acciones del cuerpo del bucle un número especificado de veces y de modo automático controla el número de iteraciones o pasos a través del cuerpo del bucle.

Para VC de Vi hasta Vf con incremento i hacerInstrucción 1

Instrucción 2

.

.

.

Instrucción n

fin_para

Ejemplos:

1. Leer la nota de 6 alumnos y calcular su promedio

2. Leer la nota de k alumnos y calcular su promedio

3. Leer la nota de 50 alumnos y escribir por cada uno de ellos su nombre y su condición (si está aprobado o desaprobado)

4. Calcular la suma de los números pares entre 2 y 1000

5. Calcular la suma de los k números positivos ingresados por el teclado.

6. Calcular el salario de 60 trabajadores, pedir los datos de cada trabajador: Nombre, horas trabajadas, precio hora.

7. Calcular el salario semanal de los trabajadores de una empresa sabiendo que el salario de cada uno de ellos se calcula en base a las horas trabajadas y un precio por hora. Si se pasa de 40 horas, las horas extraordinarias se pagarán a razón de 1.5 veces la hora ordinaria.

8. Imprimir los números desde 1000 hasta 1

9. Imprimir los números pares desde 1000 hasta 2

Bibliografía:

27

Page 28: Clase de Fundamentos de Programación

Fundamentos de Programación………………………Luis Joyanes Aguilar

28