La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ANALISIS DE PROBLEMAS SOLUCIONES LOGICAS

Presentaciones similares


Presentación del tema: "ANALISIS DE PROBLEMAS SOLUCIONES LOGICAS"— Transcripción de la presentación:

1 ANALISIS DE PROBLEMAS SOLUCIONES LOGICAS
PREPARAR CAFÉ UTILIZANDO COMO HERRAMIENTA UNA CAFETERA ELECTRICA. Prof. Dra. ADDYS DE LAM

2 OBJETIVO ANALIZAR PROBLEMAS DE LA VIDA RUTINARIA PARA ENCONTRAR LAS DIFERENTES PARTES NECESARIAS PARA SU SOLUCION, ASOCIADAS A LA SOLUCION DE PROBLEMAS POR MEDIO DE LA PROGRAMACION. Prof. Dra. ADDYS DE LAM

3 Preparar Café en Cafetera Eléctrica
Elementos Ahh!!! necesito Herramientas Procedimientos Prof. Dra. ADDYS DE LAM

4 Elementos Herramientas Procedimientos
Materia Prima Café preparado Herramientas Depósitos Resultados Procedimientos Instrucciones (Procesos) Prof. Dra. ADDYS DE LAM

5 Materia Prima Depósitos Instrucciones (procesos) Resultados Datos
Entradas Depósitos Áreas de Almacenamiento Espacio de Memoria Procesos aritméticos / lógicos Instrucciones (procesos) Declaraciones Resultados Salidas Prof. Dra. ADDYS DE LAM

6 PASOS PARA RESOLVER UN PROBLEMA
OBJETIVOS: DEFINIR CONCEPTOS BASICOS DE PROGRAMACION. DESCRIBIR LOS PASOS PARA RESOLVER UN PROBLEMA UTILIZANDO AL COMPUTADOR COMO HERRAMIENTA DE APOYO. Prof. Dra. ADDYS DE LAM

7 Ciclo de Vida de La Programación
2 Definición Análisis ¿Cuál es el problema? E - P - S Prof. Dra. ADDYS DE LAM

8 Ciclo de Vida de La Programación
Algoritmo Prueba de Escritorio Pseudocódigo Prof. Dra. ADDYS DE LAM

9 Ciclo de Vida de La Programación
Codificación Traducción Compilación 1 no Compilación Prog. Fuente Errores sintaxis si Prog. Compilador Lista fuente con errores de sintaxis Lenguaje C Prof. Dra. ADDYS DE LAM

10 Ciclo de Vida de La Programación
Ejecución 2 1 si Enlace Ejecución Errores ejecución Prog. Objeto Prog. Ejec. en leng. máquina no Resultados Datos Listado fuente Prof. Dra. ADDYS DE LAM

11 Ciclo de Vida de La Programación
Verificación Implementación Procedimientos, entrenamiento en uso Datos Resultados Fuente Prof. Dra. ADDYS DE LAM

12 Ciclo de Vida de La Programación
Mantenimiento Documentación Modificaciones, actualizaciones Interna (codificación) Externa Prof. Dra. ADDYS DE LAM

13 Elementos Café Azucar che leche Agua Leche Prof. Dra. ADDYS DE LAM

14 Herramientas Contenedor de agua Cafetera Contenedor del café en polvo
Taza Contenedor del café líquido Taza para la leche Cucharita Prof. Dra. ADDYS DE LAM

15 Forma de Preparar un Café
Procedimientos Instrucciones Uso de Cafetera Forma de Preparar un Café Prof. Dra. ADDYS DE LAM

16 Entradas “Cálculo de 3 Valores” Tipos de Datos Entradas
x x Alfanumérico Enteros Reales V1 entero V2 entero V3 entero Identificadores Prof. Dra. ADDYS DE LAM

17 Enunciado del problema
Obtenga el promedio de tres valores enteros y presente los resultados bajo el siguiente formato: Universidad Tecnológica de Panamá Facultad de Ing. de Sistemas Computacionales Cálculo de Promedio Pág.. 99 Fecha: 99/99/99 Valor 1 Valor 2 Valor 3 Promedio 9---9 9---9 9---9 9---9 Cantidad de procesados Prof. Dra. ADDYS DE LAM

