Laboratorio 03: Ejercicios de Programación con la ... · PDF filecontiene todas las...

18
Estructuras de datos (Prof. Edgardo A. Franco) 1 M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Laboratorio 03: Ejercicios de Programación con la estructura para (for) Solicitado: Ejercicios 03: Ejercicios con for y la función gotoxy()

Transcript of Laboratorio 03: Ejercicios de Programación con la ... · PDF filecontiene todas las...

Estructuras de datos (Prof. Edgardo A. Franco)

1M. en C. Edgardo Adrián Franco Martínez http://[email protected]

@edfrancom edgardoadrianfrancom

Laboratorio 03: Ejercicios de Programación con la estructura para (for)

Solicitado: Ejercicios 03: Ejercicios con fory la función gotoxy()

Contenido• Sentencia for

• Ejemplos con for

• Mover el cursor gotoxy()

• Simulación de gotoxy()

• Ejercicios 03 “Ejercicios con for y la función gotoxy()”

2

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Sentencia for• C proporciona una estructura repetitiva o iterativa que

facilita la programación de (ciclos o bucles) si de antemanose conoce a priori la cantidad de repeticiones que serealizarán.

• La estructura for permite definir un bucle controlado por uncontador, denominado variable de control o de inducción.

for(i=0,n=10000;i<n;i++)

{

} 3

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

i ≤ n

no

si

instruccionesi ← i+1

i ← x

Sentencia for

Diagrama de flujo Pseudocódigo Código en C

for(i=x;i<=n;i++)

{

instrucciones;

}

Iterativa "para"

i ≤ n

no

si

instruccionesi ← i+1

i ← x

4

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Sentencia for

• El encabezado de un bucle for tiene tres partes separadaspor ";". En la primera se inicializan las variable de control ysólo se ejecuta una vez, antes de la primera iteración, lasegunda es una expresión que indica la condición lógicaque debe cumplirse para que la próxima iteración seejecute; esta condición se evaluá antes de cada iteración y,cuando deja de satisfacerse, el bucle for termina. Latercera parte del encabezado es la actualización de lasvariables de control y se ejecuta después de cadaiteración.

for(. . . ; . . .;. . .)

{

sentencias;

}

1 2

3

45

6

7

n

5

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Ejemplos con for

#include<stdio.h>

int main(void)

{

int i,n;

for(i=100;i>=0;i--){

printf("\t%d",i);

}

return 0;

}

Ejemplo 1: "ej1.c"

6

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

#include<stdio.h>

int main(void)

{

int i,n;

for(i=0,n=10000;i<n;i++,n=n-i){

printf("\t%3d",i);

}

printf("\nn=%3d",n);

return 0;

}

Ejemplo 2: "ej2.c"

7

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

#include<stdio.h>

int main(void)

{

int i,j;

for(i=1;i<=10;i++)

{

for(j=0;j<i;j++)

{

printf("*");

}

printf("\n");

}

return 0;

}

Ejemplo 3: "ej3.c"

8

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

#include <stdio.h>

int main(void)

