martes, 7 de febrero de 2012

Lógica Algoritmica y Programación Febrero 2012 PROFESOR: MIGUEL ANGEL GAVIDIA

Lógica Algoritmica y Programación
Febrero 2012
PROFESOR: MIGUEL ANGEL GAVIDIA

PROPÓSITO:
El propósito de este curso es introducir al participante en los fundamentos del diseño Lógico de algoritmos para luego utilizar un Lenguaje de Programación conocido y general y observar su ejecución en un computador. Para ello se aprenden los elementos del proceso de desarrollo de aplicaciones que se ejecutan en los computadores.

Prerrequisito: Ninguno
Audiencia: Aprobar un curso de alfabetización tecnológica a nivel universitario.

OBJETIVO GENERAL:
Estimular al participante con la finalidad de adquirir conocimientos, habilidades, destrezas y actitudes en el análisis, diseño, implementación y prueba en un lenguaje de programación de algoritmos para ser ejecutados como programas en un computador.

Objetivos Específicos:
1)Conocer a un computador como una herramienta en la solución de problemas mediante el uso de aplicaciones.
2)Conocer el enfoque metodológico en la solución de problemas algoritmicos en cuanto a identificar, definir y describir un problema planteado.
3)Analizar los datos de entrada y salida de un algoritmo
4)Identificar los elementos principales que constituyen a un algoritmo
5)Usar con propiedad la terminología para analizar y diseñar algoritmos
6)Aplicar el uso de algoritmos para resolver rutinas de la vida diaria
7)Evaluar expresiones algebraicas en términos de expresiones algorítmicas
8)Analizar y entender problemas algoritmicos
9)Crear la lógica básica de un algoritmo.
10)Resolver problemas numéricos y no numéricos mediante algoritmos expresados una notación en lenguaje pseudocódigo
11)Evaluar algoritmos en cuanto a su funcionalidad, generalidad y eficiencia
12)Identificar los elementos fundamentales para conocer y ejecutar programas en un computador.
13)Identificar la utilidad de las estructuras de control condicional: si, si-sino
14)Resolver problemas algoritmicos usando la estructura de control condicional
15) Identificar la utilidad de las distintas estructuras de control repetición: para, mientras, hacer-hasta
16)Resolver problemas algoritmicos usando la estructura de control repetición
17)Probar y evaluar la confiabilidad de los algoritmos.

Contenido del curso de Algoritmos
Unidad 1: Fundamentos de algoritmos
Objetivos del Aprendizaje Unidad 1:
1.Definir el propósito y el contenido de un algoritmo como método para resolver un problema mediante el uso de un computador.
2.Establecer una metodología para resolver un problema mediante el uso de un computador.
3.Conocer algunos conceptos básicos relacionados al diseño de algoritmos.
4.Conocer a un computador como una herramienta en la solución de problemas mediante el uso de aplicaciones.
5.Conocer el enfoque metodológico en la solución de problemas algoritmicos en cuanto a identificar, definir y describir un problema planteado.
6.Analizar los datos de entrada y salida de un algoritmo
7.Identificar los elementos principales que constituyen a un algoritmo
8.Usar con propiedad la terminología para analizar y diseñar algoritmos
9.Aplicar el uso de algoritmos para resolver rutinas de la vida diaria.

Contenido de la Unidad 1:

