Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
Introducción
a la
Programación
M.C. LOURDES SÁNCHEZ GUERRERO
Introducción a la Programación
Un algoritmo es un método para resolver un problema, debepresentarse como una secuencia ordenada de instrucciones quesiempre se ejecutan en un tiempo finito y con una cantidad deesfuerzo también finito.
En un algoritmo siempre debe haber un punto de inicio y un puntode terminación, estos deben ser únicos y deben ser fácilmenteidentificables.
CARACTERÍSTICAS DE UN ALGORITMO
Ser Preciso; Esto es, debe especificar sin ambiguedad el orden enque se deben ejecutar las instrucciones.
Definido; Esto es, cada vez que se ejecute bajo las mismascondiciones, la secuencia de ejecución deberá ser la mismaproporcionándonos el mismo resultado.
Ser Finito; Esto es, siempre que sea adecuado se realizarán unnúmero finito de instrucciones, en un tiempo finito y requiriendo unacantidad finita de esfuerzo.
Introducción a la Programación
pseudocódigo es un forma de representar un algoritmo
Palabras Clave en Pseudocódigo
Algoritmo nombrePrograma
Declaración de constantes
PRINCIPAL
Inicio
Cuerpo del programa /*donde se desarrolla las instrucciones
para resolver el problema */
Fin
Introducción a la Programación
Dentro del cuerpo del programa
inicio
se establecen las variables y su tipo
leer (lectura de las variable de entrada)
Estructuras de Control
operaciones
escribe (resultados)
fin
Introducción a la Programación
Palabras claves
Ejemplo: PRINCIPAL, inicio , fin, flotante,
leer, escribe, entero, carácter, etc.
-Secuencia
Estructuras -Bifurcación Condicional
de Control -Ciclos:
+Mientras
+ Hacer- Mientras
+ Desde
Estructuras de Control
Secuencia
Un conjunto de instrucciones, una detrás de la
otra
..
.
instrucción 1
instrucción 2
instrucción 3
instrucción 4
.
.
Estructuras de Control de Secuencia
Ejemplo:
Entero X, K, S, J, P, M ;
Inicio
X←10;
K ← 3;
lee ( S, J);
M ← S+ 2/ K;
P ← X * 2+ J;
escribe (‘ Los valores Finales son:’ M, P);
fin
Estructuras de Control Bifurcación Condicional
Bifurcación Condicional
Es una estructura de decisión.
SI (condición)
inicio
instrucción 1;
instrucción 2;
instrucción 3;
fin
Estructuras de Control Bifurcación Condicional
Ejemplo:
entero X←10
si (X> 0) entonces
M ← X + 2
si-no
M ← X - 3
Ejemplo:
entero X←10
si (X> 0)
inicio
M ← X + 2;
escribe( ‘el valor es’, M);
fin
si-no
inicio
M ← X - 3;
escribe( ‘el valor es’, M);
fin
Estructuras de Control de Ciclo Mientras
En este ciclo es importante tener en
cuenta que el ciclo mientras, no es
automático, es necesario incluir en
esta estructura de control un
contador. El contador es una variable
de tipo entero y debe estar incluido
dentro de este ciclo su incremento.
Estructuras de Control de Ciclo
mientras
Ejemplo:
entero X←1;
entero M ← 30;
mientras (X ≤10)
M ← X + 2
Ejemplo:
entero X←10;
M ← 30;
mientras (X ≤10 )
inicio
M ← X + 2;
escribe( ‘el valor es’, M);
fin
Estructuras de Control de Ciclo Mientras
Ejemplo:
entero X←0;
M ← 30;
mientras (X ≤10 )
inicio
M ← X + 2;
escribe( ‘el valor es’, M);
X ← X + 1; /* contador */
fin
Algoritmo caso1
/*este algoritmo es un ejemplo de la estructura mientras*/
PRINCIPAL
Inicio
entero X←0;
M ← 30;
mientras (X ≤10 )
inicio
M ← X + 2;
escribe( ‘el valor es’, M);
X ← X + 1; /* contador */
fin;
fin;
Estructuras de Control de Ciclo Mientras
Acumulador: es una variable de
cualquier tipo, en el cual acumula
valores. Cuando en algoritmo lo
requiera. Por ejemplo: el algoritmo
que acumula diez valores de una
variable acumula, estos valores
son leídos a través de una variable
R.
Estructuras de Control de Ciclo Mientras
entero X←0;
flotante R;
acumula ← 0;
mientras (X ≤10 )
inicio
lee( R);
acumula ← acumula + R ;
escribe( ‘el valor acumulado es:’, acumula); /*este es el acumulador*/
X ← X + 1; /* contador *
fin
Estructuras de Control de Ciclo Mientras
Algoritmo acumula_valores
/*este algoritmo es un ejemplo de la estructura mientras, con contador y acumulador*/
PRINCIPAL
Inicio
entero X←0;
flotante R, acumula;
acumula ← 0;
mientras (X ≤10 )
inicio
lee( R);
acumula ← acumula + R ;
escribe( ‘el valor acumulado es:’, acumula); /*este es el acumulador*/
X ← X + 1; /* contador * /
fin
fin
Estructuras de Control de Ciclo
mientras
Ejemplo:
entero X←1;
entero M ← 30;
hacer
M ← X + 2
mientras (X ≤10);
Ejemplo:
entero X←10;
M ← 30;
Hacer
inicio
M ← X + 2;
escribe( ‘el valor es’, M);
fin
mientras (X ≤10 );
Algoritmo caso1
/*este algoritmo es un ejemplo de la estructura mientras*/
entero M, X;
Flotante M;
M ← 0.0; X←0;
mientras (X ≤10 )
inicio
M ← X + 2.65;
escribe( ‘el valor es’, M);
X ← X + 1; /* contador */
fin
entero M, X;
Flotante M;
M ← 0.0; X←0;
mientras (X ≤10 )
inicio
M ← X + 2.65;
X ← X + 1; /* contador */
fin;
escribe( ‘el valor es’, M);
Estructuras de Control de Ciclo mientras
Algoritmo acumula_valores
/*este algoritmo es un ejemplo de la estructura mientras, con contador y acumulador*/
PRINCIPAL
Inicio
entero X←0;
flotante R, acumula;
acumula ← 0;
mientras (X ≤10 )
inicio
lee( R);
acumula ← acumula + R ; /*este es el acumulador*/
X ← X + 1; /* contador * /
fin;
escribe( ‘el valor acumulado es:’, acumula);
fin;
Ejemplos de algoritmos en
pseudocódigo
Los siguientes ejemplos en pseudocódigo, son
ejercicios que se presentan al alumno en la
clase y se explica donde esta el error en la
misma clase. Donde falta alguna variable, lo
que no están en el lugar correcto en el
algoritmo, si falta la definición del tipo de
variable, que el contador no se encuentra en el
lugar correcto, porque que no hace lo que se
solicita en el algoritmo, etc. Esto es con el
propósito de que el alumno revise y corrija los
algoritmos como tarea.
Estructuras de Control de Ciclo mientras
Algoritmo acumula_valores
/*este algoritmo es un ejemplo de la estructura mientras, con contador y acumulador, calcula la suma de los datos leídos desde teclado y determina cuales son pares */
PRINCIPAL
Inicio
entero R, suma;
suma ← 0; X←0;
mientras (X ≤10 )
inicio
lee( R);
oso ← R modulo 2;
si (oso == 0)
inicio
suma ← suma + R ;
escribe( ‘el valor de suma de múltiplos de 2 es:’, acumula); /*este es el acumulador de los valores que son múltiplos de 2 */
X ← X + 1; /* contador * /
fin;
Si_no
escribe( ‘el valor es un impar’, R)
fin;
fin;
Algoritmo numeros_Pos_Neg_Cer
/*este algoritmo lee desde teclado n números y determina si el número leído es positivo, negativo o cero, y
*/
PRINCIPAL
inicio
entero num, X, n;
X←1;
lee( n)
mientras (X ≤ n )
inicio
lee (num);
si (num > 0)
escribe( ‘el valor es positivo’, num);
si_no
si (num< 0)
escribe( ‘el valor es negativo’, num);
si_no
escribe( ‘el valor es igual a cero’, num);
X ← X + 1; /* contador */
fin;
fin;
Algoritmo numeros
/*este algoritmo lee desde teclado n números, valida si el numero n de datos es valido. Determina si el número leído es posi tivo, negativo o cero y mult iplica los valores posit ivos y los acumula en una variable */
PRINCIPAL
Inicio
entero n,num, X;
X←1;
escribe (‘Dame cuantos números quieres calcular’);
lee( n);
si (n> 0);
inicio
mientras (X ≤ n )
inicio
escribe (‘ Dame el dato a calcular’)
lee (num);
si (num > 0)
inicio
mult i_Posi ← mult i_Posi * num;
escribe( ‘el valor es positivo’, num);
escribe( ‘el valor de mutiplicación acumuladas de los datos positivos’, mult i_Posi);
fin; /* fin de la bifurcacion num>0 */
si_no
inicio
si (num< 0)
escribe( ‘el valor es negativo’, num);
fin; /* fin de la bifurcacion num<0 */
si_no
escribe( ‘el valor es igual a cero’, num);
X ← X + 1; /* contador */
fin; /* fin del mientras */
fin; /* fin de la bifurcación n>0 */
fin; /* fin del inicio del algoritmo */
Tarea: analizar lo dos siguientes algoritmos y explicar
cual es la diferencia entre:
Algoritmo numeros y Algoritmo numeros_pos_Multiplica
comentar si están en el lugar correcto las
instrucciones y de no ser así reescribir el algoritmo
correctamente.
Realizar una prueba de escritorio.
Una prueba de escritorio: es verificar si esta
desarrollando el algoritmo lo que se le pide. En
otras palabras se tiene que verificar o seguir cada
instrucción con datos iniciales supuestos y ver si esta
haciendo lo que se pide.
Algoritmo numeros
/*este algoritmo lee desde teclado n números y determina si el número leído es positiv o, negativ o o cero y multiplica los v alores positiv os y los acumula en una v ariable */
PRINCIPAL
inicio
entero X;
flotante num, multi_Posi;
X←1;
multi_Posi ← 0.0;
escribe (‘Dame cuantos números quieres calcular’)
lee( n)
mientras (X ≤ n )
inicio
escribe (‘ Dame el dato a calcular’)
lee (num);
si (num > 0)
inicio
multi_Posi ← multi_Posi * num;
escribe( ‘el v alor es positiv o’, num);
escribe( ‘el v alor de mutiplicación acumuladas de los datos positiv os’, multi_Posi); /*
comentar cuantas v eces se escribe el resultado e indicar en que parte deberia de ir para que solo escriba el resultado*/
fin;
si_no
si (num< 0)
escribe( ‘el v alor es negativ o’, num);
si_no
escribe( ‘el v alor es igual a cero’, num);
X ← X + 1; /* contador */
fin;
fin;
Algoritmo numeros_pos_Multiplica
/*este algoritmo lee desde teclado n números, v alida si el numero n de datos es v alido. Determina si
el número leído es positiv o, negativ o o cero y multiplica los v alores positiv os y los acumula en una v ariable */
PRINCIPAL
Inicio
entero n,num, X;
X←1;
escribe (‘Dame cuantos números quieres calcular’);
lee( n);
si (n> 0);
inicio
mientras (X ≤ n )
inicio
escribe (‘ Dame el dato a calcular’)
lee (num);
si (num > 0)
inicio
multi_Posi ← multi_Posi * num;
escribe( ‘el v alor es positiv o’, num);
escribe( ‘el v alor de mutiplicación acumuladas de los datos positiv os’, multi_Posi);
fin; /* fin de la bifurcacion num>0 */
si_no
inicio
si (num< 0)
escribe( ‘el v alor es negativ o’, num);
fin; /* fin de la bifurcacion num<0 */
si_no
escribe( ‘el v alor es igual a cero’, num);
X ← X + 1; /* contador */
fin; /* fin del mientras */
fin; /* fin de la bifurcación n>0 */
fin; /* fin del inicio del algoritmo */
Algoritmo Tablas_multiplicar
/*este algoritmo lee desde teclado que tabla de multiplicar se quiere determina, y además hasta que valor se quiere la tabla de multiplicar, e imprime cada valor de la tabla */
PRINCIPAL
inicio
entero n, tabla, X,Z;
X ←1;
escribe (‘Dame el valor de tabla quieres multiplicar’);
lee (tabla);
escribe (‘Dame hasta que valor quieres la tabla de multiplicar’);
lee( n)
mientras (X ≤ n )
inicio
Z ←tabla * X; /* aquí se desarrolla la tabla de multiplicar por cada elemento hasta el valor n*/
escribe(tabla, “*”, X ,”=“, Z); /* escribe cada elemento de la tabla de multiplicar */
X ← X + 1; /* contador */
fin;
fin;
Tarea : explicar cuantas tablas de multiplicar calcula este algoritmo.
Algoritmo tablas_multiplicar_mayores_cero
/*este algoritmo lee desde teclado que tabla de multiplicar se quiere determinar. Verifica si el valor de n es mayor a cero, y además hasta que valor se quiere calcular la tabla de multiplicar, e imprime cada valor de la tabla */
PRINCIPAL
inicio
entero n, tabla, X, Z;
X ←1;
escribe (‘Dame el valor de tabla quieres multiplicar’);
lee (tabla);
escribe (‘Dame hasta que valor quieres la tabla de multiplicar’);
lee( n);
si (n >0 )
inicio
mientras (X ≤ n )
inicio
Z ←tabla * X; /* aquí se desarrolla la tabla de multiplicar por cada elemento hasta el valor n*/
escribe(tabla, “*”, X ,”=“, Z); ); /* escribe cada elemento de la tabla de multiplicar */
X ← X + 1; /* contador */
fin;
fin;
si_no
escribe (‘ Valor no es valido para realizar la tabla de multiplicar’);
fin;
Tarea : explicar cuantas tablas de multiplicar calcula este algoritmo.
Algoritmo areas_de_un_rectangulos
/*este algoritmo calcula el área del rectángulo, lee desde teclado las variables , Determina si el valor de la base y la altura son mayores a cero */
PRINCIPAL
Inicio
flotantes area, base, altura ;
escribe (‘Dame el valor de la base’);
lee( base);
si (base> 0);
inicio
si (altura > 0 )
inicio
area← base *altura;
escribe( ‘el valor del área del rectángulo es:’, area);
fin; /* fin de la bifurcación relacionada con altura */
si_no
escribe( ‘el valor de altura no es valida’, altura);
fin; /* fin de la primera bifurcación relacionada con la base */
si_no
escribe( ‘el valor de la base no es valida’, base);
fin; /* fin del inicio del algoritmo */
Tarea : explicar cual es la diferencia entre este algoritmo y el siguiente algoritmo
Algoritmo areas_para_N_rectangulos
/*este algoritmo calcula el área de N rectángulos, lee desde teclado las v ariables ,
Determina si el v alor de la base y la altura son mayores a cero */
PRINCIPAL
Inicio
flotantes area, base, altura ;
enteros N, X;
X ←1;
escribe (‘Dame cuantos rectángulos quieres calcular’);
lee (N);
mientras (X <N )
inicio
escribe (‘Dame el v alor de la base’);
lee( base);
si (base> 0);
inicio
si (altura > 0 )
inicio
area← base *altura;
escribe( ‘el v alor del área del rectángulo es:’, area);
fin; /* fin de la bifurcación relacionada con altura */
si_no
escribe( ‘el v alor de altura no es v alida’, altura);
fin; /* fin de la primera bifurcación relacionada con la base */
si_no
escribe( ‘el v alor de la base no es v alida’, base);
X ← X + 1; /* contador del mientras*/
fin; /* fin del inicio del algoritmo */