18 Procesos Promedio valores / total de valores prom (v1 + v2 + v3)/3
Prof. Dra. ADDYS DE LAM

19 Salidas Universidad Tecnológica de Panamá
Fac. Ing. de Sistemas Computacionales Encabezado Cálculo de Promedio Fecha: 99/99/99 Pág.. 99 Valor 1 Valor 2 Valor 3 Promedio 9---9 9---9 9---9 Detalles Totales Cantidad de procesados 9---9 Entradas Procesos Prof. Dra. ADDYS DE LAM

20 Ejemplo: “Obtención del promedio de tres valores dados por el usuario”
Algoritmo Inicio /*Declaración de variables*/ Real: prom Enteros: v1, v2, v3 /*Entrada de los tres valores*/ Visualizar(“Entre los tres valores”) Leer(v1,v2,v3) /*Calculo del promedio*/ prom=(v1+v2+v3)/3 /*Salida de resultados*/ Visualizar(“Valor 1, Valor 2, Valor 3, Promedio”) Visualizar(v1, v2, v3, prom) Fin Prof. Dra. ADDYS DE LAM

21 Programa #include <stdio.h> main() {
/*Declaracion de variables*/ float prom; int v1,v2,v3; /*Entrada de los tres valores*/ printf (“Entre los tres valores:”); scanf (“%i %i %i”, &v1, &v2, &v3); /*Calculo del promedio*/ prom=(v1+v2+v3)/3; /*Salida de resultados*/ printf(“\n \t Valor 1 \t Valor 2 \t Valor 3 \t Promedio \n”); printf(“\t %i \t %i \t %i \t %5.2f”, v1, v2, v3, prom); } Prof. Dra. ADDYS DE LAM

22 Objetivos • Conocer el entorno del Lenguaje C.
Conocer los elementos básicos del C. Manejar los diferentes tipos de datos. Definir constantes. Comprender los conceptos sobre constantes y variables. Conocer los diferentes operadores del C y cómo se construyen las expresiones. Prof. Dra. ADDYS DE LAM

23 INTRODUCCIÓN AL LENGUAJE C
FUE DESARROLLADO EN LOS AÑOS 70 POR DENNIS RITCHIE EN LOS LABORATORIOS BELL. ES EL RESULTADO DE DOS LENGUAJES ANTERIORES, BCPL Y B. FUE DISEÑADO PARA EL DESARROLLO DE SISTEMAS OPERATIVOS (UNIX), SIN EMBARGO POSEE CARACTERÍSTICAS ESTRUCTURADAS DE ALTO NIVEL LO QUE PERMITE DESARROLLAR PROGRAMAS DE APLICACIÓN. SE DIO A CONOCER EN 1978 POR LA PUBLICACIÓN DE BRAIN KERNIGHAN Y RITCHIE. Prof. Dra. ADDYS DE LAM

24 INTRODUCCIÓN AL LENGUAJE C
C ES UN LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO DE PROPÓSITOS GENERALES. SE PUEDEN DESARROLLAR PROGRAMAS FUENTES CONCISOS, POR SU GRAN NÚMERO DE OPERADORES. TIENE UN CONJUNTO DE INSTRUCCIONES RELATIVAMENTE PEQUEÑO, PERO INCLUYE NUMEROSAS FUNCIONES DE BIBLIOTECA QUE MEJORAN LAS INSTRUCCIONES BÁSICAS. LOS PROGRAMAS SON PORTABLES, SE PUEDEN COMPILAR Y EJECUTAR EN MUCHAS COMPUTADORAS DIFERENTES CON MUY POCA MODIFICACIÓN. Prof. Dra. ADDYS DE LAM

25 El ENTORNO DE C EDITOR: PERMITE INTRODUCIR Y MODIFICAR EL CODIGO FUENTE C. COMPILADOR: ES EL PROGRAMA QUE CONVIERTE EL FUENTE C EN UN CODIGO ENTENDIBLE POR EL COMPUTADOR. ARCHIVOS PARA INCLUIR: ARCHIVOS SEPARADOS (INCLUDE) QUE FUEDEN SER UTILES EN CIERTAS SITUACIONES. ARCHIVOS DE BIBLIOTECAS: PROGRAMAS PREVIAMENTE COMPILADOS QUE REALIZAN FUNCIONES ESPECIFICAS. ENLAZADOR: COMBINA TODAS LAS PARTES NECESARIAS ( TALES COMO ARCHIVOS DE BIBLIOTECA) DE UN PROGRAMA C PARA PRODUCIR EL CODIGO EJECUTABLE FINAL. Prof. Dra. ADDYS DE LAM