1.Introducción a los algoritmos.
Introducción a la Metodología de la programación. Introducción al curso. El porqué de la Metodología. Ejemplo. (Subiendo escaleras). Importancia de su conocimiento- Decreto presidencial 3390
2.Propiedades de los algoritmos
Funcionalidad, Confiabilidad, Integro, Flexible, Portabilidad, Robusto
3.Etapas en el proceso del análisis y diseño de algoritmos
a.Entender: Introducción. Enunciado del ejercicio. Planteamiento
b.Analizar. Buscar una solución. Especificar una solución o algoritmo- Diseñar un algoritmo
c.Probar un algoritmo- Actualizar o modificar un algoritmo
d.Metodología en la resolucion de problemas enfoque clásico. Determinación y especificaciones del problema. Búsqueda de la solución. Algoritmos. Método de análisis descendentes. Otros métodos. Especificaciones de la solución. Representación textual secuencial. Representación mediante diagramas de flujo. Lenguaje natural. Lenguaje pseudos-formal. Lenguajes. Estructura de algoritmos. Construcciones básicas: secuencias. Condición. Repetición. Prueba de la solución. Métodos empíricos. Traza. Métodos analíticos. Elaboración del programa. Lenguaje de programación
4.Conceptos relacionados con el análisis y diseño de algoritmos: Dato, tipo de datos, funciones incorporadas a los algoritmos, Variable. Tipos de variable: Contador, acumulador, switch
a.Asignación, constante, Lenguaje, lenguaje natural, lenguaje seudoformal. Lenguaje formal,
b.Operadores y operandos, expresiones algebraicas, Semántica y sintaxis, codificación, traza, prueba, depuración. Concepto de variable. Definir una variable. Inicializar una variable. Características de las variables numéricas. Almacenar resultados en variables.
5.Los datos y sus operaciones básicas: Datos numéricos, lógicos y caracteres. Tipos de datos
6.Expresiones matemáticas: Tipos de operaciones: Aritméticas, Lógicas (or, and, not) y Relación
a.Uso de operadores y operandos, prioridades entre operadores
b.Expresiones algebraicas. Expresiones lógicas
7.Herramientas como ayuda para la especificación de algoritmos: Diagramas de flujo. Pseudocodigo
8.Diseño de algoritmos no numéricos relacionados con la vida real
a.Determinar el sueldo mensual de una trabajador. Obtener la VISA. Registrar una vivienda ante el registro público. Efectuar una transacción en comercio electrónico. Afiliarse al servicio de Internet
b.Comprar un computador
9.Tipos de Instrucciones que forman a todo algoritmo: Secuencia. Condición. Repetición
10.Funciones internas para el diseño de algoritmos: Raíz, parte entera, redondeo, modulo
11. Diseño de algoritmos numéricos usando la secuencia
1.Introducción y Fundamentos de los Lenguajes de Programación
2.El Desarrollo De Un Programa en Lenguaje C y en Lenguaje Java
3.Tipos de datos básicos. Caracteres (Tipo Char). Números Enteros (Tipo Int) . Números Enteros (Tipo Long). Números Reales (Tipo Float). Números Reales (Tipo Double) . Constantes
4.Expresiones y Operadores: Operadores Aritméticos. Operadores De Asignación . Operadores Incrementales . Operadores Relacionales . Operadores Lógicos
5.Conversión De Tipos. Funciones Matemáticas y de manejo de String : Función Strlen()
6.Función Strcat() . Funciones Strcmp() Strcomp() . Función Strcpy()
7.Formatos de Entrada y Salida de datos. Interfase con el sistema operativo. Función Printf()
8.Función Scanf().
9.Conversiones De Tipo Implícitas / Explícitas(Casting)


Unidad 2: Instrucciones Condicionales

Objetivos del Aprendizaje Unidad 2:

1) Validar los datos de entrada y salida de un algoritmo. Identificar los elementos principales que constituyen las instrucciones condicionales- Usar con propiedad las instrucciones condicionales
2) Aplicar el uso de algoritmos e instrucciones condicionales para resolver rutinas de la vida diaria.
3) Diseño de algoritmos numéricos usando instrucciones condicionales

Contenido de la Unidad 2:

1.Instrucciones de tipo condicional
a.Importancia del uso de instrucciones condicionales. Instrucción condicional simple
b.Instrucción condicional doble. Instrucción condicional de alternativa multiple
2.Diseño de algoritmos no numéricos relacionados con la vida real uso de condicional
3.Diseño de algoritmos numéricos usando la instrucción condicional
4.Operador Condicional: Sentencia If . Sentencia If ... Else . Sentencia If ... Else Múltiple
5.Sentencia Switch . Sentencias Switch() Anidadas. Sentencias If Anidadas
6.La Expresión Condicional

