Grado en Ingeniería electrónica y comunicaciones Facultad de Físicas Universidad Complutense P1 Fundamentos de Programación.

Slides:



Advertisements
Presentaciones similares
Estructuras de control
Advertisements

Simplificación de expresiones algebraicas
Unidad 15 Características de C++ no relacionadas con el DOO.
Interfases Contables en CIO
El Asistente para Presupuestos
Interprete o máquina real
Modemmujer, Red Feminista de Comunicación Electrónica.
ALGORITMOS Y LENGUAJES Estructuras de Control CONDICIONAL
Los elementos invertibles de Z6 son 1 y 5
6 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Universidad.
Programación en C para electrónica
LÓGICA DE PROGRAMACIÓN
Computadoras y programación
7A7A7A7A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
PHP-MYSQL OPERADORES EN PHP
Estructuras de control
Fundamentos de la Programación Estructurada
Funciones. Programación, Algoritmos y Estructuras de Datos.
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Técnico en programación de Software
Fundamentos de Ingeniería de Software
Notación Científica y Potencia de 10
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
7 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Universidad.
6 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez / Pablo Moreno Ger Facultad.
9A9A9A9A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.

Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
PROGRAMACION DE ESTRUCTURAS DE DATOS
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
3. INTRODUCCIÓN A LA PROGRAMACIÓN
3 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Universidad.
Ejemplo: Creación y mutación de procesos
Una breve introducción
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
String o Cadenas Prof. Gonzalo Pastor. Cadenas o String ► En C, una cadena o texto se define como un vector de caracteres de longitud determinada que.
5A5A5A5A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez/Pablo Moreno Ger Facultad.
Conceptos Básicos de Java
4A4A4A4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
FUNCIONES Y PROCEDIMIENTOS
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Creación de una librería propia. Conceptos Básicos Interfaz –El concepto formal se refiere al límite entre dos entidades distintas. –Al hablar de librerías,
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Víctor Mario Vélez Marín Programación Programación (TE243) Víctor Mario Vélez Marín Universidad Tecnológica de Pereira Facultad de Tecnología Eléctrica.
CORPOCIDES Ing. Emilio Medina Baquero
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Programación de Computadores
Semana 5 Subprogramas..
Capítulo 5. Punteros y Cadenas de Caracteres
FUNDAMENTOS DE PROGRAMACIÓN
Tema 2: Los tipos de datos
Control de flujo: Bucles
Informática Ingeniería en Electrónica y Automática Industrial
Computación Aplicada Facultad de Ingeniería Universidad Autónoma de Querétaro Ma. Teresa García Ramírez 1.
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
Capítulo 7 Gestión de memoria.
Uso de las Sesiones Temas: Creación de sesiones Lectura de sesiones Borrado de sesiones.
Planteos Recursivos Resolución de Problemas y Algoritmos
Estructuras de Control.
Programación Básica con “NQC” Pedro F. Toledo – Patricio Castillo 13/05/2006.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Sesión 13: Python (4) – Estructura Repetición. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
PRINCIPIOS DE PROGRAMACIÓN
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Equipo de Profesores del Curso. Funciones de Texto.
Transcripción de la presentación:

Grado en Ingeniería electrónica y comunicaciones Facultad de Físicas Universidad Complutense P1 Fundamentos de Programación

Luis Hernández Yáñez / Pablo Moreno Ger Codebreaker ???? Informática Práctica 1 - Primeros pasos Página 1

Luis Hernández Yáñez / Pablo Moreno Ger El usuario debe encontrar, con un número limitado de intentos, un código aleatorio de N dígitos generado por la máquina El usuario debe encontrar, con un número limitado de intentos, un código aleatorio de N dígitos generado por la máquina Tras cada intento, la máquina nos dice el primer dígito incorrecto en el número del usuario mediante “sonidos” Tras cada intento, la máquina nos dice el primer dígito incorrecto en el número del usuario mediante “sonidos” Para cada dígito escribe en pantalla: Para cada dígito escribe en pantalla:  Un "bip" si el dígito es correcto  Un "bop" si el dígito es incorrecto (y ya no se muestra nada para el resto de dígitos) Introduce el código (0 para salir): 2123 bip bip bop – Acceso denegado! Introduce el código (0 para salir): 2113 bip bip bip bip -- OK! Fundamentos de Programación: Práctica 1 - Primeros pasos Página 2

Luis Hernández Yáñez / Pablo Moreno Ger Los dígitos deben guardarse y procesarse como números enteros No se pueden usar arrays, cadenas de texto, etc. Fundamentos de Programación: Práctica 1 - Primeros pasos Página 3

Luis Hernández Yáñez / Pablo Moreno Ger Desarrollo incremental Versión 1: Juego sencillo Versión 1: Juego sencillo 4 dígitos entre 1-3, tres intentos 4 dígitos entre 1-3, tres intentos Versión 2 (opciones de configuración) Versión 2 (opciones de configuración) Número de intentos, longitud del código, rango de los dígitos Número de intentos, longitud del código, rango de los dígitos Versión 3 (uso de archivos) Versión 3 (uso de archivos) Archivo de configuración Archivo de configuración Instrucciones de juego Instrucciones de juego Versión 4: Autobreaker (opcional) Versión 4: Autobreaker (opcional) La máquina descifra sus propios códigos La máquina descifra sus propios códigos Fundamentos de Programación: Práctica 1 - Primeros pasos Página 4