26 ESTRUCTURA DE UN PROGRAMA EN C
CONSTA DE UNA O MÁS FUNCIONES, UNA DE LAS CUALES SE LLAMA main. CADA FUNCIÓN DEBE CONTENER: CABECERA DE LA FUNCIÓN, QUE CONSTA DEL NOMBRE DE LA FUNCIÓN SEGUIDO DE LA LISTA OPCIONAL DE ARGUMENTOS ENCERRADOS EN PARÉNTESIS. LISTA DE DECLARACIONES DE ARGUMENTOS. SENTENCIA COMPUESTA, ENCERRADA CON UN PAR DE LLAVES { }. Prof. Dra. ADDYS DE LAM

27 ESTRUCTURA DE UN PROGRAMA EN C
LAS SENTENCIAS DE EXPRESIÓN DEBEN TERMINAR EN PUNTO Y COMA (;). LOS COMENTARIOS PUEDEN APARECER EN CUALQUIER PARTE DEL PROGRAMA DELIMITADOS POR /* */. EJEMPLO: /*MI PRIMER COMENTARIO EN C*/ PUEDE USAR MAYÚSCULA O MINÚSCULA, AUNQUE ES COSTUMBRE ESCRIBIR EN MINÚSCULA LAS INSTRUCCIONES ORDINARIAS. MAYÚSCULA Y MINÚSCULA NO SON EQUIVALENTES EN C. Prof. Dra. ADDYS DE LAM

28 Main Función 1 Función 2 Función 3 Biblioteca Prof. Dra. ADDYS DE LAM

29 Biblioteca stdio.h math.h conio.h time.h . . . puts printf abs clrscr
getdate gets getchar ceil gotoxy gettime cos textcolor getch putchar setdate exp window . . . settime scanf sqrt textbackground time fmod . . . Prof. Dra. ADDYS DE LAM . . . . . .

30 PROGRAMA SENCILLO EJEMPLO
#include <stdio.h> /* Este programa solo visualiza un mensaje en la pantalla del computador */ main ( ) { puts("Bienvenidos al mundo del C"); printf (“ Este es mi primer programa en C”); } Prof. Dra. ADDYS DE LAM

31 ELEMENTOS BASICOS IDENTIFICADORES
Nombres de constantes, variables, tipos, funciones y etiquetas de un programa. SINTAXIS: letra/_[letra/dígito/_] cualquier número de caracteres ( 31 significativos). EJEMPLO: suma calculo_promedio _ordenar ab123 Prof. Dra. ADDYS DE LAM

32 ELEMENTOS BASICOS PALABRAS CLAVES
Identificadores predefinidos con significado especial para el compilador C. auto break case char const continue defaul do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while far fortran huge near pascal Las palabras claves deben escribirse en minúscula Prof. Dra. ADDYS DE LAM

33 ELEMENTOS BASICOS CARACTERES DEL C.
Letras mayúsculas: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Letras minúsculas: a b c d e f g h i j k l m n o p q r s t u v w x y z Dígitos decimales: Carácter de subrayado: _ Carácter de espacio en blanco: espacio,tab,retorno de carro,avance de página,tab vertical y nueva línea. Carácteres especiales y signos de puntuación: , . ; ;: ?’”( ) [ ] { } < ! | / \ ~+ # % & ^ * - = > Prof. Dra. ADDYS DE LAM

34 TIPOS DE DATOS BASICOS:
TIPOS ENTEROS: char, int, short, long, signed, unsigned y enum TIPOS REALES: float, double, long double OTROS TIPOS: poiters, arrays, struct TIPOS ENTEROS char: ( caracter --- 1byte ) enteros de -128 a ASCII unsigned char: valor de 0 a 255 Ejemplo: char car; char abreviación de signed char. Prof. Dra. ADDYS DE LAM