Unidad 3: Instrucciones Repetitivas

Objetivos del Aprendizaje Unidad 3:
1.Validar los datos de entrada y salida de un algoritmo- Solicitar claves de acceso
2.Identificar los elementos principales que constituyen las instrucciones repetitivas
3.Usar con propiedad las instrucciones repetitivas
4.Aplicar el uso de algoritmos e instrucciones repetitivas para resolver rutinas de la vida diaria.
5.Diseño de algoritmos numéricos usando instrucciones repetitivas

Contenido de la Unidad 3:

1.Instrucciones de tipo Repetición
a.Importancia del uso de instrucciones repetitivas. Instrucción repetitiva: Para
b.Instrucción repetitiva: Mientras. Instrucción repetitiva: Repetir-Hasta
c.Ciclos anidados
2.Diseño de algoritmos no numéricos relacionados con la vida real uso de instrucciones repetitivas
3.Diseño de algoritmos numéricos usando las instrucciones repetitivas.

Unidad 4: Estructura de datos Vectores, Funciones y/o Procedimientos

Objetivos del Aprendizaje Unidad 4:

1.Conocer las estructuras de datos e Identificar la importancia del uso de vectores o arreglos
2.Trabajar con arreglos o vectores como herramientas para diseño de algoritmos.
3.Conocer el almacenamiento de vectores en la memoria RAM del computador
4.Conocer la importancia de utilizar el uso de funciones en el diseño de algoritmos
5.Identificar las funciones internas y las funciones definidas por el programador
6.Identificar las variables locales y las variables globales
7.Paso de parametros en las funciones: Paso de parametro por valor y paso de parametro por nombre.

Contenido de la Unidad 4:

1)Fundamentos para el uso de vectores
a)Importancia del uso vectores, Características de los vectores, Declarar e inicializar un vector
b)Tipo de datos en vectores

2)Operaciones con vectores
a)Asignar datos, Sumar elementos, Lectura y escritura, Contenido y posición de los elementos de un vector
b)Buscar elementos en un vector, Actualizar elementos en un vector

3)Diseño de algoritmos aplicando funciones, Funciones internas de un Lenguaje de Programación

4)Funciones definidas por el programador, Variables locales y Variables Globales

5)Paso de Parametros por valor y por nombre o referencia

6)Estructuras de datos en Lenguaje C. La estructura Registro. Vectores y registros.

7)Funciones en lenguaje C: Paso de Parámetros Por Valor y referencia. Funciones De Tipo Void

Evaluación:

La evaluación del curso se basará en exámenes escritos, talleres e intervenciones en clase.
Cada prueba de evaluación escrita tendrá un valor de 25 puntos, los talleres tendrán un puntaje de 15% y cada intervención tendrá un valor de 1 punto.

Las evaluaciones programadas incluyen tanto el componente teórico como el componente práctico del curso.

Los exámenes escritos y las tareas se efectuarán en las siguientes fechas:

Primera Evaluación escrita: juPonderación 25 puntos. (temario unidad 1 y unidad 2),
Fecha: Semana 4 despúes de iniciar clases.

Segunda Evaluación Taller: Ponderación 15 puntos. (temario unidad 3 y las unidades anteriores),
Fecha: Semana 6 despúes de iniciar clases.
4/9/2008 a las 5 p.m.

Tercera Evaluación escrita: juPonderación 25 puntos. (temario unidad 4 y las unidades anteriores),
Fecha: Semana 8 despúes de iniciar clases.

Cuarta Evaluación: Taller: Projecto Práctico Ponderación 25 puntos. (temario todas las unidades)
Fecha: Semana 10 despúes de iniciar clases.

Quinta Evaluación escrita: juPonderación 10 puntos. (temario todas las unidades)
Fecha: Desde el inicio hasta el final del curso

Bibliografía