{

unsigned long anterior,actual,aux;

int i;

anterior = 0;

actual = 1;

printf("Introduce la cantidad de elementos a mostrar a

partir del 0, 1, de la serie de fibonacci: ");

for(scanf("%d",&i);i>0;i--)

{

aux=anterior+actual;

printf("%lu, ",aux);

anterior=actual;

actual=aux;

};

printf("\b\b.");

return 0;

};

Ejemplo 4: Serie de fibonacci "ej4.c"

9

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Mover el cursor con gotoxy• La función gotoxy (int columna, int fila) es una función

declarada en el encabezado <conio.h>, la cual viene en loscompiladores de la línea de Turbo C (y también Borland C++)de la compañía Borland.#include<stdio.h>

#include<dos.h>

#include<conio.h>

int main(void)

{

int fila,columna;

for(columna=0;columna<80;columna++)

{

for(fila=0;fila<20;fila++)

{

gotoxy(columna,fila);

printf("*");

delay(500);

};

};

return 0;

}

Código funcional en Turbo C y Borland C "dos.h: Uso de delay() & conio.h: uso de gotoxy()"

10

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• Si se usa otro compilador se debe de buscar una funciónequivalente.

• En el compilador MinGW incluye <conio.h>, pero nocontiene todas las funciones de Borland como la de gotoxy.

• Windows ofrece un conjunto de funciones para manejar laconsola, entre las cuales está una equivalente a gotoxy,pero para poder usar estas funciones se tiene que verificarsi el compilador puede usarlas. Si el compilador incluye elarchivo de libreria windows.h en el directorio include.(MinGW lo incluye).

• La función es SetConsoleCursorPosition (HANDLEhConsoleOutput, COORD coord), pero su uso no esinmediato como la función gotoxy.

11

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Simulación de gotoxy• Ejemplo sencillo que mueve el cursor a la posición (10, 10)

(aquí tienes que tomar en cuenta de que el origen es (1,1), mientras que con la otra función comienza en (0, 0)).

#include<windows.h>

#include<stdio.h>

int main (void)

{

HANDLE hConsoleOutput;

COORD coord;

hConsoleOutput = GetStdHandle (STD_OUTPUT_HANDLE);

coord.X = 5; coord.Y = 5;

SetConsoleCursorPosition (hConsoleOutput, coord);

printf("Hola desde la coordenada %d, %d",coord.X,coord.Y);

coord.X = 10; coord.Y = 10;

SetConsoleCursorPosition (hConsoleOutput, coord);

printf("Hola desde la coordenada %d, %d",coord.X,coord.Y);

return 0;

} 12

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• Programa que simula la función gotoxy() de borland."gotoxy.c"

#include<stdio.h>

#include<windows.h>

void gotoxy( int x, int y );

int main(void)

{

int fila,columna;

for(columna=0;columna<80;columna++)

{

for(fila=0;fila<20;fila++)

{

gotoxy(columna,fila);

printf("*");

Sleep(5);

};

};

return 0;

}

void gotoxy( int x, int y )

{

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

COORD position = { x, y };

SetConsoleCursorPosition( hStdout, position );

};13

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Observaciones

• Considerar que generalmente (según configuraciónde la consola) el tamaño de la consola es de 80columnas x 24 filas. (Si se excede el número decolumnas o filas simplemente se obtendránresultados no deseados)

24 filas

80 columnas

14

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Ejercicios con for y la función gotoxy

• Ejercicio 1: Realizar un programa que dibuje un marco enla pantalla.

#include<stdio.h>

#include<windows.h>

void gotoxy(int x, int y );

int main(void)

{

int fila,columna;

system("cls"); //Llamada al sistema para limpiar la pantalla (Solo funciona en Windows)

fila=0;

for(columna=0;columna<80;columna++)

{

gotoxy(columna,fila);

printf("*");

};

columna=79;

for(fila=0;fila<24;fila++)

{

gotoxy(columna,fila);

printf("*");

};

fila=23;

for(columna=0;columna<80;columna++)

{

gotoxy(columna,fila);

printf("*");

};

columna=0;

for(fila=0;fila<24;fila++)

{

gotoxy(columna,fila);

printf("*");

};

return 0;

}

void gotoxy(int x, int y )

{

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

COORD position = { x, y };

SetConsoleCursorPosition( hStdout, position );

};

15

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

• Ejercicio 02: Realice un programa queimprima la siguiente figura poco a pocohasta llegar al centro de la pantalla.Rectángulos concéntricos

(De exterior a centro)

16

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4: E

jerc

icio

s d

e p

rogr

amac

ión

co

n la

sen

ten

cia

for

Eje

rcic

ios

con

fo

ry

go

toxy

()(T

area

05

)

• Ejercicio 03: Modifique el ejercicio 02 y hagaque al llegar al centro el programa regreseborrando los rectángulos concéntricosdibujados.

17

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

4: E

jerc

icio

s d

e p

rogr

amac

ión

co

n la

sen

ten

cia

for

Eje

rcic

ios

con

fo

ry

go

toxy

()(T

area

05

)

Ejercicios 02: Ejercicios con for y la función gotoxy

• Realizar cada uno de los ejercicios anteriores mediante el uso de laestructura for en lenguaje C.

• Observaciones

1. Reportar el texto del ejercicio y el código en C (con colores) y las pruebasde sus programas.

2. Incluir al reporte las capturas de pantalla

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

4. Enviar vía Web en un archivo comprimido (ZIP, RAR o TAR), reporte ycódigos de C de cada problema.

*Se entregará antes del día Domingo 17 de Abril de 2016 (23:59:59 hora limite).

18

Alg

ori

tmia

y p

rogr

amac

ión

est

ruct

ura

da

Lab

ora

tori

o 0

3: E

jerc

icio

s d

e P

rogr

amac

ión

co

n la

est

ruct

ura

par

a (f

or)

Pro

f. Ed

gard

o A

dri

án F

ran

co M

artí

nez

Grupo Contraseña

1CV8 algoritmia1cv8