10
Estructuras de datos (Prof. Edgardo A. Franco) 1 Laboratorio 04: Anidamiento de estructuras iterativas y selectivas Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @ efranco_escom [email protected]

Laboratorio 04: Anidamiento de estructuras iterativas y ... · Contenido •Kbhit() Detectar una tecla presionada •while Mientras no se presione una tecla •Generación de números

  • Upload
    ngominh

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Estructuras de datos (Prof. Edgardo A. Franco)

1

Laboratorio 04: Anidamiento de estructuras iterativas y selectivas

Prof. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco

@efranco_escom

[email protected]

Contenido

• Kbhit() Detectar una tecla presionada

• while Mientras no se presione una tecla

• Generación de números pseudoaleatorios

• Ejercicios 04 “Anidamiento de estructuras iterativas y selectivas”

2

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

kbhit() Detectar una tecla presionada

Kbhit() *Función incluida en <conio.h> en TurboC, Borland C y en la mayoría de loscompiladores de C bajo Windows.

• Esta función comprueba si se ha pulsadorecientemente una tecla y devuelve valores defalso o verdadero (0 o 1).

• Sintaxis: int kbhit(void);

• MinGW en su librería conio.h incluye dichafunción.

3

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

while() Mientras no se presione una tecla

4

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

//LIBRERIAS

#include<stdio.h>

#include<windows.h> //Libreria no ANSI C (Para Sleep)

#include<conio.h> //Libreria no ANSI C (Para kbhit)

//CONSTANTES

#define TIEMPO 500

//PROGRAMA PRINCIPAL

int main(void)

{

//Mientras no se precione una tecla

while(!kbhit())

{

printf("\a * "); //Alerta y *

Sleep(TIEMPO); //Esperar un tiempo

}

return 0;

}

Ejemplo con kbhit() y gotoxy() “caída.c”

5

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

//LIBRERIAS

#include<stdio.h>

#include<windows.h> //Libreria no ANSI C (Para Sleep) y para las sentencias dentro de la función gotoxy()

#include<conio.h> //Libreria no ANSI C (Para kbhit)

//CONSTANTES

#define NUM_FILAS 23

#define COLUMNA 10

#define TIEMPO 100

//DECLARACIÓN DE FUNCIONES

void gotoxy( int x, int y );

//PROGRAMA PRINCIPAL

int main(void)

{

int fila=0, fila_anterior=0;

//Limpiar la pantalla

system("cls");

//Mientras no se precione una tecla

while(!kbhit())

{

fila_anterior=fila; //Almacenar la fila anterior

fila++; //Incrementar la fila

//Si se rebasa el número de filas

if(fila>NUM_FILAS)

{

fila=0;//Regresar a la fila cero

}

gotoxy(COLUMNA,fila_anterior); //Mover el cursor a la posición anterior

putchar(' '); //Borrar el rastro en la

posición anterior

gotoxy(COLUMNA,fila); //Mover el cursor a la nueva fila

putchar('*'); //Colocar * en la fila

Sleep(TIEMPO); //Esperar un tiempo

}

return 0;

}

//DEFINICIÓN DE FUNCIONES

void gotoxy( int x, int y )

{

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

COORD position = {x,y};

SetConsoleCursorPosition(hStdout,position);

};

Ejercicios 03 “Anidamiento de estructuras iterativas y selectivas”

• Ejercicio 1: Realizar un programa que muestre lacaída de 3 caracteres (al mismo tiempo yvelocidad) en la pantalla, se borre su rastro yfuncione mientras no se presione una tecla.

6

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Ejercicio 02: Realice un programa que imprimauna pirámide invertida. Mientras no se presioneuna tecla la pirámide estará borrándose yredibujándose cada 1 segundo, es decir aparece 1segundos y desaparece otro segundo y así hastapresionar una tecla• El tamaño de la base se recibe al inicio

Si el tamaño de la base es impar: Por ejemplo 11

* * * * * * * * * * ** * * * * * * * *

* * * * * * ** * * * *

* * **

7

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Si el tamaño de la base es par: Por ejemplo 10

* * * * * * * * * ** * * * * * * *

* * * * * ** * * *

* **

• Ejercicio 03: Realizar un programa que muestre uncarácter rebotando en un marco rectangular en lapantalla mientras no se presione una tecla.• El tamaño del marco lo da el usuario; considere también solo

movimientos en diagonal del carácter, i.e. no hay movimientohorizontal ni vertical.

8

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

• Ejercicio 4: Modifique el ejercicio 01 para que elcarácter 1 caiga a una velocidad de 10milisegundos por coordenada, el carácter 2 a 5milisegundos por coordenada y el carácter 3 a 15milisegundos por coordenada.

10 ms5 ms 15 ms

10 ms5 ms

15 ms

9

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez

Ejercicios 04 “Anidamiento de estructuras iterativas y selectivas”

• Diseñar y codificar una solución para cada uno de los ejercicios anteriores:

• Observaciones

1. Diseñar el diagrama de flujo correspondiente a cada uno de los ejercicios.

2. Reportar el texto del ejercicio, el diagrama de flujo y el código en C (concolores) y las pruebas de sus programas.

3. Incluir al reporte las capturas de pantalla

4. El reporte es individual y tiene portada, índice y encabezados de paginacon número de pagina , titulo y nombre del alumno.

5. Mostrar el funcionamiento de cada uno de los ejercicios en la sesión delaboratorio 05, (1CV8 Martes 02 Oct, 1CV7 Miércoles 03 Oct y 1CV10Miércoles 03 Oct).

6. Enviar vía Web en un archivo comprimido (ZIP, RAR o TAR), reporte ycódigos de C de cada problema antes del día Viernes 5 de Octubre de2012 (23:59:59 hora limite).

Grupo Contraseña

1CV8 algoritmia1cv8 10

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4 A

nid

amie

nto

de

estr

uct

ura

s it

erat

ivas

y s

elec

tiva

sP

rof.

Edga

rdo

Ad

rián

Fra

nco

Mar

tín

ez