1)Joyanes Aguilar Luis “Metodología a la Programación”. MacGraw-Hill. 2000.
2)Joyanes Aguilar Luis “Resolución de Problemas”. MacGraw-Hill. 1998.
3)Alcalde Miguel “Metodología a la Programación”.
4)OVIEDO, Efraim: «Lógica para Programación». Ediciones ECOE, 2002.
5)Lopez, Leobardo: “Programación Estructurada, un enfoque algorítmico”, AlfaOmega, 2002.
6)El Lenguaje De Programación C. Brian W. Kernighan, Dennis M. Ritchie. Prentice-Hall Hispanoamericana, 1985. Isbn 968-880-024-4
7)American National Standard For Information Systems -- Programming Language C. American National Standards Institute. 1430 Broadway New York, Ny 10018
8)El Lenguaje De Programación C, Segunda Edición. Brian W. Kernighan, Dennis M. Ritchie.Prentice-Hall Hispanoamericana, 1991. Isbn 968-880-205-0
9)C. A Software Engineering Approach. Peter A Darnell, Philip E. Margolis. Springer-Verlag, 1991Isbn 3-540-97389-3

Modelos de Prueba para la evaluación Nro. 1

Evaluación Nro. 1. Ponderación 25% Cada pregunta 4 %
Contenido a evaluar Unidad 1: Fundamentos de la Programación
Objetivos a evaluar
1.Utilizar la metodologia para el diseño de algoritmos
2.Conocer los conceptos de variable, algoritmo y tipo de datos
3.Aplicar las operaciones de asignación, lectura y salida de datos
4.Utilizar las variables de tipo contador y acumulador
5.Describir los diferentes tipos de datos numericos y caracter
6.Evaluar expresiones aritmeticas
7.Identificar el uso de algunas funciones internas , como por ejemplo raiz cudrada y modulo.

Pregunta Número 1: Explique las semejanzas y diferencias entre estos dos algoritmos que se ilustran a continuación:
1) Comienzo
2) Declarar (a,b) Entero
3)Inicializar: a=0, b=0
4) Leer (a)
5) Leer (b)
6) a = a + b
7) b = a - b
8) a = a - b
9) Escribir ( a, b)
10) Fin

Otro ejemplo

1) Comienzo
2) Declarar (a,b,c) Entero
3)Inicializar: a=7, b=1, c=0
4) c = a
5) a = b
6) b = c
7) Escribir ( a, b)
8) Fin

Diseñe un algoritmo en lenguaje pseudocodigo el cual permita establecer lo siguiente:

Pregunta Nro 2:
Calcular el sueldo neto a pagar a un empleado, dada sus horas trabajadas y su tarifa por hora, asuma el siguiente contrato colectivo: Jornada laboral mensual de 169 horas, el pago de horas extras es de 150% adicional a la hora normal, se paga un bono de alimentacion de cinco unidades tributarias y un bono de alimentación de tres unidades tributarias y se deduce una unidad tributaria por el consumo de café durante el trabajo. Asuma costo de una unidad tributaria en Bs.80.

Pregunta Nro 3:
Dado el precio en Bs. De un producto y dada una tasa de porcentaje para incrementar su precio, determinar el nuevo precio y su equivalente en dólares y Euros. Asuma un dolar son Bs. 10 y un Euro son Bs. 12

Pregunta Nro 4:
Dados dos números enteros, calcular su producto notable, obtener su división y la raiz cuadrada de su cociente.

Pregunta Nro 5:
Dados cuatro (4) números enteros, determinar su sumatoria, su multiplicatoria y su media aritmética.

Pregunta Nro 6:
Determinar las raices de una ecuación de de segundo grado f(x): ax + bx + c = 0
Asuma el valor de a es 1, el valor de c es 2 y el valor de b es mayor a 6

Fin de la prueba Nro. 1


Ejemplos Propuestos correspondientes a la unidad 1