35 int: ( entero) máquina de 16 bits -32768 a 32767
unsigned int a Ejemplo: int n,x; int abreviación de signed int. short: ( entero corto -- 2 bytes ) a 32767 unsigned short a 65535 Ejemplo: short i, j; short abreviación de signed short int long: ( entero largo -- 4 bytes) E31 a 2E31-1 unsigned long a Ejemplo: long n ; long abreviación de signed long int Prof. Dra. ADDYS DE LAM

36 Ejemplo: enum dia_semana { lunes, martes, miercoles,
enum: tipo enumerado. Ejemplo: enum dia_semana { lunes, martes, miercoles, jueves, viernes, sabado, domingo } hoy; enum dia_semana ayer; valor ordinal de lunes es 0. Ejemplo2: enum dia_semana { lunes = 1, martes, miercoles, valor ordinal de martes es 2. Prof. Dra. ADDYS DE LAM

37 TIPO REAL float: (simple precisión -- 4 bytes) hasta 7 dígitos
significativos. negativos: E+38 a E-45 positivos: E a E+38 double: ( doble precisión -- 8 bytes) hasta 15 dígitos negativos : E+38 a E-324 positivos : E-324 a E+308 long double: ( doble precisión largos -- 8 bytes) Precisión extendida -- depende del compilador. Prof. Dra. ADDYS DE LAM

38 TIPOS ADICIONALES DE DATOS
pointers: ( punteros) dirección de memoria que apunta a un objeto. Ejemplo : int *p ; struct: variables que representan registros. Ejemplo: struct { float a, b; } complejo; struct persona char nombre[20]; long dni; }; struct persona reg; Prof. Dra. ADDYS DE LAM

39 union: representan registros variables ( alterna varios tipos ).
Ejemplos; : union tipo_union { char var1; int var2; float var3; }; union tipo_union var_union; arrays: conjunto de objetos del mismo tipo. Ejemplo: int lista[40]; /* lista[0] a lista[39] */ Prof. Dra. ADDYS DE LAM

40 Declaración de variables o parámetros
main() { int entero1, entero2; char caracter1, c, car2; float real1, r2; double d1, d2; short int s; long int entero_largo; unsigned char cc; } Prof. Dra. ADDYS DE LAM

41 NÚMEROS, CARACTER, CADENA DE CARACTERES.
CONSTANTES EN C NÚMEROS, CARACTER, CADENA DE CARACTERES. CONSTANTES ENTERAS: pueden ser de base 10,8,16 Decimal: uno o más dígito ( 0..9), el primero distinto de 0, signo +,-. Ejemplo : Octal: uno o más dígitos ( 0..7), precedidos por 0. Ejemplo: Hexadecimal: uno o más caracteres ( 0..9; A..F), precedidos por 0x o 0X. Ejemplo: x100 Prof. Dra. ADDYS DE LAM

42 Formato: [ dígitos][.dígitos][E/e[+/-]dígitos]
CONSTANTES REALES: Formato: [ dígitos][.dígitos][E/e[+/-]dígitos] dígitos: E/e: símbolo de exponente Ejemplos: , E3, e-3, CONSTANTES DE UN SOLO CARACTER: Encerradas entre ‘ ‘ ( comillas simples) Ejemplos: ‘ ‘ , ‘x’, ‘\n’ CONSTANTES DE CARACTERES: Encerradas entre “ “ ( comillas dobles). Ejemplos: “ Entre un numero” - “ Esta cadena de caracteres es dema\ siado larga” - printf (“Primera cadena,” “Segunda cadena”); Prof. Dra. ADDYS DE LAM

43 SECUENCIA DE ESCAPE DE C Representan caracteres no imprimibles
CARACTER SECUENCIA VALOR ASCI Sonido (bell) \a Backspace \b Tab horizontal \t Tab vertical \v Nueva línea \n Form feed \f Retorno del carro \r Comillas (“) \” Apóstrofo (‘) \’ Interrogación ( ?) \? Backslash ( \ ) \\ Nulo \ d=dígito octal \ddd h=dígito hexadecimal \xhh x ó X Ejemplo: letra ‘A’ = 065 ASCII = \’101’ octal = \’x41’ Prof. Dra. ADDYS DE LAM

44 CONSTANTES SIMBOLICAS:
Nombre que sustituye una secuencia de caracteres ( constante numérica, carácter, cadena de caracteres). Cuando el programa se compila, las constantes simbólicas se reemplazan por su correspondiente secuencia de caracteres. Se definen al comienzo del programa. Formato: #define Nombre Texto - Nombre representa un nombre simbólico. - Texto representa la secuencia de caracteres asociada al nombre. - No se coloca ; al final ya que no es una verdadera sentencia de C. Prof. Dra. ADDYS DE LAM

45 CONSTANTES SIMBOLICAS:
Ejemplo: #define INTERES 0.23 #define PI #define CIERTO #define AMIGA “Marta” { ………. area = PI *radio*radio area = *radio*radio } Prof. Dra. ADDYS DE LAM

46 COMO NOMBRAR CONSTANTES CON EL MODIFICADOR CONST
Cuando inicializamos una variable dentro de una declaración, podemos marcar la variable de modo que el programa no pueda alterar su valor. Por ello, anteponemos la palabra const a la declaración. Const es un modificador de las variables que se declaran.A estás variables se les conoce como constantes declaradas. SINTAXIS: Const nombre_de_tipo nombre_variable = constante; Ejemplo const double PI = ; const int N_PROV = 9; Prof. Dra. ADDYS DE LAM

47 Prof. Dra. ADDYS DE LAM

48 Prof. Dra. ADDYS DE LAM

49 Prof. Dra. ADDYS DE LAM

50 Prof. Dra. ADDYS DE LAM

51 Prof. Dra. ADDYS DE LAM

52 Prof. Dra. ADDYS DE LAM

53 Prof. Dra. ADDYS DE LAM

54 Prof. Dra. ADDYS DE LAM

55 Prof. Dra. ADDYS DE LAM

56 Prof. Dra. ADDYS DE LAM

57 Prof. Dra. ADDYS DE LAM

58 Prof. Dra. ADDYS DE LAM

59 Prof. Dra. ADDYS DE LAM

60 Prof. Dra. ADDYS DE LAM

61 Operador ? int main() { int a,b=2,c=3; a= b>0 ? c : c+1;
/* Equivalente a if(b>0) a=c; else a=c+1; */ } Prof. Dra. ADDYS DE LAM

62 Prof. Dra. ADDYS DE LAM

63 ENTRADA Y SALIDA DE DATOS
Funciones: getchar, putchar, scanf, printf, gets, y puts. ENTRADA DE UN CARÁCTER……… LA FUNCION: getchar. Entrada de carácter uno a uno. Devuelve un carácter leído del dispositivo de entrada estándar. Es parte de la biblioteca estándar. (stdio.h) FORMATO: Variable de carácter = getchar(); Ejemplo: char c; ……. c= getchar(); Prof. Dra. ADDYS DE LAM

64 SALIDA DE UN CARÁCTER ……….. LA FUNCION : putchar
Visualizar un carácter. Transmitir un carácter al dispositivo de salida estándar. Es parte de la biblioteca estándar. (stdio.h) FORMATO: putchar (variable de carácter) EJEMPLO: char c; ……. putchar (c); Prof. Dra. ADDYS DE LAM

65 ENTRADA DE DATOS …. LA FUNCIÓN scanf
Introducir datos procedentes del dispositivo de entrada estándar. Introducir cualquier combinación de valores numéricos, caracteres sueltos y cadenas de caracteres. FORMATO: scanf (cadena de control, arg1, arg2, ……, arg n) Cadena de control: cadena de caracteres que contienes cierta información sobre el formato de los datos. Arg1, arg2,….., arg n: representan los datos. (punteros que indican las direcciones de memoria en donde se encuentran los datos). Prof. Dra. ADDYS DE LAM

66 CARACTERES DE CONVERSIÓN
Carácter de conversión Significado c El dato es un carácter. d El dato es un entero decimal. e El dato es un valor en coma flotante. f El dato es un val or en coma flotante. g h El dato es un entero corto. i El dato es un entero decimal, octal o hexadecimal. o El dato es un entero octal. s El dato es una cadena de caracteres (carácter nulo al final) u El dato es un entero decimal sin signo. x El dato es un entero hexadecimal. [… ] El dato es una cadena de caracteres que pueden incluir caracteres de espaciado. Prof. Dra. ADDYS DE LAM

67 EJEMPLO: #include<stdio.h> main() { char letras [20];
int entero; float coste; …… scanf(“%s %d %f”, letras, &entero,&coste); } EJECUCIÓN: velocidad ó velocidad ó velocidad 0.05 Prof. Dra. ADDYS DE LAM