Luis Hernández Yáñez / Pablo Moreno Ger Entrega: 20 de Enero 20 de Enero Fundamentos de Programación: Práctica 1 - Primeros pasos Página 5

Luis Hernández Yáñez / Pablo Moreno Ger Consejos de implementación Fundamentos de Programación: Práctica 1 - Primeros pasos Página 6

Luis Hernández Yáñez / Pablo Moreno Ger 4 dígitos, entre 1-3, 3 intentos Funciones: int codeBreaker() : Ejecuta una partida completa y devuelve el número de intentos int claveAleatoria() : Genera una secuencia de 3 dígitos entre 1 y 3 (usa constantes) y la devuelve int invertir(int n) : Devuelve el inverso de un número dado int longitudCodigo(int codigo) : Devuelve el número de dígitos de un número dado bool codigoValido(int codigo) : Comprueba que el número de dígitos y sus rangos sean válidos int numeroBeeps(int clave, int codigo) : Devuelve el número de dígitos consecutivos que son correctos Fundamentos de Programación: Práctica 1 - Primeros pasos Página 7

Luis Hernández Yáñez / Pablo Moreno Ger Bucle principalfalsefalse Devolver numIntentos numIntentos++numIntentos++ Contar bips seguir?seguir? Generar clave Declaraciones e inicializaciones codeBreaker() Fundamentos de Programación: Práctica 1 - Primeros pasos Página 8

Luis Hernández Yáñez / Pablo Moreno Ger Estructura del bucle Pedir código (incluye validación del mismo) Si el código es 0: El usuario quiere salir El usuario quiere salir En caso contrario Calcular el número de bips Calcular el número de bips Escribir los bips Escribir los bips Si el número de bips es menor que la longitud Si el número de bips es menor que la longitud Booooop! Booooop! numIntentos++ numIntentos++ Si es igual Si es igual ¡Ha ganado! ¡Ha ganado! Versión 1 Fundamentos de Programación: Práctica 1 - Primeros pasos Página 9

Luis Hernández Yáñez / Pablo Moreno Ger Generación de números aleatorios Función rand() : Devuelve un número entero aleatorio entre 0 y RAND_MAX Generación de un entero aleatorio entre 0 y n -1: rand() % n Problema: siempre se recorre la misma secuencia A no ser que... Utilicemos srand() al principio del programa Función srand(semilla) : Inicializa la secuencia de números aleatorios con el valor de semilla que se le proporcione Página 10 #include Fundamentos de Programación: Práctica 1 - Primeros pasos

Luis Hernández Yáñez / Pablo Moreno Ger Inicialización de la secuencia de números aleatorios Función srand(semilla) Cada valor de semilla produce una secuencia distinta ¿Cómo utilizar una semilla distinta en cada ejecución? Función time() : Devuelve el número de segundos transcurridos desde el 1 de enero de 1970 (distinto en cada ejecución) Función time() : Devuelve el número de segundos transcurridos desde el 1 de enero de 1970 (distinto en cada ejecución) Requiere NULL como argumento: srand(time(NULL)); Requiere NULL como argumento: srand(time(NULL)); Página 11 #include Usa una semilla fija mientras depuras los programas. Usa una semilla variable en la versión final. Usa una semilla fija mientras depuras los programas. Usa una semilla variable en la versión final. Fundamentos de Programación: Práctica 1 - Primeros pasos

Luis Hernández Yáñez / Pablo Moreno Ger ¿Cúantos dígitos son correctos? Necesitamos mecanismos para dividir los números en dígitos Es fácil hacerlo de derecha a izquierda Es fácil hacerlo de derecha a izquierda ¡Pero la práctica los mira de izquierda a derecha! Empezaremos por invertir los números (clave y código del usuario) Empezaremos por invertir los números (clave y código del usuario) Una vez invertidos, los validaremos de derecha a izquierda Una vez invertidos, los validaremos de derecha a izquierda Fundamentos de Programación: Práctica 1 - Primeros pasos Página 12

Luis Hernández Yáñez / Pablo Moreno Ger Añadir un dígito a un número numero = numero * 10 + digito; // 123 * > 1234 El dígito nuevo se añade por la derecha Descomposición de un número // Queremos dividir 1234 en 123 y 4 digito = numero % 10; // 1234 % 10 -> 4 numero = numero / 10; // 1234 / 10 -> 123 Fundamentos de Programación: Práctica 1 - Primeros pasos Página 13 Podemos seguir descomponiendo hasta que el número tenga sólo un dígito o hasta llegar a 0.

Luis Hernández Yáñez / Pablo Moreno Ger Ejercicio de manejo de dígitos Fundamentos de Programación: Práctica 1 - Primeros pasos Página 14

Luis Hernández Yáñez / Pablo Moreno Ger Enunciado Escribe un programa que, dado un número entero positivo, nos diga si el número es capicúa o no. Un número es capicúa si se lee igual en ambos sentidos:  No es capicúa  Es capicúa Fundamentos de Programación: Práctica 1 - Primeros pasos Página 15 Si un número es igual a su inverso, entonces es capicúa