1)Mostrar un número entero, un número real, una letra y una palabra, asuma valores fijos.
2)Dado un número por teclado, una letra y una palabra mostrarla
3)Dados 2 números enteros y positivos sumarlos y mostrar el resultado
4)Dados 2 números enteros y positivos dividirlos y mostrar el resultado
5)Dados 5 números obtener la media aritmética
6)Dados 4 números sumarlos y multiplicarlos
7)Dados los valores a y b números enteros correspondiente a valores de un producto notable, obtener su resultado.
8)Sumar los números pares comprendidos entre 2 y 10
9)Sumar los números impares comprendidos entre 1 y 9
10)Dados 2 números obtener el resto de la división.
11)Dada una palabra en minúscula convertirla a mayúscula
12)Dado el radio de un círculo, calcular su área y longitud de la circunsferencia
13)Dada la base y la altura de un rectángulo obtener el área
14)Dada una medida convertir pulgadas a centíme­tros
15)Dado un monto convertir Dólares a Bolívares
16)Resolver una ecuación de Segundo Grado, dados los coeficientes a, b, y c como números enteros. Asuma a diferente de cero, c=1 y b > a
17)Dado el nombre y el número de horas trabajadas en un mes por un empleado, determinar su sueldo neto a cobrar
18)Cuál es el nuevo precio de un producto aumentado en un 40 %
19)Dada la edad de una persona determinar el año de su fecha de nacimiento
20)Si la entrada a un cine es de Bs. F. 20 y desean entrar 30 personas, determinar el monto total a cancelar por el grupo.
21)Dados 2 montos en variables a y b, intercambiar dichos valores
22)Si un saco de cemento en ferretería tiene un costo de Bs. F. 30, y el valor del iva es 9 %, determinar el costo total a pagar por la factura.
23)Determinar el tiempo transcurrido de una reunión que comenzó a las 8 con 40 y finalizo a las 11 con 55 minutos.
24)Si se presta un monto de Bs. F. 1000, a una tasa de interés del 30% mensual, indique el monto a pagar por concepto del préstamo.

Ejemplos Propuestos correspondientes a la unidad 2

1.Dados 2 números enteros determinar el mayor
2.Dados 2 números enteros determinar el menor
3.Dados 7 números indicar cuales son mayores a 5.
4.Dados 7 números indicar cuantos y cuales son mayores a 10.
5.Dado un numero determinar si es par
6.Dados 2 números determinar si uno de ellos es igual al doble del otro
7.Dada una letra determinar si es mayúscula
8.Dados dos números enteros determinar si son impares.
9.Dados 7 números sumar solo aquellos menores a 20 y número par.
10.Dados 3 números indicar si uno de ellos es la suma de los otros dos
11.Dada la edad de 6 alumnos , determinar el promedio de alumnos menores a 20 anos
12.Dada una palabra determinar cuantas vocales tiene
13.Dados 2 números verificar si uno es divisor de otro
14.Dados 7 números obtener la media aritmética
15.Dados 5 números indicar cuales son pares y cuales impares.
16.Dado un numero entero y positivo determinar si esta comprendido entre 5 y 20
17.Resolver una ecuación de Segundo Grado, dados los coeficientes a, b, y c como números enteros. Determine si es una recta, si la raíz tiene solución en los números complejos.
18.Validar un número dado comprendido dentro de un criterio de validación
19.Diseñar un Algoritmo para determinar el tiempo y pago de un automóvil cuando utiliza un estacionamiento cuyo pago es por hora.
20.Dado el nombre, el número de horas trabajadas y la tarifa por hora en un mes por un empleado, determinar su sueldo neto a cobrar. Supuestos: a) Total horas de trabajo normal 160. b) Pago de horas extras es el doble al costo de la hora normal. C) Pago del bono de transporte del 30 % solo si nunca falto en el mes. d) El bono de alimentación es del 40 % solo para aquellos que ganen por debajo de un sueldo básico y 6 unidades tributarias. E) El seguro social obligatorio es del 4% si sueldo básico es menor a 2000 B.s F. como sueldo referencial sino un monto único de Bs. F. 90 , Seguro de paro forzoso del 1% y ley de política habitacional del 2%.
21.Dada la fecha actual, determinar la fecha del día siguiente