68 Nota: Cada nombre de variable debe ser precedido por un ampersand(&).
Los nombres de arrays no deben ser precedidos por &. Conversión de caracteres tipo s: cadena que no incluye espacio en blanco. Prof. Dra. ADDYS DE LAM

69 ENTRADA DE DATOS …. LA FUNCIÓN scanf
Introducir cadena de caracteres EJEMPLO: #include<stdio.h> { char linea[80]; ….. scanf(“%[ ABCDEFGHIJKLOPQRSTUVXZ]”, linea); } EJECUCIÓN: FIN DE SEMANA Se le asigna al array linea toda la cadena de caracteres. Observe que se acepta espacios en blancos, primer carácter la cadena de control[]. Fin de Semana Se le asigna al array linea solo la letra F Prof. Dra. ADDYS DE LAM

70 #include<stdio.h> main() { char linea[80]; …..
EJEMPLO 2: #include<stdio.h> main() { char linea[80]; ….. scanf(“%[^\n]”, linea); } Se leerá una cadena de caracteres de longitud no determinada (no más de 79) y se asignará a línea. Prof. Dra. ADDYS DE LAM

71 ESPECIFICACIOINES DE LONGITUD DE CAMPO: Limita el número de los caracteres especificando una longitud de campo máxima para el dato. EJEMPLO: #include<stdio.h> main() { char linea[80]; ….. scanf(“%3d %3d %3d”, &a, &b, &c); } EJECUCIÓN: entonces a=1 , b=2, c =3 entonces a=123, b=456, c =789 entonces a=123, b=456, c =789 entonces a=123, b=4, c =567 Prof. Dra. ADDYS DE LAM

72 Prof. Dra. ADDYS DE LAM

73 Prof. Dra. ADDYS DE LAM

74 Prof. Dra. ADDYS DE LAM

75 Prof. Dra. ADDYS DE LAM

76 Obtener el promedio de tres valores dados por el usuario
EJEMPLOS DE PROGRAMAS EN C Obtener el promedio de tres valores dados por el usuario PROGRAMA EN C #include <stdio.h> main() { /*Declaraciones*/ int v1,v2,v3; float prom; /* Solicita valores de entrada */ printf(“Entre los tres valores”); scanf (“%i %i %i”,&v1,&v2,&v3); /* Calculo del promedio */ prom = (v1+v2+v3)/3; /* Salida de resultados */ printf (“\n \t valor1 \t valor2 \t valor3 \t Promedio \n”); printf (“\t %i \t %i \t %i\t %.2f ”,v1,v2,v3,prom); } ALGORITMO INICIO /*DECLARACIONES*/ ENTEROS : V1,V2,V3 REAL: PROM /*SOLICITA VALORES DE ENTRADA */ VISUALIZAR (“ENTRE LOS TRES VALORES “) LEER (“%i%i%i”,V1,V2,V3) /* CALCULO DEL PROMEDIO */ PROM (V1+ V2+ V3)/3 /*SALIDA DE LOS RESULTADOS */ VISUALIZAR (“VALOR 1 VALOR 2 VALOR PROMEDIO”) VISUALIZAR (“%i%i%i%f”,V1,V2,V3,PROM) FIN Prof. Dra. ADDYS DE LAM

77 Prof. Dra. ADDYS DE LAM

78 OTRA FORMA DE SOLUCION DEL PROBLEMA
printf (“Entre su nombre:”); scanf (“%[^\n]”,nombre); printf (“\n\nNombre: %-s\n\n”,nombre); Prof. Dra. ADDYS DE LAM

79 Programa #include <stdio.h> main() {
/*Declaracion de variables*/ int a,b,c; /*Entrada de los valores*/ printf (“Entre dos valores:”); scanf (“%i %i”, &a, &b); /*Calculo de la suma*/ c=a+b; /*Salida de resultados*/ printf(“La suma de %i + %i es: %i”, a,b,c); } Prof. Dra. ADDYS DE LAM


Descargar ppt "ANALISIS DE PROBLEMAS SOLUCIONES LOGICAS"

Presentaciones similares


Anuncios Google