Ejemplos resueltos

Ejemplo en Lc

#include
main()
{
int n1,n2;
n1=n2=0;
printf("deme un nro \n");
scanf("%d",&n1);
printf("deme otro nro ");
scanf("%d",&n2);
if (n1 > n2) {
printf("el mayor es %d \n",n1);
}
}
/* fin programa */

Ejemplo en Lc

#include
#define bono1 800

#define bono2 500

#define bono3 300

main()

{

char nombre[10];
int cedula[12];

int ht, mpago, extras, neto;

int he;
int bono;
int tarifa;
clrscr();
mpago=0; extras=0;
bono = 0;
neto = 0;

printf("Introduzca el nombre : ");
scanf("%s",nombre);

printf("\nIndique la cedula :" );
scanf("%d",&cedula);

printf("\nIndique las horas trabajadas :");
scanf("%d",&ht);

printf("\nIndique el costo de la hora :");
scanf("%d",&tarifa);

if (ht>40)
extras=(ht-40)*2*tarifa;

else
extras=0;

if (ht<41)
{
mpago=ht*tarifa;
}

else
{
mpago=(40*tarifa) + extras;
}

printf("\nEl valor de la variable mpago es: %d",mpago);

switch(mpago)

{

case 4000:

bono = bono+bono1;

break;

case 5000: bono = bono+bono2;

break;

case 6000: bono = bono+bono3;

break;

default:

bono = 0;

}

printf("\nEl costo del bono es: %d",bono);

neto = mpago + bono;

printf("\n El coste de lashoras extras es: %d",extras);

printf("\n El costo a pagar es es %d",mpago);

printf("\n El monto neto a cobrar es: %d",neto);

}


Ejemplo en Lc

/*programa Resuelve la ecuaci¢n de segundo grado
ax2 + bx + c = 0
*/

#include

#include

main()

{

float a,b,c,raiz,raiz2,a2,x1,x2,dis2,rr;

a=0; b=0; c=0;

printf("Introduzca el coeficiente a: ");

scanf("%f",&a);

printf("\nIntroduzca el coeficiente b: " );

scanf("%f",&b);

printf("\nIntroduzca el coeficiente c: ");

scanf("%f",&c);

if ((a == 0)
{

printf("la ecuacion es degenerada ");

goto finalito;

}

raiz = (b*b) - (4*a*c);

dis2 = sqrt(raiz);

x1 = (-b+dis2)/(2*a);

x2 = (-b-dis2)/(2*a);

printf("\n\nEl valor del discriminante : %f",raiz);

printf("\n\nEl valor de la raiz : %f",dis2);

printf("\n\nEl valor de la primera raiz es: %f",x1);

printf("\n\nEl valor de la segunda raiz es: %f",x2);

finalito:

}


Ejemplo en Lenguaje Java

public class nombre

{

public static void main(String args[])

{

System.out.println("Maribel Martinez");

}

}

Ejemplo

public class e5suma
{

public static void main(String args[]){


int a = 5;

int b = 10;

int c;

c = a + b;

System.out.println("El valor de la suma es " + c);

}

}
public class suma_reales

{

public static void main(String args[])

{


double a = 3.15; //primer número real

double b = 0.39; //segundo número real

double c;



// Calculo del valor

c = a + b;


// Muestra en pantalla del resultado

System.out.println("El resultado de " + a +" + " + b +" = " + c);

}

}


Ejemplo en Basic

' Z02SUMA.BAS

'DADOS DOS NUMEROS, SUMARLOS

NUM1 = 0

NUM2 = 0

SUMA = 0

CLS

INPUT "INTRODUZCA PRIMER VALOR: ", NUM1

INPUT "INTRODUZCA SEGUNDO VALOR: ", NUM2

SUMA = NUM1 + NUM2

PRINT "LA SUMA ES: ", SUMA

END

No hay comentarios:

Publicar un comentario