You are on page 1of 285

i

PROGRAMACIN
BSICA

ii

PROGRAMACIN
BSICA

Morelia, Michoacn. Mxico

iii

Cubierta de CIE-CONALEP
Colaboracin:
Coordinacin de Innovacin Educativa, CIE/QFB - UMSNH
Sistema Nacional de Educacin a Distancia, SINED

Coordinador: Sergio Rogelio Tinoco Martnez


Eduardo Ochoa Hernndez

Quedan rigurosamente prohibidas, sin la autorizacin escrita de los titulares del Copyright, bajo las sanciones
establecidas por la ley, la reproduccin total o parcial de esta obra por cualquier medio o procedimiento, comprendidos la
reprografa y el tratamiento informtico, y la distribucin de ejemplares de ella mediante alquiler o prstamo pblico.
2011 CONALEPMICH, Mxico
Ediciones CONALEPMICH
lvaro Obregn 144, Morelia.
http://www.conalepmich.edu.mx/
Registro: PROGB2011-A
Impreso en_____________
Impreso en Mxico Printed in Mxico

iv

Para los muchos


estudiantes de CONALEP que suean
mirando a las ciencias de la computacin.
Hay formas y formas a la hora de promocionar y difundir los servicios y actividades de la biblioteca.
Estamos ante una sociedad donde prima lo audiovisual (fotografas, vdeos..) sobre lo textual (trpticos,
carteles) y donde la biblioteca est muriendo por falta de educacin.

La racionalidad es un concepto crucial de la imagen


que de s misma tiene la especie humana, no
simplemente una herramienta para adquirir
conocimiento y perfeccionar nuestras vidas y nuestra
sociedad. Pero, hoy en da, el estudio de la
racionalidad se ha convertido en un asunto tcnico, a
veces en cosa de matemticos, de economistas y de
filsofos.
Robert Nozick, La naturaleza de la racionalidad

vi

Prefacio

ix

Primera parte
Introduccin a la programacin
1. Introduccin
1.1. Antecedentes
1.2. Conceptos generales
1.3. Ciclo de vida del software

1
1
3
15

Crucigrama

28

Apndice

31

Segunda parte
Lenguaje C
2. Lenguaje C
2.1. Antecedentes
2.2. Estructura general de un programa
2.3. Metodologa para el desarrollo de un programa
2.4. Ciclo de desarrollo

1
1
6
8
10

Crucigrama

13

Apndice

15

Tercera parte
Tipos de datos, variables y constantes
3. Componentes del lenguaje C
3.1. Tipos de datos, variables y constantes
3.2. Identificadores y palabras reservadas
3.3. Operadores, precedencias y evaluaciones en cortocircuito
3.5. Conversiones
3.6. Interaccin con el usuario
3.7. Estructuras de control
Crucigrama
3.8. Ejercicios prcticos

1
1
3
4
5
6
7
10
13

Apndice

32

Cuarta parte
Funciones
4. Funciones

1
vii

4.1. Ejercicios
4.2. mbito y clase de almacenamiento de datos
4.3. Biblioteca de funciones
Crucigrama
4.4. Ejercicios prcticos

1
5
7
10
12

Apndice

29

Quinta parte
Arreglos
5. Arreglos
5.1. Arreglos de una dimensin o vectores
5.2. Arreglos de dos dimensiones o matrices
5.3. Arreglos multidimensionales
Crucigrama
5.4. Ejercicios prcticos

1
1
4
7
10
12

Apndice

22

Sexta parte
Apuntadores
6.1. Apuntadores
6.2. Apuntadores y arreglos
6.3. Manejo dinmico de memoria
Crucigrama
6.4. Ejercicios prcticos

1
3
6
10
12

Apndice

19

Sptima parte
Estructuras de datos
7. Estructuras de datos
7.1. Tipos de datos compuestos
Crucigrama
7.2. Ejercicio prcticos

1
1
9
11

Apndice

19

viii

Hoy nos encontramos ante una encrucijada entre las herramientas informticas y un nuevo orden de
redes sociales que presionan por soluciones; podemos llegar por primera vez al nuevo tiempo, uno
ms incierto y de carcter tecnolgico de innovacin constante. La educacin es parte de nuestro
mundo y a nuestra sociedad le corresponde juzgar si est a la altura de su tiempo.

Este sencillo libro, expresa el intento de una institucin y sus hombres por hacer de l un medio
para hablar entre generaciones, para atar las ideas que amenazan con evaporarse, para romper las
paredes del aula a muchos ms ciudadanos y para democratizar la actividad de ctedra en pginas
que representan la actitud del espritu CONALEP.

Con el apoyo del Sistema Nacional de Educacin a Distancia (SINED) para generar los contenidos
para formar profesores escritores, con la inventiva de la Coordinacin de Innovacin
Educativa/QFB de la Universidad Michoacana y la clara meta del CONALEPMICH por ser una
institucin que produce su propia visin de las profundidades de su programa educativo medio
superior. En una primera fase mayo agosto de 2011, forman profesores del sistema CONALEP con
el fin de producir una cultura de obras literarias que permitan apoyar las necesidades de
conocimiento de estudiantes, formar profesores como escribas de su ctedra. Si estas pginas
ayudan a convencer que la educacin no es hacer ms fcil algo, sino fundamentalmente producir
un cambio reflexivo en el desafo cognitivo dentro del pensamiento cientfico tcnico. Esto es
prueba de que la comunidad docente, autoridades y sindicato son capaces de sumar para un futuro
comn.
Eduardo Ochoa H,2011.

ix

DIRECTORIO

Mtro. Leonel Godoy Rangel
Gobernador Constitucional del Estado de Michoacn

Mtra. Graciela Carmina Andrade Garca Pelez
Secretaria de Educacin

Dr. Rogelio Sosa Pulido
Subsecretario de Educacin Media Superior y Superior

Lic. Ana Mara Martnez Cabello
Directora de Educacin Media Superior

Mtro. Wilfrido Perea Curiel
Director General del Sistema Conalep

Mtro. Vctor Manuel Lagunas Ramrez
Titular de la Oficina de Servicios Federales
en Apoyo a la Educacin en Michoacn

Lic. Antonio Ortiz Garcilazo
Director General del Conalep Michoacn

Ing. Jos Gilberto Dvalos Pantoja
Secretario General del SUTACONALEPMICH

Dr. Salvador Jara Guerrero
Rector de la Universidad Michoacana de San Nicols de Hidalgo

M.C. Lourdes Galeana de la O
Directora General del SINED

Ing. Eduardo Ochoa Hernndez
Coordinador de Innovacin Educativa (CIE/QFB)

PRESENTACIN
En tus manos se encuentra una obra fruto de la experiencia de maestros que se
desempean dentro del aula y que acompaan a sus alumnos en el arduo proceso del
aprendizaje, al igual que tus profesores, que da con da se preocupan por buscar
diferentes

caminos

para

lograr

el

objetivo:

Conseguir

que

te

apropies

del

conocimiento, de tal forma que le encuentres un sentido a los diferentes saberes y una
aplicacin cotidiana en la medida de lo posible.

El esfuerzo invertido en la creacin de este material, se ver recompensado con la


utilidad que te pueda brindar en el mdulo Programacin Bsica. Porque se es el
propsito fundamental de esta obra: ser un complemento idneo para tus clases,
porque de ninguna forma se pretenden substituir los materiales didcticos que el
profesor maneja para la materia, mucho menos es una gua para acompaarte en tu
aprendizaje. Ms bien, esta obra est diseada para servirte de apoyo y que su uso te
permita clarificar y profundizar, si es que despus de tus clases y prcticas exista
cierta duda, respecto algn tema en particular.

En la actualidad, en la educacin se maneja de manera cotidiana el concepto de


competencias, un enfoque donde se busca evaluar ms all del conocimiento. As que
en las escuelas, y en particular en el CONALEP Michoacn, los estudiantes lo ven
reflejado en su evaluacin, en virtud de que sus profesores no slo les evalan el
conocimiento mediante exmenes; sino que, adems, incluyen otras actividades donde
se busca evaluar habilidades y actitudes. De hecho no slo evala su profesor, porque
se estn manejando conceptos de co-evaluacin, donde sus propios compaeros
tambin les evalan y, por ltimo, donde tambin existe la autoevaluacin. Aqu es
donde este material cobra gran importancia; ya que est diseado con ese fin, el fin de

xi

que el propio estudiante vaya midiendo su grado de desarrollo y dominio de la materia,


mismo que va adquiriendo durante el curso, para que, si existieran problemas de
aprovechamiento, lo comente con su profesor y, juntos, superen los inconvenientes
que se presenten.

Por ltimo, este breve mensaje tambin va dirigido a los compaeros docentes que, al
igual que nosotros, imparten la materia. La nica invitacin que les podemos hacer es
que revisen nuestro material para que, juntos, podamos mejorar y enriquecer esta
obra. Asimismo, les pedimos cordialmente que fomenten el uso del problemario entre
sus estudiantes; ya que si este problemario tiene una virtud, es la virtud de facilitar el
difcil camino que implica la comunicacin con una computadora mediante un lenguaje
de programacin; a la vez que se alcanza la meta de resolver y realizar ciertas tareas
con una computadora, automatizadas con dicho lenguaje. El cual, finalmente, es el
mismo objetivo que buscan ustedes maestros y que buscamos, nosotros, con esta
obra.

Cmo manejar el problemario


Si bien es cierto que este material, al ser una obra formal, cuenta con una tabla de
contenido o ndice, es mejor dar una breve explicacin de cmo fue estructurada y que
secciones principales tiene. Esto con el propsito de que cada estudiante le saque ms
provecho.

De manera inicial diremos que el problemario fue dividido en dos grandes apartados,
en un principio se tendr a la mano una serie de cuestionarios o guas de
autoevaluacin que pretenden cubrir los aspectos tericos de la materia. Por otra
parte, la otra divisin corresponde a ejercicios prcticos, los cuales consisten en breves
descripciones a problemas hipotticos que se deben resolver. En ambos casos se dan
xii

respuestas al final de problemario que pueden ser comparadas con las del estudiante,
es decir, que hay una seccin llamada apndice, donde se encuentran las respuestas a
las guas de autoevaluacin y la solucin de algunos de los problemas planteados.

El objetivo con este formato que proponemos es cubrir tanto el aspecto terico como el
prctico que requieren los mdulos de informtica y, para ello, estructuramos el
material en las siete unidades siguientes:

1.

Introduccin.

2.

Lenguaje C.

3.

Componentes del lenguaje C.

4.

Funciones.

5.

Arreglos.

6.

Apuntadores.

7.

Estructuras de datos.

Estas unidades, aparte de que cubren el programa de estudio que solicita CONALEP
Nacional, ofrecen un valor agregado, pues se busc incluir todos los temas y conceptos
que son necesarios en un curso de programacin bsica estructurada, y que todo
estudiante del rea de informtica debe conocer. As que, de manera general, se hace
un recorrido histrico de los diferentes paradigmas de programacin que han existido,
as como de la necesidad de analizar, disear, implementar, corregir y mantener
soluciones a problemas, mediante un proceso por etapas. Asimismo se desmenuzan
todos los elementos que conforman al lenguaje C, haciendo nfasis en sus bondades y
ventajas. Todo ello acomodado de lo ms elemental a lo ms completo.
Concluimos este apartado con una serie de recomendaciones que pedimos al lector en
general y al estudiante del curso que tome muy en cuenta, ya que eso permitir un
mejor manejo del problemario:

xiii

La primera recomendacin es que los cuestionarios y reactivos sean resueltos


en manera aparte, y no directamente en el problemario. Esto lo consideramos
de carcter opcional pero, sobre lo que s insistimos con carcter de
imprescindible, es que las guas presentadas de autoevaluacin que piden
complementar oraciones sean resueltas siempre en forma aparte; ya sea en
hojas en blanco o en cuaderno, pues los espacios son insuficientes para la
respuesta solicitada.

Otra recomendacin es referida a los ejercicios prcticos, especialmente para


las unidades 3 a la 5. Aparte del planteamiento del problema, en el ejercicio, se
presentan

secciones

adicionales

que

son:

Anlisis,

codificacin

comprobacin; mismas que tienen como fin dirigir al estudiante sobre cierta
solucin deseada. Sin embargo, no es obligatoria la lectura de dichos
apartados, ya que el estudiante se podra sentir influenciado en la solucin.
Cabe recordar que cuando se trata de resolver un problema, generalmente,
existe ms de un camino para resolverlo. Entonces, el objetivo de incluir esos
mini-apartados en cada problema, es la orientacin al principiante o al
estudiante con menor experiencia en el rea, adems de resaltar aqullas
herramientas de programacin proporcionadas por el lenguaje C, con las cuales
el problema podr ser resuelto de una manera ms clara y sencilla.

Ya se mencionaba en un inicio que slo algunos de los problemas tenan


solucin en la seccin del apndice, de hecho, se pretendi que fueran
nicamente los impares, para establecer un patrn en cada unidad. La
explicacin del motivo por el cual no se incluy la solucin a todos los ejercicios,
en esta primera versin del problemario, fue porque pensamos que los
estudiantes deben enfrentar retos poco a poco, y darse cuenta ellos mismos
que los superaron.

xiv

Otra recomendacin tiene que ver con el hecho de revisar las soluciones
incluidas a los ejercicios prcticos, ya que slo se encontrarn, en su gran
mayora, con un listado de instrucciones escritas en lenguaje C. Si bien es cierto
que esto resuelve el problema, de manera gradual se fueron documentando las
soluciones e incluyendo comentarios, con la finalidad de orientar al lector
cuando transcribiera el programa en la interfaz sugerida por el profesor, para
que supiera lo que estara tecleando y qu pudiera ocurrir al probar dicho
programa. Una cosa ms, existe cierta numeracin en los ejercicios prcticos,
numeracin que se empat con las soluciones y, en ella, se describe el nmero
de

unidad,

el

nmero

de

tema

el

nmero

de

ejercicio

de

cada

problema/solucin referido. Se comenta esto para facilitar la bsqueda,


sobretodo de las soluciones en la seccin del apndice.

Uno de los ltimos comentarios o recomendaciones tiene que ver con el hecho
de que, en la unidad 6, se maneja un tema llamado apuntadores; en l se
utilizan diagramas o grficas que permitan comprender la funcin de los
referidos apuntadores. El comentario se da porque se manejan, a manera de
ejemplo, las direcciones de memoria como una serie de nmeros en formato
decimal. En ese sentido, el comentario viene al caso por el hecho de aclarar
que, para las ubicaciones de memoria, generalmente se maneja el sistema
hexadecimal y no el sistema de numeracin decimal que es el que aqu se
emplea. Esta decisin se tom con la finalidad de facilitar el aprendizaje, por lo
que slo fue con fines didcticos.

El sealamiento final es de que, a partir de la unidad 6, se dejan de plantear


problemas con el esquema de anlisis previo, sugerencias de codificacin y
algunos ejemplos de cmo comprobar la solucin. Esto se replantea de formato
porque, al tratarse de la parte final del curso, el estudiante debe comenzar a
realizar sus propios anlisis y buscar sus propias soluciones.
xv

Despus de las recomendaciones listadas, creemos que el lector tendr una visin
ms amplia de este material y, acompaado o en forma individual, sabr sacar
todo el jugo presente en esta obra.

xvi

CONALEP-2011

[Programacin bsica]

Primera parte
Introduccin a la programacin

CONALEP-2011

[Programacin bsica]

1. Introduccin a la programacin
1.1. Antecedentes

Ejercicio 1
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Instrucciones

Software

Programa

Lenguaje C

ALGOL

John McCarthy

John von Neumann

FORTRAN

Numrico

Informtica

Lenguaje de programacin

Enunciados:
1.- La
es la ciencia del estudio y aplicacin del conocimiento por medio de procesos
automatizados de la informacin, con el uso de las computadoras.
2.- El

es un programa o conjunto de programas que se ejecutan en la computadora.

3.- Decimos que un


est formado por un conjunto de instrucciones que se ejecutan
en una computadora, con la finalidad de resolver algn problema. Asimismo, especifica la forma
de procesar y operar sobre los datos que son utilizados en el equipo de cmputo.
4.- Un
es una herramienta informtica que permite crear software para que una
computadora pueda realizar todas sus funciones. Est formado por un conjunto
de
escritas en forma lgica y basadas en una secuencia de operaciones que permiten
resolver un problema o procesar informacin en la computadora.
5.da de hoy.

fue quien propuso la arquitectura de las computadoras que es utilizada hasta el

CONALEP-2011

[Programacin bsica]

6.- Las computadoras de los aos 50s, construidas con bulbos y posteriormente transistores,
utilizaban un lenguaje basado en un cdigo
, al cual tambin se le denomin lenguaje
mquina.
7.- El lenguaje
nivel.

es considerado como el primer lenguaje de programacin de alto

8.- El lenguaje
, llamado as en 1959, tiene una importancia muy grande en la
historia de los lenguajes de programacin, debido a que, de l, se derivaron varios de los lenguajes
de programacin que actualmente se emplean.
9.-

dise el lenguaje de programacin de alto nivel llamado LISP.

10.- El
, que aparece en 1972, fue implementado inicialmente para crear programas
de aplicaciones en el sistema operativo UNIX.

CONALEP-2011

[Programacin bsica]

1.2. Conceptos generales


1.2.1. Programacin
1.2.1.1. Concepto

Ejercicio 2
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Escriba una de las respuestas, que se muestran en el recuadro siguiente, en el espacio en blanco
sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Programa

Instrucciones

Fuente

Claro

Ejecutable

Implementacin

Ejecucin

Validacin

Algoritmo

Eficiente

Programador

Legible

Acciones

Instrucciones

Diseo del algoritmo

Proceso de desarrollo de software

Lenguaje de programacin

Enunciados:
1.- La definicin de programa se utiliza para describir dos conceptos, el primero se refiere a
las
o cdigo
creados por el programador y, el segundo, alude a un
software completo y
.
2.- Un
de
3.- Un
4.- Se le llama

tambin se puede definir como la secuencia lgica y ordenada


que debe seguirse en el proceso de la computadora.
es quien desarrolla un programa.
al proceso de traducir un algoritmo a un programa.

5.- Decimos que un


est formado por un conjunto de instrucciones que permiten el
desarrollo de un programa, as como especificar la forma de procesar y operar sobre los datos que
se manipulan en la computadora.

CONALEP-2011

6.- El
de la vida diaria.

[Programacin bsica]

consiste en construir un programa o aplicacin para que resuelva un problema

7.- Dentro del proceso de desarrollo de software, el


es el paso donde se analiza el
problema a resolver, con la finalidad de desarrollar una solucin adecuada. El resultado de este
paso es una especificacin en papel, la cual ser implementada como un programa, en forma
posterior.
8.- El proceso de
y
del software es la etapa final en el desarrollo de
un programa, donde se eliminan los errores y se verifica que el programa d solucin al problema
para el que fue creado.
9.- Un programa tienen tres objetivos principales: correccin, es decir, que el programa d
solucin a los problemas para los que fue creado; debe ser
, en otras palabras, que
debe consumir los recursos estrictamente necesarios; y, por ltimo, debe
ser
y
para tener mayor facilidad en su mantenimiento.
10.- Un
es un procedimiento bien definido para la solucin de un problema o
realizacin de una tarea.

[Programacin bsica]

CONALEP-2011

1.2.1.2. Paradigmas

Ejercicio 3
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los parntesis de
la columna de la derecha, la letra correspondiente al inciso que indique la relacin correcta entre
enunciados correspondientes.

a) Paradigma de la
programacin.

) 1.- Programacin procedural.

b) Programacin
funcional.

c) Programacin
estructurada.

3.- Es la programacin considerada opuesta a la


programacin orientada a objetos, y se basa en la
)
aplicacin de funciones a valores conocidos, tambin se
conoce como lenguaje aplicativo.

d) Serie de
procedimientos
que actan sobre
los datos.

e) Funcin.

) 5.- Es la programacin basada en la divisin de tareas.

f) Programacin
orientada a objetos.

g) Objeto.

7.- Paradigma de programacin en la que su estructura y


ejecucin de programa est definida por sucesos que
)
ocurren en el sistema o son determinados por el usuario.

h) Clase.

2.- Tipo de dato con propiedades y funcionalidad en los


lenguajes de programacin orientada a objetos.

4.- Conjunto de instrucciones o procedimientos que se


ejecutan una despus de otra.

6.- Propiedad por la cual es posible construir nuevas clases a


partir de las ya existentes.

8.- Es un modelo o patrn que define la manera en que se


realiza un programa.

[Programacin bsica]

CONALEP-2011

i) Programacin
orientada a
eventos.

9.- Entidad de una determinada clase, con un determinado


estado, capaz de interactuar con otros objetos.

j) Herencia.

10.- Es el paradigma de programacin que tienen como


elementos la clase, el objeto y la herencia.

CONALEP-2011

[Programacin bsica]

1.2.1.3. Paradigmas de la computacin moderna

Ejercicio 4
Instrucciones: Lea con atencin cada uno de los enunciados que enseguida se muestran. D las
opciones enlistadas despus de ellos, subraye solamente el inciso cuya definicin corresponda
correctamente con el enunciado.
1.- Paradigma de programacin en el cual tanto la estructura como la ejecucin de los programas
van determinadas por los sucesos que ocurran en el sistema, o los generados por el usuario.
a) Programacin
estructurada

b) Programacin por
eventos

c) Programacin
orientada a objetos

d) Programacin
funcional

2.- Es un lenguaje de programacin orientado a eventos creado por la compaa Microsoft.


a) Lenguaje C

b) Pascal

c) Visual Basic

d) Java

3.- Si el texto del programa tiene una estructura sintctica, se dice que su cdigo es
a) Estructurado

b) Funcional

c) Por eventos

d) Orientado a objetos

4.- Es el elemento fundamental de la programacin orientada a objetos.


a) Estructura

b) Evento

c) Clase

d) Herencia

5.- Es un estmulo ocurrido durante la ejecucin de un programa.


a) Objeto

b) Clase

c) Evento

d) Instruccin

6.- En la programacin orientada a objetos, es la declaracin de una variable del tipo de una clase
concreta.
a) Objeto

b) Clase

c) Evento

d) Instruccin

CONALEP-2011

[Programacin bsica]

7.- Este tipo de programacin puede prescindir completamente de los ciclos y las variables.
a) Programacin
estructurada

b) Programacin
orientada a objetos

c) Programacin
funcional

d) Programacin por
eventos

8.- Es el lenguaje que se utiliza para crear programas en la computadora.


a) Algortmico

b) De programacin

c) Metodolgico

d) Estructurado

9.- En la programacin orientada a objetos, es una propiedad que define una nueva clase a partir
de clases ya existentes.
a) Herencia

b) Clase

c) Evento

d) Instruccin

10.- Se dice que fue el primer paradigma de programacin universalmente aceptado; debido a que
es fcil de leer, depurar y mantener.
a) Programacin
estructurada

b) Programacin
orientada a objetos

c) Programacin
funcional

d) Programacin por
eventos

CONALEP-2011

[Programacin bsica]

1.2.2. Lenguajes de Programacin


1.2.2.1. Conceptos

Ejercicio 5
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.

1. El lenguaje de bajo nivel tambin es llamado lenguaje mquina.

2. El lenguaje C es un lenguaje funcional.

3. El lenguaje Java es un lenguaje orientado a aspectos.

4. El lenguaje Delphi es derivado del lenguaje Pascal.

5. El lenguaje COBOL es un lenguaje orientado a negocios.

6. El lenguaje FORTRAN es utilizado en la programacin de


inteligencia artificial.

7. El lenguaje ALGOL es el predecesor de lenguajes como Pascal.

8. El lenguaje Pascal es un lenguaje orientado a objetos.

9. El lenguaje SQL se utiliza para administrar servidores web.

10. PROLOG es utilizado en la programacin de inteligencia artificial.

[Programacin bsica]

CONALEP-2011

1.2.2.2. Jerarqua

Ejercicio 6
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los parntesis de
la columna de la derecha, la letra correspondiente al inciso que indique la relacin correcta entre
enunciados correspondientes.

a) Mnemotcnicos.

1.- Lenguaje tambin llamado ensamblador.

b) Lenguaje mquina.

2.- Es un tipo de lenguaje de bajo nivel.

c) Lenguaje
ensamblador.

3.- Son las rdenes que escribe el programador cuando


desarrolla un programa.

d) Lenguaje de
mnemotcnicos.

4.- Es un tipo de lenguaje de alto nivel.

e) Lenguaje de alto
nivel.

5.- Es aquel tipo de lenguaje que interacta directamente con


el hardware de la computadora.

f) Lenguaje C.

6.- Este tipo de software convierte el programa de lenguaje


ensamblador a lenguaje mquina.

g) Traductor.

7.- Es el tipo de lenguaje utilizado por la mquina.

h) Programa.

8.- Tipo de lenguaje con las instrucciones ms cercanas al


lenguaje humano, y ms distantes del lenguaje binario.

10

[Programacin bsica]

CONALEP-2011

i) Cdigo fuente.

9.- Conjunto de palabras que representan instrucciones a


ejecutar en la computadora, empleado en el lenguaje
ensamblador.

j) Lenguaje numrico
(representado en
bits).

10.- Es el nombre que recibe una secuencia de instrucciones


escrita en algn lenguaje de alto nivel.

11

CONALEP-2011

[Programacin bsica]

1.2.2.3. Elementos

Ejercicio 7
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Esttica

Traductores

Sistemas de tipos

Anlisis sintctico

Smbolos

Estructura lxica

Sintaxis

Smbolos especiales

Anlisis lxico

Anlisis semntico

Enunciados:
1.- La
ejecucin correcta.

es la estructura del programa y el conjunto de reglas que impone para su

2.- A la

de los lenguajes de programacin se le llama token.

3.- El

es el anlisis de la gramtica del lenguaje.

4.- El

comprueba el significado de las sentencias.

5.- El
elimina del programa toda la informacin que no es necesaria, como las
lneas, los espacios en blanco, los caracteres de tabulacin, etc.
6.- El anlisis sintctico comprueba que los
escribieron correctamente.
7.- Los
lenguaje mquina.
8.- Los

del lenguaje del cdigo del programa se

de los lenguajes de programacin, transforman un lenguaje fuente a un

forman parte de la estructura lxica de un lenguaje de programacin.

9.- Una propiedad


define la forma en que el lenguaje de programacin clasifica,
manipula e interpreta, en tipos, los diferentes valores y expresiones.
10.- Los
incluyen las reglas sobre el significado y/o el anlisis del flujo de datos que
se puede verificar en tiempo de compilacin.

12

CONALEP-2011

[Programacin bsica]

1.2.2.4. Implementacin

Ejercicio 8
Instrucciones: Lea con atencin cada uno de los enunciados que enseguida se muestran. De las
opciones enlistadas despus de ellos, subraye solamente el inciso cuya definicin corresponda
correctamente con el enunciado.
1.- Es el traductor de un lenguaje de alto nivel que no genera en forma permanente la transcripcin
respectiva al lenguaje mquina.
a) Intrprete

b) Compilador

c) Cdigo objeto

d) Cdigo fuente

2.- Es el cdigo de instrucciones creado por el programador.


a) Compilador

b) Intrprete

c) Cdigo fuente

d) Cdigo objeto

c) Intrprete

d) Compilador

3.- Es la versin traducida que produce el compilador.


a) Cdigo fuente

b) Cdigo objeto

4.- Traduce el lenguaje de alto nivel a lenguaje ensamblador, y posteriormente a lenguaje


mquina; finalmente verifica que no existan errores, para ejecutar el programa posteriormente.
a) Compilador

b) Enlazador

c) Intrprete

d) Cdigo fuente

5.- Est formado por una secuencia de instrucciones.


a) Cdigo fuente

b) Lenguaje

c) Programador

d) Compilador

6.- Es un lenguaje de programacin de alto nivel que utiliza un traductor de tipo intrprete.
a) Lenguaje C

b) Basic

c) FORTRAN

7.- Es un lenguaje de programacin de alto nivel que utiliza un compilador.

13

d) COBOL

CONALEP-2011

a) Lenguaje C

[Programacin bsica]

b) Basic

c) LISP

d) COBOL

8.- Es la categora que define a los compiladores e intrpretes.


a) Cdigo fuente

b) Traductores

c) Fase de anlisis

d) Fase de sntesis

9.- Es la primera fase en el proceso de traduccin del programa.


a) Fase lxica

b) Fase de sntesis

c) Fase de anlisis

d) Fase semntica

10.- Es la segunda fase en el proceso de traduccin de un programa.


a) Fase lxica

b) Fase de sntesis

c) Fase de anlisis

14

d) Fase semntica

[Programacin bsica]

CONALEP-2011

1.3. Ciclo de vida del software


1.3.1. Conceptos

Ejercicio 9
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los parntesis de
la columna de la derecha, la letra correspondiente al inciso que indique la relacin correcta entre
enunciados correspondientes.

a) Software.

b) Ingeniera de
software.

c) Ingeniera en

sistemas.

1.- Este modelo de desarrollo de software est

representado por acciones del usuario.

2.- Es la disciplina que comprende el software, el

hardware y la interaccin del sistema con el usuario.


3.- Es el desarrollo de un programa especialmente

diseado para un cliente o empresa en particular, para


actividades que l mismo requiere.
4.- Conjunto de programas, procedimientos, reglas,

d) Software genrico.

e) Usabilidad.

f) Modelo en

cascada.

g) Software

personalizado.

documentacin y datos asociados, que forman parte


de las operaciones de un sistema de computacin.
5.- Es un conjunto especfico de actividades o tareas para

producir un software.
6.- Es un atributo de aquel software que hace un uso

adecuado de los recursos, con mejor tiempo de


respuesta y mantenimiento.
7.- Disciplina que comprende todos los aspectos para

producir un software.
8.- Programa o software desarrollado para un uso general

h) Eficiencia.

de un grupo de clientes o empresas, generalmente


cuenta con ms recursos o herramientas que el cliente
que los utiliza requiere.

15

[Programacin bsica]

CONALEP-2011

i) Modelo de flujo de

trabajo.

9.- Est basado en etapas o tareas bien definidas y

j) Proceso de

desarrollo de
software.

separadas, donde al trmino de una de ellas, se


contina con la siguiente.
10.- El software debe ser fcil de utilizar, para lo cual debe

presentar una interfaz sencilla de interpretar por el


usuario.

16

CONALEP-2011

[Programacin bsica]

1.3.2. Modelo clsico, lineal secuencial o modelo en cascada

Ejercicio 10
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Etapas

Mtodos

Anlisis de requerimientos

Diseo

Implementacin

Software

Clsico

Prueba

Mantenimiento

Anlisis previo

Lenguaje de programacin

Enunciados:
1.- El ciclo de vida

tambin es conocido como ciclo de vida en cascada.

2.- El ciclo de vida en cascada est dividido en


procedimientos bien definidos.
3.- El ciclo de vida del
software.

, cada una de ellas est formada por

est formado por

y tcnicas de la ingeniera de

4.- En la etapa de anlisis de requerimientos, se selecciona el


para crear el programa.

que se ha de utilizar

5.- En la etapa de
o codificacin, se pasa el diseo elaborado en etapas anteriores, a
instrucciones del lenguaje de programacin que se va a utilizar para crear el software.
6.- En la etapa de
7.- En la etapa de
con el software.

se hacen cambios y mejoras al software.


se definen las necesidades de informacin que se van a resolver

8.- Es la tercera etapa del ciclo de desarrollo de software en cascada, llamada etapa
de
, ya que en ella se da la solucin al problema y se determinan las funciones que
deben integrarse en el programa.

17

CONALEP-2011

[Programacin bsica]

9.- En la etapa de
se realizan varios procedimientos para demostrar el
funcionamiento correcto del software, y corroborar que est realizando las funciones para las
cuales fue creado.
10.- En la etapa de
se definen los sistemas de cmputo en los que se implantar el
software a desarrollar, el entorno de hardware y el entorno de red, entre otros.

18

CONALEP-2011

[Programacin bsica]

1.3.2.1. Modelo en cascada y etapa de diseo

Ejercicio 11. Etapas del modelo en cascada


Instrucciones: Ordene las etapas del modelo en cascada del ciclo de vida del software, que estn
en la columna de la izquierda, de acuerdo a la cronologa en que se realizan dentro de un proceso
de desarrollo de software. Indique la cronologa anotando, dentro de los parntesis de la columna
de la derecha, el nmero 1 para el proceso que se realiza en primer lugar, el nmero 2 para el
segundo, el 3 para el tercero, y as en forma sucesiva.
Diseo

Anlisis de requerimientos

Prueba

Mantenimiento

Programacin

Anlisis previo

Ejercicio 11.1 Pasos de la etapa de diseo


Instrucciones: Realice el mismo procedimiento que en el apartado anterior, a fin de ordenar los
pasos de la etapa de diseo que se realizan dentro de un proceso de desarrollo de software.

Representaciones de interface

Estructura de datos

Algoritmo

19

CONALEP-2011

[Programacin bsica]

1.3.2.2. Anlisis de Requerimientos

Ejercicio 12
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Sntesis

Revisin

Especificacin

Evaluacin

Particin

Funcin

Crear modelos

Mala comunicacin

Especificacin de requisitos del software

Flujo de la informacin

Reconocimiento del problema


Enunciados
1.- La
y la
son fundamentales en el anlisis de requerimientos, ya que
permiten conocer el flujo de la informacin, estructurar los datos, elaborar las funciones que debe
realizar el software, en base a los requerimientos del cliente.
2.- La
es la ltima fase del anlisis de requerimientos, en la cual se realiza un
anlisis de los pasos anteriores y se puede dar a conocer al cliente la solucin sobre la cual se
disear el software.
3.- La
es un principio del anlisis de requerimientos, que tiene el objetivo de dividir
un gran problema en otros ms pequeos y comprensibles, para posteriormente enlazarlos, a fin de
solucionar el problema principal.
4.- En el
el analista debe evaluar las consideraciones que se hicieron durante la
planeacin del software. Adems, debe cuestionar al cliente para tener plenamente identificado el
problema que se presenta y la solucin que se propone, con la finalidad de que el producto
(software) sea la solucin ms adecuada al usuario.

20

CONALEP-2011

[Programacin bsica]

5.- En la
se representa el software que se propone disear, de una manera
comprensible para el cliente, con la finalidad de mostrar la forma en que se da solucin al
problema.

6.- La
es uno de los principales problemas al que se enfrenta un equipo de desarrollo
al realizar un anlisis de requerimientos, provocando un mal entendimiento del problema.
7.- Para ayudar a comprender mejor el proceso y el flujo de datos, se pueden
cuales, adems, son utilizados posteriormente en la etapa de diseo.
8.- El resultado final de la etapa de anlisis es la

, los

9.- El
es un principio del mbito de la informacin del anlisis de requisitos, en l se
tiene la representacin y control de los datos, por lo que permite ir esquematizando la informacin.
10.- La
del analista, en el anlisis de requerimientos, consiste en ofrecer una
solucin adecuada y eficiente en la utilizacin de los recursos informticos, a fin de completar un
producto final (software), que solucione un problema a un cliente.

21

CONALEP-2011

[Programacin bsica]

1.3.2.3. Diseo: Medios de expresin

Ejercicio 13
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.
1. La eficiencia es uno de los requisitos en el diseo de programas, sin

2. La estructura de un programa en mdulos, facilita su mantenimiento.

3. Un algoritmo es un conjunto ordenado de instrucciones que permite

5. La codificacin es transformar un programa en un algoritmo.

6. La notacin algortmica es necesaria para el diseo de un algoritmo.

7. El pseudocdigo es una notacin algortmica grfica.

8. El diagrama N-S (Nassi-Schneiderman) es un algoritmo grfico con texto de (

9. Un algoritmo de sistemas formales utiliza notaciones lgicas y

importar que stos resulten incomprensibles a otros programadores.

resolver un problema y codificarlo en un lenguaje de programacin.

4. Un programa es un conjunto de instrucciones especificadas y definidas por


un lenguaje de programacin, que indica cmo debe trabajar la
computadora.

acciones de las tareas a realizar.

matemticas.

10. Un diagrama de flujo es una notacin algortmica textual.

22

CONALEP-2011

[Programacin bsica]

1.3.2.4. Diseo: Diagramas de flujo

Ejercicio 14
Instrucciones: Relacione correctamente cada uno de los conceptos enlistados en la columna de la derecha
con una sola de las imgenes en la columna de la izquierda. Dibuje una lnea para indicar la relacin
correcta entre conceptos e imgenes correspondientes.
1. Ejemplo de sistema formal.
2. Lnea de flujo.
3. Operacin (accin de datos).
4. Ejemplo de diagrama de flujo.
5. Operacin lgica (toma de decisin).
6. Ejemplo de diagrama Nassi-Schneiderman.
7. Entrada/salida de datos.

Si Condicin Entonces
Accin A;
Si no
Accin B;
Fin Si

8. Inicio y fin del algoritmo.

Inicio
SI

Condicin

Accin A

NO
Accin B

Fin

9. Conector (cuando se secciona el diagrama).

Condicin
SI
Accin A

NO
Accin B

23

[Programacin bsica]

CONALEP-2011

( )

10. Ejemplo de pseudocdigo.

1.3.2.4. Diseo de software

Ejercicio 15
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los parntesis de
la columna de la derecha, la letra correspondiente al inciso que indique la relacin correcta entre
enunciados correspondientes.

a) Diseo del sistema.

b) Etapa de prueba.

1.- Etapa en la que se traducen los algoritmos en cdigo

del lenguaje de programacin a utilizar.

2.- Etapa en la que el producto final de software es

utilizado por el cliente.


3.- Es una desventaja, ya que el cliente recibe el

c) Mantenimiento.

d) Alcance del ciclo

de vida del
software.

programa para su uso, hasta el final de las etapas del


modelo lineal.
4.- Etapa del desarrollo del software en la que se verifica

el buen funcionamiento del mismo.


5.- En la prctica es una de las desventajas del ciclo

e) Actualizacin.

secuencial porque, en la aplicacin real del mismo, se


introducen modificaciones dentro de cada una de las
etapas del proceso de desarrollo de software.
6.- Es una de las desventajas del modelo en cascada, ya

f) Implantacin.

que slo se hacen pruebas despus de la etapa de


implementacin.
7.- En la fase de anlisis, es la forma en que el sistema

g) Implementacin.

cumplir con los requerimientos. Tambin se le


denomina diseo lgico.

24

[Programacin bsica]

CONALEP-2011

h) El riesgo.

i) No seguir

estrictamente el
ciclo secuencial.

8.- Son los cambios que se realizan para corregir o

mejorar el programa.
9.- Consiste en determinar hasta dnde se desea llegar

con el proyecto de software, es decir, en qu


momento detener el proceso de desarrollo del mismo.

j) El programa se

finaliza hasta la
ltima etapa del
ciclo.

10.- Consiste en la mejora del software hacia las nuevas

tendencias y avances informticos.

25

CONALEP-2011

[Programacin bsica]

1.3.3. Otros modelos

Ejercicio 16
Instrucciones: Lea con atencin cada uno de los enunciados que enseguida se muestran. De las
opciones enlistadas despus de ellos, subraye solamente el inciso cuya definicin corresponda
correctamente con el enunciado.
1.- En este modelo los requerimientos del cliente pueden cambiar en cualquier momento, ya que
stos pueden ir sufriendo modificaciones durante el desarrollo del software.
a) Modelo
evolutivo

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo por
prototipos

2.- Este modelo se utiliza cuando el cliente recibe nicamente el producto final.
a) Modelo lineal

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo por
prototipos

3.- Este modelo permite crear especificaciones iniciales y hacer un producto parcial; incrementar
las especificaciones, y realizar un producto intermedio; seguir incrementando las especificaciones,
y realizar los productos intermedios que se deseen, hasta llegar al producto final.
a) Modelo lineal

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo por
prototipos

4.- Es la repeticin de varios ciclos en cascada, al trmino de cada uno de los cuales se entrega al
cliente una versin del programa que mejora la versin anterior. Tambin es el propio cliente
quien evala el producto de software de cada repeticin, hasta que se cumplan las necesidades que
l crea suficientes.
a) Modelo lineal

b) Modelo en
espiral

c) Modelo
incremental

d) Modelo por
prototipos

5.- Este mtodo utiliza diversos prototipos que son mostrados al cliente, a fin de evaluar si
satisfacen sus necesidades, y son rediseados de acuerdo a las observaciones que ste realice. El
mtodo se emplea cuando las especificaciones no son completas.

26

CONALEP-2011

a) Modelo lineal

[Programacin bsica]

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo por
prototipos

6.- La planificacin y el anlisis de riesgos forman parte de este modelo.


a) Modelo lineal

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo por
prototipos

7.- Este modelo de ciclo de vida del software utiliza atributos y mtodos.
a) Modelo
orientado a
objetos

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo lineal

8.- Es el modelo de desarrollo de software formado por varios ciclos del modelo en cascada.
a) Modelo lineal

b) Modelo en
espiral

c) Modelo
iterativo

d) Modelo por
prototipos

9.- Busca analizar el cdigo para obtener el diseo mediante el cual fue implementado.
a) Prototipo

b) Modelo

c) Ingeniera
inversa

d) Reingeniera

10.- Utiliza los resultados obtenidos por la ingeniera inversa para corregir o prevenir los posibles
errores que pudiera tener el software.
a) Prototipo

b) Modelo

c) Ingeniera
inversa

27

d) Reingeniera

CONALEP-2011

[Programacin bsica]

Crucigrama de la unidad
HORIZONTALES
1.- Es el proceso de pasar un algoritmo a cdigo de algn lenguaje de programacin
4.- El anlisis de riegos es una de las etapas del modelo
6.- Conjunto de palabras que representan instrucciones a ejecutar en la computadora, empleado en el
lenguaje ensamblador.
8.- ltima palabra del nombre del paradigma de programacin que utiliza un traductor de tipo
intrprete.
9.- Nombre que recibe aquel software que es desarrollado para un cliente o empresa en particular.
10.- Segunda palabra del nombre de la primera etapa del modelo en cascada.
11.- En el modelo de cascada, etapa donde se plantea el algoritmo del software.
12.- Utiliza los resultados de la ingeniera inversa para corregir o prevenir errores que pudiera
tener el software.
15.- Notacin de algoritmo en forma de texto.
16.- Lenguaje de bajo nivel.
18.- Transforman un lenguaje de alto nivel en lenguaje mquina.
20.- Etapa del modelo en cascada donde se corrigen los errores que pudiera tener el software,
antes de entregarlo al cliente.
21.- Nombre que recibe la persona que desarrolla un programa.
22.- Traductor que verifica que no existan errores en el cdigo, para posteriormente ejecutar el
programa.
23.- Modelo o patrn que define los tipos de lenguajes de programacin.
24.- Modelo de desarrollo de software formado por varios ciclos del modelo en cascada.
26.- Paradigma de programacin que puede prescindir de ciclos y variables.
27.- Lenguaje de programacin del cual deriva el lenguaje Pascal.
28.- ltima palabra del nombre de los algoritmos de notaciones matemticas.
30.- Segunda palabra del nombre de un lenguaje de programacin orientado a eventos.
31.- Lenguaje de la computadora.
32.- Modelo de desarrollo de software llamado en lnea, secuencial o en
33.- Tipo de algoritmo del diagrama N-S.
35.- Lenguaje de programacin orientado a objetos.
36.- Cdigo creado por el programador.
37.- Lenguaje de programacin utilizado en inteligencia artificial.

28

CONALEP-2011

[Programacin bsica]

VERTICALES
2.- Etapa del modelo lineal en la cual se realizan cambios para corregir o mejorar el programa,
despus de haberlo entregado al cliente.
3.- Consiste en mejorar el software, hacia nuevas tendencias y/o avances informticos.
5.- Tipo de ingeniera que analiza el cdigo para obtener el diseo mediante el cual fue
implementado.
7.- Lenguaje de programacin derivado del lenguaje Pascal.
13.- Tipo de diagrama que ayuda a visualizar grficamente el algoritmo.
14.- Paradigma de los lenguajes de programacin C y Pascal.
17.- ltima palabra del nombre del modelo de desarrollo de software representado por las
acciones del usuario.
19.- Atributo de los modelos de software que hacen un uso adecuado de los recursos.
23.- Lenguaje de programacin estructurado.
25.- Elemento de la programacin orientada a objetos.
29.- Incluye las reglas sobre el significado y/o anlisis del flujo de datos que se verifican en la
compilacin de un programa.
34.- Cdigo resultante de la compilacin de un programa escrito en un lenguaje de alto nivel.

29

CONALEP-2011

[Programacin bsica]

7
8

9
10
11

12
13
14
15

16
17
18

19

20

21
22
23
24

25

26

27
28

29

30
31

32

33

34

35
36

37

30

CONALEP-2011

[Programacin bsica]

Apndice
Ejercicio 1
1.- Informtica
2.- Software
3.- Programa
4.- Lenguaje de programacin / Instrucciones
5.- John von Neumann
6.- Numrico
7.- FORTRAN
8.- ALGOL
9.- John McCarthy
10.- Lenguaje C

Ejercicio 2
1.- Instrucciones / Fuente / Ejecutable
2.- Programa / Acciones / Instrucciones
3.- Programador
4.- Implementacin
5.- Lenguaje de programacin
6.- Proceso de desarrollo de software
7.- Diseo del algoritmo
8.- Ejecucin / Validacin

31

CONALEP-2011

[Programacin bsica]

9.- Eficiente / Claro / Legible


10.- Algoritmo

Ejercicio 3
1.- ( d )
2.- ( h )
3.- ( b )
4.- ( e )
5.- ( c )
6.- ( j )
7.- ( i )
8.- ( a )
9.- ( g )
10.- ( f )

Ejercicio 4
1.- b) Programacin por eventos
2.- c) Visual basic
3.- a) Estructurado
4.- c) Clase
5.- c) Evento
6.- a) Objeto
7.- c) Programacin funcional
8.- b) De programacin
9.- a) Herencia

32

CONALEP-2011

[Programacin bsica]

10.- a) Programacin estructurada

Ejercicio 5
1.- V
2.- F
3.- F
4.- V
5.- V
6.- F
7.- V
8.- F
9.- F
10.- V

Ejercicio 6
1. - ( d )
2. - ( c )
3. - ( i )
4. - ( f )
5. - ( b )
6. - ( g )
7. - ( j )
8. - ( e )

33

CONALEP-2011

[Programacin bsica]

9.- ( a )
10.- ( h)

34

CONALEP-2011

[Programacin bsica]

Ejercicio 7
1. Sintaxis
2.- Estructura lxica
3.- Anlisis sintctico
4.- Anlisis semntico
5.- Anlisis lxico
6.- Smbolos
7.- Traductores
8.- Smbolos especiales
9.- Esttica
10.- Sistemas de tipos

Ejercicio 8
1.- a) Intrprete
2.- c) Cdigo fuente
3.- b) Cdigo objeto
4.- a) Compilador
5.- a) Cdigo fuente
6.- b) Basic
7.- a) Lenguaje C
8.- b) Traductores
9.- c) Fase de anlisis
10.- b) Fase de sntesis

35

CONALEP-2011

[Programacin bsica]

Ejercicio 9
1. - ( i )
2. - ( c)
3. - ( g )
4. - ( a)
5. - ( j )
6. - ( h)
7. - ( b )
8. - ( d )
9. - ( f )
10. -( e )

Ejercicio 10
1.- Clsico
2.- Etapas
3.- Software / Mtodos
4.- Lenguaje de programacin
5.- Implementacin
6.- Mantenimiento
7.-Anlisis previo
8.- Diseo
9.- Prueba
10.- Anlisis de requerimientos

36

CONALEP-2011

[Programacin bsica]

Ejercicio 11
Etapas: 3, 2, 5, 6, 4 y 1
Pasos: 4, 3, 1 y 2

Ejercicio 12
1.- Revisin / Evaluacin
2.- Sntesis
3.- Particin
4.- Reconocimiento del problema
5.- Especificacin
6.- Mala comunicacin
7.- Crear modelos
8.- Especificacin de requisitos del software
9.- Flujo de la informacin
10.- Funcin

Ejercicio 13
1.- F
2.- V
3.-F
4.- V
5.- F

37

CONALEP-2011

[Programacin bsica]

6.- V
7.- F
8.- V
9.- V
10.- F

38

CONALEP-2011

[Programacin bsica]

Ejercicio 14
Inicio y fin del algoritmo.
Operacin (accin de datos).
Operacin lgica (toma de decisin).
Entrada/salida de datos.
Lnea de flujo.
Conector (cuando se secciona el diagrama).
Ejemplo de pseudocdigo.

Si Condicin Entonces
Accin A;
Si no
Accin B;
Fin Si

Ejemplo de diagrama de flujo.

Inicio
SI

NO

Condicin

Accin A

Accin B

Fin

Ejemplo de diagrama Nassi-Schneiderman.

Condicin
SI

NO

Accin A

( )

Accin B

Ejemplo de sistema formal.

39

CONALEP-2011

[Programacin bsica]

Ejercicio 15
1.- ( g )
2.- ( f )
3.- ( j )
4.- ( b )
5.- ( i )
6.- ( h )
7.- ( a )
8.- ( c )
9.- ( d )
10.- ( e )

Ejercicio 16
1.- A) Modelo evolutivo
2.- A) Modelo lineal
3.- D) Modelo por prototipos
4.- C) Modelo incremental
5.- D) Modelo por prototipos
6.- B) Modelo en espiral
7.- A) Modelo orientado a objetos
8.- C) Modelo iterativo
9.- C) Ingeniera inversa
10.- D) Reingeniera

40

1
I

2
M

CONALEP-2011

[Programacin bsica]

A
N

4
E

9
P

M
14
E

I
15
P

12
R

13
F

16
E

8
E
L

19
E

10
P

20
P

B
O

I
24
I

22
C

A
J

29
S

N
25
C

C
27
A

17
T

A
23
P

U
21
P

C
18
T

7
D

L
S

5
I
N

C
6
M

11
D

3
A

26
F

C
I

28
F

A
30
B

I
31
M

T
32
C

A
X

33
G

34
O
B
35
J

36
F

E
T

37
P

41

CONALEP-2011

[Programacin bsica]

Segunda parte
Lenguaje C

CONALEP-2011

[Programacin bsica]

2. Lenguaje C
2.1. Antecedentes

Ejercicio 1
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de
los parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V,
si la afirmacin es verdadera.

1. Dennis Ritchie desarroll el lenguaje de programacin C.

2. No todos los compiladores soportan ANSI C.

3. La portabilidad es una gran ventaja del lenguaje C.

4. Podemos decir que el lenguaje C forma parte de C++.

5. El Lenguaje C permite crear programas orientados a objetos.

6. C es el lenguaje predominante en el entorno UNIX, desde sus


inicios.

7. Java tambin se basa en la sintaxis de C.

8. El lenguaje C++ no permite el paradigma orientada a objetos.

9. El lenguaje C fue creado en los laboratorios Edison.

10. El encapsulamiento es una desventaja de la programacin en C.

CONALEP-2011

[Programacin bsica]

Ejercicio 2
Instrucciones: Lea con atencin cada uno de los enunciados que enseguida se muestran.
De las opciones enlistadas despus de ellos, subraye solamente el inciso cuya definicin
corresponda correctamente con el enunciado.

1.- El lenguaje de programacin C fue creado originalmente para el sistema operativo:


a) Linux

b) MS DOS

c) Unix

d) Ensamblador

2.- El lenguaje del que deriva C es:


a) El lenguaje
FORTRAN

b) El lenguaje B

c) El lenguaje
Pascal

d) El lenguaje
COBOL

3.- El lenguaje B fue creado por:


a) Dennis
Ritchie

b) Ken
Thompson

c) Brian
Kernighan

4.- Creador del lenguaje C++:


a) Dennis
b) Brian
Ritchie
Kernighan

c) Ken
Thompson

d) Bjarne
Stroustrup

d) Bjarne
Stroustrup

5.- Variante del lenguaje C, creada por la compaa Microsoft:


a) C

b) C++

c) ANSI C

d) C#

c) ANSI C

d) C#

6.- Versin estndar del lenguaje C:


a) C

b) C++

[Programacin bsica]

CONALEP-2011

7.- Desarrollador del lenguaje BCPL:


a) Martin Richards

b) Ken Thompson

c) Brian
Kernighan

d) Bjarne
Stroustrup

8.- Lenguaje basado en C:


a) Pascal

b) Java

c) Delphi

d) Prolog

9.- Implementacin del lenguaje C, creada para incluir el desarrollo de la interfaz de


usuario:
a) C

b) C++

c) Visual C

d) ANSI C

10.- Versin de C que tiene sus races en C, C++ y Java:


a) C

b) C#

c) C++

d) Visual C

e) ANSI C

CONALEP-2011

[Programacin bsica]

Ejercicio 3
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis la letra correspondiente al inciso que indique la relacin correcta.

a) Ahorro de
memoria

) 1. Es un predecesor del lenguaje C, de bajo nivel.

b) Bajo nivel

2. Una de las grandes ventajas del lenguaje ensamblador,


que le permite trabajar directamente con los recursos de la
)
mquina.

c) Lenguaje C++

) 3. Ventajas que permiten agrupar el cdigo en funciones.

d) Consumo excesivo
de tiempo y
esfuerzo en el
desarrollo

e) Portabilidad

) 5. Enlace dinmico y sobrecarga de funciones y operadores.

f) Son caractersticas
del lenguaje C++

6. A travs de l, se permite el acceso a direcciones de


memoria.

g) Popularidad

7. Esta ventaja permite utilizar varias veces una funcin,


ahorrando y disminuyendo cdigo en el programa.

8. Caracterstica del lenguaje C que permite ejecutar un


programa en una PC o en un equipo MacIntosh,
)
realizando algunas modificaciones en el cdigo fuente.

h) Estructura y
modularidad

4. Lenguaje que proporciona la capacidad para la


programacin orientada a objetos.

CONALEP-2011

i) Apuntador

j) Lenguaje BCPL

[Programacin bsica]
9. Desventaja durante el diseo y mantenimiento de
funciones y clases.

10. Una de las ventajas del lenguaje C, ya que existe una


gran variedad de compiladores, libreras y herramientas
)
de apoyo a la programacin.

CONALEP-2011

[Programacin bsica]

2.2. Estructura general de un programa

Ejercicio 4
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en
el espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Variables globales

Palabras reservadas

else

Identificador

Sentencia

Operadores

Comentarios

Llaves

Variable

Constante

1.- Las

son las variables que se declaran fuera de la funcin main().

2.- Un
es utilizado para referirnos a un valor constante, a una variable o a una
estructura de datos.

3.-

es una palabra reservada en lenguaje C.

4.- Una
coma.

es una orden completa para la computadora y termina con punto y

5.- El cuerpo principal de una funcin est constituido por todas sus lneas de cdigo
fuente, y se delimita con smbolos de
.

6.- Las
un programa en C.

son aquellas que no se pueden utilizar como identificador, dentro de

CONALEP-2011

[Programacin bsica]

7.- Una
es un identificador o nombre que hace referencia a un valor que no
debe cambiar durante la ejecucin del programa.

8.- Los

son componentes sintcticos o tkens del vocabulario del lenguaje C.

9.- Los

sirven para documentar cmo est diseado el programa.

10.- La
es un identificador o nombre de un valor que puede cambiar durante
la ejecucin de un programa.

[Programacin bsica]

CONALEP-2011

2.3. Metodologa para el desarrollo de un programa

Ejercicio 5
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis, la letra correspondiente al inciso que indique la relacin correcta.

a) Archivos de
biblioteca

1. Cuando utilizamos estos archivos los encerramos


particularmente entre < y >. Adems, se encuentran
en el compilador o en el sistema operativo.

b) Prototipo de una
funcin

2. Permite definir smbolos, su uso principal es sustituir


un texto por otro.

c) Bibliotecas de
funciones

3. Permiten al compilador leer, como entrada, una serie


de definiciones disponibles en un archivo.

d) Directiva
#include

4. Son las instrucciones bsicas o conjunto de


extensiones, que van al inicio de un programa.

e) stdio.h

5. Son los archivos de definicin de funciones utilizadas


en un programa en lenguaje C.

f) Librera estndar

6. Son las rdenes que el preprocesador debe compilar,


antes de que se compile el cdigo fuente. Se
)
encuentran en la cabecera de un programa y les
antecede el smbolo #.

g) Instrucciones de
inclusin

h) Directiva
#define

) 8. Declaracin de una funcin.

7. Archivo de cabecera que incluye las funciones de


entrada y salida.

CONALEP-2011

[Programacin bsica]

i) Directivas del
preprocesador

9. En ella se encuentran las libreras de funciones y


tipos de datos especiales; las operaciones de entrada
)
y salida, as como las matemticas y otras.

j) Archivos de
cabecera de la
librera estndar

10. Permite incluir en un archivo de cdigo fuente,


otros archivos de texto.

Ejercicio 6
Instrucciones: Enliste correctamente las partes que correspondan a la cabecera y al cuerpo
de un programa, tomando en consideracin la lista de enunciados que se presenta del lado
derecho.
Cabecera

Funciones propias del programa

Programa principal (main)

Directivas del preprocesador

Prototipos de funcin

Declaracin de variables y constantes locales


Cuerpo del programa
Instrucciones o acciones

Estructuras de control

Estructuras secuenciales

Declaracin de variables globales

CONALEP-2011

[Programacin bsica]

2.4. Ciclo de desarrollo

Ejercicio 7
Instrucciones: Ordene correctamente, de manera cronolgica, las etapas para el desarrollo
de un programa escrito en lenguaje C. Adems, enliste los tipos de errores que se pueden
presentar durante el desarrollo del programa. Tome en consideracin la lista de enunciados
que se presenta del lado derecho.

Lgicos

Etapas

Ejecucin
Edicin
Carga
Diseo
Sintaxis

10

CONALEP-2011

[Programacin bsica]

Compilacin

Errores

Anlisis
Enlace
Avisos
Depuracin
Preproceso

Ejercicio 8
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis, la letra correspondiente al inciso que indique la relacin correcta.

a) .cpp, .cc, .c y .C

b) Ejecutable

1. En esta etapa se crea el cdigo fuente de un programa


escrito en lenguaje C.

2. Etapa en la que se interpretan y ejecutan todas las


directivas del lenguaje C.

3. Si el programa presenta una falla al ejecutarse, en esta


c) Edicin

d) .exe

e) Cdigo objeto

etapa se corrige, volviendo a la etapa de edicin


posteriormente.

4. Extensiones posibles del nombre del archivo que se


genera en la etapa de edicin.

5. Programa final utilizado por el usuario.

11

CONALEP-2011

[Programacin bsica]
6. Realiza el anlisis sintctico, lxico y semntico de un

f) Enlazador

g) Preproceso

h) Carga

i) Compilador

j) Depuracin y
prueba

cdigo fuente; generando adems, un cdigo en


lenguaje ensamblador.

7. Cdigo resultante de la compilacin.

8. Extensin del nombre del archivo de un programa


ejecutable, para el sistema operativo Windows.

9. Agrupa los archivos objeto y edita los enlaces, con la


finalidad de generar un archivo ejecutable.

10. En esta etapa se toma el programa ejecutable y se


transfiere a la memoria, antes de ejecutarse.

12

CONALEP-2011

[Programacin bsica]

CRUCIGRAMA

HORIZONTALES
1.- La estructura
de la otra.

se forma escribiendo las instrucciones o acciones una detrs

4.- Funcin principal de un programa escrito en lenguaje C.


6.- Una estructura de
se basa en expresiones condicionales para determinar el
flujo de la secuencia de instrucciones o acciones.
7.- Componentes sintcticos del lenguaje C.
9.- Se encuentra dentro de un archivo de cabecera.
10.- Cdigo resultante de la compilacin.
12.- El fichero
.h contiene las definiciones y los prototipos de las funciones de
la librera estndar, para la manipulacin de las cadenas de caracteres.
13.- Una de las palabras reservadas del lenguaje C.
14.- Las
del preprocesador son las rdenes que se interpretan antes que el
cdigo fuente sea compilado.
16.- Etapa donde se pasa el programa ejecutable a la memoria.
17.- Una de las directivas del preprocesador.
18.- Contiene una serie de instrucciones que realizan una tarea especfica, y puede ser
llamada las veces que sea necesario.

VERTICALES
2.- Programa final entregado al usuario.
3.- El fichero
.h contiene las definiciones y los prototipos de las funciones de
la librera estndar, para el manejo de la entrada y la salida.
4.- Cadena de caracteres identificada por un nombre con la directiva #define, en la cabecera
de un programa.
5.- Dividir un programa complejo en partes ms pequeas y manejables.

13

CONALEP-2011

[Programacin bsica]

8.- Directiva del preprocesador para definir constantes simblicas o macros.


11.- El
en punto y coma.

de una funcin es la definicin de la funcin, sin cuerpo y terminada

13.- Tipo de error creado por funciones que no son definidas en ningn archivo objeto y en
ninguna librera.
15.- El fichero
.h contiene las definiciones y los prototipos de las funciones de
la librera estndar, relacionadas con las matemticas.

3
5

10
11
12

13

14

15
16

17

18

14

CONALEP-2011

[Programacin bsica]

APNDICE

Ejercicio 1
1.- (V); 2.- (V); 3.- (F); 4.- (V); 5.- ( F); 6.- (V); 7.- (V); 8.- (F); 9.- (F); 10.- (F)

Ejercicio 2
1.- c); 2.- b); 3.- b); 4.- d); 5.- d); 6.- c); 7.- a); 8.- b); 9.- c); 10.- b)

Ejercicio 3
1.- (j); 2.- (b); 3.- (h); 4.- (c); 5.- (f); 6.- (i); 7.- (a); 8.- (e); 9.- (d); 10.- (g)

Ejercicio 4
1.- Variables globales; 2.- Identificador; 3.- else; 4.- Sentencia; 5.- Llaves; 6.- Palabras
reservadas; 7.- Constante; 8.- Operadores; 9.- Comentarios; 10.- Variable

Ejercicio 5
1.- (j); 2.- (h); 3.- (g); 4.- (c); 5.- (a); 6.- (i); 7.- (e); 8.- (b); 9.- (f); 10.- (d)

Ejercicio 6
CABECERA
En cualquier orden:
1.- Directivas del preprocesador
2.- Prototipos de funcin
3.- Declaracin de variables globales
CUERPO DEL PROGRAMA
En cualquier orden:

15

CONALEP-2011

[Programacin bsica]

1.- Programa principal (main)


2.- Declaracin de variables y constantes locales
3.- Instrucciones o acciones
4.- Estructura secuencial
5.- Estructura de control
6.- Funciones propias del programa

Ejercicio 7
Etapas
1.- Anlisis
2.- Diseo
3.- Edicin
4.- Preproceso
5.- Compilacin
6.- Enlace
7.- Carga
8.- Ejecucin
9.- Depuracin
Errores
En cualquier orden:
a) Sintaxis
b) Avisos
c) Lgicos

Ejercicio 8
1.- (c); 2.- (g); 3.- (j); 4.- (a) ; 5.- (b); 6.- (i); 7.- (e); 8.- (d); 9.- (f); 10.- (h)

16

[Programacin bsica]

CONALEP-2011

CRUCIGRAMA
1S

2E N

J
E
6C

5
M
O
7I

3S
O

U
E

L
A

B
9L I

A
C

8D

F
B

N
O

11
P
12S T

A
C

13E L

O
R

N
I

T
17 I N

P
N

17

15
M

L
16C A

18 F U

10

14D

4M A

CONALEP-2011

[Programacin bsica]

Tercera parte
Tipos de datos, variables y constantes

CONALEP-2011

[Programacin bsica]

3. Componentes del lenguaje C


3.1. Tipos de datos, variables y constantes

Ejercicio 1
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en
el espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Constantes

Tipo de dato

Char

Locales

Variables

Short

Float

Declaracin

Nombre

Apuntador

Reservadas

Enunciados:
1.-Las
programa.

son datos definidos, cuyo valor no cambia durante la ejecucin del

2.-El modificador
es un modificador de la declaracin de tipo, que reduce el
espacio de almacenamiento en memoria de los enteros.
3.- Para declarar una variable se le debe asignar un
un
.

4.- La declaracin int *punt1; hace referencia a una variable de tipo

5.- Las
son los elementos ms utilizados para almacenar datos, su valor
puede reasignarse durante la ejecucin del programa.
6.- El tipo de variable
7.- Las palabras clave o
8.- El tipo de variable
9.- La
en el programa.

, hace referencia a un valor de tipo carcter.


no pueden utilizarse como nombre de variable.
es numrico, con valor decimal.
de variables y constantes se debe realizar antes de su utilizacin

CONALEP-2011

[Programacin bsica]

10.- Las variables


alguna otra funcin.

estn ubicadas dentro del programa principal main() o

Ejercicio 2
Instrucciones: Complete de forma correcta el diagrama siguiente referido a los tipos de
datos. Para tal fin, escriba una de las respuestas que se proporcionan a continuacin, dentro
de cada uno de los recuadros vacos en el diagrama.
Respuestas:
Entero

Arreglos

Booleano

Simples

Cadenas

Apuntador

Flotante

Arreglos >1 dimensin

Heterogneos

Registros

Carcter

Doble precisin

Tipos de
datos
Homogneos

Compuestos

Uniones

CONALEP-2011

[Programacin bsica]

3.2. Identificadores y palabras reservadas


Operadores, precedencias y evaluaciones en cortocircuito
Ejercicio 3
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la
columna de la izquierda con uno solo de los enunciados en la columna de la derecha.
Escriba dentro de los parntesis, la letra correspondiente al inciso que indique la relacin
correcta.

a) Operador de
asignacin

1. Realizan operaciones matemticas como suma, resta,


multiplicacin, divisin, etc.

b) For

) 2. Conjunto de variables, constantes y operadores.

c) Expresin

d) Evaluacin en
cortocircuito

4. Nombres de las funciones, las variables o las


constantes del programa; cuyo primer carcter puede
)
ser una letra o un guin bajo, y que no puede
contener otro tipo de caracteres especiales.

e) Operadores
lgicos

5. Modificador de los tipos de variables y constantes


enteras.

f) int

6. Palabra reservada utilizada en instrucciones de


repeticin.

g) Identificadores

7. Palabra reservada del lenguaje C, empleada para salir


de una instruccin de repeticin.

3. Palabra reservada para declarar un tipo de variable o


constante.

CONALEP-2011

h) Long

[Programacin bsica]

) 8. Asigna un valor a una variable.

i) break

9. Tipo de optimizacin realizada por un compilador o


un intrprete, en el cual se evala el primer operando
)
de una operacin booleana y, si el resultado de esta
evaluacin determina la solucin de la expresin
completa, ya no se evala el segundo operador.

j) Operadores
aritmticos

10. Permiten la
constantes

comparacin

entre

variables

3.3. Operadores, precedencias y evaluaciones en cortocircuito


Conversiones

Ejercicio 4
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Escriba una de las respuestas, que se muestran en el recuadro siguiente, en el
espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Precedencia

De incremento

Variables estticas

Lgicos

Asignacin

Conversiones

Relacionales

Casting

Bloque de instrucciones

Bits

Enunciados:
1.- La
es el orden de prioridad que tienen los operadores en la
evaluacin, dentro de la compilacin.
2.- Las

cambian el tipo de valor almacenado en una variable.

3.- En una operacin de


una variable.

podemos cambiar el tipo de valor de

CONALEP-2011

[Programacin bsica]

4.- El
otro.

es la conversin clara y precisa de un tipo de variable a

5.- Las
tienen memoria asignada durante la ejecucin del
programa, su valor permanece aunque la funcin donde est definida acabe y se vuelva a
ejecutar.
6.- Los operadores

van aumentando el valor de la variable.

7.- Los operadores

calculan valores de falso o verdadero.

8.- Los operadores de manejo de


variables bit a bit.
9.- El
de llaves.

permiten manipular las

es el conjunto de instrucciones delimitado por smbolos

10.- Los operadores


otros.

utilizan los smbolos <, >, <= y >=; entre

3.5. Conversiones

Ejercicio 5
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la
columna de la izquierda con uno solo de los enunciados en la columna de la derecha.
Escriba dentro de los parntesis, la letra correspondiente al inciso que indique la relacin
correcta.
1. Se utilizan para marcar el inicio y fin de una funcin
en lenguaje C.

a) Instrucciones

b) Carcter de escape

) 2. Palabra reservada que es un especificador de tipo.

c) %f

) 3. Funcin utilizada para terminar un programa.

CONALEP-2011

[Programacin bsica]
4. Palabra reservada empleada en una instruccin de
control condicional.

d) Instruccin

e) Llaves { }

) 5. A la diagonal invertida (\), se le conoce como:

f) printf( )

) 6. Lnea de comando terminada por punto y coma.

g) exit( )

h) if

) 8. Carcter de salto de lnea.

i) \n

) 9. Funcin de impresin en pantalla.

j) void

7. Conforman el cuerpo del programa y tambin se les


conoce como sentencias.

10. Especifica un valor de punto flotante en la funcin


printf( ).

3.6. Interaccin con el usuario

Ejercicio 6
Instrucciones: Relacione correctamente cada uno de los conceptos enlistados en la
columna de la izquierda con uno solo de los enunciados en la columna de la derecha.
Escriba sobre la lnea en blanco, la respuesta que indique la relacin correcta.

printf()

1.mensajes de error.

Archivo para escribir

CONALEP-2011

[Programacin bsica]

%s
%d

2.-

Archivo de salida.

3.-

Archivo de entrada.

4.Funcin de entrada de
datos que lee un carcter a la vez.
stderr
5.Funcin utilizada para
imprimir la salida en pantalla.
stdin
%c

putc()

getch()

6.de un carcter.

Formato para impresin

7.de un nmero entero.

Formato para impresin

8.de una cadena de caracteres.

Formato para impresin

9.Formato para impresin


de un nmero de punto flotante.

stdout

10.Funcin, diferente a
printf(), que imprime un carcter en la salida estndar.

%f

3.7. Estructuras de control

Ejercicio 7
Instrucciones: Relacione correctamente cada uno de los conceptos enlistados en la
columna de la izquierda con uno solo de los enunciados en la columna de la derecha.
Escriba sobre la lnea en blanco, la respuesta correspondiente que indique la relacin
correcta.
break

1.Ejecuta un bloque de instrucciones


mientras la expresin sea correcta.

return

2.Ciclo que tiene una instruccin de


inicializacin, otra que verifica si la expresin es verdadera y otra
ms de incremento/decremento.

if

CONALEP-2011

[Programacin bsica]

3.Coloca la condicin de repeticin


al final del ciclo, primero ejecuta las instrucciones en el cuerpo del
ciclo y, posteriormente, verifica si se debe repetir.

for

4.-

if else

Colocar un ciclo dentro de otro.

5.Control de flujo que ejecuta un


bloque de instrucciones si se cumple la condicin de la expresin.
goto

continue

6.Control de flujo que ejecuta un


bloque de instrucciones si se cumple la condicin, si no, ejecuta un
bloque alternativo de instrucciones.

do while

7.Control de flujo que selecciona


(segn la expresin) uno de entre varios bloques de instrucciones.

while

8.instruccin switch.

switch

9.Instruccin que salta al final del


ciclo y fuerza la comprobacin de la condicin de repeticin.

Ciclos anidados

10.etiqueta que se le indica.

Salto incondicional al nombre de

11.-

Retorno de funcin.

Se utiliza para salir de la

Ejercicio 8
Instrucciones: Complete correctamente la sintaxis de las plantillas de instruccin
mostradas en la columna de la izquierda. Para tal fin, escriba en cada una de las lneas en
blanco, uno de los enunciados proporcionados en la columna de la derecha.
(

Instrucciones o sentencias

{
;
}

while
expresin

Instrucciones o sentencias
{
;

while

CONALEP-2011

[Programacin bsica]

do
expresin

Instrucciones o sentencias

{
;

Condicin

for
inicializacin
actualizacin

Instrucciones o sentencias

{
;

Expresin

if

expresin

{
;

Instrucciones o sentencias (condicin falsa)

else

Instrucciones o sentencias (condicin verdadera)

if

Instrucciones o sentencias 2
break

:
;
;

case 1
break

CONALEP-2011

[Programacin bsica]

:
;
;

switch

;
;

break

case 2

Instrucciones o sentencias 1
}
expresin
default
Instrucciones o sentencias 3

CRUCIGRAMA

HORIZONTALES

1.- Control de flujo que selecciona (segn la expresin) uno de entre varios bloques de
instrucciones.
5.- Se utiliza para salir de la instruccin switch.
7.- Si el bloque de instrucciones correspondiente a la instruccin if no se ejecuta, se ejecuta
el bloque de instrucciones que corresponde a esta instruccin.
8.- Instruccin que se ejecuta cuando ninguna opcin satisface la expresin condicional en
la instruccin switch.
10.- Salto incondicional al nombre de etiqueta que se le indica.
11.- Instruccin que salta al final del ciclo y fuerza la comprobacin de la condicin de
repeticin.
14.- Repeticin de un bloque de instrucciones.
15.- Retorno de funcin.

10

CONALEP-2011

[Programacin bsica]

VERTICALES

2.- Instruccin que ejecuta un bloque de instrucciones mientras la expresin sea correcta.
3.- Funcin que permite imprimir mensajes en pantalla.
4.- Opcin vlida de la instruccin de control switch.
6.- Ciclos colocados dentro de otro ciclo.
9.- Se utiliza junto con while.
10.- Funcin de entrada de datos.
12.- Control de flujo que ejecuta un bloque de instrucciones si se cumple la condicin de la
expresin.
13.- Ciclo que tiene una instruccin de inicializacin, otra que verifica si la expresin es
verdadera y otra ms de incremento/decremento.

11

CONALEP-2011

[Programacin bsica]
1
3

5
6
7

8
9
10
11

12
13
14
15

12

CONALEP-2011

[Programacin bsica]

3.8. Ejercicios prcticos


Para simplificar la revisin de este documento, se aclara que los ejercicios estn
alternados, es decir, se presenta la solucin de un ejercicio y se propone que el
siguiente sea resuelto por el lector.
El significado de la nomenclatura utilizada, por ejemplo Ejercicio 2.4.3, tiene la
explicacin siguiente: el primer nmero corresponde a la unidad; el segundo
corresponde al tema especfico; y, el tercero, es el nmero de ejercicio, es decir,
unidad 2, tema 4 y ejercicio o programa nmero 3.
Por otra parte, hay dos tipos de prcticas, las prcticas normales y las de paso a paso.
Para las prcticas normales se recomienda utilizar los ejercicios propuestos para que
sean resueltos por el lector y, para las prcticas paso a paso, guiarse con los ejercicios
resueltos, nicamente se tendra que seguir el procedimiento siguiente:
1. Encender el equipo de cmputo.
2. Abrir sesin del ambiente grfico Windows.
3. Ejecutar la aplicacin que se tenga instalada para editar los programas escritos
en lenguaje C.
4. Transcribir el programa en cuestin.
5. Guardar el archivo que contiene el programa transcrito.
6. Compilar el programa.
7. Iniciar un proceso de depuracin del programa (correccin de errores) hasta
cerciorarse de que el programa cumpla con el objetivo establecido.
8. Imprimir el resultado de la ejecucin o ejecuciones del programa (paso
opcional).

Ejercicio 3.7.1: Elaborar un programa en lenguaje C que calcule la edad de una persona,
conociendo su ao de nacimiento.
a) Anlisis: El resultado que se pide es la EDAD de la persona en aos, entonces, como ya se
conoce el ao actual, lo nico que se requiere es solicitar un dato adicional. Esto es, en
qu ao naci la persona; con eso se tiene la informacin necesaria para hacer el clculo.
Adems, considere que el ao se debe manejar a 4 dgitos, tanto el ao actual como el ao
en el que naci la persona, esto para el funcionamiento correcto del programa.
b) Codificacin: Para elaborar el programa se sugiere emplear las instrucciones para lectura
de datos por teclado y de salida por pantalla. Respecto a la declaracin de variables,
solamente es necesaria una y del tipo entero; porque el ao actual se puede manejar
directamente como valor tecleado dentro del cdigo fuente, al momento de hacer el
clculo, o bien, opcionalmente se puede declarar una segunda variable e inicializarla
directamente con el dato que ya se conoce.
c) Comprobacin: Por ltimo, el lector puede probar el programa con sus propios datos, es
decir, introduciendo su ao de nacimiento y, as, verificar que efectivamente el programa
indique su EDAD correcta. Luego se puede probar con la edad de algn compaero o

13

CONALEP-2011

[Programacin bsica]

compaera. Finalmente, Qu resultado indica el programa si, como ao de nacimiento,


se pone 2050?

Ejercicio 3.7.2: Elaborar un programa en lenguaje C, que calcule la antigedad de una persona,
conociendo en qu ao ingres a la empresa.
a) Anlisis: El resultado que se pide es la ANTIGEDAD del empleado en aos, entonces,
como ya se conoce el ao actual, lo nico que se requiere es solicitar un dato adicional
ms. Esto es, en qu ao comenz a trabajar en la empresa el empleado; y con eso se
tiene la informacin necesaria para hacer el clculo. Adems, considere que el ao se debe
manejar a 4 dgitos, tanto el ao actual como el ao en el que comenz a laborar la
persona, esto para el funcionamiento correcto del programa.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla. Respecto a la declaracin de variables,
solamente es necesaria una, del tipo entero, para el ao en el que ingres el empleado a la
empresa o institucin, porque el ao actual se puede manejar directamente como valor
tecleado dentro del cdigo fuente, al momento de hacer el clculo, o bien, opcionalmente
se puede declarar una segunda variable e inicializarla directamente con el dato que ya se
conoce.
c) Comprobacin: Por ltimo, se puede probar el programa con los datos de un profesor o el
padre del lector, es decir, introduciendo los datos proporcionados por el profesor y, as,
verificar que efectivamente la antigedad sea la correcta. Luego se puede probar con los
datos de alguno de los padres. Finalmente, Qu resultado indica el programa si, como
ao de ingreso, se pone 2021?

Ejercicio 3.7.3: Calcular el precio de un terreno, suponiendo que se conoce el precio por metro
cuadrado y las medidas del terreno. Desarrolle un programa que resuelva el planteamiento
anterior.
a) Anlisis: El resultado que se pide es el precio de un terreno, para esto se requiere hacer
varias preguntas al usuario del programa. Esto es, las medidas del terreno y el precio del
metro cuadrado. Aqu lo importante es la declaracin adecuada de variables, para que se
almacenen correctamente los datos y se logre el clculo acertado del programa.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una vez por cada
pregunta. Respecto a la declaracin de variables, aqu se van a requerir al menos cinco;
con la ventaja de que todas pueden ser del mismo tipo. Se realizar un mal manejo de
memoria, ya que unas variables van a guardar cifras pequeas (como las medidas del
terreno) y, otras, valores muy grandes (como el precio del terreno). Respecto a los
clculos, puede hacerse una operacin, sin embargo, se recomienda calcular primero el

14

CONALEP-2011

[Programacin bsica]

rea del terreno y, posteriormente, obtener el valor del terreno con el precio por metro
cuadrado.
c) Comprobacin: Finalmente, se puede ejecutar el programa con datos ficticios o reales. En
el caso de los reales, se pueden ver anuncios en el peridico en la seccin de venta de
terrenos y, con esos datos, probar el programa. Ahora bien, para comprobar las
operaciones, se pueden manejar cantidades pequeas o mltiplos de 10 y eso permitir
saber si las operaciones son las correctas. Por ejemplo, si se dice que el terreno mide 10 x
10 metros, eso da como resultado 100m2; y si se considera que el precio por metro
cuadrado es de $1.00 peso, el resultado final deber ser $100.00 pesos. Intente con esta
ltima informacin y verifique la exactitud del programa.

Ejercicio 3.7.4: Calcular el precio de una casa, suponiendo que se puede conocer el precio del
metro cuadrado de construccin y las medidas de la casa. Desarrolle un programa que resuelva el
planteamiento anterior.
a) Anlisis: El resultado que se pide es el precio de una casa, por lo que se requiere hacer
varias preguntas al usuario del programa. Esto es, las medidas de la casa y el precio del
metro cuadrado de construccin. Aqu lo importante es la declaracin adecuada de
variables, para que se almacenen correctamente los datos y se logre el clculo correcto del
programa.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, aqu se van a requerir al menos cinco;
con la ventaja de que todas pueden ser del mismo tipo. Se realizar un mal manejo de
memoria, ya que unas van a guardar cifras pequeas (como las medidas del terreno) y,
otras, valores muy grandes (como el precio del terreno). As que valore esta consideracin,
para mejor declarar al menos dos tipos de variables. Respecto a los clculos, puede
hacerse una sola operacin, sin embargo, se recomienda calcular primero el rea de la
casa y, posteriormente, obtener el valor de la vivienda con el precio por metro cuadrado
de construccin.
c) Comprobacin: Finalmente, se puede ejecutar el programa con datos ficticios o reales. En
el caso de los reales, se pueden ver anuncios en el peridico en la seccin de venta de
casas y llamar para solicitar las medidas, con esos datos se puede probar el programa. De
otra forma, usando datos ficticios, se pueden comprobar las operaciones al manejar
cantidades pequeas o mltiplos de 10, eso permitir saber fcilmente si las operaciones
son las correctas. Por ejemplo, si se dice que la casa mide 10 x 10 metros, eso da como
resultado 100 m2; y si se considera que el precio por metro cuadrado de construccin es
de un $1.00 peso, el resultado final deber ser $100.00 pesos. Intente con esta ltima
informacin y verifique la exactitud del programa.

15

CONALEP-2011

[Programacin bsica]

Ejercicio 3.7.5: Generalmente muchos artculos electrnicos tales como computadoras, laptops,
televisores LCD, entre otras cosas; se cotizan en dlares. Elabore un programa en lenguaje C que
convierta de dlares a pesos, a partir de conocer la cantidad en dlares, para que facilite al
usuario conocer el precio de los artculos electrnicos, en moneda nacional.
a) Anlisis: En concreto, el propsito es convertir dlares a pesos, para ello necesitamos
conocer la cotizacin del dlar, aparte del precio del producto. Adems de la declaracin
correcta de las variables, para que la informacin se almacene en memoria
apropiadamente, se requieren al menos dos tipos diferentes de variables, uno que maneje
cantidades cerradas y, otro, con decimales.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables y tomando en cuenta la ltima
consideracin del anlisis, ser necesario contar con dos variables que almacenen
cantidades con decimales, para que no haya perdida de centavos en el clculo y,
lgicamente, errores en el resultado.
c) Comprobacin: Para probar el programa, al momento de la ejecucin, suponga que un
artculo cuesta $100 dlares, y que el dlar est en $10 pesos. Anote el resultado. Ejecute
el programa nuevamente y ahora suponga que el artculo cuesta $1,000 dlares,
escribiendo la misma cotizacin de $10 dlares. Anote el segundo resultado. El segundo
resultado deber ser igual al primero, pero con un cero de ms. Intente con esta
informacin y verifique la exactitud del programa.

Ejercicio 3.7.6: Actualmente hay navegadores GPS que permiten circular en ciudades extraas y
llegar a los sitios de inters sin mayores contratiempos. Colabore con este tipo de aplicaciones
para que se les incorpore una opcin para convertir millas a kilmetros y que, de esa forma, se
evite el que sean multados los extranjeros o conductores, cuyo auto maneje la velocidad en millas
por hora. Elabore el programa en lenguaje C, partiendo de que 1 milla equivale a 1.6 km.
a) Anlisis: En resumen, se pide convertir millas a kilmetros, a diferencia del ejercicio
anterior, aqu ya se sabe la equivalencia entre millas y kilmetros. Esto simplifica la
solicitud de datos, ya que nicamente se requiere solicitar la velocidad en millas a la que
viaja la persona.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, hay que tomar en cuenta la conversin
de tipos que hace el lenguaje C, esto porque la equivalencia cuenta con decimales y, si no
se cuida este detalle, al momento de declarar la variable que almacene ese dato, se
pueden provocar errores en el resultado.
c) Comprobacin: Para probar el programa, al momento de la ejecucin suponga que la
velocidad es de 100 millas por hora, por lo que el resultado deber ser 160 km/h. Ejecute

16

CONALEP-2011

[Programacin bsica]

el programa nuevamente y ahora suponga que la velocidad es de 10 millas por hora, Cul
ser el resultado con estos datos?

Ejercicio 3.8.1: Muchas tiendas ofrecen promociones donde aplican descuentos sobre
descuentos, generando una guerra de precios y de rebajas. Aunque los telfonos celulares
traen calculadora, muchas veces a la gente se le complica realizar estos clculos. Entonces,
elabore un programa en lenguaje C que calcule el precio final de un producto, conociendo el
precio inicial y el porcentaje de descuento que, con algunos arreglos mnimos, posteriormente
podra ser incorporado a dichos celulares. nicamente se preguntara el precio inicial, qu
porcentaje de descuento tiene y ya, se informara el precio final.
a) Anlisis: Revisando el ejercicio se puede notar, directamente, que se requiere la solicitud
de dos cosas: el precio del producto y su porcentaje de descuento respectivo. Si bien es
cierto que el clculo se puede hacer en una sola operacin, hay una diferencia con
respecto a los ejercicios previos, donde solamente se peda un resultado; aqu se estn
pidiendo dos, uno es cuntos pesos se est ahorrando la persona y, el otro dato, es el
precio final de la prenda; es decir, una vez aplicado su descuento correspondiente.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesaria, una por cada
pregunta. Respecto a la declaracin de variables, hay que tomar en cuenta la conversin
de tipos que hace el lenguaje C y, esto, porque muchas de las veces el precio se maneja en
pesos y centavos; si no se cuida ese detalle al momento de declarar la variable que
almacenara esos datos, se pueden provocar errores en el resultado. Otra consideracin es
que, al menos, ser necesario realizar dos operaciones, una donde se obtenga el
descuento y otra para el precio final del artculo.
c) Comprobacin: Al ejecutar el programa suponga que un artculo cuesta $100 pesos y
cuenta con un descuento del 10%, Cules son los resultados con esos datos? Los
resultados de su programa son $10 pesos de descuento y el precio final es de $90 pesos?
Si es as, pruebe el programa nuevamente con datos que vienen en la publicidad de las
empresas.

Ejercicio 3.8.2: Elabore un programa en lenguaje C que calcule el sueldo final de un trabajador y,
que como salida, muestre en cuntos pesos se increment el salario y cul sera su sueldo final.
Tomando como base el sueldo inicial y el porcentaje de incremento.
a) Anlisis: Revisando el ejercicio se puede notar cierta similitud al ejercicio anterior. Si bien
es cierto que el clculo se puede hacer en una sola operacin, nuevamente se pide
presentar dos resultados; uno es cuntos pesos est ganando la persona de ms y, el otro
dato, es el sueldo final; es decir, con su correspondiente incremento salarial.

17

CONALEP-2011

[Programacin bsica]

b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, hay que tomar en cuenta nuevamente la
conversin de tipos que hace el lenguaje C y, esto, porque al obtener el incremento
salarial es necesaria una divisin; si no se cuida este detalle al momento de declarar la
variable que almacenara esos datos, se pueden provocar errores en el resultado. Otra
consideracin es que, al menos, ser necesario realizar dos operaciones, una donde se
obtenga el incremento salarial y, otra, para el sueldo final del trabajador.
c) Comprobacin: Al ejecutar el programa suponga que una persona gana $100 pesos y que
su incremento salarial es del 10%, Cules son los resultados con esos datos? $10 pesos
de incremento y el sueldo final es de $110 pesos? Si es as, ahora pruebe el programa
nuevamente con datos que le pueda proporcionar un profesor o alguno de sus padres.

Ejercicio 3.8.3: Calcular el nmero mximo de fotos que le caben a una cmara digital, utilizando
la mxima resolucin permitida. Tomar en cuenta que la capacidad de las memorias es variable.
Desarrolle un programa que resuelva el planteamiento anterior.
a) Anlisis: Al leer el ejercicio, observamos que implcitamente viene una equivalencia, en
otras palabras, podemos preguntar la capacidad en gigabytes de la cmara y tambin
podemos solicitar la mxima resolucin por foto que permite la cmara, pero aqu viene la
pregunta A cuntos bytes equivale un megapixel? Sin esta informacin, no se estara en
condiciones de resolver el ejercicio. Por lo que el primer paso es investigar ese dato y,
posteriormente, realizar un par de operaciones aritmticas para obtener el resultado
solicitado.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, es necesario manejar al menos dos tipos
distintos de datos, es decir, uno para almacenar primero los datos del tipo entero y, como
esta solucin requiere de un par de divisiones, entonces el otro tipo de variable tendra
que ser del tipo float, para que se puedan conservar los decimales.
c) Comprobacin: Al ejecutar el programa pida a un compaero que tenga telfono celular
con cmara, los datos de la resolucin y la capacidad de la memoria, e infrmele el
resultado para que l o ella le digan si es correcto. Tambin lo que se puede hacer es
conseguir informacin de las cmaras en publicidad donde las anuncian y que,
generalmente, incluyen esos datos.

18

CONALEP-2011

[Programacin bsica]

Ejercicio 3.8.4: Calcular el nmero mximo de canciones en formato MP3 que le caben a un
reproductor de msica porttil. Tomar en cuenta que la capacidad de las memorias es variable y
considerar un tamao promedio de las canciones. Desarrolle un programa que resuelva el
planteamiento anterior.
a) Anlisis: Este ejercicio tiene cierta similitud al ejercicio 3.8.3, pero con una diferencia
importante porque aqu s sabemos que 1 GB equivale a 1,024 megabytes. Hay una ligera
complicacin dado que el tamao de las canciones es variable, por estar en relacin con la
duracin, y sabemos que no todas las canciones duran lo mismo. Sin embargo, se nos pide
considerar un tamao promedio, lo que simplifica la solucin, es decir, que podemos
suponer que todas las canciones tienen 5 MB de tamao, por lo que nicamente ser
necesario solicitar la capacidad del telfono celular y, despus de la operacin
correspondiente, podemos dar solucin a este ejercicio.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, es necesario manejar al menos dos tipos
distintos de datos, es decir, uno para almacenar primero los datos del tipo entero y, como
esta solucin requiere del uso de divisiones, entonces el otro tipo de variable tendra que
ser del tipo float, para que se puedan conservar los decimales.
c) Comprobacin: Al ejecutar el programa pregunte a un compaero que tenga telfono
celular, la capacidad de la memoria y suponga que el tamao por cancin sea de 5 MB.
Sorprndalo informndole cuantas canciones puede guardar en su telfono,
aproximadamente. Tambin puede usar este programa si se quiere comprar un telfono
celular y que, probando con diferentes capacidades, vea cual le conviene ms.

Ejercicio 3.8.5: Cuntos discos DVD se necesitan para hacer un respaldo de una estacin de
radio, la cual tiene una amplia coleccin musical en discos compactos? Desarrolle un programa
que resuelva el planteamiento anterior.
a) Anlisis: Este ejercicio trae implcita una tarea adicional y consiste en investigar, ya sea
cuntos discos CD caben en un solo DVD, o bien, si a un disco CD le caben 700 MB, eso a
Cuntos GB equivale? El punto de partida es que sabemos que 1 GB equivale a 1,024
megabytes, resuelta la tarea anterior, estaremos en condiciones de dar solucin a este
ejercicio.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, es necesario manejar al menos dos tipos
distintos de datos, es decir, uno para almacenar primero los datos del tipo entero y como
esta solucin requiere del uso de divisiones, entonces el otro tipo de variable tendra que
ser del tipo float para que se puedan conservar los decimales.

19

CONALEP-2011

[Programacin bsica]

c) Comprobacin: Al ejecutar este programa tome en cuenta la siguiente proporcin, por


cada 4 discos de CD se ocupar un DVD, pensando en que cada CD almacene 1 GB. Esto no
es cierto porque los CD almacenan 700 MB, pero sirve como aproximacin para
determinar si la solucin proporcionada por el programa es correcta. Entonces, si se pone
que la radio tiene 10 CDs, se ocuparn entre 1 y 2 DVDs para realizar el respaldo solicitado.
Pero si se ponen 100 CDs, entonces es de pensar que, mximo, se ocuparn 40 DVDs para
el respaldo. Recuerde que, lgicamente, la cifra real ser menor a la que estamos
suponiendo.

Ejercicio 3.8.6: Calcular el nmero mximo de videos que caben en un celular. Tomar en cuenta
que la capacidad de las memorias es variable y considerar, tambin, un tamao promedio de los
videos. Desarrolle un programa que resuelva el planteamiento anterior.
a) Anlisis: El propsito de este ejercicio es poner en prctica todos los conocimientos
aplicados en los ejercicios previos. As que la intencin bsica es reafirmar los diferentes
elementos que conforman un programa, como son, instrucciones bsicas para solicitar
datos, declaraciones adecuadas en las variables con sus diferentes tipos y la manera
correcta de hacer clculos con las operaciones respectivas.
b) Codificacin: Para elaborar el programa, se sugiere emplear las instrucciones para lectura
de datos por teclado y salida por pantalla, las veces que sea necesario; una por cada
pregunta. Respecto a la declaracin de variables, es necesario manejar al menos dos tipos
distintos de datos, es decir, uno para almacenar primero los datos del tipo entero y como
esta solucin requiere del uso de divisiones, entonces el otro tipo de variable tendra que
ser del tipo float para que se puedan conservar los decimales.
c) Comprobacin: Al ejecutar el programa pregunte a un compaero que tenga telfono
celular, la capacidad de la memoria y suponga que el tamao por video sea de 10 MB.
Sorprndalo informndole cuntos videos puede guardar en su telfono,
aproximadamente. Tambin puede usar este programa si se quiere comprar un telfono
celular y que, probando con diferentes capacidades, vea cual le conviene ms.

Ejercicio 3.9.1: Modificar el programa del ejercicio 3.7.2 para que presente un mensaje cuando
una persona tenga ms de 30 aos trabajando, donde informe que ya se puede jubilar.
a) Anlisis: Al ser este un ejercicio ya resuelto, se simplifica la adecuacin que se pide,
porque ya tenemos el resultado, ahora lo que se solicita es incluir un mensaje donde se le
avise a la persona que puede estar en condiciones de jubilarse.
b) Codificacin: Respecto al cdigo, la variante a incluir es el uso de la estructura de control
if(), la cual permite comparar la antigedad de la persona con los 30 aos de antigedad
requeridos, como mnimo, para la jubilacin .

20

CONALEP-2011

[Programacin bsica]

c) Comprobacin: Al ejecutar el programa pruebe poniendo que un trabajador comenz en


1980 y verifique el resultado. Posteriormente, ejecute el programa con un trabajador que
comenz en 1990 y revise el resultado, Por qu en el primer caso s aparece el mensaje y
en el otro no? Qu pasa si pone el dato para alguien que tenga exactamente 30 aos,
aparecer el mensaje o no? Por qu?

Ejercicio 3.9.2: Elaborar un programa en lenguaje C que presente un mensaje avisando si hace
calor, cuando la temperatura sea mayor a 30 C. Para ello, debe pedir la temperatura en grados
Fahrenheit y hacer la conversin correspondiente, de acuerdo a la siguiente frmula: C = [Grados
Fahrenheit] - 32 x (5 / 9).
a) Anlisis: Adicionalmente al resultado de una conversin de grados Fahrenheit a
Centgrados, es necesario informar si esa temperatura es clida o no. En otras palabras, ya
se da la operacin que permite la conversin, nicamente es necesario comparar ese dato
con una temperatura base, en este caso 30 C y, si es superior, avisar que es un da clido.
b) Codificacin: Respecto al cdigo, despus de preguntar la temperatura en grados
Fahrenheit y hacer el clculo para efectuar la conversin, ser necesario incluir el uso de la
estructura de control if(), la cual permite comparar la temperatura obtenida contra los
30 C, y avisar si es mayor.
c) Comprobacin: Probar el programa escribiendo 120 grados Fahrenheit y verificar el
resultado, despus ejecute el programa con 80 grados Fahrenheit y revise el resultado
Por qu en el primer caso s aparece el mensaje y en el otro no? En qu casos aparecer
el mensaje y en cules no? Por qu?

Ejercicio 3.9.3: Calcular qu tiempo le lleva a una impresora en minutos (o en horas si es mayor a
60 minutos) el imprimir un libro con formato PDF. Suponiendo que imprime a 10 ppm.
Desarrolle un programa que resuelva el planteamiento anterior.
a) Anlisis: En este ejercicio hay que solicitar el nmero de pginas que tiene el libro con
formato PDF, y hacer la operacin para saber el tiempo que le lleva imprimir esas pginas.
En este caso ya sabemos la velocidad de la impresora, por lo que no es necesario pedir ese
dato; lo que s se requiere es convertir a horas cuando la duracin sea mayor a 60
minutos. Como la impresora puede tardar en imprimir el documento varios minutos o
varias horas, al mostrar el resultado ser necesario expresarlo en las unidades
correspondientes. Tambin, se observa que aqu ya no se pide imprimir mensaje alguno,
sino ms bien, realizar un clculo adicional que depende del resultado del primero.
b) Codificacin: Respecto al cdigo, despus de preguntar el tamao del libro y hacer el
clculo para conocer el tiempo que le lleva imprimir esas pginas, ser necesario
nuevamente incluir el uso de la estructura de control if(), la cual permite comparar si el

21

CONALEP-2011

[Programacin bsica]

tiempo es mayor a 60 y, si es mayor, hacer la conversin a horas para luego asignar, en


una variable del tipo carcter, la letra h para representar las horas.
c) Comprobacin: Probar el programa pensando que el libro es de 500 pginas y observar el
resultado. Ejecute nuevamente el programa y d como dato 1,000 pginas; a fin de revisar
los resultados y compare Qu diferencias nota o not?

Ejercicio 3.9.4: Calcular el tiempo en minutos u horas que le lleva a un auto ir de Morelia a
Ptzcuaro. Suponiendo que viaja a la velocidad mxima permitida y sabiendo que
velocidad = distancia / tiempo. Desarrolle un programa que resuelva el planteamiento anterior.
a) Anlisis: Para este ejercicio, hay que solicitar la velocidad permitida y hacer la operacin
para conocer el tiempo. En este caso ya sabemos que la velocidad es igual a la distancia
entre el tiempo, pero como ya se conoce la distancia (suponga que son 60 Km) y la
velocidad, ser necesaria una tarea adicional, esto es, alterar la frmula para que nos
permita conocer el tiempo. Como el tiempo de viaje puede consistir en varios minutos o
varias horas, al mostrar el resultado ser necesario expresarlo en las unidades
correspondientes. Tambin, se observa que aqu ya no se pide imprimir mensaje alguno,
sino ms bien realizar un clculo adicional, que depende del resultado del primero.
b) Codificacin: Respecto al cdigo, despus de preguntar la velocidad del vehculo y hacer el
clculo para conocer el tiempo que le lleva ir de Morelia a Ptzcuaro, ser necesario
nuevamente incluir el uso de la estructura de control if(), la cual permite comparar si el
tiempo es menor a 1 hora. Si es menor, hacer la conversin a minutos y asignar, en una
variable del tipo carcter, la letra m para representar los minutos.
c) Comprobacin: Probar el programa escribiendo como dato que la velocidad es de 60 Km/h
y observar el resultado. Ahora ejecutar nuevamente el programa y dar como dato 120
Km/h. Revise los resultados y compare Qu diferencias nota o not?

Ejercicio 3.9.5: Calcular el rendimiento de gasolina de un auto, cuya capacidad del tanque es de
45 litros de gasolina. Avisar si tiene problemas mecnicos cuando su rendimiento sea menor al
rendimiento ideal. Desarrolle un programa que resuelva el planteamiento anterior.
a) Anlisis: En ejercicios previos se comparaba el valor de una variable con un dato constante
o fijo y aqu hay una variante, se debe averiguar, porque se necesita preguntar varias cosas
tales como el kilometraje inicial (antes de llenar el tanque) y el kilometraje final
(kilometraje recorrido una vez terminado el tanque). Tambin es importante preguntar
cul es el rendimiento ideal, porque vara de un auto a otro cuando son de diferente
compaa. Es aqu donde aparece la variante, ya que necesitamos comparar el
rendimiento ideal, proporcionado por el usuario, y el otro obtenido al dividir los

22

CONALEP-2011

[Programacin bsica]

kilmetros recorridos entre la capacidad del tanque (45 litros). Con base al resultado de la
comparacin, avisar al conductor de las condiciones de su auto.
b) Codificacin: Despus de solicitar los datos necesarios y hacer los clculos respectivos, se
requerir el uso de la estructura de control if else, la cual permite comparar ambos
rendimientos y, dependiendo del resultado de la comparacin, mostrar los mensajes
correspondientes.
c) Comprobacin: Al ejecutar el programa probar con dos situaciones, es decir, cuando el
rendimiento real sea menor al rendimiento ideal y, luego, otro caso donde el rendimiento
ideal sea igual al real. Compare Qu diferencias nota en ambos casos?

Ejercicio 3.9.7: Una escuela calcula la calificacin final de un alumno a partir de 3 calificaciones
parciales y lo hace promediando los parciales. Calcular el promedio final e informar al alumno si
tiene derecho a BECA, si su promedio es mayor a 9 o, si est reprobado, cuando su promedio sea
menor a 7. Desarrolle un programa en lenguaje C que resuelva el planteamiento anterior.
a) Anlisis: En este ejercicio es necesario solicitar 3 calificaciones y calcular el promedio. Ya
con ese dato listo, se puede comparar para saber la situacin del estudiante, es decir, si
tiene derecho a beca o repite curso.
b) Codificacin: Despus de solicitar los datos necesarios y hacer los clculos respectivos, se
requerir usar dos estructuras if(), lo cual permitir comparar ambos casos y, dependiendo
del resultado de la comparacin, mostrar los mensajes correspondientes.
c) Comprobacin: Al ejecutar el programa probar con las dos situaciones, es decir, cuando el
promedio sea mayor a 9 y, luego, otro caso donde el promedio sea menor a 7. Compare
Qu diferencias nota en ambos casos?

Ejercicio 3.9.8: Calcular el total a pagar en copias fotostticas dependiendo del nmero y
tamao de copias. Desarrolle un programa que resuelva el planteamiento anterior.
a) Anlisis: Para este ejercicio, despus de preguntar la cantidad de copias, es necesario
definir el tamao, porque de eso depende el precio de la copia. En este caso particular se
puede suponer de antemano un monto predefinido para los precios, es decir, que la copia
tamao carta valga 30 centavos y, la oficio, 50. Solicite el tamao de las copias y, ya con
esos datos, haga la operacin correspondiente.
b) Codificacin: En este caso en especial, se puede decir que la variante es que antes de
hacer el clculo respectivo, es necesario primero conocer de qu tamao sac las copias el
usuario y, ya con ese dato, usar la estructura de control simple if-else. Como se va
preguntar el tamao, el usuario puede proporcionar una letra en minscula o mayscula,
as que aqu es adecuado usar los operadores de relacin para obtener el total correcto.
c) Comprobacin: Para notar cmo vara el resultado, pida sacar 100 copias y primero elija
C, para tamao carta y, luego, oficio. Revise qu diferencia nota en el resultado final.

23

CONALEP-2011

[Programacin bsica]

Ejercicio 3.9.9: Un sitio en Internet permite descargar videos y pelculas. Dependiendo del tipo de
conexin es la velocidad de descarga que maneja, es decir, que si la conexin es telefnica, la
velocidad es de 1.28 Kbps y, si es de banda ancha, es de 128 Mbps. Cuntos das u horas le
llevara descargar una pelcula, si elige un tipo de conexin? Desarrolle un programa que pida el
tipo de conexin y el tamao de la pelcula, y resuelva la pregunta planteada.
a) Anlisis: En sntesis, lo que se pide en este ejercicio es solicitar el tamao de la pelcula a
descargar y el tipo de conexin. Con esos datos se puede calcular el tiempo que llevara la
descarga. Aqu tambin la idea es que si la descarga lleva ms de 24 horas, el resultado se
pase a das. Para ello ser necesario dividir el total de horas entre 24, con la finalidad de
averiguar cuntos das llevar la descarga.
b) Codificacin: Es claro observar que se usar la estructura de control if-else, ya sea en
escalera o anidada, ya que al menos se requiere de un par de comparaciones; primero el
tipo de conexin y, luego, saber si lo que va a durar la descarga rebasa las 24 horas, para
realizar la conversin a das.
c) Comprobacin: Este programa tiene 3 variantes, primero es correr el programa con los
dos tipos de conexin y un mismo tamao para la pelcula; luego, dar un tamao enorme
para la pelcula y la conexin ms lenta, para ver si funciona la conversin a das solicitada.

Ejercicio 3.9.10: Elaborar un programa en lenguaje C que solicite el peso y estatura de una
persona e informe cul es su ndice de masa corporal (IMC). Adems, debe informar con
mensajes apropiados la situacin de la persona, de acuerdo al siguiente cuadro:
IMC
Menos de 0.20
Entre 0.20 y 0.25
Entre 0.25 y 0.30
Ms de 0.30

Mensaje
Bajo peso
Peso normal
Peso moderado
Sobrepeso

a) Anlisis: Para resolver el planteamiento anterior es necesario investigar la frmula para


calcular el IMC, porque podemos pedir la estatura y el peso como se solicita, sin embargo,
de manera inicial o intuitiva se desconoce la proporcin correcta entre peso-estatura, a fin
de averiguar si la persona anda en su peso o no. Ya obtenido el resultado se puede dar la
interpretacin correcta de acuerdo al cuadro anterior.
b) Codificacin: La solucin se centra en la estructura de control if-else, que se sugiere
emplear en cascada, contemplando los rangos marcados en el recuadro que aparece
arriba y, de esa manera, nicamente imprimir en pantalla el mensaje apropiado.
c) Comprobacin: Si queremos probar este programa ser necesario combinar los datos y
estatura de las personas, de manera que como resultado nos den un IMC inferior a 0.20,

24

CONALEP-2011

[Programacin bsica]

entre 0.20 y 0.25, de 0.25 a 0.30 y superior a 0.30; para que se pueda verificar la impresin
del mensaje apropiado, adems, de que solo aparece uno de ellos.

Ejercicio 3.9.11: Elaborar un programa en lenguaje C que simule una caja registradora. Es decir,
que a partir del total a pagar informe al cajero el mensaje apropiado, dependiendo de la cantidad
entregada por el cliente, de acuerdo al siguiente cuadro:
Cantidad entregada
por el cliente
Es ms que el total a pagar
Es menos que el total a pagar
Es igual al total a pagar

Mensaje
Su cambio es de: e indicar cunto dinero se devuelve.
Pago insuficiente, faltan: e indicar cunto dinero hace falta.
Gracias por su compra, vuelva pronto.

a) Anlisis: Con un grado de dificultad mayor al ejercicio anterior, el resto de la solucin es


muy similar. Se solicitan un par de datos, el cobro y el pago que hace el cliente; de aqu se
saca la diferencia que existe entre ambos y, ya obtenido el resultado, se imprime en
pantalla el mensaje apropiado.
b) Codificacin: Respecto a la solucin con estructuras de control, nuevamente puede ser
resuelto con una cascada de if-else, contemplando los rangos marcados en el recuadro
que aparece arriba y, de esa manera, nicamente imprimir en pantalla el mensaje
correcto.
c) Comprobacin: Si queremos probar este programa ser necesario combinar los datos de
tal manera que el pago sea mayor al cobro, sean iguales y sea menor el pago al cobro; para
que podamos verificar que el programa solo enva un mensaje en cada caso.

Ejercicio 3.9.12: Elaborar un programa en lenguaje C que simule el cajero de un banco


despachador de dinero. Es decir, que a partir del saldo informe al cliente el mensaje apropiado,
dependiendo de la cantidad solicitada por el cliente, de acuerdo al siguiente cuadro:
Condiciones posibles
Men con cantidades en
billetes circulantes: 20, 50,
100, 200, 500 y 1000.
Cantidad tecleada por el
cliente en mltiplos de 100
Fondos insuficientes

Accin
Retiro autorizador por $ , sealar la cantidad y avisar cul es su
nuevo saldo.
Retiro autorizador por $ , sealar la cantidad y avisar cul es su
nuevo saldo
Lo sentimos, no cuenta con fondos suficientes para hacer ese
retiro.

En todos los casos deber recalcular el saldo final e informar si el cliente cuenta con
fondos suficientes.

25

CONALEP-2011

[Programacin bsica]

a) Anlisis: Aqu la solucin parece simple, ya que nicamente se debera solicitar la cantidad
a retirar y el saldo disponible; para avisarle al usuario el saldo final, o bien, si tiene los
fondos suficientes para hacer el retiro. Donde viene la complicacin es en todas las
combinaciones posibles de retiro, por lo que aqu se hace necesario aplicar una estructura
de control diferente.
b) Codificacin: Como la clave est en las estructuras de control a implementar, sta es
indiscutiblemente la estructura switch(), la cual permite construir mens para que la
persona elija una de las alternativas presentadas y, ya sabiendo la eleccin, se puede
determinar la operacin correcta que permita hacer el descuento respectivo.
c) Comprobacin: Ser necesario la ejecucin del programa varias veces para elegir varias de
las opciones y verificar los diferentes resultados, para de esa forma comprobar el
funcionamiento ptimo del programa. No olvide verificar el caso donde se elija la opcin
de introducir una cantidad y se ponga una cantidad mayor al saldo inicial, verificando el
tipo de mensaje que aparece.

Ejercicio 3.9.13: Elaborar un programa en lenguaje C que simule el servicio que hace una compaa
de telfonos celulares. Es decir, que a partir del saldo disponible en un telfono celular, informe al
cliente su nuevo saldo o saldo final, despus de que el cliente utilice algunos de los servicios
disponibles por la compaa, de acuerdo a los servicios siguientes:
Condiciones posibles
Men de servicios: MMS de
texto, MMS multimedia, MMS
para rifa, descargar tono,
pasatiempo y llamada.
En el caso del tono, preguntar
la tarifa.

Accin
En caso de que sea cualquier tipo de mensaje, preguntar la tarifa
y verificar que haya fondos suficientes, de lo contrario activar una
bandera para enviar, al final, un aviso de que el mensaje no pudo
ser enviado.
Aparte de preguntar la tarifa impuesta por la compaa de la cual
se descarga el tono, verificar que haya saldo suficiente, de lo
contrario activar una bandera para enviar, al final, un aviso de
que el mensaje no pudo ser enviado.
Recordemos que son diferentes tarifas, dependiendo si el
telfono es mvil o fijo y si es local o larga distancia, pero todo se
simplifica si se solicita la tarifa de la llamada, lo importante es
preguntar dos cosas, la duracin de la llamada y si se origina
dentro del rea de cobertura o fuera de ella, porque al ser fuera,
se tiene que hacer un cargo adicional de llamada roaming, que es
otra cantidad fija que se cobra por minuto.

Para la llamada, deber


preguntar adicionalmente si,
es llamada a telfono local,
telfono celular de la misma
compaa, telfono celular de
otra compaa, si es nmero
frecuente o si est dado de
alta como nmero gratuito
En todos los casos deber recalcular el saldo final e informar si el cliente cuenta con
fondos suficientes para realizar la accin que desea.
a) Anlisis: En esencia, la solucin a este ejercicio es muy parecida al ejercicio previo, pero
tal vez aqu se requiera el manejo de un submen, dadas las diferentes tarifas que

26

CONALEP-2011

[Programacin bsica]

manejan las compaas y todas las combinaciones posibles que existen para descontar el
saldo dependiendo de si la llamada es local, larga distancia, a telfono fijo o mvil y si la
persona que realiza la llamada est dentro o fuera de su rea. En este caso, para
simplificar, se puede solicitar la tarifa aplicada en la llamada; esto reduce la complejidad
en la implementacin de la solucin. En conclusin, ser necesario pedir qu servicio us
la persona, a travs de un men y, luego, la tarifa respectiva. Solo en el caso de la llamada
pedir los minutos, con esa informacin hacer el clculo correspondiente y aplicar el
descuento respectivo.
b) Codificacin: Aqu la clave nuevamente se encuentra en la estructura de control a
implementar y es la estructura switch(), la cual permite construir el men para que la
persona elija una de las alternativas presentadas. Ya sabiendo la eleccin, se puede
determinar la operacin correcta que permita hacer el descuento respectivo.
c) Comprobacin: Ser necesaria la ejecucin del programa varias veces, para elegir varias
de las opciones y verificar los diferentes resultados para, de esa forma, comprobar el
funcionamiento ptimo del programa.

Ejercicio 3.9.14. Elaborar un programa en lenguaje C que realice la multiplicacin de dos


nmeros, sin utilizar la multiplicacin directamente.
a) Anlisis: Hay mucho que analizar para este ejercicio, porque muchas aplicaciones y
lenguajes de programacin traen el operador matemtico para la multiplicacin, pero si la
restriccin es evitar su uso, cabe recordar que la multiplicacin no es ms que el resultado
de sumas sucesivas, por ejemplo: 2 x 3 es igual a decir 2 + 2 + 2. Esto es, si pedimos dos
nmeros, el primero es la base de la suma y, el segundo, es el nmero de veces que se va
a realizar la suma. Con esto se obtiene un resultado equivalente a multiplicar.
b) Codificacin: En este caso y para resolver el planteamiento, se sugiere utilizar la estructura
de control repetitiva o cclica llamada for(), ya que esta permite ejecutar una o varias
instrucciones un cierto nmero de veces conocido de antemano, es decir, de 1 a N veces.
c) Comprobacin: Este programa se puede comprobar multiplicando un numero por s
mismo y verificar si da el resultado correcto, por ejemplo: 5 x 5 y el resultado deber ser
25.

Ejercicio 3.9.15. Elaborar un programa en lenguaje C que imprima una frase de castigo y a
continuacin la presente numerada, repitindola el nmero de veces indicado, a fin de que el
castigado la pueda imprimir y, de esta forma, pueda cumplir con su castigo.
Ejemplo: Debo ser puntual 5 veces.
1. Debo ser puntual.
2. Debo ser puntual.

27

CONALEP-2011

[Programacin bsica]
3. Debo ser puntual.
4. Debo ser puntual.
5. Debo ser puntual.

a) Anlisis: Aunque es muy descriptivo el ejercicio anterior, es bueno observar que si la frase
va aparecer N veces, podemos darnos cuenta que se trata de un ciclo que permita
imprimir varias veces una frase. En cuanto a la solicitud de los datos, se pide
especficamente el nmero de veces que la frase se repetir, pero no dice que
necesariamente la frase se tenga que solicitar. Como an no se ve el tema para guardar
cadenas de caracteres, la solucin se simplifica usando la instruccin printf() que contenga
directamente la frase de ejemplo u otra que el programador decida.
b) Codificacin: Para este programa, se sugiere utilizar la estructura de control repetitiva o
cclica llamada for(), porque es evidente la necesidad de imprimir en pantalla una frase
tantas veces como lo solicite el usuario. Este nmero de veces se puede saber de
antemano, por lo que esa estructura de control es la idnea.
c) Comprobacin: Antes de ejecutar este programa y como parte de la instruccin printf(), es
conveniente imprimir la variable tipo contador del ciclo, as si la persona pide 20 veces la
frase, podr comprobar con ese nmero que efectivamente se imprimi 20 veces.

Ejercicio 3.9.16. Modificar el programa del ejercicio 3.9.14 para que pregunte si se desea realizar
otra multiplicacin y, de ser afirmativa la respuesta, volver a preguntar los nmeros a
multiplicar y as sucesivamente, hasta que la persona diga lo contrario.
a) Anlisis: Si bien es cierto ya se hizo un anlisis previo del ejercicio 3.9.14, para la
modificacin que se pide es importante examinar que se trata de un ciclo, ya que se pide
que se vuelva a ejecutar el programa, pero podemos apreciar que esa ejecucin est
condicionada a la respuesta que el usuario nos d.
b) Codificacin: Para la modificacin a incorporar, se sugiere utilizar la estructura de control
repetitiva o cclica llamada do-while(), porque esta estructura ejecuta varias veces una o
ms instrucciones, dependiendo del resultado de una condicin; en otras palabras,
siempre y cuando el resultado de la comparacin sea verdadero.
c) Comprobacin: La manera de probar este programa es dar respuesta a la ltima pregunta
con las letras S, s, N, y n; a fin de determinar en qu casos contina la ejecucin del
programa y en cules no.

Ejercicio 3.9.17. Elaborar un programa en lenguaje C que muestre la tabla de multiplicar indicada
por el usuario y, al final, pregunte si se desea mostrar una tabla diferente o si se desea salir del
programa. Ejemplo: tabla del 3, 3x1=3, 3x2=6, 3x3=9, 3x10=30

28

CONALEP-2011

[Programacin bsica]

a) Anlisis: Dado el planteamiento anterior es notorio observar que entre lneas se habla de
dos ciclos, uno que realice la multiplicacin de 1 hasta 10 y, otro ciclo, cuya ejecucin est
condicionada a la respuesta que el usuario nos d.
b) Codificacin: La estructura de control repetitiva o cclica llamada do-while() resuelve la
parte de ejecutar todo el programa nuevamente, tantas veces como el usuario quiera y,
con el ciclo for(), se resuelve la parte de presentar la tabla de multiplicar del nmero
solicitado.
c) Comprobacin: La manera de probar este programa es dar respuesta a la ltima pregunta
con las letras S, s, N, y n y Qu ocurre con el programa si se contesta con un carcter
diferente a los anteriores? Se efecta nuevamente la ejecucin? S o no y por qu?

Ejercicio 3.9.18. Simular una bomba despachadora de gasolina, de tal manera que calcule el
importe total, conociendo el tipo de combustible y la cantidad de litros que desea el
automovilista. El proceso se debe repetir hasta que ya no haya ms autos. Desarrolle un
programa que resuelva el planteamiento anterior.
a) Anlisis: En este planteamiento no es evidente el uso de ciclos, pero si la operacin de
cobrar el combustible se va a realizar para cada auto que cargue gasolina, con eso
descubrimos la presencia de un ciclo. Adems, como est condicionado el clculo a si
existen ms autos por despachar, podemos corroborar que el ciclo es condicionado. En
cuanto al clculo, podemos observar que se trata de pedir el tipo de combustible y la
cantidad de litros con lo que, una simple multiplicacin dar el resultado, pero no se
pierda de vista que hay al menos dos tipos de combustible. Como no se especifica que se
pida el precio del combustible, este puede definirse como una constante en el programa,
o como variables inicializadas con las tarifas vigentes.
b) Codificacin: La estructura de control repetitiva o cclica llamada do-while() resuelve la
parte de ejecutar todo el programa nuevamente tantas veces como el usuario quiera, pero
para hacer el cobro respectivo se tienen que combinar ciclos con estructuras de control
condicional, en este caso if().
c) Comprobacin: Al momento de proporcionar los datos, en una primera ejecucin, escoger
un tipo de combustible y, en la siguiente, un tipo diferente. Observe la diferencia en los
resultados.

Ejercicio 3.9.19. Modificar el programa anterior para que informe al automovilista cuntos litros le
sern surtidos, para aqullos clientes que acostumbran pedir en base a una cantidad de dinero. El
proceso se debe repetir hasta que ya no haya ms autos. Desarrolle un programa que resuelva el
planteamiento anterior.
a) Anlisis: Ahora en este replanteamiento existe una variante y es que, en Mxico, es muy
comn que la persona pida por cantidad de dinero y no por litros, es decir, que se puede

29

CONALEP-2011

[Programacin bsica]

solicitar que se surtan $ 200 pesos. Lo que se pide es que el programa informe cunto es
esa cantidad en litros. El resto de la solucin es idntica, ya que tambin es necesario
conocer qu tipo de combustible eligi el cliente.
b) Codificacin: La estructura de control repetitiva o cclica llamada do-while() resuelve la
parte de ejecutar todo el programa nuevamente tantas veces como el usuario quiera, pero
para hacer el cobro respectivo se tienen que combinar ciclos con estructuras de control
condicional, en este caso if(); de tal manera que se permita informar la cantidad exacta en
litros, una vez que se sabe el tipo de combustible a despachar.
c) Comprobacin: Al momento de proporcionar los datos, en una primera ejecucin, escoger
un tipo de combustible y, en la siguiente, un tipo diferente. Observe la diferencia en los
resultados.

Ejercicio 3.9.20. Elabore un programa que permita hacer divisiones hasta que el usuario decida
terminar los clculos. Adems, el programa debe permitir que el usuario intente adivinar el
resultado y lo felicite cuando acierte, o lo corrija cuando falle. Desarrolle un programa que
resuelva el planteamiento anterior.
a) Anlisis: Aunque se pide una operacin muy bsica, aqu lo interesante es retar al usuario
preguntando el posible resultado y felicitarlo en caso de acertar, o animarlo a seguir
intentndolo.
b) Codificacin: Con la estructura de control if() se resuelve la parte de comparar la
respuesta del usuario con el resultado de la operacin y, si se desea que el programa se
vuelva a ejecutar nuevamente a voluntad del usuario, la estructura de control repetitiva o
cclica llamada do-while() resuelve esta otra parte.
c) Comprobacin: Para probar este programa realice una divisin entre un mismo nmero,
como por ejemplo 10 entre 10, ya que sabemos que cualquier numero dividido entre s
mismo es uno, y as ser fcil adivinar el resultado; adems de comprobar que sea, a su
vez, el resultado correcto. En ambos casos, cuando se atine o se falle al adivinar el
resultado, note qu mensaje aparece en cada caso.

Ejercicio 3.9.21. Elabore un programa que calcule el total a pagar en una taquera donde se puede
pedir la cuenta, ya sea individualmente o en grupos variables. Los datos a considerar son el
nmero de tacos consumidos y la cantidad de bebidas ingeridas por cada persona, asimismo
suponer que los tacos y las bebidas tienen un precio fijo. Adicionalmente, calcular la propina
sugerida a la razn de un 15% sobre el total de la cuenta, y preguntar al cliente si est de acuerdo
en que se sume al total a pagar. De ser afirmativa la respuesta, entonces, sumar ambos cargos a la
cuenta e informar del monto final a pagar. Desarrolle un programa que resuelva el planteamiento
anterior.

30

CONALEP-2011

[Programacin bsica]

a) Anlisis: Para concluir esta unidad, se presenta un ejercicio ms elaborado, pero que no se
aparta en la simpleza de las operaciones, ya que puede ser resuelto con sumas y
multiplicaciones. Con el propsito de aplicar las estructuras repetitivas, se pide que se
suponga que fue un grupo de personas a la taquera y que piden una sola cuenta.
b) Codificacin: Como se pide calcular en base a un porcentaje la propina y se da la opcin al
cliente de incluirla en el total, esa aprobacin se sugiere se trabaje con la estructura de
control if(), ahora que si se desea que el programa se vuelva a ejecutar nuevamente por
cada cliente que es parte de ese grupo, la estructura de control repetitiva o cclica llamada
do-while() resuelve esa otra parte del problema.
c) Comprobacin: Si se quiere comprobar este programa hgalo con dos clientes, que
consumieron la misma cantidad de tacos y una sola bebida del mismo precio, ambos.
Adems, aceptan que se incluya la propina sugerida. Tome nota del total a pagar.
Posteriormente, ejecute el programa con los mismos datos, pero en esta oportunidad no
aceptan dejar propina. Qu diferencia nota en el resultado? Si los resultados son
correctos, utilice el programa como simulador para cuando piense ir con amigos a un lugar
de este tipo, calculando cunto dinero necesitan en total, si cada uno de antemano sabe lo
que va a comer y lo que va a tomar. As tendrn su presupuesto y se protegern de cobros
indebidos.

31

CONALEP-2011

[Programacin bsica]

APNDICE
Ejercicio 1
1.- Constantes; 2.- Short; 3.-Tipo de dato / Nombre; 4.- Apuntador; 5.- Variables;
6.- Char; 7.- Reservadas; 8.- Float; 9.- Declaracin; 10.- Locales

Ejercicio 2
Booleano
Caracter

Entero

Simples
Flotante
Doble Precisin
Apuntador

Tipos de
Datos

Cadenas

Homogneos

Arreglos
Arreglos
>1 dimensin

Compuestos

Registros

Heterogneos
Uniones

32

CONALEP-2011

[Programacin bsica]

3.2. Identificadores y palabras reservadas

Ejercicio 3
1.- (j); 2.- (c); 3.- (f); 4.- (g); 5.- (h); 6.- (b); 7.- (i); 8.- (a); 9.- (d); 10.- (e)

3.5. Operadores, precedencias y evaluaciones en cortocircuito

Ejercicio 4
1.- Precedencia; 2.- Conversiones; 3.- Asignacin; 4.- Casting; 5.- Variables estticas
6.- De incremento; 7.- Lgicos; 8.- Bits; 9.- Bloque de instrucciones; 10.- Relacionales

3.6. Conversiones

Ejercicio 5
1.- (e); 2.- (j); 3.- (g); 4.- (h); 5.- (b); 6.- (d); 7.- (a); 8.- (i); 9.-(f); 10.-(c)

3.7. Interaccin con el usuario

Ejercicio 6
1.- stderr; 2.- stdout; 3.- stdin; 4.- getch(); 5.- printf();
6.- %c; 7.- %d; 8.- %s; 9.- %f; 10.- putc()

3.8. Estructuras de control

Ejercicio 7
1.- while; 2.- for; 3.- do while; 4.- Ciclos anidados; 5.- if
6.- if else; 7.- switch; 8.- break; 9.- continue; 10.- goto; 11.- return

33

CONALEP-2011

[Programacin bsica]

Ejercicio 8
while (expresin)
{
Instrucciones o instrucciones;
}

do
{
Instrucciones o instrucciones;
}while (expresin)

for (inicializacin; condicin; actualizacin)


{
Instrucciones o instrucciones;
}

if (expresin)
{
Instrucciones o instrucciones;
}

if (expresin)
{
Instrucciones o instrucciones (condicin
verdadera);
}
else
{
Instrucciones o instrucciones (condicin falsa);

34

CONALEP-2011

[Programacin bsica]

switch (expresin)
{
case 1:
Instrucciones o instrucciones 1;
break;
case 2:
Instrucciones o instrucciones 2;
break;
default:
Instrucciones o instrucciones 3;
break;
}

35

[Programacin bsica]

CONALEP-2011

CRUCIGRAMA
1

S2W I

T C H

R E A K

B
6

S
7

E L S E

D E F A U L T
9

A
10

D
11

T O

12

O N T
S

N U E

13

14

I C L
H

36

O
15

R E T U R N

CONALEP-2011

[Programacin bsica]

Lista de ejercicios prcticos RESUELTOS de la unidad 3.


Nota: Las soluciones a los ejercicios fueron probadas en las versiones para Windows de los
compiladores Turbo C++ versin 3.0 y Dev-C++ versin 4.9.9.2.
Listado 3.7.1
/* -----------------------------------------------------------------Programa: Ejercicio3-7-1.c
Objetivo: Aplicacin de operaciones aritmticas y operaciones de entrada
y salida de datos. Calculando, adems, la edad para una persona.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int aho_actual = 2011;
int aho, edad;
/* Lectura de datos */
printf("\n Ao en que naciste: ");
scanf("%d", &aho);
/* Clculo de la edad */
edad = aho_actual - aho;
/* Impresin de resultado */
printf("\n Si tu naciste en %d, tienes %d aos.", aho, edad);
}

37

CONALEP-2011

[Programacin bsica]

Listado 3.7.3
/* -----------------------------------------------------------------Programa: Ejercicio3-7-3.c
Objetivo: Aplicacin de operaciones aritmticas y operaciones de entrada
y salida de datos. Declaracin de varios tipos de variables y cmo
solicitarlas apropiadamente.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int frente, fondo, terreno;
float preciom2, valorT;
/* Lectura de datos */
printf("\n Proporcione las medidas del terreno\n");
printf("\n Cunto mide de frente (metros): ");
scanf("%d", &frente);
printf("\n Cunto mide de fondo (metros): ");
scanf("%d", &fondo);
printf("\n Precio del metro cuadrado $ ");
scanf("%f", &preciom2);
/* Realizacin de clculos */
terreno = frente * fondo;
valorT = terreno * preciom2;

/* Impresin de resultado */
printf("\n El precio total de un terreno de %d x %d metros, a $ %f
pesos el metro cuadrado, es de: $ %f pesos", frente, fondo,
preciom2, valorT);
}

38

CONALEP-2011

[Programacin bsica]

Listado 3.7.5
/* -----------------------------------------------------------------Programa: Ejercicio3-7-5.c
Objetivo: Aplicacin de operaciones aritmticas y operaciones de entrada
y salida de datos. Para convertir dlares en pesos.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
float dolares, cotiza, pesos;
/* Lectura de datos */
printf("\n Proporcione la cantidad de dinero (en dlares) $ ");
scanf("%f", &dolares);
printf("\n Cotizacin del dlar $ ");
scanf("%f", &cotiza);
/* Clculo de la conversin */
pesos = dolares * cotiza;
/* Impresin de resultados */
printf("\n %f dlares en pesos son $ %f pesos", dolares, pesos);
}

39

CONALEP-2011

[Programacin bsica]

Listado 3.8.1
/* -----------------------------------------------------------------Programa: Ejercicio3-8-1.c
Objetivo: Aplicacin de operaciones aritmticas y operaciones de entrada
y salida de datos
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
float porcentaje, descuento, precio_ini, precio_fin;
printf("Precio inicial? $ ");
scanf("%f", &precio_ini);
printf("\n Porcentaje de descuento (por ejemplo: 15)? ");
scanf("%f",&porcentaje);
/* Clculo del descuento */
descuento = precio_ini * porcentaje / 100;
/* Clculo del precio final*/
precio_fin = precio_ini - descuento;
/* Impresin de resultados */
printf("\n Un producto que vale: $ %f pesos, con el %f%% de
descuento", precio_ini, porcentaje);
printf("\n tiene un descuento de $ %f pesos y, por lo tanto,
tiene un precio final de $ %f pesos", descuento, precio_fin);
}

40

CONALEP-2011

[Programacin bsica]

Listado 3.8.3
/* -----------------------------------------------------------------Programa: Ejercicio3-8-3.c (Verificar equivalencia de megapixeles a
megabytes)
Objetivo: Aplicacin de operaciones aritmticas y operaciones de entrada
y salida de datos
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int cmemo, maxresolucion;
float equivaleEnGb, totalF;
printf("Introduce la mxima resolucin permitida por la cmara (en
megapixeles): ");
scanf("%d", &maxresolucion);
printf("\n Introduce la capacidad total de la cmara (Gigabytes):
");
scanf("%d",&cmemo);
/* Convertir megapixeles a gigabytes, 1024.0 para que la expresin
se convierta a float */
equivaleEnGb = maxresolucion / 1024.0;
totalF = cmemo / equivaleEnGb;
printf("\n El total de fotos que se pueden guardar en esta cmara
es de: %f imgenes", totalF);
}

41

CONALEP-2011

[Programacin bsica]

Listado 3.8.5
/* -----------------------------------------------------------------Programa: Ejercicio3-8-5.c
Objetivo: Aplicacin de operaciones aritmticas y operaciones de entrada
y salida de datos
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int ncds, cCD = 700;
float tdvds, dvd, equivaleGb, cDVD = 4.7;
printf("Introduce cuntos discos compactos tiene la estacin de
radio: ");
scanf("%d", &ncds);
/* Convertir megabytes a gigabytes, 1024.0 para que la expresin se
convierta a float */
equivaleGb = cCD / 1024.0;
dvd = cDVD / equivaleGb;
tdvds = ncds / dvd;
printf("\n El total de discos DVD requeridos para hacer el respaldo
es de: %f DVDs", tdvds);
}

42

CONALEP-2011

[Programacin bsica]

Listado 3.9.1
/* -----------------------------------------------------------------Programa: Ejercicio3-9-1.c
Objetivo: Uso de estructuras condicionales simples.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int aho_actual = 2011;
int aho_ing, antiguedad;
printf("\n En qu ao se comenz a laborar: ");
scanf("%d", &aho_ing);
antiguedad = aho_actual - aho_ing;
printf("\n Actualmente tiene una antigedad de %d aos",
antiguedad);
if (antiguedad > 30)
printf("\n Felicidades, ya se puede jubilar.);
}

43

CONALEP-2011

[Programacin bsica]

Listado 3.9.3
/* -----------------------------------------------------------------Programa: Ejercicio3-9-3.c
Objetivo: Uso de estructuras condicionales simples.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int ppm = 10, nplibro;
float tiempo;
char utiempo;
printf("Introduce cuntas pginas tiene el libro? ");
scanf("%d", &nplibro);
tiempo = nplibro / ppm;
utiempo = m;
if (tiempo > 60)
{
tiempo = tiempo / 60;
utiempo = h;
}
printf("\n El tiempo necesario es de: %f %c", tiempo, utiempo);
}

44

CONALEP-2011

[Programacin bsica]

Listado 3.9.5
/* -----------------------------------------------------------------Programa: Ejercicio3-9-5.c
Objetivo: Uso de estructuras condicionales simples.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int kminicial, kmfinal, kmrecorrido;
/* 45.0 para que la expresin se convierta a float */
float tanque = 45.0;
float rendimientoR, rendimientoI;
printf("\n Proporcione el kilometraje inicial: ");
scanf("%d", &kminicial);
printf("\n Proporcione el kilometraje final: ");
scanf("%d", &kmfinal);
printf("\n Proporcione el rendimiento ideal (km/litro): ");
scanf("%f", &rendimientoI);
kmrecorrido = kmfinal - kminicial;
rendimientoR = kmrecorrido / tanque;
if (rendimientoR < rendimientoI)
{
printf("\n El rendimiento real es de: %f kilmetros por litro,
cuando debera ser de: %f kilmetros por litro, rendimientoR,
rendimientoI);
printf("\n Es necesario que lleve su carro al mecnico o a
mantenimiento);
}
else
printf("\n El rendimiento real es de: %f kilmetros por litro y,
al compararlo con el ideal, mecnicamente tu carro anda bien,
rendimientoR);
}

45

CONALEP-2011

[Programacin bsica]

Listado 3.9.8
/* -----------------------------------------------------------------Programa: Ejercicio3-9-8.c
Objetivo: Uso de estructuras condicionales simples.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int ncopias;
char tcopia;
float carta = 0.3, oficio = 0.5, tpagar;
printf("\n Cuantas copias fueron? ");
scanf("%d", &ncopias);
printf("\n Indique el tamao de la copia (C=Carta y O=Oficio): ");
/* Se requiere llamar dos veces a scanf() para quitar, de la entrada
estndar, la tecla ENTER que se presiona para introducir el nmero
de copias solicitado en la pregunta anterior. Si no se quita, la
respuesta al tamao de la copia ser SIEMPRE dicha tecla ENTER, es
decir, para este programa se elegira SIEMPRE el tamao oficio.
PRUBELO quitando una de las lneas con la llamada a scanf() */
scanf("%c", &tcopia);
scanf("%c", &tcopia);
if (tcopia == c || tcopia == C)
tpagar = ncopias * carta;
else
tpagar = ncopias * oficio;
printf(\n El total a pagar es de: $ %f pesos, tpagar);
}

46

CONALEP-2011

[Programacin bsica]

Listado 3.9.10
/* -----------------------------------------------------------------Programa: Ejercicio3-9-10.c
Objetivo: Uso de estructuras condicionales compuestas, calculando el
ndice de masa corporal para una persona
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int peso, estatura;
float imc, doble_esta;
printf("\n Dme su peso (en kilos y sin decimales): ");
scanf("%d", &peso);
printf("\n Dme su estatura (en centmetros): ");
scanf("%d", &estatura);
/* Operaciones para calcular el ndice de masa corporal (IMC) */
doble_esta = estatura + estatura;
imc = peso / doble_esta;
printf("\n Su ndice de masa corporal es de: %f", imc);
if (imc < 0.20)
printf("\n ALERTA !!!, BAJO PESO);
else if ((imc >= 0.20) && (imc < 0.25))
printf("\n EST EN EL PESO NORMAL);
else if ((imc >= 0.25) && (imc < 0.30))
printf("\n EST EN UN PESO MODERADO);
else
printf("\n CUIDADO !!!, TIENE SOBREPESO);
}

47

CONALEP-2011

[Programacin bsica]

Listado 3.9.12
/* -----------------------------------------------------------------Programa: Ejercicio3-9-12.c
Objetivo: Uso de estructuras condicionales de seleccin.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int saldo_ini = 30000;
int saldo_ins, saldo_fin, retiro;
char opcion;
saldo_ins = 0;
printf("\n BIENVENIDO A BANCONALEP \n");
printf("(1) 20\t\t\t(4) 200 \n);
printf("(2) 50\t\t\t (5) 500 \n);
printf("(3) 100\t\t\t (6) 1000 \n);
printf("(*) Una cantidad distinta a las anteriores \n);
printf("Digite su seleccin: );
opcion = getchar();
switch(opcion)
{
case 1:
retiro = 20;
saldo_fin = saldo_ini - retiro;
if (saldo_fin < 0)
saldo_ins = 1;
break;
case 2:
retiro = 50;
saldo_fin = saldo_ini - retiro;
if (saldo_fin < 0)
saldo_ins = 1;
break;
case 3:
retiro = 100;
saldo_fin = saldo_ini - retiro;
if (saldo_fin < 0)
saldo_ins = 1;
break;
case 4:
retiro = 200;

48

CONALEP-2011

[Programacin bsica]

saldo_fin = saldo_ini - retiro;


if (saldo_fin < 0)
saldo_ins = 1;
break;
case 5:
retiro = 500;
saldo_fin = saldo_ini - retiro;
if (saldo_fin < 0)
saldo_ins = 1;
break;
case 6:
retiro = 1000;
saldo_fin = saldo_ini - retiro;
if (saldo_fin < 0)
saldo_ins = 1;
break;
default:
printf("\n Cantidad a retirar(mltiplos de 100)? ");
scanf("%d", &retiro);
saldo_fin = saldo_ini - retiro;
if (saldo_fin < 0)
saldo_ins = 1;
break;
}
if (saldo_ins == 1)
printf("\n Lo sentimos, no cuenta con fondos suficientes para
hacer ese retiro.");
else
printf(\n Retiro autorizado por $ %d pesos. Su saldo final es
de $ %d pesos., retiro, saldo_fin);
}

49

CONALEP-2011

[Programacin bsica]

Listado 3.9.14
/* -----------------------------------------------------------------Programa: Ejercicio3-9-14.c
Objetivo: Uso de la estructura repetitiva for.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int cuenta, suma;
int num1, num2;
printf("\n Dme el primer nmero: ");
scanf("%d", &num1);
printf("\n Dme el segundo nmero: ");
scanf("%d", &num2);
suma = 0;
for (cuenta = 1; cuenta <= num2; cuenta++)
suma = suma + num1;
printf("\n %d x %d = %d", num1, num2, suma);
}

50

CONALEP-2011

[Programacin bsica]

Listado 3.9.16
/* -----------------------------------------------------------------Programa: Ejercicio3-9-16.c
Objetivo: Uso de la estructuras repetitiva do...while.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int cuenta, suma;
int num1, num2;
char resp;
do
{
resp = n;
printf("\n\n Dme el primer nmero: ");
scanf("%d", &num1);
printf("\n Dme el segundo nmero: ");
scanf("%d", &num2);
suma = 0;
for (cuenta = 1; cuenta <= num2; cuenta++)
suma = suma + num1;
printf("\n %d x %d = %d", num1, num2, suma);
printf("\n\n Desea realizar otro clculo (s/n): ");
/* Se requiere llamar dos veces a scanf() para quitar, de la
entrada estndar, la tecla ENTER que se presiona para introducir
el segundo nmero solicitado en la pregunta anterior. Si no se
quita, la respuesta a si se desea realizar otro clculo ser
SIEMPRE dicha tecla ENTER, es decir, para este programa se
elegira SIEMPRE no realizar otro clculo.
PRUBELO quitando una de las lneas con la llamada a scanf() */
scanf(%c, &resp);
scanf(%c, &resp);
} while ((resp == s) || (resp == S));
}

51

CONALEP-2011

[Programacin bsica]

Listado 3.9.18
/* -----------------------------------------------------------------Programa: Ejercicio3-9-18.c
Objetivo: Uso de la estructuras repetitiva do...while.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
int clitros;
float plitro, tpagar;
char resp;
do
{
resp = n;
printf("\n\n Dme la cantidad de litros a despachar: ");
scanf("%d", &clitros);
printf("\n Precio por litro: ");
scanf("%f", &plitro);
tpagar = clitros * plitro;
printf("\n El total a pagar es $ %f pesos", tpagar);
printf("\n\n Despachar gasolina a otro auto (s/n): ");
scanf(%c, &resp);
scanf(%c, &resp);
} while ((resp == s) || (resp == S));
}

52

CONALEP-2011

[Programacin bsica]

Listado 3.9.20
/* -----------------------------------------------------------------Programa: Ejercicio3-9-20.c
Objetivo: Uso de la estructura repetitiva do...while.
-------------------------------------------------------------------*/
#include <stdio.h>
int main()
{
float total, num1, num2;
char resp;
do
{
resp = n;
printf("\n\n Dme el primer nmero: ");
scanf("%f", &num1);
printf("\n Dme el segundo nmero: ");
scanf("%f", &num2);
if (num2 == 0.0)
{
printf(\n\n No se puede dividir entre 0.);
getch();
exit(1);
}
else
total = num1 / num2;
printf("\n %f / %f = %f", num1, num2, total);
printf("\n\n Desea realizar otro calculo (s/n): ");
scanf(%c, &resp);
scanf(%c, &resp);
} while ((resp == s) || (resp == S));
}

53

CONALEP-2011

[Programacin bsica]

Cuarta parte
Funciones

CONALEP-2011

[Programacin bsica]

4. Funciones
4.1. Ejercicios

Ejercicio 1
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de
los parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V,
si la afirmacin es verdadera.
1. Usar funciones en C se llama modulacin.

2. No es posible hacer llamadas a funciones

3. Es ms fcil interpretar un programa complejo con la separacin


del mismo en funciones.

4. Una funcin es una parte del programa que realiza operaciones


bien definidas.

5. La funcin puede devolver un valor con la instruccin goto.

6. Al llamar a una funcin proporcionamos un conjunto de datos


llamados parmetros.

7. La funcin main( ) es una funcin complementaria opcional.

8. La cabecera de la funcin es el conjunto de instrucciones


encerradas entre llaves y, en l, se ejecutan las acciones de la
funcin.

9.

El tipo de funcin se encuentra en el cuerpo de la funcin.

10. Se llama a una funcin con su nombre y poniendo entre


parntesis sus parmetros.

CONALEP-2011

[Programacin bsica]

Ejercicio 2
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis, la letra correspondiente al inciso que indique la relacin correcta.

a) Funcin

1.- Esta instruccin devuelve un solo valor del tipo declarado


en la funcin.

b) Clase de
almacenamiento

2.- Es el conjunto de datos que se introducen a la funcin.

c) Cabecera de la
funcin

3.- Son las clases de almacenamiento de una funcin.

d) Return

4.- Es la forma en la que el lenguaje C permite la


modularidad, ya que se pone el nombre de la funcin a
ejecutar.

e) #include

5.- Esta palabra indica que la funcin no devuelve un valor.

f) Lista de parmetros

6.- Modifican el mbito o pertenencia de la variable dentro del


programa.

g) extern, auto, static y


register

7.- Estas variables son usadas en una o todas las funciones, se


encuentran declaradas fuera de la funcin principal.

h) void

8.- Realiza una operacin o procedimiento especial dentro de


un programa, a cada una de estas las llamamos mdulos.

i)

Variables globales

9.- En ella se especifica el tipo de dato que devuelve, lista de


parmetros y nombre.

j)

Llamadas a las
funciones.

10.- Es la directiva utilizada para incluir los ficheros de


cabecera que contienen el conjunto de funciones
predefinidas por el programa.

CONALEP-2011

[Programacin bsica]

Ejercicio 3
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en
el espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Ventaja de la funcin Parmetro por valor

Iteracin

Recursividad

Automticas

Registro

Estticas

Cabecera

Parmetros formales

Parmetro por
referencia

Enunciados:
1.- La

es cuando una funcin se llama a s misma.

2.- El

consiste en transferir una copia del valor hacia la funcin.

3.- Un
una llamada a esta.

es un apuntador a la variable que se pasa a una funcin, cuando se realiza

4.- Los
declarados.

son creados y utilizados nicamente dentro de la funcin donde son

5.- Las variables locales


se indican con la palabra clave auto.

se crean al entrar a la funcin y se destruyen al salir de ella,

6.- Las variables locales

no son destruidas al salir de la funcin.

7.- La variables locales


son variables de tipo carcter o entero, que se almacenan
en un registro de la CPU y no en memoria.

8.- La
de una funcin est formada por el tipo de datos que se devuelve, el nombre
de la funcin y su lista de parmetros.

CONALEP-2011

9.- Una

[Programacin bsica]

es que se puede llamar desde diferentes partes del programa.

10.- La
es cuando una funcin se llama en repetidas ocasiones desde un mismo
punto del programa.

Ejercicio 4
Instrucciones: Lea con atencin cada uno de los enunciados que enseguida se muestran.
De las opciones enlistadas despus de ellos, subraye solamente el inciso cuya definicin
corresponda correctamente con el enunciado.
1.- Momento en que se enuncia la funcin para ser utilizada.
a) Destruccin
de la funcin

b) Llamada a
la funcin

c) Declaracin

d) Parmetros
de la funcin

2.- Trmino para la declaracin de una funcin que no retorna un valor.


a) int

b) void

c) Recursiva

d) Esttico

3.- La funcin divide el programa en,


a) Variables

b) Instrucciones

c) Mdulos

d) Constantes

4.- Contiene un conjunto de funciones en el lenguaje C.


a) Biblioteca

b) Encabezado

c) Fichero

d) Bloque

5.- Funcin para introducir datos al programa, por parte del usuario.
a) printf ( )

b) time ( )

c) scanf ( )

d) return

6.- Desde la funcin main( ) se pueden hacer llamadas a funciones almacenadas en un


archivo conocido como
a) Biblioteca

b) Encabezado

c) Variables

7.- Son los que transfieren los datos a una funcin.

d) Bloque

CONALEP-2011

a) Variables

[Programacin bsica]

b) Parmetros

c) Recursividad

d) Declaracin de tipo

8.- Estas funciones son utilizadas en el proceso de diseo de un programa, incluyen las
funciones exit( ) y assert( )
a) Matemticas

b) Aleatorias

c) De carcter

d) Utilidad

9.- Palabra reservada utilizada para devolver un valor con la funcin.


a) Funcin

b) Return

c) Array

d) Formales

10.- Estas funciones incluyen los procedimientos para la manipulacin del tiempo.
a) De tiempo

b) Aleatorias

c) De carcter

d) Utilidad

4.2. mbito y clase de almacenamiento de datos

Ejercicio 5
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de
los parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V,
si la afirmacin es verdadera.

1. Las variables se almacenan de acuerdo a su tipo de dato.

2. El mbito se refiere a que la variable es local o global.

3. En el lenguaje C no se utilizan los modificadores de tipo de


variable como en otros lenguajes.

4. La palabra reservada int es un modificador.

5. El mbito es la parte del programa en que la variable es


reconocida

CONALEP-2011

[Programacin bsica]

6. register es una palabra reservada utilizada como modificador de


tipo de variable.

7. Para declarar una variable global siempre utilizamos la palabra


reservada extern.

8. Cuando se declara una variable fuera de todas las funciones, su


mbito es local.

9. Las variables globales siempre estn dentro del cuerpo de una


funcin.

10. Una variable se considera automtica, ya que asigna un espacio


de memoria al llamar a la funcin que la contiene, y se libera
dicho espacio al salir de la funcin.

[Programacin bsica]

CONALEP-2011

4.3. Biblioteca de funciones

Ejercicio 6
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la
columna de la izquierda con uno solo de los enunciados en la columna de la derecha.
Escriba dentro de los parntesis, la letra correspondiente al inciso que indique la relacin
correcta.
a) Biblioteca
estndar

) 1.- Archivo de cabecera de las funciones matemticas.

b) Funciones
predefinidas

c) time.h

3.- Conjunto de funciones que dan soporte a las


operaciones bsicas que permite realizar el lenguaje
)
C

d) math.h

) 4.- Define una variedad de macros de utilidad.

e) string.h

5.- Archivo de cabecera con funciones de manejo de


tiempo y hora.

f) stdio.h

6.- Es otra manera de llamar a las funciones de la


biblioteca estndar.

g) stdlib.h

) 7.- Es una funcin de manejo del tiempo.

h) asctime()

2.- En este archivo se encuentran las funciones de


entrada y salida de datos.

8.- Archivo con funciones de manejo de cadenas de


caracteres.

CONALEP-2011

[Programacin bsica]

Ejercicio 7
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en
el espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Prototipo

Archivos

Funcin

Memoria

Globales

Recursivas

Apuntadores

Estticas

return

Encabezado

Argumentos

Locales

Parmetros

stdio

scanf

printf

Void

Variables

include

Biblioteca

Una
es un bloque de programa que realiza una operacin especfica, a
su declaracin la podemos llamar
. Utilizamos una funcin llamada
para
que el usuario introduzca datos y,
, para que muestre datos en pantalla. Con la
declaracin #
abrimos los
necesarios para poder llamar a las funciones
de
. Uno de estos archivos es
.h.
Las
se declaran cuando se encuentran fuera de la funcin
main() y, las variables
, se declaran dentro de ella o de las funciones creadas
por el programador. Existen, adems, las variables
, que se mantienen
en
durante la ejecucin del programa.
En una funcin se utilizan los
para almacenar la direccin de memoria
donde se encuentra un dato. Adems, en el
de la funcin introducimos la lista
de
con los datos de entrada hacia la funcin. A los parmetros tambin los
llamamos
. Dicha funcin devuelve un dato con la palabra reservada
y,
si no devuelve un valor, se utiliza la palabra reservada
. Cabe mencionar que
las funciones son
, cuando se llaman a s mismas.

CONALEP-2011

[Programacin bsica]

Ejercicio 8
Instrucciones: Encuentre las palabras siguientes en esta sopa de letras: Variable,
encabezado, scanf, recursividad, parmetro, puntero, funcin, include, memoria, printf,
global, fichero, return, prototipo, biblioteca, argumento, stdio, locales, esttica y void.

S
F
T
B
O
I
P
Q
E
W
U
B
D
A

E
A
E
T
S

D
I
U
H
V
X
N
J
D
S
I
A
W
D
A
O
R
E
E
J

A
C
V
N
B
N
A
C
S
B
S
S
H
F
S
K
G
R
N
L

R
H
L
J
C
C
G
O
L
A
D
D
S
P
D
J
U
Y
C
U

T Q
E R
Q E
T F
T F
I S
L O
I F
P L
U S
F D
T H
H J
A R
F G
A W
M E
A O
A B
R E

P
O
F
D
X
T
B
N

I
O
E
F
A
D
E
N
H
E
B

R
Q
G
S
E
A
A
U
O
Q
Q
T
G
M
S
R
T
T
Z
D

O
U
J
C
S
S
L
E
W
W
R
M
D
E
A
T
O
R
A
T

T
D
A
C
T
D
G
H
O
E
E
Z
S
T
Q
Y
S
F
D
U

O
F
S
G
A
R
F
A
J
M
T
X
A
R
W
Q
F
V
O
W

T
B
D
Y
T
T
P
S
O
R
U
C
V
O
I
D
A
S
W
U

I
S
A
U
I
L
W
R
G
T
R
V
T
A
R
T
L
D
R
R

P
D
P
I
C
K
I
H
I
Y
N
B
R
Y
R
Y
O
S
S
Y

O
E
U
K
A
A
H
K
L
N
G
N
E
U
U
I
C
C
O
O

R
T
N
N
M
J
Y
R
E
Y
T
M
W
I
I
D
A
Q
T
P

S
R
T
Q
A
S
D
C
V
I
Y
F
Q
O
P
N
L
B
I
B

R
R
E
C
U
R
S
I
V
I
D
A
D
P
F
S
E
D
L
V

H
O
R
R
D
S
E
G
Y
E
Q
U
I
Y
R
E
S
W
A
E

K
H
O
G
J
B
Q
S
D
F
G
N
K
U
W
R
G
H
S
X

CONALEP-2011

[Programacin bsica]

Crucigrama
HORIZONTALES
3.- Cuando una funcin se llama a s misma.
5.- Las funciones de

son las que tiene el lenguaje C.

6.- Son los argumentos que utilizamos en la llamada a una funcin.


8.- El
que devuelve.

de una funcin contiene los parmetros de la funcin y el tipo de dato

9.- Se puede utilizar como parmetro de una funcin sin valor.


10.- Recursividad donde intervienen ms de dos funciones.
12.- Las funciones
por el programador, son las que realizan tareas especficas
en el programa donde se encuentran.
13.- Las variables
acceso.

son aquellas que se almacenan en un lugar de rpido

15.- Son los argumentos que utilizamos en la definicin y/o declaracin de una funcin.
16.-Las funciones de
necesidades.

son las creadas por el programador, de acuerdo a sus

17.- Nombre con el que se denomina a la declaracin de una funcin.


19.- Cuando se hace referencia al acceso a una funcin, desde cualquier parte del
programa, se le denomina
a la funcin.
20.- Bloque de cdigo que realiza una operacin o procedimiento en especial, dentro de un
programa. A cada una de ellas las llamamos mdulos.

VERTICALES
1.- La lista de

contiene los datos que se introducen a la funcin.

2.- En l se encuentra la instruccin o instrucciones de la funcin.


4.- Palabra reservada que declara una variable de tipo registro.

10

CONALEP-2011

7.- En los
biblioteca.

[Programacin bsica]

de cabecera (con extensin de archivo *.h) estn las funciones de

11.- Es otra forma de llamar a un parmetro.


14.- Es la recursividad que se realiza dentro de la misma funcin.
18.- Palabra reservada utilizada para devolver un valor de una funcin.

3
4
5

10

11

12

13

14

15

16

17

18

19

20

11

CONALEP-2011

[Programacin bsica]

4.4. Ejercicios prcticos


Para simplificar la revisin de este documento, se aclara que los ejercicios estn
alternados, es decir, se presenta la solucin de un ejercicio y se propone que el
siguiente sea resuelto por el lector.
El significado de la nomenclatura utilizada, por ejemplo Ejercicio 2.4.3, tiene la
explicacin siguiente: el primer nmero corresponde a la unidad; el segundo
corresponde al tema especfico; y, el tercero, es el nmero de ejercicio, es decir,
unidad 2, tema 4 y ejercicio o programa nmero 3.
Por otra parte, hay dos tipos de prcticas, las prcticas normales y las de paso a paso.
Para las prcticas normales se recomienda utilizar los ejercicios propuestos para que
sean resueltos por el lector y, para las prcticas paso a paso, guiarse con los ejercicios
resueltos, nicamente se tendra que seguir el procedimiento siguiente:
1. Encender el equipo de cmputo.
2. Abrir sesin del ambiente grfico Windows.
3. Ejecutar la aplicacin que se tenga instalada para editar los programas escritos
en lenguaje C.
4. Transcribir el programa en cuestin.
5. Guardar el archivo que contiene el programa transcrito.
6. Compilar el programa.
7. Iniciar un proceso de depuracin del programa (correccin de errores) hasta
cerciorarse de que el programa cumpla con el objetivo establecido.
8. Imprimir el resultado de la ejecucin o ejecuciones del programa (paso
opcional).

Ejercicio 4.2.1: Frecuentemente, las amas de casa cuando quieren preparar una receta se
encuentran con que algunas proporciones se manejan en onzas (unidad de medida de peso
inglesa) y eso dificulta su elaboracin. Con el uso de la estructura de funciones desarrolla un
programa en C que convierta de onzas a gramos, partiendo de que 1 gramo = 0.035270 onzas.
Los prototipos para las funciones son: pedir(), convertir() e imprimir(), sin parmetros.
a) Anlisis: A partir de este ejercicio ser necesario que se piense de manera ms modular
para que se pueda dividir el problema en pequeos problemas y que cada problema sea
resuelto de manera individual, por lo que en este caso podemos dividirlo en 3 problemas y
esto sera: datos de entrada, proceso o clculo y salida de datos. Es por eso que se sugiere
el uso de 3 funciones, ya que cada funcin representa cada solucin individual.
b) Codificacin: Una vez desmenuzado el problema en mdulos o funciones, la tarea
siguiente es determinar el contenido de esta funcin y, en este caso, la funcin pedir(),
contendr las instrucciones para solicitar los datos; convertir(), las operaciones necesarias
para obtener el resultado; e, imprimir(), permitir mostrar en pantalla el resultado
planteado en el problema original. Otra consideracin inicial, como en este caso la funcin
principal main(), solo llamar o invocar a las funciones y, estas a su vez como no

12

CONALEP-2011

[Programacin bsica]

manejaran argumentos o devolvern valores, ser importante entonces declarar las


variables necesarias como globales, de tal forma que puedan ser empleadas en todas las
funciones.
c) Comprobacin: Cuando se ejecute este programa y se pongan los datos para las
conversiones, no se notar nada diferente a la manera en que se ha venido programando.
Por lo anterior, se sugiere el uso de una ejecucin paso a paso, que permita visualizar
cmo se hacen las llamadas a las funciones; cmo nos permite el lenguaje de
programacin, mediante esta tcnica, transferir el control y la secuencia de ejecucin
fuera de main() y regresar, para continuar con la siguiente instruccin. Y, si es otra funcin,
entonces se repetir el proceso de ir al cuerpo de la funcin y ejecutar una a una las
instrucciones que la conforman hasta concluir. Solo en ese momento se regresara a la
funcin principal main().

Ejercicio 4.2.2: Utilizando los mismos prototipos de funciones del ejercicio 4.2.1, es decir: pedir(),
convertir() e imprimir(), sin parmetros; desarrolla un programa en C que convierta de kilos a
libras y, esto, porque generalmente los agricultores exportan sus productos a Estados Unidos y
ellos les piden que manden la fruta o verdura en bolsas o cajas etiquetadas con su peso en libras.
Conversin que se les dificulta a los agricultores. Parte del hecho de que 1 kg = 2.205 libras.
a) Anlisis: Este ejercicio est planteado con la misma estructura al ejercicio 4.2.1. y el
propsito es que se contine ensayando con la modularidad, es decir, con el manejo de
funciones, para que de esta forma comience a apreciar las ventajas que ofrece esta tcnica
donde cada funcin realizar una tarea especfica, entre ellas, el hecho de que si el
programa no est haciendo bien la lectura de datos, hay errores en los clculos o
simplemente no aparece el resultado, directamente se dirige a la funcin que realiza esa
tarea y corrige la falla. Una ventaja ms sera que si se pide un cambio al programa,
sencillamente se hacen los cambios pertinentes en la funcin a modificar.
b) Codificacin: Ya se habl del contenido de las funciones pedir(), convertir() e imprimir(),
pero para ser ms precisos, en el caso particular del contenido de la funcin convertir(), es
importante precisar que si se conoce la cantidad en kilos para obtener las libras, la
operacin a realizar es la multiplicacin y con eso estaramos encontrando el resultado
solicitado. Respecto a la declaracin de las variables, nuevamente se sugiere que sean
declaradas como globales, de tal forma que puedan ser empleadas en todas las funciones
y su valor se conserve.
c) Comprobacin: Otra vez se propone el uso de una ejecucin paso a paso, para poder
seguir visualmente cmo se transfiere la secuencia, en la ejecucin, a las funciones cuando
estas son llamadas una a una; y ejecutar, secuencialmente, cada una de las instrucciones
hasta concluir. Solo en ese momento se regresara a la funcin principal main(). Con esto,
no estamos dejando de lado la comprobacin al sugerir datos sencillos para verificar el
buen funcionamiento del programa, como en este caso, que si se introduce una cantidad
de 10 kg el resultado deber ser 22 libras, esa es la idea de introducir cifras para las que,

13

CONALEP-2011

[Programacin bsica]

mentalmente, podamos encontrar el resultado para verificar la exactitud del programa.


Probado esto, puede intentar con su propio peso en kilos, para lo que la computadora
dar su peso equivalente en libras. As, es factible que pueda buscar otras aplicaciones a
estos ejercicios que venimos desarrollando.

Ejercicio 4.3.1: Existen programas de compatibilidad de parejas, donde toman en cuenta varios
aspectos, entre ellas sus preferencias, religin, profesiones y otras. Colabora con este tipo de
programas incorporando otro aspecto ms que sera la edad. El objetivo es que el programa
informe sobre la diferencia de edades entre los enamorados e informe si hay una posible
compatibilidad cuando dicha diferencia sea menor a 5 aos o incompatibilidad si es mayor a 5
aos y cul de los dos enamorados es menor que el otro. Desarrolle el programa que utilice
funciones con el paso de parmetros por valor, pero que no regrese un valor. El prototipo de la
funcin sugerida es compara (edad1, edad2)
a) Anlisis: En este ejercicio y en los siguientes nos centraremos en las funciones, porque ah
se encuentra la parte medular del programa, aunque en este caso si bien es cierto que se
pueden crear ms funciones como son solicitar datos o imprimir resultados, solo se nos
est pidiendo el emplear mnimo una funcin que cubra la parte del proceso, es decir los
clculos u operaciones necesarias para encontrar el resultado, en este caso con una resta
podremos saber si existe o no diferencia de edades y en la misma funcin podramos
analizar esa diferencia para sacar el mensaje apropiado, pero podemos respetar el
objetivo de las funciones, el cual consiste en realizar una sola tarea . Por lo que, sean en la
funcin principal o en otra funcin haremos el anlisis respectivo.
b) Codificacin: Continuando con la dinmica de centrarnos en las funciones, es importante
considerar que si esta funcin va a recibir un par de valores, entonces habr que declarar
del mismo tipo de datos a los parmetros que recibirn dichos valores. Esto con el
propsito de que no haya prdida de informacin o errores en el programa, as por
ejemplo, si las variables son del tipo entero, los argumentos de la funcin sern del mismo
tipo. Una consideracin mas es el hecho de que si esta funcin no devuelve un valor, el
resultado tendr que ser guardado en una variable global para que de esa manera pueda
ser utilizado en otras funciones. Respecto al anlisis de diferencia de edades, como el
programa no pide propiamente un resultado sino una interpretacin de ese resultado,
tenemos entonces que usar la estructura de control if-else tantas, veces sea necesario
para que avise de la compatibilidad o de la incompatibilidad.
c) Comprobacin: Es interesante el continuar empleando el uso de una ejecucin paso a
paso para poder seguir visualmente cmo se transfiere la secuencia en la ejecucin a las
funciones cuando estas son llamadas, pero en este caso ms, porque se podr observar
cmo toman un dato los argumentos de la funcin y cmo es utilizado ese valor mientras
dura la ejecucin de esa funcin. Finalmente, cuando se le pidan en la ejecucin las
edades, escriba datos donde la diferencia de edades sea menor a 5 aos, sea mayor a 5 o

14

CONALEP-2011

[Programacin bsica]

no existe diferencia de aos, es decir, que la pareja tenga la misma edad y observe los
diferentes mensajes que aparecern, son los correctos?

Ejercicio 4.3.2: En un programa de TV, del tipo reality show el concurso es de personas con
sobrepeso, dicho concurso consiste en expulsar a uno de dos concursantes y que ser aquel que
despus de una semana su peso sea mayor al de su oponente, porque lo que la idea es que el
programa en C informe al jurado a cul de los dos concursantes expulsara y cul es la diferencia de
peso entre ambos. La funcin sugerida es compara (peso1, peso2)
a) Anlisis: Nuevamente se nos est pidiendo el emplear mnimo una funcin que cubra la
parte del proceso para encontrar el resultado, en este caso tambin con una resta
podremos saber si existe o no diferencia de pesos y ya en la funcin principal o en otra
funcin haremos el anlisis respectivo. Una vez obtenida la diferencia, tenemos que
determinar cul de los dos concursantes tiene un mayor peso y mediante un mensaje
avisarle al jurado para que proceda con la expulsin.
b) Codificacin: Como esta funcin va a recibir un par de valores, no olvidar que en la
declaracin de sus argumentos los tipos de datos tienen que coincidir con los valores que
recibirn, as por ejemplo, si las variables son del tipo float, los argumentos de la funcin
sern del mismo tipo. Otra vez, no olvidar que si esta funcin no devuelve un valor, el
resultado tendr que ser guardado en una variable global para que de esa manera pueda
ser utilizado en otras funciones. Respecto al anlisis de diferencia de pesos, como el
programa no pide propiamente un resultado sino una interpretacin de ese resultado,
tenemos entonces que usar la estructura de control if-else tantas veces sea necesario para
que avise cul de los dos concursantes ser expulsado, cuando su peso sea mayor a su
oponente.
c) Comprobacin: Nuevamente se recomienda ampliamente el empleo del uso de una
ejecucin paso a paso para que nos ayude a entender cmo trabaja el lenguaje C la parte
de la modularidad. Referente a probar el programa solo hay dos casos a probar, cuando el
primer oponente pesa ms despus de una semana y el otro caso es cuando el segundo
oponente cuenta con un peso mayor a su rival, pruebe ambos casos, para ver qu pasa en
cada situacin y a quin est expulsando el programa en cada caso.

Ejercicio 4.4.1: Elaborar un programa en lenguaje C que simule el funcionamiento de una


calculadora, es decir que pida dos nmeros y que d la opcin de seleccionar la operacin a
realizar. Resulvase mediante la construccin de funciones para las operaciones de suma y
divisin de tal forma que las mencionadas funciones regresen el resultado.
a) Anlisis: El planteamiento es simple, sin embargo requiere mucho anlisis, comencemos,
lo primero es que si el usuario puede elegir el tipo de operacin como en una calculadora,
entonces requeriremos de un men, donde se listen las opciones posibles, segundo como

15

CONALEP-2011

[Programacin bsica]

solamente se habla de habilitar la solucin con las funciones, nosotros sabemos que si
queremos por ejemplo sumar, necesitamos mnimo dos nmeros, eso no ayuda a deducir
que las funciones requerirn de parmetros, dos en especfico y lo que s se seala es que
la misma funcin una vez encontrado el resultado, nos devuelva el total. Atencin especial
le debemos dedicar a la divisin porque cualquier calculadora por sencilla que sea impide
la divisin por 0 (cero), as que si nosotros queremos cuidar ese aspecto tendremos que
verificar a travs de una estructura de control (if) que si el segundo numero sea 0 (cero),
se avise con un mensaje del error y adems se evitar que el programa falle.
b) Codificacin: Dando prioridad a la implementacin de las funciones, este caso se presta de
manera excelente para entender el hecho de que una funcin puede devolver valores, ya
que despus de sumar o dividir, tenemos un total y ese dato lo necesita el programa en
otra parte para informar al usuario del resultado de la operacin, por eso en este caso la
instruccin return nos auxiliar con esa parte de devolver el valor. Una consideracin ms
es declarar en este caso la funcin del tipo de dato que arroje el resultado de la operacin
y a su vez si se emplea una variable que almacene temporalmente dicho resultado, esa
tambin tendr que ser del mismo tipo con el que la funcin fue declarada. Tambin es
bueno recordar que de acuerdo al anlisis previo estas funciones requerirn de los
parmetros respectivos. En cuanto al resto de la implementacin es innegable que si se
requiere el uso de un men donde aparezcan las operaciones permitidas por nuestra
calculadora, este deber ser construido con la estructura de control switch().
c) Comprobacin: Puede seguir el empleo de la ejecucin paso a paso, a menos que ya
quede comprendida del todo, pero en este caso s ser importante al menos hacer dos
operaciones, una suma y una divisin y en el caso de la divisin verificar si se puede dividir
entre 0 (cero).

Ejercicio 4.4.2: Complementa el programa del ejercicio 4.4.1 para que realice las funciones de
restar y multiplicar
a) Anlisis: Como se trata de complementar al ejercicio previo, el anlisis es ms simple,
porque basta recordar que para estas operaciones resta y multiplicacin tambin
necesitamos mnimo dos nmeros, lo que nos lleva concluir que las funciones requerirn
otra vez de parmetros, dos en especfico y ahora no se dice en el planteamiento, pero
debemos suponer que si se trata de una implementacin homognea estas funciones
tambin van a devolver un resultado.
b) Codificacin: Para incorporar este par de funciones a la implementacin previa, se tendr
que iniciar por ampliar el men construido con switch(), para que el usuario pueda
observar que ahora tambin puede restar y multiplicar. Respecto a las nuevas funciones,
no olvidar el hecho al momento de declarar la funcin para que el tipo de dato sea igual al
que arroje el resultado de la operacin y a su vez si se emplea una variable que almacene
temporalmente dicho resultado, esa tambin tendr que ser del mismo tipo con el que la

16

CONALEP-2011

[Programacin bsica]

funcin fue declarada. Tambin es bueno recordar que de acuerdo al anlisis previo estas
funciones requerirn de los parmetros respectivos.
c) Comprobacin: Otra vez ms, puede seguir el empleo de la ejecucin paso a paso si as lo
considera necesario. Referente a la comprobacin, pruebe nuevamente con al menos dos
operaciones y en el caso particular de la resta, ponga un valor ms pequeo para el primer
nmero que para el segundo, Cul fue el resultado? un valor positivo o negativo?

Ejercicio 4.4.3: Calcular la ganancia de las televisoras cuando dan premios de autos o dinero en
los concursos o rifas a travs del envo de mensajes de texto. Suponiendo que cada mensaje
cuesta $3.85 y preguntar el monto del premio y el total de mensajes recibidos. Realiza una
funcin que reciba el total de mensajes y regrese el monto total. Desarrolla un programa con
manejo de funciones que resuelva el planteamiento anterior.
a) Anlisis: La lectura del planteamiento, nos arroja que se da ms libertad para implementar
la solucin, ya que solo se pide el uso de una funcin que devuelva el ingreso por
conceptos de mensajes recibidos, sin embargo se podra utilizar una segunda funcin para
conocer la utilidad o ganancia, pero eso ya quedara a criterio del programador. Como lo
que se busca promover es la cultura de la modularidad, s es altamente recomendable el
desarrollar todas las funciones que se consideren necesarias. Es decir, que los datos se
pueden pedir tambin en una funcin.
b) Codificacin: Al parecer este programa no requiere del uso de estructuras de control, ya
que la funcin solicitada simplemente multiplicar ambos parmetros y devolver el
resultado, sin embargo, con ayuda de las estructuras de control repetitivo se podra
enriquecer esta solucin, pensando en que la televisora tiene ms de un concurso y de
cada uno de ellos requiere conocer la ganancia que le arroj.
c) Comprobacin: Para probar la solucin, trate con datos de tal manera que primero sea
mayor el premio que el ingreso y tome nota del resultado, luego intente meter datos con
cifras muy aproximadas a las reales y se sorprender de lo redituable que son esos
concursos para las televisoras.

Ejercicio 4.4.4: En la final de futbl mexicano, las televisoras tienen jugosas ganancias con los
anunciantes, ya que el costo por anuncio se incrementa notablemente, elabora un programa que
calcule el ingreso por ese concepto, de acuerdo al siguiente recuadro:

No.

Duracin del anuncio

Costo

15 segundos

$100,000.00

17

CONALEP-2011

[Programacin bsica]

No.

Duracin del anuncio

Costo

30 segundos

$250,000.00

45 segundos

$500,000.00

Con base a los minutos que se destinen para comerciales durante el medio tiempo, informar
cuantos anuncios se logran transmitir de manera combinada, de tal manera que el ingreso sea
mayor a los 5 millones de pesos. Para facilitar la solucin, crea al menos una funcin que de
acuerdo al nmero de comerciales y al costo por comercial informe cul sera la cantidad total.
Para facilitar la solucin, que el programa pregunte al usuario cuantos comerciales de cada tipo
requiere y le avise si con esa combinacin es suficiente y cuantos minutos requerira esa
combinacin.
a) Anlisis: Seria interesante lograr que el programa desarrollara las combinaciones posibles
de tal manera que informar nicamente aquellas combinaciones que dan como resultado
una cifra mayor a los 5 millones de pesos y tambin aquellas que emplean el menor
tiempo posible. Sin embargo, como eso requiere de un manejo de las matemticas mas
avanzado, nos limitaremos a implementar lo que se nos pide y que sea el usuario quien
escoja aquellas combinaciones que le parezcan ms adecuadas, es por eso que se le
pregunta al usuario cuantos comerciales requiere de cada tipo y con esos datos informarle
el monto total y el tiempo aire en televisin que llevara la transmisin de esos
comerciales.
b) Codificacin: De nuevo nos encontramos con la necesidad de implementar una funcin
que maneje al menos dos argumentos, es decir, el nmero de comerciales y costo de cada
comercial y que nos diga el monto por ese concepto, es decir, que vamos a requerir del
manejo de parmetros y la devolucin de valores. Respecto a las estructuras de control se
pueden emplear para que el usuario elija la duracin del comercial y en base a eso
manejar el precio por comercial. El resto del programa se puede resolver con
multiplicaciones y sumas, para que se nos diga la duracin de los mensajes, ya sea los
segundos totales o aplicando una pequea conversin para mostrarlo en minutos, y lo que
s es un hecho, es que se requerir de la estructura de control simple if(), para comparar el
monto total de todos los comerciales con los 5 millones de pesos que ponen como base y
reportar si es superior o no. Cuidar, que la declaracin de las variables tendr que ser del
tipo entero largo para que no se pierda precisin en los resultados.
c) Comprobacin: En la ejecucin del programa, sera bueno probar con un solo tipo de
comercial y ver cunto tiempo lleva alcanzar los 5 millones, luego intentar con otro y as
hasta probar las tres duraciones distintas, apuntar la duracin, luego usar a criterio un
nmero determinado de cada tipo de duracin del comercial y ver de manera combinada
si el tiempo es menor a elegir comerciales con una sola duracin.

18

CONALEP-2011

[Programacin bsica]

Ejercicio 4.6.1: Un estudiante camina 30 cuadras para llegar a su escuela, cada cuadra la camina
en 45 segundos, Qu tiempo le lleva llegar a la escuela? Ahora si sale de su casa a las 6:45 am y
las clases inician a las 7:00 pm y a l se le hace tarde, sugerirle la hora adecuada de salida. La
funcin sugerida es tiempo(), que permita convertir segundos a minutos para verificar si llega
tarde o no. Desarrolla un programa con manejo de funciones que resuelva el planteamiento
anterior y posteriormente guardarlo para que pueda ser utilizada la funcin tiempo() para la
solucin del problema 4.6.2.
a) Anlisis: Lo curioso de este planteamiento, es que ya se dan todos los datos, entonces solo
es informativo en el sentido de que se avisar si la hora a la que se levanta el estudiante es
la adecuada o requiere el levantarse a una hora diferente para que alcance a llegar
puntualmente. Adems de decirle cuantos minutos le lleva hacer ese recorrido a pie.
b) Codificacin: La funcin que se est proponiendo, es necesaria porque al multiplicar las
cuadras por el tiempo por cuadra el resultado es en segundos y como la hora de salida y
llegada del estudiante est en minutos, existe una necesidad de unificar los tiempos ya sea
todo en segundos o en minutos, aunque en este caso se especifica que todo se maneje en
minutos. Para complementar la implementacin del cdigo, es necesario apoyarse de la
estructura de control if-else, para comparar el tiempo del que dispone para llegar contra
el tiempo que le lleva recorrer esa distancia y del resultado de esa comparacin, sugerirle
al estudiante que se levante antes o que camine ms aprisa cada cuadra.
c) Comprobacin: En este caso, solo es ejecutar el programa y observar los resultados y si se
quisiera un resultado diferente, internamente se puede modificar la velocidad de cuadra,
por ejemplo en lugar de que sean 45 segundos, que sean 30 segundos y probar de nuevo
el programa, tambin si suponemos que el estudiante usa bicicleta, poner como velocidad
15 segundos y observar resultados, tal vez esa sera otra solucin, el proponerle que use
un medio de transporte como la bicicleta o la moto y de esa manera se puede continuar
saliendo a la misma hora de su casa.

Ejercicio 4.6.2: Un joven limpiaparabrisas limpia un parabrisas en 15 segundos y un semforo en


rojo dura 30 segundos. El joven labora un nmero variable de horas. Calcula su ingreso ideal y su
ingreso real por da. Suponiendo que limpia al menos un auto en cada seal roja o en cada alto del
semforo y que en cada limpiada recibe un peso. Crea una funcin que calcule su ingreso y reciba
como parmetro las horas trabajadas. Desarrolla un programa con manejo de funciones que
resuelva el planteamiento anterior. La funcin sugerida es la misma funcin tiempo() del ejercicio
4.6.1, que permita convertir segundos a minutos para verificar el nmero de parabrisas limpiado
por minuto, as que en la declaracin de libreras incluye y declara el archivo donde guardaste el
ejercicio anterior, por ejemplo: Ejercicio4-6-1.h
a) Anlisis: Una ventaja que ofrece esta solucin, es que si se resolvi satisfactoriamente el
ejercicio 4.6.1, podremos utilizar la funcin para convertir segundos en minutos y de esa
forma determinar cuntos parabrisas limpia por minuto y al recibir las horas trabajadas

19

CONALEP-2011

[Programacin bsica]

podamos calcular su ingreso diario. En cuanto a los supuestos, existen varios y uno de ellos
es que para el ingreso ideal es necesario tomar en cuenta que en cada seal roja alcanza a
limpiar dos parabrisas en 30 segundos y con eso obtiene $2.00 pesos de ingreso, lo que
nos llevara a pensar que el ingreso ideal es el doble al ingreso real, aqu viene otro
supuesto y es que suponemos que en cada limpiada le dan un peso y mnimo limpia un
parabrisas por seal roja. El tercer supuesto viene con el hecho de que ser necesaria la
conversin en algn momento determinado de convertir las horas proporcionadas por el
usuario a minutos y as poder calcular ambos ingresos, el ideal y el real.
b) Codificacin: El uso nuevamente de la funcin tiempo, es por la necesidad de pasar los
segundos empleados en limpiar parabrisas a minutos para saber cuntos parabrisas se
alcanzan a limpiar por minuto, y una conversin adicional es pasar las horas trabajadas en
minutos y analizar si se puede utilizar la misma funcin o es necesaria una segunda
funcin que se implemente para convertir horas en minutos. Para calcular el ingreso sea
ideal o real, de obtenerse con una funcin se requerir de un par de parmetros para
conocer el tiempo en minutos y la cuota recibida y si se calcula sin funcin de todos modos
se ocupar multiplicar los minutos trabajados por da con el nmero de parabrisas
limpiados en un minuto y eso a su vez multiplicado por la cooperacin recibida. En el
anlisis se dedujo que el ingreso ideal sera el doble al ingreso real, entonces obtenido el
ingreso real ese total se duplica y obtenemos el ideal.
c) Comprobacin: Al probar este programa, suponga que trabaj 1 hora y vea el resultado,
ahora si se vuelve a ejecutar, escriba 2 horas y el ingreso deber duplicarse, de ser
correctos los datos, se puede calcular con cualquier nmero de horas.

Ejercicio 4.7.1: La sumatoria es una serie de sumas sucesivas desde la unidad hasta un lmite
cualesquiera.
Ejemplo:
o tambin:
S( 4 ) = 4 + 3 + 2 + 1
S( 4 ) = 4 + S( 3 )
S( 3 ) = 3 + S( 2 )
S( 2 ) = 2 + S( 1 )
S( 1 ) = 1 + S( 0 )
S( 0 ) = 0 ==> Base o lmite.
Es decir, entonces que S( N ) = N + S( N - 1 ), por lo que es claro apreciar que se trata de una
formula recursiva para todo valor N > 0.
El objetivo ser que se desarrolle un programa que resuelva este planteamiento con una funcin
recursiva:

a) Anlisis: La solucin es muy simple y de hecho puede ser resuelta con una estructura de
control repetitiva, sin embargo una solucin alternativa es utilizar el recurso de recursin
que ofrece el lenguaje C, el cual permite los llamados a s misma de una funcin las veces

20

CONALEP-2011

[Programacin bsica]

que sean necesarias y definir a travs de una estructura de control condicional, la forma
de interrumpir los llamados y evitar un ciclo infinito. Al ser un planteamiento muy
completo, lo nico que nos queda es decir que se ocupa una funcin y que en su cuerpo se
requiere una suma tal y como se describe en la formula, para que al final se obtenga el
total solicitado.
b) Codificacin: El programa basta con solicitar el nmero que marque el fin de la sumatoria,
matemticamente podemos decir el lmite superior de la sumatoria y la funcin por
implementar deber hacer el resto, que en este caso es auto llamarse hasta sumar todos
los valores inferiores a dicho valor proporcionado por el usuario, con esto la funcin
requerir de un parmetro del tipo entero y devolver un valor del mismo tipo una vez
sumado, por lo que es indispensable al declarar el tipo de funcin, que ste sea del mismo
tipo que la variable que almacene el total de la suma. Por ltimo se imprime la suma total
que resuelva el planteamiento solicitado.
c) Comprobacin: Anteriormente se recomend la ejecucin paso a paso, para este caso es
indispensable adems activar el depurador para seguir cmo va cambiando parcialmente
el valor de la suma y se podr seguir de esa manera cmo la funcin se llama as misma.
De otra manera, si solo se ejecuta el programa y se observa el resultado, no podr apreciar
cmo funciona el concepto recursivo.

Ejercicio 4.7.2: Resulvase el ejercicio 4.7.1 referente a sumatorias mediante una funcin que
aplique el concepto de iteracin.
a) Anlisis: Ya se deca en el anlisis del ejercicio 4.7.1 sobre la claridad del planteamiento, y
la necesidad de una funcin y que en su cuerpo se requiere una suma tal y como se
describe en la formula, para que al final se obtenga el total solicitado. Sin embargo, como
ya yo se restringe al aplicar la recursividad, se deber buscar la solucin mediante las
estructuras de control repetitivo para hacer las sumas sucesivas hasta alcanzar el total.
b) Codificacin: El programa nuevamente solicitar el nmero que marque el fin de la
sumatoria, pero la funcin deber resolver el resto, que en este caso ser apoyarse con las
estructuras de control repetitiva y aunque puede hacerse con cualquiera se propone
emplear el ciclo for(), ya que conocemos de antemano el nmero de sumas que se ocupan
para obtener el total, con esto la funcin seguir requiriendo un parmetro del tipo entero
para controlar el nmero de veces que se repetir el ciclo y a su vez devolver un valor del
mismo tipo una vez hechas las sumas, por lo que seguir siendo indispensable al declarar
el tipo de funcin, que este sea del mismo tipo que la variable que almacene el total de la
suma. Por ltimo se imprime la suma total que resuelva el planteamiento solicitado.
c) Comprobacin: Anteriormente se recomend la ejecucin paso a paso, para este caso es
indispensable adems activar el depurador, para seguir cmo va cambiando parcialmente
el valor de la suma. De otra manera, si solo se ejecuta el programa y se observa el
resultado, no podr apreciar cmo funciona el concepto iterativo.

21

CONALEP-2011

[Programacin bsica]

Ejercicio 4.7.3: Aplicando el concepto de recursividad o iteracin realiza un programa que a travs
de una funcin imprima en pantalla los nmeros de 1 a N, en donde N sea el valor proporcionado
por el usuario.
a) Anlisis: Esta solucin es an ms simple que el ejercicio 4.7.1 y de hecho tambin puede
ser resuelto con una estructura de control repetitiva, sin embargo con el nimo de pensar
una solucin alternativa se solicita el utilizar nuevamente la recursin que ofrece el
lenguaje C. En este caso, nos toca dilucidar la manera de ir imprimiendo de uno en uno
hasta el lmite fijado por el usuario. Entonces, se coincide en el hecho de que se ocupa una
funcin y que en su cuerpo se requiere una operacin o clculo que, dado el lmite
superior, lo vaya decrementando de uno en uno, hasta llegar a 1; y que los autollamados
sean los que realicen el proceso de impresin, para que al final se obtenga el total
solicitado.
b) Codificacin: El programa otra vez necesita solicitar el nmero que marque el fin de la
secuencia numrica, matemticamente podemos decir el lmite superior de la secuencia o
serie. La funcin deber imprimir dicha secuencia, que en este caso es auto llamarse hasta
mostrar en pantalla todos sus valores. Con esto, la funcin requerir de un parmetro del
tipo entero y no devolver un valor, ya que solamente imprimir el valor recibido. La clave
est en el orden en que la funcin se llamar a s misma y el orden en que imprimir el
nmero recibido como parmetro. No olvidar la estructura de control que maneje la
condicin de terminacin de la recursin.
c) Comprobacin: Reiteramos el uso de la ejecucin paso a paso, para terminar de
comprender este concepto recursivo que ofrece el lenguaje C. De otra manera, si solo se
ejecuta el programa y se observa el resultado, no podr apreciar diferencia alguna, con
respecto a otras soluciones.

Ejercicio 4. 7.4: Para concluir esta unidad agregamos un sper ejercicio, y le damos este nombre
porque se va a desmenuzar el programa solicitado en pequeos subproblemas, para que sean
resueltos a travs de funciones que, al incorporarse a la funcin principal, darn solucin a lo aqu
solicitado. Comenzamos diciendo que el objetivo es contar con un programa Conversor de
unidades de medida, el cual deber ofrecer de inicio la alternativa al usuario para seleccionar si
quiere convertir unidades de peso, de longitud o de moneda. En esta unidad 4 y la unidad 3 ya se
hicieron algunos programas para convertir de dlares a pesos, de kilos a libras, esos mismos
programas con pequeos ajustes podran incluirse en este programa conversor, por lo pronto
delimitemos lo que se pide de inicio y se deja la libertad al usuario para que le incorpore,
conforme vaya necesitando, otro tipo de conversiones; como pudiera ser de tamao en el caso de
los bytes, ya que es muy comn el necesitar conocer entre diferentes medidas la equivalencia
entre kilobytes, megabytes y gigabytes, entre otras. Por lo pronto, el programa una vez ofrecidas
las alternativas posibles, deber presentar un submen con opciones disponibles dentro de esa
categora, por ejemplo si se seleccion longitud, pudiera brindarse la opcin de convertir metros a
yardas, centmetros a pulgadas o metros a pies. Y as, sucesivamente, con el resto de las unidades
de medida, pero ya sern especificadas en cada uno de los incisos siguientes:

22

CONALEP-2011

[Programacin bsica]

A. En la funcin principal main(), o dentro de una funcin, crear un men que presente
las opciones principales: PESO, LONGITUD, VOLUMEN y MONEDA.
a. Anlisis: Al ser un programa ms completo requiere ir realizando un anlisis
parcial por cada una de la partes que la integran y aqu al ser la parte que
controlara el programa, ser necesario colocar el men con las opciones
principales dentro de la funcin main(), la cual gobernar el resto de las
alternativas.
b. Codificacin: Como se trata nicamente de presentarle al usuario del
programa las alternativas posibles de conversin, eso se logra con la
estructura de control condicional switch() y de ah ser transferir el control,
mediante una funcin, a las opciones que se ofrezcan por cada unidad de
medida.
c. Comprobacin: Si se ejecuta este programa se sugiere poner de manera
provisional un mensaje con la funcin printf(), para saber que s est
trabajando correctamente el men.

B. Crear un submen, por cada medida, de tal manera que el usuario seleccione la
conversin que requiera, dadas las siguientes posibilidades: PESO (Lb-Kg, Kg-Lb,
Onzas-gramos y Gramos-onzas); LONGITUD (yarda-metro, metro-yarda, pulgadacentmetro y centmetro-pulgada); VOLUMEN (galn-litro, litro-galn, mililitro-onza y
onza-mililitro) y MONEDA (este se deja opcionalmente).
a. Anlisis: Una vez construido el men principal, el siguiente paso es hacer un
submen por cada unidad de medida, es decir, que si la persona eligi
volumen se deber presentar un submen, donde la persona pueda
seleccionar entre las opciones disponibles, por ejemplo: 1.- Galn-litro, 2.Litro-galn, 3.- Mililitro-onza, 4.- Onza-mililitro y 0.- Regresar al men
principal, esto para el Volumen, pero se tendr que hacer lo mismo con cada
unidad de medida presentada en el men principal.
b. Codificacin: Al igual que el men principal, el propsito es presentar las
alternativas posibles de conversin exclusivamente de esa unidad de medida,
cosa que se logra con la estructura de control condicional switch() y de nuevo
transferir el control mediante llamados a las funciones que realizaran la
conversin. Algo adicional y que no se contempla en el men, es que aqu si
ser necesario pedir los datos indispensables para la conversin y una vez
hecho el clculo presentar el resultado. El prototipo sugerido para las
funciones es el nombre sin parmetros, por ejemplo kg-a-lb() y dentro de ellas
establecer todos los elementos antes descritos.
c. Comprobacin: Para probar cada uno de los submens del programa se
sugiere una vez ms el poner de manera provisional mensajes con la funcin
printf(), para saber que s estn trabajando correctamente las elecciones del
submen, esto mientras se van habilitando una a una las diferentes
alternativas de conversin.

23

CONALEP-2011

[Programacin bsica]

C. Al ir en cascada y una vez hecho los mens, se pide iniciar una a una las opciones del
submen, en este caso y siguiendo un orden, realiza con funciones las operaciones
necesarias para convertir de Lb-Kg, para ello es necesario solicitar la cantidad en
libras y ya con la equivalencia en kilos dar el resultado en libras.
a. Anlisis: Concluidos el men principal y el submen por cada unidad de
medida, solo resta ir incorporando las funciones que permitan la conversin
con los datos proporcionados por el usuario. En este caso, toca analizar la
funcin para pasar de libras a kilos y, en ese sentido, de inicio se necesita la
cantidad a convertir y la equivalencia de una Libra a cuntos kilogramos
corresponde, tarea que se tiene que realizar antes de construir la funcin.
b. Codificacin: Dada la similitud entre todas las conversiones, conviene aqu
disear una funcin sin que se pidan unidades especficamente, para que si le
proporcionamos los datos a convertir y la equivalencia, esta nos d el
resultado ya convertido, hacer esto har ms ligero el diseo e
implementacin de las funciones subsecuentes. El prototipo de la funcin,
ser: convertir(cantidad, equivalencia) donde la cantidad es la cifra que se
quiere convertir y la equivalencia es la relacin que hay entre ambos sistemas
de medida, por ejemplo, sabemos que un kilogramo equivale a 2.2 libras,
entonces 10 libras a cuntas libras equivale y esa ser la tarea de la funcin
convertir(). Respecto al cuerpo de la funcin Lb-a-Kg(), en ella se pondrn las
instrucciones para pedir los datos al usuario y para informarle el resultado.
c. Comprobacin: La solicitud para probar esta funcin es elegir la opcin PESO Y
luego la otra opcin Lb-a-Kg. Los datos a introducir podrn corresponder a la
misma equivalencia para que, en este caso, d 1. Esto es, si decimos 2.2 libras
a cuntos kilogramos equivale, el resultado deber ser uno; de ser correcto el
resultado en el programa desarrollado, ya se podr probar con otros datos.
D. La siguiente funcin sera hacer lo inverso, que en este caso es pasar de kilos a libras y
solicitar la cantidad a convertir.
a. Anlisis: En esta segunda funcin lo que hay que tomar en cuenta es que
como un kilo es casi el doble en libras entonces si se quiere saber a cuanto
equivale 10 kg en libras, la operacin obligada es la multiplicacin. Aparte de
investigar la equivalencia correspondiente, es importante recordar que ya se
hizo un planteamiento similar en el Ejercicio 4.2.2, por lo que con unas
pequeas adecuaciones esa implementacin se puede habilitar aqu.
b. Codificacin: Si decide incorporar la funcin realizada en el Ejercicio 4.2.2,
solo recuerde que en el cuerpo de la funcin Kg-a-Lb(),se pondrn las
instrucciones para pedir los datos al usuario, hacer la conversin e informar el
resultado.
c. Comprobacin: La solicitud para probar esta funcin es elegir la opcin PESO Y
luego la otra opcin correspondiente a Kg-a-Lb. El dato a introducir podr ser
1 kg y el resultado que arroje la conversin debe ser la misma equivalencia,
que en este caso es de 2.2 libras: de ser correcto el resultado, ya se podr
probar el programa desarrollado con datos diferentes.

24

CONALEP-2011

[Programacin bsica]

E. Otra funcin sera para pasar de gramos a onzas.


a. Anlisis: El anlisis se va ir simplificando debido al patrn que se va
presentando al momento de convertir, esto porque forzosamente se requiere
solicitar los datos, hacer la conversin una vez que se conoce la equivalencia
respectiva e informar el resultado, como en este caso sabemos que 1 gramo
es igual a 0.035270 onzas.
b. Codificacin: Respecto a la codificacin, ya venimos diciendo que el prototipo
de la funcin es sin parmetros y, ms bien, en el cuerpo de la funcin se
escriben las instrucciones que solicitaran, procesaran e informaran el
resultado.
c. Comprobacin: La solicitud para probar esta funcin es elegir la opcin PESO Y
luego la otra opcin correspondiente a Gramo-a-onza. El dato a introducir
podr ser 1 gramo y el resultado que arroje la conversin debe ser la misma
equivalencia, que en este caso es de 1 gramo = 0.035270 onzas; de ser
correcto el resultado, ya se podr probar con datos diferentes.
F. Una funcin ms es hacer lo contrario, esto es, de onzas a gramos.
a. Anlisis: El anlisis de esta conversin se simplifica debido a que se hizo un
planteamiento similar en el Ejercicio 4.2.1, por lo que con unas pequeas
adecuaciones esa implementacin puede habilitarse aqu.
b. Codificacin: Si decide incorporar la funcin realizada en el Ejercicio 4.2.1,
solo recuerde que en el cuerpo de la funcin Onza-a-gr(),se pondrn las
instrucciones para pedir los datos al usuario, hacer la conversin e informar el
resultado. Un cuidado que s se tiene que considerar, es que como se van a
manejar cantidades muy pequeas o muy grandes las declaraciones tienen
que ser del tipo adecuado, ya sea entero largo o con decimales, segn
corresponda.
c. Comprobacin: La solicitud para probar esta funcin es elegir la opcin PESO Y
luego la otra opcin correspondiente a Onza-a-gr. El dato a introducir podr
ser 1 onza y el resultado que arroje la conversin debe ser la misma
equivalencia que, en este caso, es de 1 onza = 28.349523 gramos; de ser
correcto el resultado, ya se podr probar con datos diferentes.
G. Respecto a la longitud sera algo similar, es decir, hacer la funcin para convertir de
yardas a metros.
a. Anlisis: Despus de haber hecho un anlisis exhaustivo por cada una de las
alternativas de la unidad de medida del PESO, podemos concluir que tanto
para las unidades de medida y volumen, el patrn es lo mismo, as que las
tareas son repetitivas, es decir, investigar la equivalencia y multiplicar o dividir
segn corresponda para encontrar la equivalencia respectiva. En este caso
1 yarda es igual a 0.914411 metros.
b. Codificacin: Con relacin a la codificacin, el patrn tambin se repite, es
decir, una funcin sin argumentos y dentro de la funcin colocar todo lo

25

CONALEP-2011

[Programacin bsica]

necesario y que ya se ha venido diciendo en los ejercicios previos, as como


tener cuidado en la declaracin de las variables locales.
c. Comprobacin: Respecto a comprobar, no est dems decir, que se tiene que
recorrer tanto el men, como el submen por las opciones que permitan ir
probando cada una de las funciones implementadas y de inicio el dato
obligado es escribir el 1 (uno). En todos los casos se deber devolver como
resultado la equivalencia misma, de no ser as, se tendr que revisar la funcin
correspondiente; de lo contrario, con plena confianza se podr intentar con
cifras diferentes.
H. La siguiente funcin a habilitar sera de metros a yardas.
a. Anlisis: Por lo dicho en el anlisis del inciso G, solo resta decir que la tarea es
investigar la equivalencia y determinar qu operacin corresponde. Para este
inciso la equivalencia es 1 metro = 1.9361 yardas y, poco a poco, en los incisos
restantes tanto de longitud como de volumen, se irn dejando a investigacin
del lector.
b. Codificacin: El prototipo de la funcin es mt-a-yarda(). Se pide nuevamente
tener cuidado en la declaracin de las variables locales.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver
como resultado la equivalencia misma y revisar que d la misma equivalencia
para poder probar con valores distintos.
I. Para la misma opcin de longitud, la otra funcin es de pulgadas a centmetros.
a. Anlisis: La equivalencia es que 1 pulgada es igual a 2.54 cm, y determinar si
para convertir se requiere multiplicar o dividir.
b. Codificacin: El prototipo de la funcin es pulgada-a-cm(). Cabe recordar que
en todos los casos donde se requiera dividir, en la codificacin del inciso C, se
plante una funcin que podr ser utilizada cada vez que se requiera ese tipo
de operacin, porque en ocasiones lo que se requiere es multiplicar para
encontrar el resultado.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver
como resultado la equivalencia misma y revisar que d la misma equivalencia
para poder probar con valores distintos.
J. La ltima opcin de longitud ser la funcin para pasar de centmetros a pulgadas.
a. Anlisis: La equivalencia puede ser deducida por el estudiante a partir de la
informacin proporcionada en el anlisis del inciso I. Lo que s habra que
contestar es cuando dividir y cuando multiplicar, en ese sentido se puede
partir del hecho de que si en el sistema ingls una unidad corresponde a ms
de una unidad del sistema internacional, entonces se tiene que multiplicar,
por ejemplo: 1 pulgada = 2.54 cm; entonces, si quiero saber cuntos
centmetros son 10 pulgadas, lo que ocupo es multiplicar 10 x 2.54; pero, si la
conversin es al contrario, es decir, ocupo saber cuntas pulgadas son 10
centmetros, necesito dividir. Esto es 10 / 2.54 y obtendr el resultado.
b. Codificacin: El prototipo de la funcin es cm-a-pulgada (). Cabe recordar que
en todos los casos donde se requiera dividir, en la codificacin del inciso C se
plante una funcin que podr ser utilizada cada vez que se requiera ese tipo

26

CONALEP-2011

[Programacin bsica]

de operacin, porque como se vio en el anlisis, en ocasiones lo que se


requiere es multiplicar para encontrar el resultado.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver
como resultado la equivalencia misma y revisar que d la misma equivalencia
para poder probar con valores distintos.
K. En el caso del volumen la funcin necesaria ser de galones a litros.
a. Anlisis: Despus del anlisis exhaustivo del inciso J, donde se define cuando
dividir y cundo multiplicar, es ms claro saber cundo multiplicar o cuando
dividir. Con relacin a la equivalencia se puede decir que un galn equivale a
3.78 litros.
b. Codificacin: El prototipo de la funcin es galones-a-lt (). Cabe recordar que
en todos los casos donde se requiera dividir, en la codificacin del inciso C se
plante una funcin que podr ser utilizada cada vez que se requiera ese tipo
de operacin, porque como se vio en el anlisis del inciso J, en ocasiones lo
que se requiere es multiplicar para encontrar el resultado.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver
como resultado la equivalencia misma y revisar que d la misma equivalencia
para poder probar con valores distintos.
L. La antepenltima opcin de conversin del volumen es pasar de litros a galones,
construir la funcin necesaria.
a. Anlisis: Para la equivalencia de litros a galones se puede deducir la
equivalencia a partir de la equivalencia proporcionada en el inciso K, o bien
investigarlo por su cuenta.
b. Codificacin: El prototipo de la funcin es lt-a-galon (). Cabe recordar que en
todos los casos donde se requiera dividir, en la codificacin del inciso C se
plante una funcin que podr ser utilizada cada vez que se requiera ese tipo
de operacin, porque como se vio en el anlisis, en ocasiones lo que se
requiere es multiplicar para encontrar el resultado.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver
como resultado la equivalencia misma y revisar que d la misma equivalencia
para poder probar con valores distintos.
M. La penltima opcin del VOLUMEN ser pasar cantidades de mililitros a onzas.
a. Anlisis: La equivalencia de mililitros a onzas se deja a investigacin.
b. Codificacin: El prototipo de la funcin es ml-a-onzas (). Cabe recordar que en
todos los casos donde se requiera dividir, en la codificacin del inciso C se
plante una funcin que podr ser utilizada cada vez que se requiera ese tipo
de operacin, porque como se vio en el anlisis, en ocasiones lo que se
requiere es multiplicar para encontrar el resultado.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver

27

CONALEP-2011

[Programacin bsica]

como resultado la equivalencia misma y revisar que d la misma equivalencia


para poder probar con valores distintos.
N. Para complementar al volumen, la ltima conversin deber ser de onzas a mililitros.
a. Anlisis: La equivalencia de onzas a mililitros se deja a investigacin.
b. Codificacin: El prototipo de la funcin es onzas-a-ml (). Cabe recordar que en
todos los casos donde se requiera dividir, en la codificacin del inciso C se
plante una funcin que podr ser utilizada cada vez que se requiera ese tipo
de operacin, porque como se vio en el anlisis, en ocasiones lo que se
requiere es multiplicar para encontrar el resultado.
c. Comprobacin: Seleccionar las opciones adecuadas para probar la funcin en
turno e introducir como dato el 1 (uno). En todos los casos se deber devolver
como resultado la equivalencia misma y revisar que d la misma equivalencia
para poder probar con valores distintos.
O. Respecto a la opcin de monedas, esto es muy basto, ya que se puede pasar de Euro a
pesos, de Pesos a Euros, de Dlares a Pesos y de Pesos a Dlares o de Euros a Dlares
y viceversa. En otras palabras, hay muchas combinaciones, as que dejamos al usuario
que implemente las que considere necesarias (CABE RECORDAR QUE ESTA OPCION ES
OPCIONAL).
a. Anlisis: Tras hacer el anlisis para el PESO, LONGITUD y VOLUMEN; podemos
decir que la clave est en contar con las equivalencias, porque lo dems
presenta el mismo patrn, es decir, solicitar la cantidad, realizar la conversin
y presentar en pantalla el resultado.
b. Codificacin: Los prototipos de las funciones sern similares a los construidos
en incisos anteriores, es decir, sin argumentos y dentro de su cuerpo las
instrucciones para la lectura de datos, efectuar el clculo para la conversin e
imprimir en pantalla la conversin hecha. Cabe recordar que en todos los
casos donde se requiera dividir, en la codificacin del inciso C se plante una
funcin que podr ser utilizada cada vez que se requiera ese tipo de
operacin, porque como se vio en el anlisis del inciso J, en ocasiones lo que
se requiere es multiplicar para encontrar el resultado.
c. Comprobacin: Finalmente a travs de los mens se podrn seleccionar las
opciones adecuadas para probar la funcin en turno y se sigue insistiendo en
introducir como dato el 1 (uno). En todos los casos se deber devolver como
resultado la equivalencia misma y revisar que d la misma equivalencia para
poder probar con valores distintos.

28

CONALEP-2011

[Programacin bsica]

APNDICE

Ejercicio 1
1.- V; 2.- F; 3.- V; 4.- V; 5.- F; 6.- V; 7.- F; 8.- F; 9.- F; 10.- V

Ejercicio 2
1.- d; 2.- f; 3.- g; 4.- j; 5.- h; 6.- b; 7.- i; 8.- a; 9.- c; 10.- e

Ejercicio 3
1.- Recursividad. 2.- Parmetro por valor. 3.- Parmetro por referencia. 4.- Parmetros formales.
5.- Automticas . 6.- Estticas. 7.- Registro. 8.- Cabecera. 9.- Ventaja de la funcin. 10.- Iteracin.

Ejercicio 4
1.- b); 2.- b); 3.- c); 4.- a); 5.- c); 6.- a); 7.- b); 8.- d); 9.- b); 10.- a)

Ejercicio 5
1.- V; 2.- V; 3.- F; 4.- F; 5.- V; 6.- V; 7.- F; 8.- F; 9.- F; 10.- V

Ejercicio 6
1.- (d); 2.- (f); 3.- (a); 4.- (g); 5.- (c); 6.- (b); 7.- (h); 8.- (e)

Ejercicio 7
Una funcin

es un bloque de programa que realiza una operacin especfica, a su declaracin

la podemos llamar prototipo . Utilizamos una funcin llamada scanf para que el usuario
introduzca datos y, printf , para que muestre datos en pantalla. Con la declaracin

29

CONALEP-2011

[Programacin bsica]

# include

abrimos los archivos necesarios para poder llamar a las funciones


de biblioteca . Uno de estos archivos es stdio .h.
Las variables
globales se declaran cuando se encuentran fuera de la funcin main(),
y, las variables locales , se declaran dentro de ella o de las funciones creadas por el
programador. Existen, adems, las variables
estticas , que se mantienen
en memoria durante la ejecucin del programa.
En una funcin se utilizan los apuntadores para almacenar la direccin de memoria
donde se encuentra un dato. Adems, en el encabezado de la funcin introducimos la
lista de parmetros con los datos de entrada hacia la funcin. A los parmetros tambin
los llamamos argumentos . Dicha funcin devuelve un dato con la palabra
reservada return y, si no devuelve un valor, se utiliza la palabra reservada void . Cabe
mencionar que las funciones son recursivas , cuando se llaman a s mismas.

30

CONALEP-2011

[Programacin bsica]

Ejercicio 8
F

P R O T O T
I C H E R O
U
A
C
N
C
E S T A T
I
T
P
N
G L O B A L
C
I
N
O
L
O
U
B
I
M
R E T U
I
D
T
M
E
V
S
PA R A M E T R O
I
D
R G UM E N T O
E N C A B E Z A D O

31

I P O
P U
I C A
A
I
R
I
N
R N

R
N T E R O
C
U
R
S
I
V
I
T
D
F A
D

A
R

I
N
L O C A L E S
C
B
S
L
E

CONALEP-2011

[Programacin bsica]

Crucigrama de la unidad
1
3

RE C U R S

I V I D A D

R
5

B I

B L

I O T E C A
8

I N D I R E C T
O

D E F

13

I N I D A S

R
14

U S U

15

A R I O

VO I D

11

RE G I S T R O

N
17

P 18R O T O T I P O

L L A M A R

U
R

20

F O R M A L E S
E

19

O
16

G
S

10

H
12

R E A L E S

EN C A B E Z A D O

M
7

F U N C I O N

32

CONALEP-2011

[Programacin bsica]

Listado de Ejercicios RESUELTOS de la unidad 4


Nota: Las soluciones a los ejercicios fueron probadas en las versiones para Windows de los
compiladores Turbo C++ versin 3.0 y Dev-C++ versin 4.9.9.2.
Listado 4.2.1:
/* -----------------------------------------------------------------Programa: Ejercicio4-2-1.c
Objetivo: Uso de funciones para ejemplificar la modulacin.
-------------------------------------------------------------------*/
#include <stdio.h>
float onza, gramo = 28.3495;
float pesoC;
void Pedir();
void Convertir();
void Imprimir();

/* Declaracin de los prototipos de las funciones */

void main()
{
clrscr();
/* Funcin utilizada para limpiar la pantalla */
Pedir();
Convertir();
Imprimir();
getch();
/* Funcin que espera un carcter del teclado y
permite ver resultados */
}
/* -----------------------------------------------------------------Funcin: Pedir()
Objetivo: Solicita cantidad a convertir.
Parmetros: ninguno.
Salida: ninguna
-------------------------------------------------------------------*/
void Pedir()
{
printf("\n Dar la cantidad de onzas a convertir: ");
scanf("%f", &onza);
}
/* -----------------------------------------------------------------Funcin: Convertir()
Objetivo: convierte de onzas a gramos.
Parmetros: ninguno.
Salida: ninguna
-------------------------------------------------------------------*/
void Convertir()
{
pesoC = onza * gramo;

33

CONALEP-2011

[Programacin bsica]

}
/* -----------------------------------------------------------------Funcin: Imprimir()
Objetivo: Imprime la cantidad convertida.
Parmetros: ninguno.
Salida: ninguna
-------------------------------------------------------------------*/
void Imprimir()
{
printf("\n %8.2f onzas en gramos son %8.2f ", onza, pesoC);
}

34

CONALEP-2011

[Programacin bsica]

Listado 4.3.1:
/* -----------------------------------------------------------------Programa: Ejercicio4-3-1.c
Objetivo: Uso de funciones con paso de parmetros.
-------------------------------------------------------------------*/
#include <stdio.h>
int diferenciaE, num_enamorado;
void compara(int, int);
void main()
{
int edad1, edad2;
clrscr();
printf("\n Cual es la edad del enamorado 1? ");
scanf("%d", &edad1);
printf("\n Cual es la edad del enamorado 2? ");
scanf("%d", &edad2);
compara(edad1, edad2);
if ((diferenciaE > 0) && (diferenciaE < 6))
{
printf("\n El enamorado %d es ms joven por %d aos",
num_enamorado, diferenciaE);
printf("\n Sin embargo existe COMPATIBILIDAD por edad ");
}
if (diferenciaE > 5)
{
printf("\n El enamorado %d es ms joven por %d aos",
num_enamorado, diferenciaE);
printf("\n por lo tanto NO existe COMPATIBILIDAD por edad ");
}
if (diferenciaE == 0)
printf("\n Existe 100'%' de COMPATIBILIDAD por edad");
getch();
}
/* -----------------------------------------------------------------Funcin: compara()
Objetivo: comparar dos nmeros enteros.
Parmetros: e1 y e2 que son las las edades de los enamorados.
Salida: ninguno
-------------------------------------------------------------------*/
void compara(int e1, int e2)
{
if (e1 < e2)
{
num_enamorado = 1;

35

CONALEP-2011

[Programacin bsica]

diferenciaE = e2 - e1;
}
else
{
num_enamorado = 2;
diferenciaE = e1 - e2;
}
}

36

CONALEP-2011

[Programacin bsica]

Listado 4.4.1
/* -----------------------------------------------------------------Programa: Ejercicio4-4-1.c
Objetivo: Creacin y uso de funciones con devolucin de valores.
-------------------------------------------------------------------*/
#include <stdio.h>
int suma(int, int);
float dividir(int n1, int n2);
void main()
{
int cuenta;
char opcion, resp;
int num1,num2;
float Total;
do
{
clrscr();
printf("\n Dame el primer nmero: ");
scanf("%d", &num1);
printf("\n Dame el segundo nmero: ");
scanf("%d", &num2);
printf("\n BIENVENIDO A CALCULADORA ELECTRONICA \n");
printf("(+) sumar
(/)dividir \n");
printf("(-)restar
(x) multiplicar \n");
printf("(=) SALIR DE LA CALCULADORA \n ");
printf("\n Digite el operando: ");
opcion = getch();
switch(opcion)
{
case '+':
Total = suma(num1, num2);
break;
case '/':
Total = dividir(num1, num2);
break;
default:
exit(0);
}
printf("\n El resultado es %8.2f", Total);
printf("\n Desea realizar otro calculo (s\n):");
resp = getch();
} while (resp == 's' || resp == 'S');
}
/* -----------------------------------------------------------------Funcin: sumar()
Objetivo: Sumar dos nmeros enteros.
Parmetros: n1 y n2 que son las variables de nmeros enteros.

37

CONALEP-2011

[Programacin bsica]

Salida: El resultado de la suma.


-------------------------------------------------------------------*/
int suma(int n1, int n2)
{
int total;
total = n1 + n2;
return (total);
}
/* -----------------------------------------------------------------Funcin: dividir()
Objetivo: dividir dos nmeros enteros.
Parmetros: n1 y n2 que son las variables de nmeros enteros.
Salida: El resultado de la divisin.
------------------------------------------------------------------*/
float dividir(int n1, int n2)
{
float total;
if (n2 == 0)
{
printf("No se puede dividir entre 0");
total = 0;
}
else
{
/* n1 / n2 dara una divisin entera, con posible prdida de
decimales */
total = n1;
total = total / n2;
}
return (total);
}

38

CONALEP-2011

[Programacin bsica]

Listado 4.4.3:
/* -----------------------------------------------------------------Programa: Ejercicio4-4-3.c
Objetivo: Uso de funciones que devuelven valores.
------------------------------------------------------------------*/
#include <stdio.h>
#define precioMSM 3.85
long calculaIng(long);
long utilidad (long, long);
void main()
{
long premio, totalMSM, ingresoB;
float ganancia;
clrscr();
printf("\n Cual es monto del premio? ");
scanf("%ld", &premio);
printf("\n Cual es el total de mensajes? ");
scanf("%ld", &totalMSM);
ingresoB = calculaIng(totalMSM);
ganancia = utilidad (ingresoB, premio);
printf("\n La utilidad por ese concurso es de $ %8.2f", ganancia);
getch();
}
/* -----------------------------------------------------------------Funcin: calculaIng()
Objetivo: Calcular el ingreso total, multiplicando mensajes recibidos con
el precio por mensaje.
Parmetros: mensaje es es la variable de tipo entero largo.
Salida: El resultado de la divisin
-------------------------------------------------------------------*/
long calculaIng(long mensajes)
{
return (precioMSM * mensajes);
}
/* -----------------------------------------------------------------Funcin: utilidad()
Objetivo: restar dos nmeros tipo entero largo.
Parmetros: ing y valorP que son las variables de tipo entero largo.
Salida: El resultado de la resta.
-------------------------------------------------------------------*/
long utilidad(long ing, long valorP)
{
return (ing - valorP);
}

39

CONALEP-2011

[Programacin bsica]

Listado 4.6.1:
/* -----------------------------------------------------------------Programa: Ejercicio4-6-1.c
Objetivo: Uso de biblioteca de funciones.
-------------------------------------------------------------------*/
#include <stdio.h>
#define cuadras 30;
float tiempo(int);
void main()
{
int cuadra1 = 45, sale = 45, llega = 60, tiempoD, tiempoR;
float diferenciaT;
clrscr();
tiempoD = calculaTR(llega, sale);
tiempoR = cuadra1 * cuadras;
diferenciaT= tiempoD - tiempo(tiempoR);
if (diferenciaT > 0)
printf("\n FELICIDADES SIGUE A ESE PASO");
else
{
printf("\n A ESE PASO, nunca vas a llegar a tiempo");
printf("\n necesitas levantarte 6:%d", sale + (int)diferenciaT);
}
getch();
}
/* -----------------------------------------------------------------Funcin: calculaTR()
Objetivo: restar dos nmeros enteros.
Parmetros: f e i que son las variables de nmeros enteros.
Salida: El resultado de la resta
-------------------------------------------------------------------*/
int calculaTR(int f, int i)
{
return (f - i);
}
/* -----------------------------------------------------------------Funcin: tiempo()
Objetivo: dividir dos nmeros enteros.
Parmetros: t es la variable de tipo entero.
Salida: El resultado de la divisin
-------------------------------------------------------------------*/
float tiempo(int t)
{
return (t / 60.0); /* 60.0 para convertir el resultado a float*/
}

40

CONALEP-2011

[Programacin bsica]

Listado 4.7.1:
/* -----------------------------------------------------------------Programa: Ejercicio4-7-1.c
Objetivo: Uso de funciones recursivas.
-------------------------------------------------------------------*/
#include <stdio.h>
long sumatoria(int);
void main()
{
int num;
long sum;
printf("\n Cual es lmite de la sumatoria? ");
scanf("%d", &num);
sum = sumatoria(num);
printf("\n La sumatoria de %2d es %2d", num, sum);
getch();
}
/* -----------------------------------------------------------------Funcin: sumatoria ()
Objetivo: Realizar una serie de sumas sucesivas desde la unidad hasta un
lmite.
Parmetros: el limite o tope de la sumatoria.
Salida: la sumatoria de todos los valores menores al lmite solicitado
-------------------------------------------------------------------*/
long sumatoria(int n)
{
if (n > 0)
return ( n + sumatoria( n - 1 ));
else
return ( 0 );
}

41

CONALEP-2011

[Programacin bsica]

Listado 4.7.4.a
/* -----------------------------------------------------------------Programa: Ejercicio4-7-4a.c
Objetivo: Presentar un men con las opciones principales del conversor.
-------------------------------------------------------------------*/
#include <stdio.h>
void Peso();
void Longitud();
void Volumen();
void Moneda();
float Convertir(float, float);
void Lb_a_Kg();
void gr_a_onza();
void yarda_a_mt();
void pulgada_a_cm();
void galones_a_lt();
void ml_a_onza();
void main()
{
char opcion;
do
{
clrscr();
printf("\n PROGRAMA CONVERSOR DE UNIDADES DE MEDIDA \n");
printf("(1) PESO \n");
printf("(2) LONGITUD \n");
printf("(3) VOLUMEN \n");
printf("(4) MONEDA \n");
printf("(0) SALIR DEL CONVERTIDOR\n");
printf("\n Oprima el nmero acorde a su eleccin: ");
opcion = getch();
switch(opcion)
{
case '1':
Peso();
break;
case '2':
Longitud();
break;
case '3':
Volumen();
break;
case '4':
Moneda();
break;
default:
exit(0);
break;
}
} while (opcion != '0');
}

42

CONALEP-2011

[Programacin bsica]

Listado 4.7.4c.
/*-----------------------------------------------------------------Funcin: Lb-a-Kg()
Objetivo: convertir de Libras a Kilogramos.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void Lb_a_Kg()
{
float cantxconv, cantConv, equivale = 2.2;
printf("\n Dar la cantidad de Libras a convertir: ");
scanf("%f", &cantxconv);
cantConv = Convertir(cantxconv, equivale);
printf("\n %10.2f libras en kilogramos son %10.4f ", cantxconv,
cantConv);
getch();
}
/* -----------------------------------------------------------------Funcin: Convertir()
Objetivo: Realizar el clculo que permita la conversin.
Parmetros: c y eq las cuales son la cantidad por convertir y la
equivalencia entre los diferentes sistemas de medicin.
Salida: cantidad ya convertida.
-------------------------------------------------------------------*/
float Convertir(float c, float eq)
{
float cant_conv;
cant_conv = c / eq;
return cant_conv;
}

43

CONALEP-2011

[Programacin bsica]

Listado 4.7.4e.
/* -----------------------------------------------------------------Funcin: gr-a-Onzas()
Objetivo: convertir de gramos a onzas.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void gr_a_onza()
{
float cantxconv, cantConv, equivale = 0.035270;
printf("\n Dar la cantidad de gramos a convertir: ");
scanf("%f", &cantxconv);
cantConv = cantxconv * equivale;
printf("\n %10.2f gramos en onzas son %12.6f ", cantxconv,
cantConv);
getch();
}

44

CONALEP-2011

[Programacin bsica]

Listado 4.7.4g.
/* -----------------------------------------------------------------Funcin: yarda-a-mt()
Objetivo: convertir de yardas a metros.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void yarda_a_mt()
{
float cantxconv, cantConv, equivale = 0.914403;
printf("\n Dar la cantidad de yardas a convertir: ");
scanf("%f", &cantxconv);
cantConv = cantxconv * equivale;
printf("\n %10.2f yardas en metros son %12.6f ", cantxconv,
cantConv);
getch();
}

45

CONALEP-2011

[Programacin bsica]

Listado 4.7.4i.
/* ------------------------------------------------------------Funcin: pulgada-a-cm()
Objetivo: convertir de pulgadas a centmetros.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void pulgada_a_cm()
{
float cantxconv, cantConv, equivale = 2.54;
printf("\n Dar la cantidad de pulgadas a convertir: ");
scanf("%f", &cantxconv);
cantConv = cantxconv * equivale;
printf("\n %10.2f pulgadas en centmetros son %10.2f ", cantxconv,
cantConv);
getch();
}

46

CONALEP-2011

[Programacin bsica]

Listado 4.7.4k.
/* ------------------------------------------------------------Funcin: galones-a-lt()
Objetivo: convertir de galones a litros.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void galones_a_lt()
{
float cantxconv, cantConv, equivale = 3.78;
printf("\n Dar la cantidad de galones a convertir: ");
scanf("%f", &cantxconv);
cantConv = cantxconv * equivale;
printf("\n %10.2f galones en litros son %10.2f ", cantxconv,
cantConv);
getch();
}

47

CONALEP-2011

[Programacin bsica]

Listado 4.7.4m.
/* ------------------------------------------------------------Funcin: ml-a-onza()
Objetivo: convertir de mililitros a onzas.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void ml_a_onza()
{
float cantxconv, cantConv, equivale = 30;
printf("\n Dar la cantidad de mililitros a convertir: ");
scanf("%f", &cantxconv);
cantConv = Convertir(cantxconv, equivale); /* funcin definida en el
inciso C */
printf("\n %10.2f mililitros en onzas son %10.4f ", cantxconv,
cantConv);
getch();
}

48

CONALEP-2011

[Programacin bsica]

Quinta parte
Arreglos

CONALEP-2011

[Programacin bsica]

5. Arreglos
5.1. Arreglos de una dimensin o vectores

Ejercicio 1
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el
espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Cero

Homogneos

Vectores

Rango

Estructurados

Memoria

Elemento

Arreglos

Bsqueda

Ordenamiento

Enunciados:
1.- Son datos llamados compuestos o
simples o compuestos.
2.- El tamao o
3.- Los
4.- Se le denomina
5.- Los datos

que permiten agrupar un conjunto de datos

es el nmero de elementos del vector.


son arreglos que permiten almacenar datos homogneos, de una dimensin.
a cada uno de los datos almacenados en un vector.
son datos del mismo tipo.

6.- Los
son el conjunto de datos del mismo tipo, que se relacionan con un nombre en
comn, pueden ser unidimensionales o multidimensionales.
7.- Una caracterstica de los arreglos es que los datos estn en posiciones contiguas dentro de
la
.
8.- El valor

es el que se utiliza como ndice para el primer elemento.

9.- Una de las caractersticas de los arreglos es el

de sus elementos.

10.- Otra de las caractersticas de los arreglos es la


clave o de referencia.

de sus elementos utilizando un valor

CONALEP-2011

[Programacin bsica]

Ejercicio 2
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.

1. Un vector es un arreglo de una dimensin.

2. Los datos de un vector pueden ser de diferente tipo.

3. El ndice de un vector inicia en 0.

4. En un vector, el valor numrico entre [ ] es la posicin del dato en


el vector.

5. No es necesario declarar el tipo de datos del vector.

6. En la declaracin de un vector, el nmero entre [ ] indica el nmero


de datos que tiene el vector.

7. Los elementos de un vector se acomodan en lugares dispersos de


memoria.

8. En todos los casos no es necesario inicializar un vector.

9. Es posible almacenar en un vector una cadena de caracteres.

10. Un arreglo es una secuencia de datos de diferente tipo.

CONALEP-2011

[Programacin bsica]

Ejercicio 3
Utilizando las expresiones del lado derecho, pon la sintaxis correcta de cada una de las
instrucciones siguientes:

Declaracin de un arreglo tipo vector


__________ __________ [ __________] ;

rango
Tipo de dato
Nombre del arreglo

Consulta de un arreglo tipo vector


__________ [ __________] ;

Nombre del arreglo


ndice

Declaracin de un arreglo bidimensional


________ ________ [ ________ ] [ ________ ];

ndice fila
ndice columna
Nombre del arreglo
Tipo de dato

CONALEP-2011

[Programacin bsica]

5.2. Arreglos de dos dimensiones o matrices

Ejercicio 4
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis, la letra correspondiente al inciso que indique la relacin correcta.

1.- Est entre los corchetes, indicando el tamao o rango


del arreglo.

a) Carcter nulo (\0).

b) Direccin inicial del


arreglo.

) 2.- Es el arreglo tipo carcter.

c) Fila.

d) Cadena de caracteres.

4.- Se utiliza cuando hacemos referencia a un elemento


en particular del arreglo, colocando el ndice de la
)
posicin dentro del arreglo en donde se encuentra.

e) Columnas.

) 5.- El nombre del arreglo es un apuntador constante a

f) Matrices.

g) Multidimensionales.

) 7.- Tambin son llamados arreglos de dos dimensiones.

h) Subndice del arreglo.

) 8.- Son los arreglos de ms de una dimensin.

i) Indizacin de
arreglos.

) 9.- Carcter que marca el fin de una cadena.

3.- En un arreglo de dos subndices, es el segundo al que


hace referencia.

6.- En un arreglo de dos subndices, es el primero al que


hace referencia.

CONALEP-2011

[Programacin bsica]

Ejercicio 5
Utilizando las expresiones del lado derecho, pon la sintaxis correcta de cada una de las
instrucciones siguientes:

Consulta de un arreglo tipo bidimensional


________ [ ________] [ ________];

ndice columna
Nombre del arreglo
ndice fila

Consulta de un elemento del arreglo


________ [ ________];

Nombre del arreglo


ndice del elemento

Declaracin de cadena de caracteres con sus elementos


________ ________[ _________]= ________ ;

Nombre del arreglo


char
cadena
7

Declaracin con asignacin de valores de arreglo multidimensional


______ ______ [ ______ ] [ ______ ] = { {___

___ },

rango columna

CONALEP-2011

[Programacin bsica]

{ ___

___ }};

fila0,col0
rango fila
fila1,col1
Tipo de dato
fila0,col1
Nombre del arreglo
fila1,col0

CONALEP-2011

[Programacin bsica]

5.3. Arreglos multidimensionales

Ejercicio 6
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.

1. Un arreglo multidimensional solo puede ser de dos dimensiones.

2. Cada uno de los ndices entre corchetes [ ] indica una dimensin


del arreglo.

3. Por medio de ciclos podemos introducir valores en los elementos


de los arreglos.

4. Un arreglo multidimensional nunca debe ser inicializado.

5. Los arreglos no pueden ser utilizados como parmetros en una


funcin.

6. La ordenacin de datos es una operacin que se realiza con


arreglos.

7. El cdigo de bsqueda de elementos en un vector, no puede ser


generalizado a arreglos multidimensionales.

8. Es necesario declarar un arreglo multidimensional.

9. No es posible almacenar en un arreglo multidimensional varias


cadenas de caracteres.

10. Otra manera de denominar a un arreglo es con la palabra array.

[Programacin bsica]

CONALEP-2011

Ejercicio 7
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma
correcta. Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el
espacio en blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Matriz

Bidimensional

Vector

Rango

ndices

Cadenas

Arrays

Tamao

Parmetros

Memoria

Elementos

Arreglos

Bsqueda

Ordenamiento

Inicializar

Declarar

Funcin

Tipo

Nulo

Filas

Enunciados:
, son conjuntos de datos del mismo
.
para indicar el tipo de datos que contendrn, e
para
indicar el
o
del arreglo. Podemos tener un arreglo de una
dimensin llamado
o de dos dimensiones llamado
o
arreglo
. Independientemente del tipo de arreglo, estos ocupan un bloque bien
definido de
.
Los
, en un arreglo de dos dimensiones, indican el nmero
de
y de columnas que lo conforman, estos son colocados entre [ ]. Podemos
utilizar a los arreglos como
de una
, siendo cada uno de
los
del arreglo un dato de entrada a dicha funcin.

Los

Estos se deben

Podemos tener arreglos o


empleamos el carcter
(\0).

de

de caracteres y, para indicar su final,

Es importante recordar que los arreglos pueden ser utilizados para realizar operaciones
, ya sea creciente o decreciente, as como de
de elementos.

CONALEP-2011

[Programacin bsica]

Ejercicio 8
Sopa de letras
Encuentre las palabras siguientes en esta sopa de letras: Vector, ndice, ordenamiento, rango,
cadena, inicializar, fila, bsqueda, nulo, arrays, tipo, bidimensional, arreglo, memoria, funcin,
declarar, matrices, elementos, parmetros y tamao.

G
T
R
F
D
N
T
R
E
W
S
D
F
G
C
N
S
D
F
A

H
J
U
I
O
U
H
G
F
R
T
Y
U
I
O
A
D
F
G
S

F
G
I
E
P
L
K
R
A
N
G
O
I
W
O
P
D
A
H
D

D
B
N
R
J
O
J
R
R
T
F
D
R
N
Q
W
S
E
D
F

G
F
I
T
L
H
G
T
R
Y
H
N
G
F
D
T

L
N
G

J
H
C
D
F
R
A
D
E
U
Q
S
U
B
S
I
H
J
K
A

F
J
I
F
I
E
S
S
G
D
C
F
S
R
F
P
C
H
R
H

U
K
A
D
L
M
D
R
L
G
F
G
A
S
G
O
V
E
E
J

N C
L N
L I
F G
A G
T Y
E D
D N
O S
U D
T A
R E
R R
Q A
Q E
W P
E S
W F
DM
K L

I
T
Z
U
H
U
G
R
S
L
E
J
A
S
L
L
D
G
A

O N J S
Y J H D
A R T F
O M F H
W E A E
I O P
V J D K
T E J K
C F C H
I H K T
J O U T
H F N R
Y S E A
D F G H
E M E N
M N B H
M E M O
H U Y R
T R I C
O I U Y

C D
E I
H F
Y H
R U
T Y
O T
L R
J E
R S
O D
T R
W Y
L T
T O
U Y
R I
E W
E S
T R

P
A
R
A
M
E
T
R
O
S
T
G
H
R
S
J
A
R
E
E

E
R
T
Y
H
J
K
L
I
U
G
Y
R
T
E
S
A
H
R
Y

R
F
D
R
S
D
O
R
D
E
N
A
M
I
E
N
T
O
E
R

CONALEP-2011

[Programacin bsica]

Cuestionario de la unidad
HORIZONTALES
1.- Nombre de tipo de variable char.
5.- Operacin realizada para introducir los elementos en un arreglo.
6.- En un arreglo matriz, es el primer subndice al que se hace referencia.
7.- Arreglo mayor a una matriz.
8.- Nombre que se le da a un dato almacenado en un vector.
11.- Arreglo de tipo carcter.
12.- Una de las operaciones que se pueden realizar sobre los elementos de un arreglo, en forma
creciente o decreciente.
13.- Tamao asignado a un arreglo.
14.- Es posible utilizar un arreglo como

de una funcin.

16.- En un arreglo matriz, es el segundo subndice al que se hace referencia.


17.- Conjunto de datos del mismo tipo que se relaciona con un nombre en comn.
18.- El

permite accesar un elemento especfico de un arreglo.

VERTICALES
2.- Entre

se indica el nmero de elementos de un vector.

3.- Arreglo llamado tambin matriz.


4.- Operacin que se realiza con los arreglos para encontrar uno de sus elementos, utilizando un
valor clave o de referencia.
6.- En una

podemos colocar como parmetros los elementos de un arreglo.

9.- Arreglo que permite almacenar datos homogneos, de una dimensin.

10

CONALEP-2011

[Programacin bsica]

10.- La matriz puede contener elementos de tipo


operaciones matemticas.

y, con ellos, realizar

15.- A un arreglo de dos dimensiones tambin se le llama

10

11

12
13
14
15
16
17

18

11

CONALEP-2011

[Programacin bsica]

5.4. Ejercicios prcticos


Para simplificar la revisin de este documento, se aclara que los ejercicios estn
alternados, es decir, se presenta la solucin de un ejercicio y se propone que el siguiente
sea resuelto por el lector.
El significado de la nomenclatura utilizada, por ejemplo Ejercicio 2.4.3, tiene la
explicacin siguiente: el primer nmero corresponde a la unidad; el segundo corresponde
al tema especfico; y, el tercero, es el nmero de ejercicio, es decir, unidad 2, tema 4 y
ejercicio o programa nmero 3.
Por otra parte, hay dos tipos de prcticas, las prcticas normales y las de paso a paso.
Para las prcticas normales se recomienda utilizar los ejercicios propuestos para que sean
resueltos por el lector y, para las prcticas paso a paso, guiarse con los ejercicios
resueltos, nicamente se tendra que seguir el procedimiento siguiente:
1. Encender el equipo de cmputo.
2. Abrir sesin del ambiente grfico Windows.
3. Ejecutar la aplicacin que se tenga instalada para editar los programas escritos en
lenguaje C.
4. Transcribir el programa en cuestin.
5. Guardar el archivo que contiene el programa transcrito.
6. Compilar el programa.
7. Iniciar un proceso de depuracin del programa (correccin de errores) hasta
cerciorarse de que el programa cumpla con el objetivo establecido.
8. Imprimir el resultado de la ejecucin o ejecuciones del programa (paso opcional).

Ejercicio 5.2.1: Elabora un pequeo programa que almacene en arreglos unidimensionales de


manera predefinida las iniciales de los das de la semana y los meses del ao. Adems, la declaracin
de un arreglo esttico con 8 elementos del tipo numrico para representar la jornada laboral de un
da hbil, que son 8 horas. Despus imprimir el sexto mes del ao, 4 horas de trabajo y el tercer da
de la semana.
a) Anlisis: Revisando el planteamiento, vemos que el objetivo consiste en declarar arreglos de
diferentes tipos, es decir, en unos se almacenaran nmeros y en otros texto. Una cosa ms que
se pretende, es el introducir valores a los arreglos al momento de su declaracin. En esta
ocasin no se solicita ningn dato, nicamente hay que imprimir ciertos elementos del arreglo,
tal y como se seala al final del prrafo.
b) Codificacin: Para elaborar el programa, se sugiere declarar de manera global dos arreglos uno
del tipo carcter para almacenar los das de la semana y uno numrico para los meses del ao;
el tercer arreglo se puede declarar del tipo entero, pero esttico como se solicita. Cabe
recordar que para inicializar un arreglo se usa el signo igual y despus los valores que sern
incluidos en el arreglo. Para imprimir los valores dentro del arreglo se usa el nombre del
arreglo y dentro de los corchetes un nmero que nos da acceso al arreglo y se le conoce como
ndice, con el siguiente formato: nombre-del-arreglo [ndice].

12

CONALEP-2011

[Programacin bsica]

c) Comprobacin: Respecto a la comprobacin, el nico resultado que veremos en pantalla ser


un: 6, 4, M y LMMJVSD, en virtud de que no se pide informacin, ni se realiza ningn tipo de
clculo.

Ejercicio 5.2.2: Elabora un pequeo programa que almacene en arreglos unidimensionales de manera
predefinida el total de semestres que se cursan en el Conalep, en otro los aos que se dura estudiando
y en otro ms las iniciales de los meses del ao que dura el ciclo escolar. Adems, que muestre
informacin del semestre en el que se cursa la materia Programacin Bsica y en qu ao comienza el
bachillerato. Finalmente la inicial del mes de cuando comienzan las clases.
a) Anlisis: Nuevamente el objetivo consiste en declarar arreglos de diferentes tipos, es decir, en
unos se almacenaran nmeros y en otros texto. Adems, se inicializan dichos arreglos con
ciertos valores. De acuerdo a las peticiones nos damos cuenta que en dos arreglos se van a
guardar nmeros y en un tercer arreglo texto, para finalmente imprimir ciertos elementos del
arreglo, tal y como se seala al final del prrafo.
b) Codificacin: La recomendacin para declarar los arreglos es que sea uno del tipo carcter
para almacenar las iniciales de los meses y en el primer arreglo de tipo numrico cada uno de
los semestres; el tercer arreglo se puede declarar tambin del tipo entero, y all almacenar los
3 aos que dura la carrera. Respecto a lo que se pide imprimir en pantalla, es bueno recordar
que nos podemos apoyar con printf y, dentro de los parntesis, opcionalmente poner un texto
y si no simplemente el nombre del arreglo con el elemento requerido, al cual se quiere tener
acceso. Por ejemplo: mes[7], para ver en pantalla la letra A de agosto, el mes 8 del ao.
c) Comprobacin: Para comprobar si el programa funciona adecuadamente, los resultados que
veremos en pantalla son: 3, 2 y una A. De ser otros los datos, verificar el ndice que se coloc
dentro de los corchetes y recuerde que los arreglos inician con el elemento 0 (cero), este
almacena el primer valor.

Ejercicio 5.2.3: Elabora un pequeo programa que almacene en un arreglo 10 valores del tipo entero
solicitados al usuario e imprima en pantalla nuevamente los 10 valores para confirmar si son
correctos y de lo contrario pedirlos nuevamente.
a) Anlisis: Las peticiones son muy concretas, sin embargo las tareas son varias y son
interesantes, por ejemplo: tenemos que declarar el arreglo de tal forma que pueda guardar 10
valores numricos, despus se le tiene que pedir al usuario 10 valores que sern almacenados
dentro del arreglo y finalmente mostrarle la lista de valores, para comprobar que fueron
introducidos correctamente.
b) Codificacin: La propuesta en la declaracin del arreglo es el tipo entero, para almacenar los
10 elementos que sern solicitados al usuario. Para pedir 10 valores, se podra hacer uno por
uno, pero empleara alrededor de 20 instrucciones printf() y otras 10 de scanf(), es por eso que
nos podemos ayudar de la instruccin for(), ya que sta nos permite repetir las veces que sea

13

CONALEP-2011

[Programacin bsica]

necesario un grupo de instrucciones, en este caso particular solicitar 10 datos. Por ltimo para
mostrar el contenido completo del arreglo, tambin nos ayuda el ciclo for(), ya que los
elementos del arreglo son consecutivos y podemos ir avanzando con el ciclo de uno en uno
hasta recorrer todo el arreglo, como se va a preguntar al usuario si los datos son correctos y el
programa se vuelve a reiniciar, en ese caso el ciclo do-while() puede auxiliarnos con esta parte.
c) Comprobacin: En pantalla el usuario escribir 10 valores distintos o iguales y al final volver
a aparecer esa lista en el mismo orden en el que fueron capturados y si se quieren volver a
reescribir, puede intentarse; se volvern a pedir una vez ms otros 10 datos, que reemplazarn
a todos los anteriores.

Ejercicio 5.2.4. Elabora un pequeo programa que almacene en un arreglo las vocales en minsculas y
maysculas solicitadas al usuario previamente e imprima en pantalla nuevamente los valores
almacenados para confirmar si son correctos o de lo contrario pedirlos nuevamente.
a) Anlisis: Al solicitar que el arreglo acepte las vocales, estamos hablando de un arreglo tipo
carcter y el nmero de elementos ser la suma de las vocales tanto minsculas como
maysculas, para que el usuario las teclee en el orden que as lo decida. Tras preguntarle, se le
debern mostrar en forma de lista las vocales tecleadas.
b) Codificacin: En este caso se sugiere que el arreglo se declare del tipo carcter, para
almacenar correctamente los 10 elementos que sern solicitados al usuario. Como son 10
valores los que hay que solicitar la instruccin for() nos permitir llenar el arreglo. Por ltimo,
para mostrar el contenido completo del arreglo, nos podemos apoyar en el ciclo for(), ya que
los elementos del arreglo son consecutivos y podemos ir avanzando con el ciclo de uno en uno
hasta recorrer todo el arreglo. Como se vuelve a preguntar al usuario si los datos son
correctos y el programa se vuelve a reiniciar, en ese caso el ciclo do-while() nos permite hacer
dicha tarea.
c) Comprobacin: Al escribir los 10 valores se sugiere escribir todas las vocales, primero en
minsculas y luego en maysculas, para determinar si se almacenan todas y si se guardan
correctamente. Si quiere probar el ciclo do-while, puede contestar que los datos son
incorrectos y llenar nuevamente el arreglo.

Ejercicio 5.2.5: Escriba un programa en C que lea un mensaje introducido desde el teclado y que
realice una pequea codificacin imprimindolo a la inversa. Por ejemplo: Luis y que imprima siuL.
a) Anlisis: Como se solicita que el programa acepte cadenas de texto, la declaracin del arreglo
tendr que ser del tipo carcter y como lo que se pide es que se imprima al revs, eso significa
que se comienza del ltimo elemento del arreglo al primero.
b) Codificacin: Para que un usuario pueda escribir cadenas de texto, no es necesario hacerlo
mediante ciclos, ya que el lenguaje C ofrece una funcin llamada gets(), la cual simplifica esa
tarea. Para mostrar el contenido completo del arreglo a la inversa, hacemos que el ciclo for()

14

CONALEP-2011

[Programacin bsica]

vaya del mximo al mnimo valor, al ir decrementando el contador, lo que nos permitir ir
recorriendo el arreglo del ltimo al primer elemento.
c) Comprobacin: para checar el funcionamiento de este programa, escriba CONALEP y el
programa deber mostrar: PELANOC. Adems pruebe con su nombre y otras palabras, el
resultado puede ser divertido.
Ejercicio 5.2.6: Escriba un programa en C que lea la edad de 5 personas y que el usuario las introduzca
cronolgicamente, es decir, del ms joven al ms grande. Posteriormente que el programa los imprima
a la inversa para que salgan del mayor al ms joven.
a) Anlisis: Al ser 5 personas sern 5 edades diferentes, lo que nos lleva a pensar que el arreglo
tendr un tamao para 5 elementos y deber aceptar nicamente nmeros del tipo entero, ya
que la edad se maneja generalmente en aos. Para imprimir en el orden inverso al que el
usuario los captur, nos habla de recorrer el arreglo del ltimo al primer elemento. Aqu se
necesita la colaboracin del usuario al momento de la captura, para que cuando se imprima en
pantalla la lista aparezca tal y como se pide. Es cierto que existen mtodos de ordenacin,
pero no es el momento oportuno de abordar ese tipo de tcnicas, cuyo objetivo es organizar y
ordenar elementos desordenados, lo que aqu se solicita es ms sencillo y es solo recorrer el
arreglo al contrario.
b) Codificacin: En este caso s es necesario apoyarnos con los ciclos, tanto para solicitar la
informacin como para desplegar en pantalla los datos. Si bien es cierto que con cualquier
ciclo se puede hacer, el ciclo ideal es el for(), ya que el contador lo podemos inicializar con el
ltimo elemento vlido en el arreglo, y al ir disminuyendo en 1 (uno) eso nos permitir ir
recorriendo el arreglo del ltimo al primer elemento.
c) Comprobacin: Para verificar el funcionamiento de este programa, escriba 5 edades de sus
compaeros y sea cuidadoso que queden del ms joven al ms grande para que el programa
los presente exactamente en el orden contrario.
Ejercicio 5.2.7: Escriba un programa en C que lea una cadena de caracteres y convierta la cadena a un
nmero entero. La conversin debe ser con una funcin que solicite como parmetro una cadena y
regrese la cadena convertida a valor numrico. El propsito, adems es que dicha funcin pueda ser
empleada en otros programas.
a) Anlisis: Tal y como est el planteamiento, se podra pensar que si se escribe una palabra, la
funcin devolver su valor equivalente en nmero, sin embargo, se podr dar cuenta que al
usar la funcin scanf() se requiere manejar un formato distinto para cada valor y que la
variable almacene correctamente el dato para el cual fue declarada, entonces la idea podra
ser sustituir esa funcin scanf() para simplificar la solicitud de datos.
b) Codificacin: De inicio, la funcin requerir de un argumento donde reciba la informacin
proporcionada por teclado y deber ser declarada para que devuelva un valor entero. Para la
captura, se puede usar la funcin gets() y ser necesario investigar si el lenguaje C, cuenta con
alguna otra funcin que haga esa conversin. Respecto a las declaraciones, es notorio que se
ocupa un arreglo donde se escriba la dichosa cadena y otro arreglo para que la funcin reciba

15

CONALEP-2011

[Programacin bsica]

la referida cadena de caracteres y devolver el resultado del tipo entero, obligando a declarar al
menos una variable donde guardar temporalmente esa conversin.
c) Comprobacin: Probar este programa consistira en escribir un numero primero sin decimales
y luego con decimales y observar los resultados.
Ejercicio 5.2.8: Escriba un programa en C que lea dos valores numricos y que realice una
multiplicacin con ellos. El propsito es que se utilice la funcin de conversin desarrollada en el
ejemplo 5.2.7 al momento de solicitar cada nmero a multiplicar, es decir, que se puede prescindir de
la funcin scanf().
a) Anlisis: El hacer un programa que multiplique no carece de mucha complejidad a este nivel
del curso, la nica variante es que en lugar de utilizar scanf() se pide usar la funcin
desarrollada en el ejercicio anterior al momento de solicitar los nmeros.
b) Codificacin: Todos los elementos para implementar el programa ya se conocen, lo nico
distinto es el empleo de una funcin scanf() para pedir los datos y hay dos alternativas: una, se
guarda el ejercicio previo con la extensin .h y se incluye en la cabecera u, otra, se reescribe la
funcin para convertir un numero en cadena de caracteres a valor numrico desarrollada en el
ejercicio previo, de tal manera que pueda ser empleada para sustituir a scanf() al momento de
pedir los valores a multiplicar.
c) Comprobacin: Valdra la pena, por la simpleza al introducir los datos, que puede ser 5 x 5 y
que seguramente el resultado ser 25, que lo mejor es seguir paso a paso la ejecucin para
que le d seguimiento al llamado a las funciones y cmo el nmero que se recibe como
cadena, se convierte en un valor numrico.
Ejercicio 5.2.9: Realiza un programa que solicite una cadena de texto y que luego se escriba un
carcter que ser buscado en el texto anterior para conocer su posicin. Con el uso de funciones y
arreglos, realiza una funcin que reciba como parmetros los datos antes mencionados y que
devuelva el nmero de posicin en la que aparece dicho carcter, es decir, que informe a las cuntas
teclas se puls el mencionado carcter.
a) Anlisis: El pedir la captura de una cadena o un carcter es algo que ya se ha hecho antes, lo
que est interesante es que se pide recorrer el arreglo, pero en bsqueda de elementos,
entonces es necesario incorporar ms estructuras de control condicional para ir comparando
cada elemento del arreglo con el carcter propuesto por el usuario y de ser localizado informar
en qu posicin se encuentra, lo que nos dir a las cuantas teclas oprimi por primera vez
dicho carcter.
b) Codificacin: Despus de pedir tanto la cadena como el carcter, se invocara a la funcin
pasando como argumento los parmetros anteriores y ser la funcin la que nos devolver si
fue localizado o no dicho carcter, por lo que en el cuerpo de la funcin podra ir un ciclo for()
y una instruccin if(), sin embargo para este caso se propone un ciclo while(), ya que permite
ambas cosas, es decir mientras va recorriendo el arreglo puede ir comparando el carcter con
cada elemento del arreglo y al mismo tiempo revisar si an no se llega al final de la cadena. As
que lo nico que se necesitara dentro del ciclo es una variable que vaya incrementado su valor

16

CONALEP-2011

[Programacin bsica]

para poder comparar con el siguiente elemento del arreglo. De encontrar la primera
coincidencia terminar el ciclo y la funcin devolver el valor almacenado en la variable usada
como contador.
c) Comprobacin: Si decide la ejecucin paso a paso, se recomienda que se escriba una palabra
de 4 o cinco letras para que ayude a entender la lgica del ciclo y que no sea tan tedioso el ir
comparando elemento por elemento del arreglo. Otra recomendacin es precisamente que le
pida al depurador que vaya mostrando los valores del arreglo, de la variable, as como el
contador; para poder darle seguimiento al desarrollo del programa. Una ltima
recomendacin es que siempre escriba caracteres que s fueron tecleados, ya que as se pide
en el planteamiento del ejercicio, solo bsquedas exitosas.

Ejercicio 5.2.10: Desarrolla un programa que simule la captura de un mensaje de texto para celular y al
final avise si se cobrara por el servicio de envo un mensaje o dos, si el texto supera los 40 caracteres.
El objetivo es que se determine la longitud del texto capturado y en base a eso se avise al usuario lo
que tendr que pagar.
a) Anlisis: Sabemos que existe la funcin gets() que nos permite introducir una cadena y que esa
cadena puede ser almacenada en un arreglo, pero cmo saber cuntos caracteres fueron
tecleados por el usuario, bueno, hay otra funcin que se llama strlen() que nos ayuda a saber
la longitud de una cadena, sin embargo, un ciclo que simplemente vaya recorriendo la cadena
hasta localizar el final (\0) e ir contabilizando los elementos del arreglo nos dar el mismo
resultado. Sin embargo, s es necesario incorporar una estructura de control condicional para
comparar la longitud y avisarle al usuario que se le har un doble cobro en el caso que rebase
los 40 caracteres, que es la marca que se est poniendo como tope.
b) Codificacin: Respecto al cdigo, basta con solicitar el texto y determinar su tamao y como se
dijo en el anlisis hay dos opciones. En este caso sugerimos la ms sencilla, usar strlen(), que
viene incluida en la librera <string.h> o si el programador lo prefiere, implementar su propia
funcin. Adems, aqu se pide habilitar un control que se usa mucho en la televisin cuando
pasan mensajes por celular y es cortarlos cuando rebasan el tope permitido, aunque aqu
como la compaa lo puede mandar en dos partes, lo nico es que con un if() se avise si se
quiere pagar el doble envo.
c) Comprobacin: Probar el programa consistir en ejecutar el programa en dos ocasiones. En
una escribir un texto breve, alrededor de 20 caracteres y, la segunda vez, un texto que rebase
los 40 caracteres. Notar la diferencia.

Ejercicio 5.2.11. Elaborar un programa que simule el acceso a un sistema y que d 3 oportunidades
de escribir una contrasea. Despus del tercer intento se debe avisar que el equipo ser bloqueado
por seguridad y, de ser correcta la contrasea, que presente un mensaje de bienvenida.

17

CONALEP-2011

[Programacin bsica]

a) Anlisis: Desde 2 ejercicios previos, nos damos cuenta que el objetivo ha sido manejar
operaciones con cadenas y este no es la excepcin, debido a que la peticin que se nos hace es
muy socorrida por los sistemas operativos y en ciertas pginas que ofrecen correo electrnico
donde el usuario tiene que identificarse, entonces nos encontramos con que ahora se necesita
comparar dos cadenas y para eso habr que investigar si el lenguaje C tiene alguna funcin.
Del resultado de esa comparacin, se podr decidir el mandar imprimir el mensaje ms
propicio, es decir, un tipo de mensaje cuando acierte el usuario y otro cuando falle.
b) Codificacin: En relacin a si el lenguaje C ofrece algn tipo de funcin, efectivamente est la
funcin strcmp(), que viene incluida en la librera <string.h>, la cual regresa 0 (cero) cuando las
cadenas comparadas son iguales y un valor diferente si tiene diferente tamao, en este caso
nos interesa cuando sea 0 (cero) porque con un if() podremos enviar un mensaje u otro.
Adems de llevar un control a travs de una variable del nmero de intentos para que en caso
de que agote sus tres oportunidades el sistema avise que se bloqueara, ese control puede ser
a travs de un ciclo do-while, ya que permitir la ejecucin del ciclo de manera condicionada,
es decir, que depender de un evento para su interrupcin.
c) Comprobacin: En este caso, la clave es geras, pero puede tratar escribiendo Geras o
GERAS; total, la idea es equivocarse varias veces para analizar el comportamiento del
programa.

Ejercicio 5.2.12: Elaborar un programa en lenguaje C que pregunte las 6 asignaturas que cursa un
estudiante y las almacene en un arreglo, calcule el promedio semestral e informe si tiene derecho a
beca, si su calificacin final semestral es mayor a 9. Adems deber mostrar un mensaje de repite
curso en aquellas materias cuya calificacin sea menor a 7.
a) Anlisis: Es claro, que se requiere la declaracin de un arreglo del tipo float que permita
almacenar la calificacin final de cada asignatura, pero como no se pide almacenar el nombre,
nicamente la posicin en el arreglo nos orientar para saber si se trata de la segunda o de la
cuarta asignatura. Adems, mientras se recorre el arreglo se puede ir comparando si esa
calificacin es aprobatoria o no y avisar en ese instante. El arreglo se recorre tambin para ir
sumando las calificaciones para posteriormente dividir entre el nmero de asignaturas. El
programa termina cuando le avise al alumno si tiene derecho a beca una vez calculado el
promedio y si este es mayor a 9.
b) Codificacin: Para implementar este programa, se requerir como ya se dijo en el anlisis, de
un arreglo de 6 elementos del tipo float, un ciclo for() para recorrer el arreglo e ir sumando y
una instruccin if() para ir comparando y detectar si alguna de las asignaturas est reprobada.
Una vez hecho lo anterior avisarle al usuario o, en este caso al alumno, sobre su situacin con
los mensajes apropiados en cada caso.
c) Comprobacin: El funcionamiento del programa se puede probar en mnimo 3 casos
diferentes, cuando el estudiante aprueba todas, cuando su promedio es mayor a 9 y cuando
reprueba algunas asignaturas. Intente los casos anteriores, escribiendo calificaciones que
reflejen esas 3 situaciones y observe los mensajes que aparecern en cada caso.

18

CONALEP-2011

[Programacin bsica]

Ejercicio 5.3.1: Elaborar un programa en lenguaje C que pida un nmero entero y avise a que mes del
ao es equivalente, usando para ello arreglos bidimensionales.
a) Anlisis: Este programa puede ser resuelto empleando estructuras de control condicional, sin
embargo se nos pide aplicar el concepto de arreglos, los cuales permiten almacenar cadenas
completas en cada posicin del arreglo. As que el programa solicita un nmero entre 1 y 12 y
el programa dir a qu mes del ao corresponde.
b) Codificacin: Opcionalmente se puede utilizar la instruccin if() para avisar si el usuario
escribi un numero diferente al rango 1 a 12, que son los meses del ao. Fuera de eso, con un
simple printf() e incluyendo en su formato que se trata de una cadena lo que se quiere
imprimir, lo nico que queda es poner el nombre del arreglo y dentro de los corchetes la
variable que almacena el nmero introducido por el usuario. No est de ms decir que el
arreglo tendr que ser declarado y en ese momento inicializado con todos los meses del ao
para poder presentarle al usuario el mes que elija.
c) Comprobacin: El programa podr ser probado escribiendo cualquier mes con un nmero, y
deber presentarse el nombre del mes al cual es equivalente. Por ejemplo, si escribe 6, en
pantalla aparecer Junio; pero intente con un valor mayor a 12 o menor a 1 y revise qu
ocurre en ese caso.

Ejercicio 5.3.2: Elaborar un programa en lenguaje C que pida un nmero entero y avise a qu estacin
del ao es equivalente, usando arreglos bidimensionales.
a) Anlisis: Como el programa solo seala que se pida un dato, en particular el nmero de
estacin; entonces, al momento de declarar el arreglo, ser necesario inicializarlo con los
nombres de cada una de las estaciones. Para que el programa solicite un nmero entre 1 y 4 y
el programa avise a qu estacin del ao corresponde.
b) Codificacin: Se puede utilizar la instruccin if() opcionalmente para avisar si el usuario
escribi un numero diferente al rango 1 a 4, que son las estaciones del ao, porque un printf()
nos ayudar para mostrar el contenido del arreglo. Lo nico que falta es poner el nombre del
arreglo y, dentro de los corchetes, la variable que almacena el nmero introducido por el
usuario.
c) Comprobacin: Si no se utiliz un if() para validar la respuesta del usuario se recomienda
escribir nicamente valores entre 1 y 4, para evitar un mal comportamiento de la memoria. De
tal caso que si escribe 3, la computadora deber contestar OTOO.

Ejercicio 5.3.3: Con el manejo de arreglos crea un programa que permita guardar el nombre de 10
concursantes en un concurso de belleza, la puntuacin total asignada por 3 jueces a cada
concursante e informar el nombre de la ganadora. Desarrolla un programa que resuelva el
planteamiento anterior.

19

CONALEP-2011

[Programacin bsica]

a) Anlisis: La solucin a este problema podra ser con arreglos multidimensionales, sin embargo
como no se definen requerimientos en ese sentido, se puede implementar la solucin con dos
arreglos independientes, en uno se almacena el nombre de la concursante y en otro la
puntuacin que le asignaron los jueces. Para localizar a la ganadora, se requiere ir comparando
la puntuacin entre s y detectar en qu posicin est la puntuacin ms alta. Con ese dato
podremos saber quin es la ganadora.
b) Codificacin: Es cierto que con un ciclo iremos capturando los nombres de las concursantes y
aprovechar ese momento para que en esa misma posicin en el otro arreglo se guarde la
puntuacin total que les corresponda. Esa parte es clave, porque con otro ciclo se irn
comparando las puntuaciones y se guardar en una variable en qu posicin est el puntaje
ms alto. Con eso y mediante la funcin printf(), se presentara el nombre de la ganadora,
confiando en que ambas ubicaciones coinciden (el nombre y el puntaje).
c) Comprobacin: Una forma rpida de probar la eficacia del programa es ir escribiendo las
letras del abecedario y en la puntuacin poner, para la primera concursante un 1 para cada
juez; para la segunda concursante un 2, para todos los jueces; 3 para la tercera concursante y
as hasta la ltima. La ganadora deber ser la concursante nmero 10. Con esto, se pueden
introducir otros datos ya con nombres y puntuaciones aleatorias y que el programa imprima el
nombre de la ganadora.
Ejercicio 5.3.4: Con el manejo de arreglos crea un programa que permita guardar el nombre de 16
cantantes en un concurso de Reality Show llamado La blasfemia de academia y, que a cada cantante,
se le asigne el total de votos enviados por la gente va mensajes de texto. El programa tambin deber
indicar el nombre del expulsado del show, para aquel cantante que tenga menos votos. Desarrolla un
programa que resuelva el planteamiento anterior.
a) Anlisis: Para simplificar la solucin se pueden utilizar 2 arreglos, en uno se guarda el nombre
de los cantantes y en otro la votacin hecha por la gente. Para localizar al expulsado, se
requiere ir comparando la votacin entre s y detectar en una variable en qu posicin est la
votacin ms baja. Con ese dato podremos saber quin es el expulsado.
b) Codificacin: De manera paralela, al momento de ir pidiendo los nombres se puede ir
registrando la votacin, para conseguir con eso que ambos datos queden en la misma
posicin, aunque estn en diferentes arreglos. Esa parte es clave, porque con otro ciclo se irn
comparando las votaciones y se guardar en una variable. En qu posicin est el menor
nmero de votos. Con eso y mediante la funcin printf(), se presentara el nombre del
expulsado, confiando en que ambas ubicaciones coinciden (el nombre y la votacin).
c) Comprobacin: Se puede probar este programa con el mismo procedimiento utilizado en la
comprobacin del ejercicio 5.3.3. Una vez comprobada la precisin del programa, se pueden
introducir otros datos ya con nombres y votaciones al azar y que el programa imprima el
nombre del expulsado.

20

CONALEP-2011

[Programacin bsica]

Para ms ejercicios vase:


http://www.jorgesanchez.net/programacion/ejerciciosc/arrays.html. Recuperado el 26 de julio de
2011.

21

CONALEP-2011

[Programacin bsica]

APNDICE

Ejercicio 1
1.- Estructurados. 2.- Rango. 3.- Vectores. 4.- Elemento. 5.- Homogneos. 6.- Arreglos.
7.- Memoria. 8.- Cero. 9.- Ordenamiento. 10.- Bsqueda.

Ejercicio 2
1.- V; 2.- F; 3.- V; 4.- V; 5.- F; 6.- V; 7.- F; 8.- F; 9.- V; 10.- F

Ejercicio 3
Declaracin de un arreglo tipo vector
Tipo de dato nombre del arreglo[rango] ;

Consulta de un arreglo tipo vector


Nombre del arreglo[ndice];

Declaracin de un arreglo bidimensional


Tipo de dato Nombre del arreglo[ndice fila] [ndice columna];

Ejercicio 4
1.- (h); 2.- (d); 3.- (e); 4.- (i); 5.- (b); 6.- (c); 7.- (f); 8.- (g); 9.- (a)

22

CONALEP-2011

[Programacin bsica]

Ejercicio 5
Consulta de un arreglo tipo bidimensional
Nombre del arreglo[ndice de fila][ndice de columna] ;

Consulta de un elemento del arreglo


Nombre del arreglo [ndice del elemento];

Declaracin de cadena de caracteres con sus elementos


char Nombre del arreglo[7] = cadena;

Declaracin con asignacin de valores de arreglo multidimensional


Tipo de dato Nombre del arreglo[rango fila][rango columna] = {{fila0,col0 fila0,col1},
{fila1,col0 fila1,col1}};

Ejercicio 6
1.- F; 2.-V; 3.- V; 4.- F; 5.- F; 6.- V; 7.- F; 8.- V; 9.- F; 10.- V

Ejercicio 7
Los arreglos , o arrays , son conjuntos de datos del mismo tipo . stos se
deben declarar para indicar el tipo de datos que contendrn, e inicializar para indicar
el tamao
o rango
del arreglo. Podemos tener un arreglo de una dimensin
llamado vector o de dos dimensiones llamado matriz
o arreglo bidimensional .
Independientemente del tipo de arreglo, stos ocupan un bloque bien definido de memoria .
Los ndices , en un arreglo de dos dimensiones, indican el nmero de filas y de
columnas que lo conforman, stos son colocados entre [ ]. Podemos utilizar a los arreglos
como parmetros de una funcin , siendo cada uno de los elementos del arreglo un
dato de entrada a dicha funcin.
Podemos tener arreglos o cadenas
el carcter nulo (\0).

de caracteres y, para indicar su final, empleamos

23

CONALEP-2011

[Programacin bsica]

Es importante recordar que los arreglos pueden ser utilizados para realizar operaciones
de ordenamiento
, ya sea creciente o decreciente, as como de bsqueda
de
elementos.

24

CONALEP-2011

[Programacin bsica]

Ejercicio 8
F U N C I O N
B
T
I N I C I A L I Z A R
M
D
A
F I L A
N U L O
R
A
N
G
O
I
C
A

A
D
R R E G L
U
Q
S
U
A
N
B R
D
T I P O

N
S C
L I
A

C
T
O

R
N
R R A Y S
A

O
R

L
E L E M E N T O S
M E M O R I A

C
E

P
A
R
A
M
E
T
R
O
S

E
M A T R I C E S

N
A

25

O
R
D
E
N
A
M
I
E
N
T
O

CONALEP-2011

[Programacin bsica]

Cuestionario de la unidad
1

C A R A

C T E R

O
3
5

A S

B
I

G N A C

T R

I
M
8

R
I

O N

D I M E N S

S
I

F I

U
S

I O N A L

I
O

10

E L E M E N T O

11

C A

D E N A

12

O R D E N A M I E N T O

N
14

13

R A

N G O

P A R A M E T R O
L
17

15

I
16

C O L U M N

A R R E G L O

A
T
R

18

I N D

I
Z

26

C E

CONALEP-2011

[Programacin bsica]

Listado de Ejercicios RESUELTOS de la unidad 5


Nota: Las soluciones a los ejercicios fueron probadas en las versiones para Windows de los
compiladores Turbo C++ versin 3.0 y Dev-C++ versin 4.9.9.2.
Listado 5.2.1
/* -----------------------------------------------------------------Programa: Ejercicio5-2-1.c
Objetivo: Ejemplificar la inicializacin de arreglos unidimensionales.
-------------------------------------------------------------------*/
#include <stdio.h>
char semana[8] = "LMMJVSD"; /* Inicializacin de un arreglo*/
int meses[] = {1,2,3,4,5,6,7,8,9,10,11,12}; /* Dimensionamiento automtico*/
void main()
{
static int horas[8] = {1,2,3,4,5,6,7,8};
clrscr();
printf("\n
printf("\n
printf("\n
printf("\n

Sexto mes del ao: %d", meses[5]);


Jornada de trabajo de medio tiempo: %d", horas[3]);
Tercer da de la semana: %c", semana[2]);
Todos los das de la semana: %s", semana);

getch();
}

27

CONALEP-2011

[Programacin bsica]

Listado 5.2.3
/* -----------------------------------------------------------------Programa: Ejercicio5-2-3.c
Objetivo: Llenar y accesar arreglos unidimensionales.
-------------------------------------------------------------------*/
#include <stdio.h>
void main()
{
static int valores[10], ind;
char resp = ' ';
do
{
for (ind = 0; ind < 10; ind++)
{
printf("\n Introduce el %do. valor: ", ind+1);
scanf("%d", &valores[ind]);
}
printf("\n Los valores introducidos fueron \n ");
for (ind = 0; ind < 10; ind++)
printf("\n El valor %d fue: %d", ind+1, valores[ind]);
printf("\n Los valores son correctos (s/n) ? ");
getche(resp);
getche(resp);
} while ( resp == 'n' || resp == 'N');
}

28

CONALEP-2011

[Programacin bsica]

Listado 5.2.5
/* -----------------------------------------------------------------Programa: Ejercicio5-2-5.c
Objetivo: Manejo de cadenas de caracteres en arreglos unidimensionales.
-------------------------------------------------------------------*/
#include <stdio.h>
#define MAX 80
void main()
{
static char mensaje[MAX];
int ind, tamcad;
clrscr();
printf("\n Introduzca mensaje (max 80 caracteres): ");
gets(mensaje);
tamcad = strlen(mensaje);
printf("\n El mensaje codificado es: \n");
for (ind = tamcad; ind >= 0; ind--)
printf("%c", mensaje[ind]);
getch();
}

29

CONALEP-2011

[Programacin bsica]

Listado 5.2.7
/* -----------------------------------------------------------------Programa: Ejercicio5-2-7.c
Objetivo: Manejo de cadenas de caracteres con funciones.
-------------------------------------------------------------------*/
#include <stdio.h>
#define MAX 80
void main()
{
static char cadena[MAX];
int num, ind;
clrscr();
printf("\n Introduzca la cadena ");
gets(cadena);
num = convierteCaN(cadena);
printf("\n El valor numrico de %s es: %d \n", cadena, num);
getche();
}
/* -----------------------------------------------------------------Funcin: convierteCaN()
Objetivo: Convertir un valor dentro de una cadena de texto en valor
numrico.
Parmetros: Un arreglo
Salida: La cantidad convertida en valor numrico
-------------------------------------------------------------------*/
convierteCaN(char texto[])
{
int valor;
valor = atoi(texto);
return (valor);
}

30

CONALEP-2011

[Programacin bsica]

Listado 5.2.9
/* -----------------------------------------------------------------Programa: Ejercicio5-2-9.c
Objetivo: Manejo de cadenas de caracteres con funciones.
-------------------------------------------------------------------*/
#include <stdio.h>
#define MAX 80
int buscaletra(char, char []);
void main()
{
char cadena[MAX], letra;
int num, ind, tam;
clrscr();
printf("\n Introduzca la cadena: ");
gets(cadena);
printf("\n Introduzca el carcter a buscar: ");
scanf("%c", &letra);
tam = strlen(cadena);
num = -1;
num = buscaletra(letra, cadena);
if ((num >= 0) && (num < tam))
printf("\n El carcter %c fue la pulsacin numero %d", letra,
num + 1);
else
printf("\n Ese carcter no aparece en la primera cadena");
getch();
}
/* -----------------------------------------------------------------Funcin: buscaletra(letra, cadena)
Objetivo: Buscar un carcter en un arreglo y regresar su ubicacin.
Parmetros: Un carcter y un arreglo.
Salida: El nmero de posicin en la que aparece un carcter.
-------------------------------------------------------------------*/
int buscaletra(char caracter, char texto[])
{
int valor = 0;
while ((caracter != texto[valor]) && (texto[valor] != '\0'))
valor++;
return (valor);
}

31

CONALEP-2011

[Programacin bsica]

Listado 5.2.11
/* -----------------------------------------------------------------Programa: Ejercicio5-2-11.c
Objetivo: Uso de arreglos unidimensionales
-------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
void main()
{
int cuenta, incrementa;
char pass[6] = "geras", cve[6] = {' ',' ',' ',' ',' ',' '}, nom[10];
cuenta = 0;
clrscr();
do
{
printf("\n \n Nombre de usuario: ");
gets(nom);
printf("\n contrasea: ");
gets(cve);
if (strcmp(cve, pass) == 0)
{
printf("\n Bienvenido %s al sistema, Acceso autorizado",
nom);
getch();
exit(); /* sale del programa para simular el acceso al
sistema */
}
else
{
if (cuenta < 2)
{
printf("\n Clave incorrecta, intente de nuevo");
printf ("\n Recuerde al 3o. Se bloquea el sistema");
}
printf ("\n\n %d intento agotado", ++cuenta);
}
} while (cuenta < 3);
if (cuenta > 2)
printf("\n Por cuestiones de seguridad el sistema se bloqueo");
getch();
}

32

CONALEP-2011

[Programacin bsica]

Listado 5.3.1
/* -----------------------------------------------------------------Programa: Ejercicio5-3-1.c
Objetivo: Uso de arreglos bidimensionales y su inicializacin
-------------------------------------------------------------------*/
#include <stdio.h>
void main()
{
int num_mes;
char mes[][12]={"enero", "febrero", "marzo", "abril", "mayo", "junio",
"julio", "agosto", "sep", "octubre", "noviembre", "diciembre"};
clrscr();
printf("\n Numero de mes (1-12): ");
scanf("%d", &num_mes);
if ((num_mes > 0) && (num_mes < 12))
{
printf("\n Su equivalente es %s", mes[num_mes - 1]);
}
else
{
printf("\n Numero incorrecto");
}
getch();
}

33

CONALEP-2011

[Programacin bsica]

Listado 5.3.3
/* -----------------------------------------------------------------Programa: Ejercicio5-3-3.c
Objetivo: Uso de arreglos bidimensionales para su acceso y barrido.
-------------------------------------------------------------------*/
#include <stdio.h>
char concursantes[80][10];
void main()
{
int j1, j2, j3, ind, mayor;
int puntuacion[10];
clrscr();
printf("\n Introduzca los nombres de las integrantes ");
for (ind = 0; ind < 10; ind++)
{
printf("\n Nombre de la concursante No. %d: ", ind+1);
scanf("%s", concursantes[ind]);
printf("\n Calificacin del juez No. 1: ");
scanf("%d", &j1);
printf("\n Calificacin del juez No. 2: ");
scanf("%d", &j2);
printf("\n Calificacin del juez No. 3: ");
scanf("%d", &j3);
puntuacion[ind] = j1 + j2 + j3;
}
for (ind = 0; ind < 10; ind++)
if (puntuacion[ind] > puntuacion[ind + 1])
mayor = ind;
printf("\n La ganadora del concurso es %s, con %d puntos",
concursantes[mayor], puntuacion[mayor]);
getch();
}

34

CONALEP-2011

[Programacin bsica]

Sexta parte
Apuntadores

CONALEP-2011

[Programacin bsica]

6.1. Apuntadores

Ejercicio 1
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Valor izquierdo

Nulo

Expresiones

Valor

Variable

Indireccin

Direccin

Contenido

Apuntadores

Operador de direccin

Enunciados:

1.- Llamamos a los apuntadores variables de


en memoria.
2.- Los

porque indican la ubicacin de otra variable

son variables cuyo valor son direcciones de memoria.

3.- Se le conoce como valor derecho o


4.- El

, porque es el valor asignado a la variable.

parte del apuntador que indica la direccin o ubicacin de una variable.

5.- Se dice que un apuntador es

cuando su contenido es cero.

6.- El smbolo * en un operador, se le conoce como operador de


7.- Se le llama
variable.

al smbolo & utilizado en el lenguaje C para conocer el valor izquierdo de la

8.- En el valor izquierdo de un apuntador tenemos la direccin de otra


9.- Los apuntadores no se aplican a constantes ni a

10.- El operador de indireccin devuelve el

del objeto al que apunta.

CONALEP-2011

[Programacin bsica]

Ejercicio 2
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de
la izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis, la letra correspondiente al inciso que indique la relacin correcta.

a) Incremento

1.- Contiene la direccin de un apuntador que apunta a una


variable.

b) void

2.- Operacin de apuntadores que sirve para conocer la


posicin relativa de dos apuntadores en memoria.

c) Desreferencia

3.- Apuntador que no apunta a nada, es una constante


simblica definida en la cabecera <stddef.h>.

d) Comparacin

4.- Declaracin de tipo genrica, permitiendo apuntar a


variables de tipos diferentes.

e) Decremento

5.- Error frecuente en la manipulacin de las direcciones de


memoria.

f) Indireccin
mltiple

6.- Operacin con apuntadores donde se incrementa la


direccin de memoria del apuntador.

g) Variable vlida

7.- Un apuntador NULL no permite apuntar a


)
una
.

h) Asignacin de
apuntadores

8.- Operacin con apuntadores donde se decrementa la


direccin de memoria del apuntador.

i) NULL

9.- Operador que devuelve el valor de la variable a la que


apunta.

j) Accesar una
direccin no vlida

10.- Es hacer que dos apuntadores apunten a la misma


variable, considerando que ambos son del mismo tipo.

CONALEP-2011

[Programacin bsica]

6.2. Apuntadores y arreglos

Ejercicio 3
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.
1. Es imposible hacer que un apuntador haga referencia a un elemento
de un arreglo.

2. Es posible tener arreglos de apuntadores, ya que los apuntadores son


variables.

3. No es recomendable utilizar operaciones aritmticas con


apuntadores.

4. No es posible almacenar la direccin de un elemento de un arreglo en


(
un apuntador.

5. Un arreglo es una variable apuntador.

6. No es posible declarar con apuntadores una cadena de caracteres.

7. En un arreglo de caracteres, cada elemento ocupa un byte de


memoria.

8. Es posible hacer comparaciones entre apuntadores.

9. El nombre del arreglo es un ndice a la direccin del comienzo del


arreglo.

10. No es posible utilizar apuntadores en arreglos multidimensionales.

CONALEP-2011

[Programacin bsica]

Ejercicio 4
Instrucciones: Utilizando las expresiones del lado derecho, pon la sintaxis correcta de cada una
de las instrucciones siguientes:
1.- Sintaxis de declaracin de apuntador
Nombre del apuntador
;
Tipo de dato
*

2.- Sintaxis de apuntador a apuntador (indireccin mltiple)


Tipo de dato
*
;

Nombre del apuntador


*

3.- Sintaxis de incremento de apuntadores


Apuntador
Apuntador
=

;
+
Nmero de incremento

CONALEP-2011

[Programacin bsica]

4.- Sintaxis de apuntador al primer elemento de un arreglo tipo entero, con la declaracin del
apuntador.
ptr
int
;

*
ptr

];
&
arreglo
0

[Programacin bsica]

CONALEP-2011

6.3. Manejo dinmico de memoria

Ejercicio 5
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de
la izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los
parntesis, la letra correspondiente al inciso que indique la relacin correcta.
a) Asignacin
dinmica de
memoria

1.- Esta funcin sirve para asignar un espacio de memoria en


tiempo de ejecucin, de un tamao especfico.

b) realloc ( )

2.- La funcin malloc( ) devuelve un apuntador de tipo.

c) free ( )

3.- Esta funcin sirve para asignar un espacio de memoria en


tiempo de ejecucin, en bloques de un tamao especfico.

d) void

4.- Esta funcin sirve para modificar el espacio de memoria


asignado en tiempo de ejecucin.

e) malloc ( )

5.- Caracterstica del lenguaje C que nos permite crear


cambios en el tamao de datos, en tiempo de ejecucin, de
arreglos y estructuras.

f) Copia

6.- Archivo utilizado para las funciones de asignacin y


liberacin de memoria dinmica.

g) calloc ( )

7.- En la funcin realloc ( ) si el bloque se hace ms grande,


pero no puede redimensionarse, el bloque original
se
a otro espacio de memoria.

h) stdlib.h

8.- Esta funcin sirve para liberar espacio de memoria


asignada en tiempo de ejecucin.

CONALEP-2011

[Programacin bsica]

Ejercicio 6
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.
1. Las variables globales se almacenan en lugares dinmicos de
memoria.

2. Las variables locales de una funcin son creadas y destruidas


mientras se utiliza la funcin.

3. Las variables estticas se almacenan en memoria dinmica.

4. Al declarar una variable el compilador no reserva espacio de


memoria.

5. La asignacin dinmica de memoria es utilizada en tiempo de


ejecucin para variar el tamao de diversas estructuras de datos.

6. Con la funcin free() se libera espacio de memoria.

7. El manejo de memoria esttica ahorra espacio de memoria.

8. No se pueden utilizar apuntadores en la asignacin de memoria


dinmica.

9. calloc() es una funcin de asignacin de memoria.

10. Es posible asignar espacio de memoria de tamao desconocido.

CONALEP-2011

[Programacin bsica]

Ejercicio 7
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Izquierdo

Asterisco

Asignacin

Ampersand

Incremento

Apuntar

Punteros

Variable

Derecho

Elemento

Nulo

Decremento

Operaciones

Apuntadores

Direccin

Arreglos

Compilador

Matrices

Vectores

Lenguaje

Enunciados:

Los

o
son utilizados en el
C para indicar a
una
y almacenar su
en memoria, por este motivo se les llaman
variables de direccin. Estos apuntadores utilizan el smbolo
(&) para indicar su
direccin; indicamos al
por medio de un smbolo
que la variable es un
apuntador.
En el valor
de un apuntador, tenemos la direccin de la variable a la que
apunta; y, en su valor
, su contenido. Pero si le asignamos un valor
, no
puede
a alguna variable vlida. As mismo, varios apuntadores pueden apuntar a la
misma direccin, en este caso utilizaramos una expresin de
para copiar dichos
apuntadores.
Otra de las
que se pueden realizar con apuntadores es el
de la
direccin a la que apuntan, al aumentar su valor. As mismo, existe la operacin opuesta, que
consiste en el
de la direccin a la que apuntan, al disminuirla.
Tambin es importante decir que los apuntadores son utilizados en conjunto con
los
cuando se apunta a su primer
y, as, direccionar a los dems que lo
conforman; tanto en una dimensin o
, en dos dimensiones o
y en ms
de este nmero de dimensiones.

CONALEP-2011

[Programacin bsica]

Ejercicio 8
Sopa de letras
Encuentre las palabras siguientes en esta sopa de letras: Izquierda, asterisco, asignacin,
ampersand, apuntar, punteros, variables, derecho, elemento, nulo, decremento, operaciones,
arreglos, apuntadores, direccin, arreglos, compilador, matrices, vectores y lenguaje.

A
S
A
P
U
N
T
A
D
O
R
E
S
I
I
D
R
E
S
A

S
D
R
F
G
H
U
Y
T
R
E
D
F
O
N
A
D
M
M
D

D
F
R
G
T
G
V
E
C
T
O
R
E
S
C
R
R
A
I
E

D
G
E
R
E
O
T
A
A
D
T
R
U
I
R
R
T
T
K
R

I
H
G
F
A
M
P
E
R
S
A
N
D
O
E
E
U
R
O
E

R
J
L
G
S
E
D
E
V
I
R
O
L
S
M
G
I
I
T
C

E
K
O
U
T
W
Q
A
R
B
A
Y
T
R
E
L
O
C
E
H

C
L
S
I
E
E
D
C
S
A
H
B
J
H
N
O
L
E
S
O

K
L
R
T
Y
U
R
S
C
U
L
R
T
S
H
S
E
E

I
Z
Q
U
I
E
R
D
A
O
W
I
S
E
O
B
O
A
D
R

O
D
D
S
S
L
S
F
P
S
D
F
O
D
S
R
E
W
E
T

N
G
F
R
C
E
D
E
U
E
I
H
D
N
E
E
U
T
C
G

O
L
G
T
O
M
R
R
N
D
A
G
S
T
E
O
R
U
R
F

I
E
H
U
F
E
T
I
T
R
D
E
N
S
A
S
D
I
E
R

U
N
J
H
Y
N
Y
Y
A
U
R
U
D
A
T
Y
T
C
M
T

Y
G
K
I
U
T
U
T
R
J
P
G
R
F
C
U
I
K
E
Y

T
U
L
L
F
O
O
V
U
J
R
T
N
F
E
I
S
G
N
U

R
A
O
S
R
F
V
D
S
C
F
R
T
Y
U
I
O
K
T
J

E
J
V
U
C
O
M
P
I
L
A
D
O
R
R
E
S
N
O
M

W
E
D
E
D
F
V
G
T
Y
H
N
J
U
I
K
D
F
G
H

CONALEP-2011

[Programacin bsica]

Crucigrama

HORIZONTALES
1.- Funcin que permite asignar espacio de memoria dinmica.
4.- Funcin que permite reasignar espacio de memoria dinmica.
5.- Operacin de apuntadores que sirve para conocer la posicin relativa entre dos apuntadores en
memoria.
8.- Funcin para liberar espacio de memoria asignada en tiempo de ejecucin.
10.- Operador que sirve para colocar en un apuntador, la memoria dinmica devuelta por la
funcin malloc().
13.- Indica el lugar donde se encuentra en memoria el contenido del apuntador.
15.- Se le conoce tambin como valor derecho del apuntador.
16.- Operador que devuelve el valor de la variable a la que seala un apuntador.
17.- Tipo genrico de las variables de direccin.
18.- Las variables

se almacenan en un lugar fijo de memoria.

VERTICALES
2.- Podemos

a una funcin con un apuntador.

3.- Podemos variar el tamao que ocupa un vector en

6.- Hacer referencia a una variable a travs de un apuntador.


7.- Bloques de cdigo que realizan una operacin especfica.
9.- La memoria dinmica permite variar el tamao de memoria en tiempo de

10

CONALEP-2011

[Programacin bsica]

11.- Archivo utilizado para las funciones de asignacin y liberacin de memoria dinmica.
12.- Variable cuyo valor es una direccin de memoria.
14.- Se le llama memoria
a la caracterstica del lenguaje C que permite crear cambios en el
tamao de diversas estructuras de datos, en tiempo de ejecucin.

3
4

10

11

12
13
14
15

16
17

18

11

CONALEP-2011

[Programacin bsica]

6.4. Ejercicios prcticos


Para simplificar la revisin de este documento, se aclara que los ejercicios estn alternados,
es decir, se presenta la solucin de un ejercicio y se propone que el siguiente sea resuelto
por el lector.
El significado de la nomenclatura utilizada, por ejemplo Ejercicio 2.4.3, tiene la explicacin
siguiente: el primer nmero corresponde a la unidad; el segundo corresponde al tema
especfico; y, el tercero, es el nmero de ejercicio, es decir, unidad 2, tema 4 y ejercicio o
programa nmero 3.
Por otra parte, hay dos tipos de prcticas, las prcticas normales y las de paso a paso. Para
las prcticas normales se recomienda utilizar los ejercicios propuestos para que sean
resueltos por el lector y, para las prcticas paso a paso, guiarse con los ejercicios resueltos,
nicamente se tendra que seguir el procedimiento siguiente:
1. Encender el equipo de cmputo.
2. Abrir sesin del ambiente grfico Windows.
3. Ejecutar la aplicacin que se tenga instalada para editar los programas escritos en
lenguaje C.
4. Transcribir el programa en cuestin.
5. Guardar el archivo que contiene el programa transcrito.
6. Compilar el programa.
7. Iniciar un proceso de depuracin del programa (correccin de errores) hasta
cerciorarse de que el programa cumpla con el objetivo establecido.
8. Imprimir el resultado de la ejecucin o ejecuciones del programa (paso opcional).

Ejercicio 6.1.1: Realiza la declaracin de la variable entera z y el apuntador a entero api, as como la
asignacin necesaria a la variable y al apuntador, de tal forma que ese apuntador seale a la misma
direccin de la variable z. Presente en pantalla el valor de la variable z, pero a travs del apuntador, de
acuerdo al siguiente esquema grfico:

Ejercicio 6.1.2: Las siguiente lneas son un ejemplo simple de la declaracin de una variable y su
apuntador en una Funcion(), el propsito es que se llene adecuadamente el esquema grfico que aparece
abajo, de tal forma que si la variable VAR guarda su contenido en la direccin 1010, pues que el
apuntador APUNTA (almacenado en la direccin 1002) seale esa misma direccin:

12

CONALEP-2011

[Programacin bsica]

void Funcion()
{
int VAR, *APUNTA; /* VAR es un entero, APUNTA es un apuntador a entero */
VAR = 34; /* valor asignado a VAR directamente*/
APUNTA = &VAR; /* direccin de VAR asignada a APUNTA */
printf("El valor de VAR es %d", *APUNTA);
getch();/* Hace una pausa para ver el resultado */
}

Ejercicio 6.1.3: Realiza la declaracin de variables y apuntadores, as como las asignaciones necesarias,
de tal forma que el apuntador a entero api seale a la misma direccin de la variable entera f, que
guarda el valor 6. Asigna el valor de la variable entera f a Z, pero indirectamente a travs del apuntador
api y, as, cambia el valor actual almacenado en la direccin 1006, de acuerdo al siguiente esquema
grfico:

Ejercicio 6.1.4: El siguiente fragmento de cdigo es un ejemplo simple de la declaracin de dos variables y
un apuntador en la funcin main(). Suponiendo que si la variable x almacena su valor en la direccin 1010
y la variable TOTAL en la direccin 1002, despus de que se ejecuta el cdigo, qu valor almacena la
variable TOTAL y cmo se representara este proceso en el esquema grfico que aparece abajo:

Listado 6.1.4
/* -----------------------------------------------------------------Programa: Ejercicio6-1-4.c
Objetivo: Demostrar la declaracin de apuntadores y asignacin de valores de
manera indirecta.
-------------------------------------------------------------------*/
#include <stdio.h>
int x, TOTAL, *api = NULL; /* inicializa api para que no haga referencia a
algn valor */
void main()
{
TOTAL = 99;
x = 10;
api = &x;

13

CONALEP-2011

[Programacin bsica]

TOTAL = *api;
clrscr();

/* limpia la pantalla */

printf("El valor final de TOTAL es %d", TOTAL);


getch();

/* Hace una pausa para ver el resultado */

Ejercicio 6.1.5: Cuando una funcin recibe como argumento una direccin de una variable, se puede
cambiar de manera indirecta su contenido. A esto se le conoce como paso de parmetros por
referencia, tal y como se vio en la unidad 4 referente a funciones. Los apuntadores permiten simular el
paso por referencia. A continuacin se presenta una funcin que intercambia los valores de dos lugares
de memoria indicados por los apuntadores F y Z, tcnica por cierto muy utilizada en los mtodos de
ordenacin. La tarea que se te pide es que representes de manera grfica cmo se dara esta secuencia
en la memoria, dado el fragmento del siguiente programa:
Listado 6.1.5
/* -----------------------------------------------------------------Programa: Ejercicio6-1-5.c
Objetivo: Demostrar la declaracin de apuntadores y asignacin de valores de manera
indirecta.
-------------------------------------------------------------------*/
#include <stdio.h>
void intercambio(int *, int *);
void main()
{
int x = 100, y = 200;
intercambio(&x, &y);
clrscr();
printf("x = %2d, y = %2d", x, y);
getch();
}
/* -----------------------------------------------------------------Funcin: intercambio()
Objetivo: intercambiar los valores de dos variables indicadas.
Parmetros: F y Z son los apuntadores que van a recibir la direccin de los datos.
Salida: ninguno
-------------------------------------------------------------------*/
void intercambio(int *F, int *Z) /* simula el paso por referencia */
{
int var_temp;
var_temp = *F; /* var_temp recibe el dato contenido en la direccin F */
*F = *Z;
/* el contenido de Z se guarda en el contenido de F */
*Z = var_temp; /* aqu el contenido de var_temp se guarda en el contenido de Z
*/
}

14

CONALEP-2011

[Programacin bsica]

Ejercicio 6.1.6: A continuacin se hace una representacin de la memoria de datos que ejemplifica el
comportamiento durante la ejecucin de un programa. Para obtener este resultado se pide que se hagan
las declaraciones, tanto de variables como de apuntadores, en un fragmento de cdigo donde aparezcan
de acuerdo a las direcciones de memoria a las que se hace referencia, los tipos apropiados de variables,
apuntadores y las asignaciones correspondientes. Las direcciones de memoria aparecen en la parte
superior y los nombres de las variables en la parte inferior:

Ejercicio 6.1.7: Las asignaciones juegan un papel importante en los apuntadores, porque se obtienen
diferentes resultados cuando se usa el operador de direccin que cuando se usa el operador de
desreferencia. Asimismo, si la asignacin se est haciendo de un apuntador a un apuntador. Veamos lo
siguiente: ap apunta a la direccin 1000 y aq apunta a la direccin 2000, donde se guardan el 14 y el 4,
respectivamente. Si se es el estado inicial, representa grficamente qu ocurrir despus de este par
de operaciones: ap = aq y *ap = *aq.

Ejercicio 6.1.8: Continuando con las asignaciones, supongamos que inicialmente ap y aq apuntan a 1000 y
a 2000, respectivamente; donde estn la variable Z y F que almacenan 10 y 5, tal y como aparece en el
estado inicial de la grfica. La actividad es representar grficamente qu ocurrir despus de este par de
operaciones: aq = &Z *aq = Z. Aparte de sealar con las flechas, si cambia la direccin del apuntador,
coloca dentro del recuadro los valores de las variables para saber si permanecen o cambian.

15

CONALEP-2011

[Programacin bsica]

Ejercicio 6.1.9: Continuando con las asignaciones, supongamos que inicialmente ap y aq apuntan a 1000 y
a 2000, respectivamente; donde estn la variable Z y F que almacenan 10 y 5, tal y como aparece en el
estado inicial de la grfica. La actividad es representar grficamente qu ocurrir despus de este par de
operaciones: aq = &Z *ap = F. Adems de sealar con las flechas, si cambia la direccin del apuntador,
coloca dentro del recuadro los valores de las variables para saber si permanecen o cambian.

Ejercicio 6.1.10: Por los diferentes tipos de datos que existen, se sabe que algunos ocupan ms o menos
espacio que otros en memoria. Por ejemplo, en el caso de char se ocupa 1 byte, short ocupa 2 bytes y
long ocupa 4. Se habla de esto debido a que las operaciones aritmticas permitidas por apuntadores
son: sumar y restar; pero ambas tienen un efecto diferente de acuerdo al tamao del tipo de dato al
cual apuntan. Se tienen las siguientes declaraciones de apuntadores:
short int
unsigned int
float

*apunta_si;
*apunta_uni;
*apunta_f;

Vamos a suponer que apuntan a 6000, 7000 y 8000, en ese orden. Despus de realizar las operaciones
siguientes:
apunta_si++;
apunta_uni++;
apunta_f++;

16

CONALEP-2011

[Programacin bsica]

Cul ser la nueva direccin a la que apuntan? Representa tu respuesta grficamente con el apoyo de
los siguientes esquemas.

Ejercicio 6.1.11: Considerando que los apuntadores sealan de acuerdo al tamao del tipo de dato al cual
apuntan, se tiene la siguiente declaracin de apuntadores:
char
int
long int

*apunta_ch;
*apunta_i;
*apunta_long;

Vamos a suponer que apuntan a 6000, 7000 y 8000, en ese orden. Despus de realizar las operaciones
siguientes:
apunta_ch--;
apunta_i--;
apunta_long--;

Cul ser la nueva direccin a la que apuntan? Representa tu respuesta grficamente con el apoyo de los
siguientes esquemas.

17

CONALEP-2011

[Programacin bsica]

Ejercicio 6.2.1: Con el uso de apuntadores, realiza un programa que simule un traductor ingls-espaol,
de tal forma que reciba en minsculas las estaciones del ao en espaol y nos devuelva su equivalente
en ingls.

Ejercicio 6.2.2: Con el uso de apuntadores, realiza un programa que simule un diccionario de adjetivos
opuestos, de tal forma que reciba en minsculas un adjetivo y devuelva el adjetivo opuesto, de acuerdo a
las siguientes parejas: feliz-enojado, inteligente-tonto, flaco-gordo y alto-chaparro.
Ejercicio 6.2.3: A continuacin se presenta un sper ejercicio el cual pretende que se realicen varias tareas
alrededor de un tema y el propsito es que cada planteamiento sea resuelto con la aplicacin de
apuntadores. Por lo tanto defina las siguientes funciones y ejectelas desde la funcin main().

a) Capturar una lista de 5 a 10 alumnos y su correspondiente calificacin. Al ser la primera


funcin realiza las declaraciones necesarias.
b) Con los datos de los alumnos del inciso A, realiza una funcin que calcule el porcentaje de
alumnos aprobados y reprobados.
c) Habilitar una funcin que reciba el nombre de un alumno y que si lo encuentra regrese su
calificacin.
d) Implementar una funcin que muestre la lista completa con el nombre y calificacin del alumno.
e) Copiar a un arreglo todos los alumnos cuya calificacin sea mayor a la calificacin mnima
aprobatoria fijada por el usuario y listarlos en pantalla con el ttulo Lista de alumnos
aprobados.
f)

Copiar a un arreglo todos los alumnos reprobados, es decir que la calificacin es menor o igual a 5
y listarlos en pantalla con el ttulo Lista de alumnos reprobados.

g) Desarrollar una funcin que calcule el promedio del grupo, de tal manera que muestre la lista
completa de alumnos con nombre y calificacin y que en la parte final, muestre el promedio
grupal.
h) Realizar un men con el uso de la estructura condicional switch, vista en la unidad 3. De tal forma
que el usuario pueda seleccionar a qu funcin quiere tener acceso, de todas las funciones
desarrolladas en los incisos anteriores.

18

CONALEP-2011

[Programacin bsica]

APNDICE

Ejercicio 1
1.- Direccin. 2.- Apuntadores. 3.- Contenido. 4.- Valor izquierdo. 5.- Nulo. 6.- Indireccin.
7.- Operador de direccin. 8.- Variable. 9.- Expresiones. 10.- Valor

Ejercicio 2
1.- (f); 2.- (d); 3.- (i); 4.- (b); 5.- (j); 6.- (a); 7.- (g); 8.- (e); 9.- (c); 10.- (h)

Ejercicio 3
1.- F; 2.- V; 3.- V; 4.- F; 5.- F; 6.- F; 7.- V; 8.- V; 9.- V; 10.- F

Ejercicio 4
Sintaxis de declaracin de apuntador
Tipo de dato * Nombre del apuntador;
Sintaxis de apuntador a apuntador (indireccin mltiple)
Tipo de dato * * Nombre del apuntador;

Sintaxis de incremento de apuntadores


Apuntador = Apuntador +

Nmero de incremento;

Sintaxis de apuntador al primer elemento de un arreglo tipo entero, con la declaracin del
apuntador
int *ptr ;
ptr = &arreglo[0];

19

CONALEP-2011

[Programacin bsica]

Ejercicio 5
1.- (e); 2.- (d); 3.- (g); 4.- (b); 5.- (a); 6.- (h); 7.- (f); 8.- (c)

Ejercicio 6
1.- (F); 2.- (V); 3.- (F); 4.- (F); 5.- (V); 6.- (V); 7.- (F); 8.- (F); 9.- (V); 10.- (F)

Ejercicio 7
Los apuntadores o punteros son utilizados en el lenguaje C para indicar a
una variable
y almacenar su direccin
en memoria, por este motivo se les llaman
variables de direccin. Estos apuntadores utilizan el smbolo ampersand (&) para indicar su
direccin; indicamos al compilador por medio de un smbolo asterisco (*) que la variable es
un apuntador.
En el valor izquierdo de un apuntador, tenemos la direccin de la variable a la que
apunta; y, en su valor derecho , su contenido. Pero si le asignamos un valor nulo , no
puede apuntar a alguna variable vlida. As mismo, varios apuntadores pueden apuntar a la
misma direccin, en este caso utilizaramos una expresin de asignacin para copiar dichos
apuntadores.
Otra de las operaciones que se pueden realizar con apuntadores es el incremento de
la direccin a la que apuntan, al aumentar su valor. As mismo, existe la operacin opuesta, que
consiste en el decremento de la direccin a la que apuntan, al disminuirla.
Tambin es importante decir que los apuntadores son utilizados en conjunto con
los arreglos cuando se apunta a su primer elemento y, as, direccionar a los dems que lo
conforman; tanto en una dimensin o vectores , en dos dimensiones o matrices y en ms de
este nmero de dimensiones.

20

CONALEP-2011

[Programacin bsica]

Ejercicio 8

A R R
P
U
N
T
V
A
E
D
C
O
T
R
O
E
R
S
E
S
A R
M A
D E

D I R E C C I
Z
E G L O S
Q
U
A S T E R I
O M
E
P
R
A E E
D
R
R
A
S I
A
A
A
C
N
B
I
D
L
E

O N

L E N G U A J E
O
L
S C O
U
C
L E M E N T O
O
M
P
P U N T A R
I
S
L
I
P
A
G
U
D
O
N
O
N T
A
R
S E E
C
R E G L O S
R
S
I
O
O
T R I C E S
N
D E C R E M E N T O
R E C H O

21

CONALEP-2011

[Programacin bsica]

Crucigrama
1

M A L

L O C
L

R E

A
A L L O C

M
5

C O M P A R A C
R
I
10

12

T
D

O N

D I

A
R E F E R E

E E
J

O N

O N

C C

C
15

C O N

14

E N

D O

O
S

R
13

N
11

D E

A S I G N A C

16

A
C

M
17

O
R

V O

C
18

22

G L O B A

L E S

CONALEP-2011

[Programacin bsica]

Listado de ejercicios resueltos


Nota: Las soluciones a los ejercicios fueron probadas en las versiones para Windows de los compiladores
Turbo C++ versin 3.0 y Dev-C++ versin 4.9.9.2.
Listado 6.1.1
/* -----------------------------------------------------------------Programa: Ejercicio6-1-1.c
Objetivo: Demostrar la declaracin de apuntadores y asignacin de direcciones.
-------------------------------------------------------------------*/
#include <stdio.h>
int z, *api;
void main()
{
z = 43;
api = &z;
clrscr();
printf("El valor de Z es %d", *api);
getch();
}

23

CONALEP-2011

[Programacin bsica]

Listado 6.1.3
/* -----------------------------------------------------------------Programa: Ejercicio6-1-3.c
Objetivo: Demostrar la declaracin de apuntadores y asignacin de valores de
manera indirecta.
-------------------------------------------------------------------*/
#include <stdio.h>
int f, Z, *api;
void main()
{
f = 6;
Z = 8;
api = &f;
Z = *api; /* valor asignado de f indirectamente*/
clrscr();
printf("El nuevo valor de Z es %d", *api);
getch();
}

24

CONALEP-2011

[Programacin bsica]

Solucin Ejercicio 6.1.5: Secuencia grfica del intercambio.


int x = 100, y = 200;

intercambio (&x, &y);

var_temp = *F; /* var_temp recibe el dato contenido en la direccin F */

*F = *Z; /* El contenido en 1012 se guarda en 1010 */

*Z = var_temp;
/* Colocar en la direccin 1012 el valor de var_temp y salir de la funcin intercambio() */

25

CONALEP-2011

[Programacin bsica]

Solucin Ejercicio 6.1.7: Secuencia grfica de asignacin.

Solucin ejercicio 6.1.10: Secuencia grfica de operaciones de incremento


Explicacin: el puntero apunta_si seala a la direccin 6001, porque el tamao del tipo de dato al cual
apunta es un short int (entero corto) que ocupa un 1 byte de memoria.

Explicacin: el puntero apunta_uni seala a la direccin 7002, porque el tamao del tipo de dato al cual
apunta es un unsigned int (entero sin signo) que ocupa 2 bytes de memoria.

Explicacin: el puntero apunta_f seala la direccin 8004, porque el tamao del tipo de dato al cual
apunta es un float que ocupa 4 bytes de memoria.

26

CONALEP-2011

[Programacin bsica]

Listado 6.2.1.
/* -----------------------------------------------------------------Programa: Ejercicio6-2-1.c
Objetivo: Uso de apuntadores y arreglos.
-------------------------------------------------------------------*/
#include <stdio.h>
#define MAX_PAL 4
char esp[4][10] = {"primavera","verano","otoo","invierno"};
char ingles[4][10] = {"spring", "summer", "autumn", "winter"};
int busca_pal(char *, char*);
void main()
{
char pal_esp[80];
int ind, c, localiza;
ind = -1;
printf("\n Introduzca la palabra en espaol: ");
gets(pal_esp);
for (c = 0; c <= MAX_PAL; c++)
{
localiza = busca_pal(pal_esp, esp[c]);
if (localiza == 0)
ind = c;
}
if (ind != -1)
printf("\n %s en Ingls se dice %s", pal_esp, ingles[ind]);
else
printf("\n lo siento esa palabra no fue encontrada");
getch();
}
/* -----------------------------------------------------------------Funcin: busca_pal()
Objetivo: comparar dos cadenas de caracteres con el uso de apuntadores.
Parmetros: C1 y c2 son las cadenas de caracteres a comparar.
Salida: regresa un valor entero que avisa si las cadenas son iguales o no, es
decir: menor a 0 si C1 es menor que C2, 0 si son iguales y mayor que 0 si C1 es
mayor a C2.
-------------------------------------------------------------------*/
int busca_pal(char *C1, char *C2)
{
while (*C1)
if (*C1++ - *C2++) return (*--C1 - *--C2);
if (*C2)
return ( -1 );

27

CONALEP-2011

[Programacin bsica]

return ( 0 );
}

28

CONALEP-2011

[Programacin bsica]

Listado 6.2.3a.
/* -----------------------------------------------------------------Programa: Ejercicio6-2-3a.c
Objetivo: Uso de apuntadores y arreglos.
-------------------------------------------------------------------*/
#include <stdio.h>
#define NA 10
char
char
float
int
void
void
void
void
void
int

alumno[NA][100];
aprobados[NA][100];
calificacion[NA];
tot_alum;
captura();
Localiza();
Lista_aprobados();
Imprime_lista();
promedio_gpo ();
busca_alum(char *, char *);

void main()
{
clrscr();
captura();
}
/* -----------------------------------------------------------------Funcin: captura()
Objetivo: leer nombres y calificaciones para 10 alumnos o menos.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void captura()
{
int n = 0, i;
char *fin;
clrscr();
printf ("Finalizar captura con <ctrl+z> \n\n");
printf ("Nombre del alumno: ");
fin = gets(alumno[n]);
while ((n < NA) && (fin != NULL))
{
printf ("Calificacin del alumno: ");
scanf("%f", &calificacion[n++]);
printf ("Nombre del alumno: ");
fin = gets(alumno[n]);
/* fin = gets(alumno[n]); */
}
tot_alum = n;

/* para saber cuntos alumnos se capturaron */

29

CONALEP-2011

[Programacin bsica]

Listado 6.2.3c.
/* -----------------------------------------------------------------Programa: Ejercicio6-2-3c.c
Objetivo: Uso de apuntadores y arreglos.
-------------------------------------------------------------------*/
#include <stdio.h>
#define NA 10
char
char
float
int
void
void
void
void
void
int

alumno[NA][100];
aprobados[NA][100];
calificacion[NA];
tot_alum;
captura();
Localiza();
Lista_aprobados();
Imprime_lista();
promedio_gpo ();
busca_alum(char *, char *);

void main()
{
clrscr();
captura();
Localiza();
}
/* -----------------------------------------------------------------Funcin: Localiza()
Objetivo: Pedir el nombre de un alumno y decir su calificacin.
Parmetros: Ninguno.
Salida: Ninguna.
-------------------------------------------------------------------*/
void Localiza()
{
char nom_alum[80];
int ind, c, ubica_alum;
ind = -1;
clrscr();
printf("\n Introduzca el nombre del alumno? ");
gets(nom_alum);
for (c = 0; c <= tot_alum; c++)
{
ubica_alum = busca_alum(nom_alum, alumno[c]);
if (ubica_alum == 0)
ind = c;
}
if (ind != -1)
printf("\n Su calificacin es: %4.2f", calificacion[ind]);

30

CONALEP-2011

[Programacin bsica]

else
printf("\n Ese alumno no se encuentra en listas");
getch();
}
/* -----------------------------------------------------------------Funcin: busca_alum()
Objetivo: comparar dos cadenas de caracteres con el uso de apuntadores.
Parmetros: C1 y c2 son las cadenas de caracteres a comparar.
Salida: regresa un valor entero que avisa si las cadenas son iguales o no, es
decir: menor a 0 si C1 es menor que C2, 0 si son iguales y mayor que 0 si C1 es
mayor a C2.
-------------------------------------------------------------------*/
int busca_alum(char *C1, char *C2)
{
while (*C1)
if (*C1++ - *C2++) return (*--C1 - * --C2);
if (*C2)
return ( -1 );
return ( 0 );
}

31

CONALEP-2011

[Programacin bsica]

Listado 6.2.3e.
/* -----------------------------------------------------------------Programa: Ejercicio6-2-3e.c
Objetivo: Uso de apuntadores y arreglos.
-------------------------------------------------------------------*/
#include <stdio.h>
#define NA 10
char
char
float
int
void
void
void
void
void
int

alumno[NA][100];
aprobados[NA][100];
calificacion[NA];
tot_alum;
captura();
Localiza();
Lista_aprobados();
Imprime_lista();
promedio_gpo ();
busca_alum(char *, char *);

void main()
{
clrscr();
captura();
Localiza();
Lista_aprobados();
Imprime_lista();
}
/* -----------------------------------------------------------------Funcin: Lista_aprobados()
Objetivo: Pedir calificacin minima aprobatoria y pasar a un arreglo nicamente
los alumnos aprobados.
Parmetros: Ninguno.
Salida: Ninguna.
-------------------------------------------------------------------*/
void Lista_aprobados()
{
int c, sa;
float calif;
clrscr();
printf("\n Introduzca la calificacin mnima aprobatoria: ");
scanf("%f", &calif);
sa = 0;
for (c = 0; c < tot_alum; c++)
{
if (calificacion[c] >= calif)
{
strcpy(aprobados[sa], alumno[c]);
sa++;
}

32

CONALEP-2011

[Programacin bsica]

}
}
/* -----------------------------------------------------------------Funcin: Imprime_lista ()
Objetivo: sacar una lista nicamente con los alumnos aprobados.
Parmetros: Ninguno.
Salida: Ninguna.
-------------------------------------------------------------------*/
void Imprime_lista ()
{
int c;
char *fin;
clrscr();
printf("\n Lista de alumnos aprobados \n ");
printf("\n Nombre: \n \n ");
for (c = 0; (c < tot_alum) && (fin != NULL); c++)
{
printf("\n %d .- %s\n ", c+1, aprobados[c]);
fin = aprobados[c];
}
getch();
}

33

CONALEP-2011

[Programacin bsica]

Listado 6.2.3g.
/* -----------------------------------------------------------------Programa: Ejercicio6-2-3g.c
Objetivo: Uso de apuntadores y arreglos.
-------------------------------------------------------------------*/
#include <stdio.h>
#define NA 10
char
char
float
int
void
void
void
void
void
int

alumno[NA][100];
aprobados[NA][100];
calificacion[NA];
tot_alum;
captura();
Localiza();
Lista_aprobados();
Imprime_lista();
promedio_gpo ();
busca_alum(char *, char *);

void main()
{
clrscr();
captura();
Localiza();
Lista_aprobados();
Imprime_lista();
promedio_gpo();
}
/* -----------------------------------------------------------------Funcin: promedio_gpo ()
Objetivo: sacar una lista del grupo y su promedio general.
Parmetros: Ninguno.
Salida: Ninguna.
-------------------------------------------------------------------*/
void promedio_gpo()
{
int c;
float prom, suma_calif;
clrscr();
printf("\n Lista del grupo \n ");
printf("\n Nombre: \t \t \t Calificacin\n \n ");
prom = 0.0;
suma_calif = 0;
for (c = 0; c < tot_alum; c++)
{
printf("\n %d .- %s \t \t \t %4.2f\n ", c+1, alumno[c],
calificacion[c]);
suma_calif += calificacion[c];
}

34

CONALEP-2011

[Programacin bsica]

prom = suma_calif / tot_alum;


printf("\n El promedio General del grupo es: %4.2f", prom);
getch();
}

35

CONALEP-2011

[Programacin bsica]

Sptima parte
Estructuras de datos

CONALEP-2011

[Programacin bsica]

7. Estructuras de datos
7.1. Tipos de datos compuestos

Ejercicio 1
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Estructuras de datos

Operador punto

Miembros

Apuntadores

Estructuras

Struct

Uniones

Inicializadores

struct carro

Operador flecha

Enunciados:
1.- A los elementos que forman las estructuras se les llama

2.- Las

son el conjunto de datos de diferentes tipos.

3.- Los

ayudan a rellenar una estructura por medio de una lista de datos.

4.- Se usa el
de

para hacer referencia a un miembro de una estructura, mediante el uso


.

5.- Hacemos referencia a un miembro de una unin por medio de un


6.7.- El ejemplo

es la palabra reservada del lenguaje C para declarar una estructura.


define la estructura con su nombre de etiqueta.

8.- Las
son un bloque de memoria que almacena simultneamente datos de variables
de diferentes tipos.
9.- Las

son el conjunto de elementos de datos.

[Programacin bsica]

CONALEP-2011

Ejercicio 2
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los parntesis,
la letra correspondiente al inciso que indique la relacin correcta.

1.- Son parecidas a las estructuras pero almacenan


simultneamente varias variables en el mismo bloque de
)
memoria.

b) Uniones

2.- La utilizamos para reescribir el nombre de una variable o


)
para redefinir una estructura.

c) typedef

d) Variable estructura

4.- Son estructuras que contienen un miembro apuntador que


)
seala a otra estructura que es del mismo tipo.

e) carro.color

5.- Trmino que se le da al hecho de que un apuntador seale


a otro apuntador.

f) struct carro

6.- Ejemplo de acceso al miembro de una variable de tipo


estructura.

g) main( )

7.- Su nombre define la estructura y se emplea para declarar


las variables del tipo de la estructura.

h) Indireccin
mltiple

) 8.- Almacenan datos de diferentes tipos.

i) Estructuras
autorreferenciadas

) 9.- Las estructuras se definen antes de

10.- Es una variable que podemos definir despus del


parntesis de fin de la definicin de la estructura, y
)
contendr los mismos miembros que sta.

a) Etiqueta de una
estructura

j) Estructuras

3.- Ejemplo de declaracin de una estructura con su nombre


de etiqueta.

CONALEP-2011

[Programacin bsica]

Ejercicio 3
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.
1. Los elementos de las estructuras, a diferencia de los arreglos, tienen
(
su propio nombre.

3. Los miembros de una estructura que apuntan a otra estructura del


(
mismo tipo, siempre tienen el nombre autorreferenciados.

5. No es posible hacer referencia a un miembro de una unin por medio


(
del operador flecha (->).

6. El lenguaje C no permite la anidacin de estructuras.

7. Es posible utilizar apuntadores en estructuras de datos.

8. Una unin no puede ser un miembro de una estructura o viceversa.

9. Podemos pasar elementos de una estructura por valor o por


(
referencia a una funcin.

10. Podemos asignar valores a los miembros de la estructura, uno por


(
uno.

2. En el lenguaje C no es posible pasar una estructura a una funcin.

4. Es posible declarar varias estructuras del mismo tipo.

CONALEP-2011

[Programacin bsica]

Ejercicio 4
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Listas enlazadas abiertas

Operador punto

unin moto

Apuntadores

Estructuras dinmicas

unin

Direccin

Inicializadores

Uniones

Operador flecha

Enunciados:
1.- Las
son un conjunto de datos que almacenan todos sus elementos de forma
simultnea en un bloque de memoria, y tienen la misma direccin (de memoria).
2.- Las estructuras permiten crear elementos de datos que pueden aumentar o disminuir de
tamao en tiempo de ejecucin, por eso a estos elementos se les denomina
.
3.- Los
4.-Se usa el
de

ayudan a rellenar una estructura por medio de una lista de datos.


para hacer referencia a un miembro de una unin mediante el uso
.

5.- Hacemos referencia a un miembro de una unin por medio de un


6.7.- El ejemplo

es la palabra reservada del lenguaje C para declarar una unin.


define una unin con su etiqueta.

8.- Las uniones tienen elementos que comparten la misma

en memoria.

9.- Las
son el conjunto de elementos de datos alineados en una fila, cuenta con un
apuntador direccionado al miembro siguiente y, el ultimo, tendr un valor NULL.

CONALEP-2011

[Programacin bsica]

Ejercicio 5
Instrucciones: Para cada una de las afirmaciones siguientes escriba la letra F, dentro de los
parntesis en la columna de la derecha, si la afirmacin es falsa o, escriba la letra V, si la
afirmacin es verdadera.
1. Los miembros de una unin comparten la misma direccin de
(
memoria.

2. Es posible anidar una unin dentro de una estructura.

3. Las pilas son estructuras de tamao fijo en memoria.

4. Una unin cambia dinmicamente su tamao en memoria.

5. Una lista enlazada es una serie de objetos, llamados nodos, que


contienen elementos de datos y apuntadores, los cuales se (
direccionan al nodo siguiente, en un acomodo de fila.

6. Las pilas son una estructura exclusiva del lenguaje C.

7. Se inicializa el miembro de una unin solo cuando se va a utilizar.

8. Las estructuras dinmicas de datos aumentan y disminuyen su


(
tamao en memoria durante la ejecucin del programa.

9. Unin no es una palabra reservada del lenguaje C.

10. La asignacin de memoria de una unin y una estructura son iguales.

CONALEP-2011

[Programacin bsica]

Ejercicio 6
Instrucciones: Relacione correctamente cada uno de los enunciados enlistados en la columna de la
izquierda con uno solo de los enunciados en la columna de la derecha. Escriba dentro de los parntesis,
la letra correspondiente al inciso que indique la relacin correcta.

a) LIFO

1.- Es la caracterstica de las listas donde el ltimo nodo en


entrar es el primero en salir.

b) Listas doblemente
enlazadas

2.- Este proceso crea un nuevo nodo con su informacin y se


coloca un apuntador que direccione a otro nodo de la lista.

c) Nodo

3.- Tipo de lista donde se inserta un nodo en un extremo y se


extrae por el otro.

d) Estructuras de datos
dinmicas

4.- Tipo de lista que cuenta con dos apuntadores, uno apunta
al nodo anterior y el otro al posterior. Pueden recorrerse en
ambos sentidos.

e) Listas circulares

5.- Tienen la caracterstica principal de tener la asignacin de


memoria de forma variable.

f) FIFO

6.- Elemento de la lista que contiene la informacin y uno o


varios apuntadores, que direcciona a otros elementos de su
mismo tipo.

g) Borrar un nodo

7.- Lista en la cual se insertan y extraen los nodos por el


mismo extremo.

h) Insertar un nodo

8.- En este proceso se elimina el nodo y se devuelve el


espacio de memoria con la funcin free( )

i) Pila

9.- Caracterstica de las listas donde el primer nodo en entrar


es el primero en salir

10.- Tipo de lista donde el ltimo extremo se enlaza con el


primero.

j) Cola

CONALEP-2011

[Programacin bsica]

Ejercicio 7
Instrucciones: Lea con atencin los enunciados siguientes y complemntelos de forma correcta.
Para tal fin, escriba una de las respuestas, que se proporcionan a continuacin, en el espacio en
blanco sealado por la lnea dentro de cada uno de los enunciados.
Respuestas:
Diferentes

Reservada

Primeros

FIFO

Colas

Arreglos

struct

Anidacin

Tamao

LIFO

Estructura

Dinmicas

Miembros

Flecha

Nodos

Apuntadores

Uniones

Entrelazadas

Anterior

Doblemente

Enunciados:

Las variables de
pueden estar declaradas despus del parntesis que
contiene el cdigo de la estructura, sus variables internas pueden ser de
tipos; las
estructuras estn definidas por la palabra
, llamando a sus
elementos
de la estructura, a los que hacemos referencia por medio del
operador
, adems de permitir contener
, a travs de los cuales se
pueden crear estructuras de datos que varan su
en memoria.
Las estructuras, a diferencia de los
, permiten que sus miembros pueden ser
de diferentes tipos, estando permitida la
de estructuras, es decir, una dentro de otra.
Las
son parecidas a las estructuras, con la diferencia de que almacenan de
forma simultnea en el mismo bloque de memoria, a todos los miembros que las componen.
Las estructuras
de datos llaman a sus elementos
, teniendo
entre estas estructuras a las pilas, o estructuras
; en las cuales los ltimos nodos en
entrar son los
en salir; y las
o estructuras
, en las cuales
el primer nodo en entrar es el primero en salir; ambas estructuras
estn
internamente. Tambin existen estructuras
enlazadas, en las
que cada nodo se conecta con el posterior y con el
.

CONALEP-2011

[Programacin bsica]

Ejercicio 8
Sopa de letras
Encuentre las palabras clave, del ejercicio anterior en la siguiente sopa de letras:

E
N
T
R
E
L
A
Z
A
D
A
S
D
E
R
T
A
U
A
S

A
D
E
R
T
Y
U
M
I
E
M
B
R
O
S
A
D
I
N
T

D
A
E
S
T
Y
U
I
O
P

E
O
I
R
M
E
H
T
E

E
R
D
R
S
A
S
E
R
T
Y
U
O
P
X
A
R
D
E
V

R
F
I
U
E
R
R
Y
F
N
O
D
A
U
E

T
S
R
Y

T
D
F
O
T
R
Y
T
O
,
O
R
E
O
J
O
Y
T
I
U

U
S
E
P
R
E
S
E
R
V
A
D
A
J
T
A
U
R
O
I

J
R
R
L
U
G
W
R
T
U
N
V
O
G
E
T
O
U
R
E

H
T
E

J
L
I
F
O
O
I
D
S
S
D
Y
J
C
X
S

T
U
N
H
F
O
A
I
Y
K
D
S
E
Y
F
U
T
T
D
T

G
F
T
G
F
S
S
F
G
V
A
U
R
S
T
N
Y
B
R
R

F
L
E
C
H
A
D
O
D
F
C
V
A
N
Y
I
U
U
T
U

S
M
S
D
S
A
X
E
S
X
I
L
A
Z
O
O
J
I
Y
C

D
G
E
G
D
E
Y
I
P
A
O
S
W
Y
K
N
N
G
G
T

R
I
Y
T
E
W
D
O
Y
C
N
S
I
T
H
E
B
R
V
U

T
E
S
Y
U
O
P

O
K
H
E
S
A
T
S
V
D
H
R

Y
D
S
P
R
I
M
E
R
O
S
S
D
R
R
F
F
Q
U
A

J
R
U
O
K
U
G
S
W
A
Q
D
I
N
A
M
I
C
A
S

K
J
H
D
S
E
Y
T
D
O
B
L
E
M
E
N
T
E
E
K

A
P
U
N
T
A
D
O
R
E
S
D
F
G
T
J
H
T
R
I

CONALEP-2011

[Programacin bsica]

Crucigrama
Unidad 7
HORIZONTALES
2.- A las estructuras
, se les llama as por la capacidad de variar la cantidad de
memoria requerida en tiempo de ejecucin.
6.- Las
apuntadores.

son un vector que contiene elementos llamados nodos, formado por datos y

7.- Los

permiten manipular una variable a travs de su direccin en memoria.

9.- Las
son un tipo de lista caracterizado porque los elementos se almacenan en
filas, entrando por un extremo y saliendo por el otro.
11.- Se les llama listas
apuntadores.

ya que los nodos se conectan entre s, por medio de sus

12.- Es la abreviacin de la caracterstica del arreglo tipo cola.


13.- En las listas

cada elemento apunta al siguiente y, el ltimo, apunta a NULL.

16.- Lugar donde se ejecuta el programa, ubica cada una de sus partes por medio de su direccin.
17.- Operador que permite hacer referencia a un miembro de una unin, con ella se pueden
utilizar apuntadores.
18.- Variable de un solo subndice o una dimensin.

VERTICALES
1.- En las listas
3.- Las
diferente tipo.

el primer nodo se enlaza al ltimo.


son un bloque de memoria donde se almacenan simultneamente datos de

4.- Palabra reservada usada para definir las estructuras.


5.- La diferencia principal entre un arreglo y una estructura es que los miembros de esta ltima
pueden tener un tamao

CONALEP-2011

[Programacin bsica]

8.- Las listas


enlazadas tienen en sus nodos dos apuntadores, permitiendo
recorrerse en ambos sentidos.
10.- Abreviatura caracterstica de la pila.
14.- Elemento de las listas formado por los datos y uno o varios apuntadores.
15.- En las listas tipo

solo se permite aadir y leer en el extremo superior.

16.- Conjunto de elementos formados en filas y columnas.


1
2

3
4

9
11

12
13

14

15

16
17

18

10

10

CONALEP-2011

[Programacin bsica]

7.2. Ejercicios prcticos


Para simplificar la revisin de este documento, se aclara que los ejercicios estn alternados,
es decir, se presenta la solucin de un ejercicio y se propone que el siguiente sea resuelto
por el lector.
El significado de la nomenclatura utilizada, por ejemplo Ejercicio 2.4.3, tiene la explicacin
siguiente: el primer nmero corresponde a la unidad; el segundo corresponde al tema
especfico; y, el tercero, es el nmero de ejercicio, es decir, unidad 2, tema 4 y ejercicio o
programa nmero 3.
Por otra parte, hay dos tipos de prcticas, las prcticas normales y las de paso a paso. Para
las prcticas normales se recomienda utilizar los ejercicios propuestos para que sean
resueltos por el lector y, para las prcticas paso a paso, guiarse con los ejercicios resueltos,
nicamente se tendra que seguir el procedimiento siguiente:
1. Encender el equipo de cmputo.
2. Abrir sesin del ambiente grfico Windows.
3. Ejecutar la aplicacin que se tenga instalada para editar los programas escritos en
lenguaje C.
4. Transcribir el programa en cuestin.
5. Guardar el archivo que contiene el programa transcrito.
6. Compilar el programa.
7. Iniciar un proceso de depuracin del programa (correccin de errores) hasta
cerciorarse de que el programa cumpla con el objetivo establecido.
8. Imprimir el resultado de la ejecucin o ejecuciones del programa (paso opcional).

Estructuras y uniones
Ejercicio 7.1.1: En la unidad 5, ejercicio 5.3.3 se planteaba guardar el nombre y puntuacin de unas
concursantes en un certamen de belleza y fue resuelto utilizando dos arreglos, pues bien lo que aqu se
solicite es que se declare una estructura llamada certamen donde se guarden ambos elementos o
componentes. Por ltimo declare dos variables llamadas eliminadas y finalistas del tipo estructura
certamen.
Ejercicio 7.1.2: En la unidad 5, ejercicio 5.3.4 se formul un problema sobre los concursos de reality show
y en especfico se peda usar arreglos para guardar los nombres de los participantes y la votacin. Ahora
se solicita que se declare una estructura llamada concurso donde se guarden ambos datos. Por ltimo
declare un arreglo llamado participantes tipo estructura concurso, donde se puedan almacenar los 16
cantantes inscritos al concurso.

11

CONALEP-2011

[Programacin bsica]

Ejercicio 7.1.3: Declare una estructura llamada fecha con los siguientes elementos: Da del tipo entero,
mes del tipo entero y ao tambin del tipo entero. Despus, declare dos variables una llamada
f_nacimiento y otra f_hoy del tipo estructura fecha. Por ltimo, asigne valores a ambas variables.
Ejercicio 7.1.4: Declare una estructura llamada telfono con los siguientes elementos: Cdigo del tipo
entero (sirve para almacenar la clave del pas), Lada del tipo entero (usado para almacenar la clave o
lada nacional), Nmero del tipo entero (utilizado para guardar el nmero telefnico). Despus, declare
dos variables una llamada t_casa y otra mi_cel del tipo estructura telfono. Por ltimo, asigne como
valores para ambas variables dos nmeros telefnicos, puede ser el telfono de tu escuela y en la otra
variable tu numero celular o el de algn compaero e imprmelos en pantalla con este formato: 99
(999) 999-9999. Donde el 9 (nueve) representa cualquier nmero.

Ejercicio 7.1.5: Una empresa cuenta con un grupo mximo de 10 vendedores, de ellos es necesario
llevar un registro de su nombre, sueldo base, total de ventas y comisin. Con el uso de arreglos de
estructuras haga las declaraciones necesarias de tal forma que el programa pida el nombre del
vendedor, las ventas realizadas y calcule su comisin a raz de un 15% sobre su total de ventas y esos
datos sean guardados dentro del arreglo. Por ltimo, genere una lista donde aparezca el nombre del
vendedor, sus ventas y su comisin correspondiente, al final informar el monto total que se requerir
para pagar la nmina generada por los vendedores. Una aclaracin adicional es que el sueldo base son
30 salarios mnimos a la quincena (suponer que el salario mnimo est a $50.00 pesos).

Ejercicio 7.1.6: En la unidad 6, ejercicio 6.2.3 inciso A se solicitaba una lista de 10 alumnos y su
calificacin respectiva. Intente crear una estructura con ambos componentes y usando arreglos de
estructuras haga las declaraciones correspondientes de tal forma que el programa pida tanto el nombre
como la calificacin y se almacenen correctamente con este tipo de datos estructura. Adems, en el
inciso G de ese mismo ejercicio se plantea desarrollar una funcin que calcule el promedio del grupo, de
tal manera que muestre la lista completa de alumnos con nombre y calificacin y que en la parte final,
muestre el promedio grupal. Intente resolver esa funcin pero con el manejo de arreglos de estructuras.
Ejercicio 7.1.7: Una empresa dedicada al envo de correspondencia de recibos de cobro de servicios
(como agua, luz, telfono, entre otros) tiene problemas para hacer llegar los sobres, porque en
ocasiones el domicilio que esta dado de alta corresponde a un edificio con departamentos o
condominios. Se pide que mediante el empleo de estructuras y uniones se cree una declaracin que
contemple ambos casos, es decir, cuando se trate de un domicilio particular o cuando se trate con un
domicilio que tenga numero interior. Los elementos sugeridos son: nombre, direccin (calle y nmero),
colonia, ciudad, cdigo postal y que contemple nombre del edificio y nmero interior en casos donde

12

CONALEP-2011

[Programacin bsica]

se requiera. A manera de ejemplo, asignar dos domicilios uno particular y otro para un departamento
e imprimirlos en pantalla con el formato que se maneja en los sobres.

Ejercicio 7.2.1:
Mediante la ayuda de esquemas o diagramas representa grficamente una PILA vaca.

Ejercicio 7.2.2:
Con la ayuda del esquema o diagrama que aparece a continuacin representa grficamente una PILA con
algunos de los siguientes elementos: primero, segundo, tercero e indica la posicin final de la variable
tope.

Ejercicio 7.2.3:
Con la ayuda del esquema o diagrama que aparece a continuacin, representa grficamente una PILA
llena con los siguientes elementos: 111, 222, 333, 9999 e indica cmo se mueve la variable tope.

13

CONALEP-2011

[Programacin bsica]

Ejercicio 7.2.4:
Mediante el apoyo del esquema o diagrama del ejercicio 7.2.2, representa grficamente la creacin de
una PILA, con los das de la semana.

Ejercicio 7.2.5:
Mediante la ayuda de esquemas o diagramas representa grficamente como quedara la implementacin
con una PILA, de la bandeja de entrada para mensajes de texto de un celular. La representacin consiste
en dos diagramas donde ejemplifiques como se mueve el tope despus de leer y borrar los ltimos 2
mensajes recibidos, a partir del diagrama base.

Ejercicio 7.2.6:
A continuacin se presenta una pila con el primer cuatrimestre del ao, tu tarea es representar
grficamente como quedara la implementacin de una PILA, al agregar 2 meses del ao para que se
convierta en semestre. La representacin consiste en dos diagramas donde ejemplifiques como se
mueve el tope a partir del diagrama base.

14

CONALEP-2011

[Programacin bsica]

Colas
Ejercicio 7.2.7:
Mediante la ayuda de esquemas o diagramas representa grficamente una COLA vaca.

Ejercicio 7.2.8:
Con la ayuda del esquema o diagrama que aparece a continuacin, representa grficamente una COLA
con algunos de los siguientes elementos: primero, segundo, tercero e indica la posicin final
de las variables inicio y fin.

Ejercicio 7.2.9:
Con la ayuda del esquema o diagrama que aparece a continuacin representa grficamente una COLA
llena con los siguientes elementos: UNO, DOS, TRES, INFINITO e indica cmo se mueven las variables
Inicio y Fin.

Ejercicio 7.2.10:
Mediante el apoyo del esquema o diagrama del ejercicio 2, representa grficamente la creacin de una
COLA, con las estaciones del ao.

15

CONALEP-2011

[Programacin bsica]

Ejercicio 7.2.11:
Mediante la ayuda de esquemas o diagramas representa grficamente como quedara una COLA de
impresin, la cual tiene tres trabajos de impresin y se enva un archivo ms llamado grfica de fsica.xls.
La representacin consiste en dos diagramas donde ejemplifiques como se mueve el tope a partir del
diagrama base.

Ejercicio 7.2.12:
A continuacin se presenta mediante una cola el reproductor de Windows Media con una lista de
reproduccin. Tu tarea es representar grficamente como quedara la implementacin de una COLA,
despus de reproducirse 2 canciones. La representacin consiste en dos diagramas donde ejemplifiques
como se mueve el inicio y fin a partir del diagrama base.

Listas
Ejercicio 7.2.13:
Mediante la ayuda de esquemas o diagramas representa grficamente los elementos necesarios para
construir una lista.

16

CONALEP-2011

[Programacin bsica]

Ejercicio 7.2.14:
En un inicio los celulares contaban con mens y listas de opciones para su manejo, el inconveniente que
presentaban es que si se requera la ltima opcin era necesario recorrer la lista completa y si ahora se
requera utilizar la primera opcin, era necesario recorrerse a la inversa hasta llegar a la primera opcin.
El planteamiento es: Cmo se resolvi esa desventaja, de tal manera que se pudiera pasar de la ltima
opcin a la primera? En concreto, aqu se supone que en inicio los mens los trabajaban con listas
enlazadas, entonces Cmo modificaras el siguiente diagrama de una lista enlazada para que se volviera
una lista circular?

Ejercicio 7.2.15:
Conforme avanz la tecnologa, los celulares reorganizaron sus mens y algunas opciones las
reacomodaron, tratando de simular ese avance, representa mediante una lista enlazada como suprimir
la opcin Fecha/hora, pensando en que se agreg dentro de la configuracin del telfono.

17

CONALEP-2011

[Programacin bsica]

Ejercicio 7.2.16:
En ese mismo desarrollo tecnolgico, los celulares fueron incorporando funciones que les permitan ser
ms tiles. Representa en otro esquema de lista enlazada, de qu manera se incorporara la opcin de la
Agenda entre las opciones de Contactos y configuracin del telfono.

Ejercicio 7.2.17:
Mediante la ayuda de esquemas o diagramas representa grficamente los elementos necesarios para
construir una lista doblemente ligada.
Ejercicio 7.2.18:
De los ltimos obstculos que se presentaron en cuanto a la incorporacin de funciones para celulares
fueron los reproductores de msica, ya que si usaban listas enlazadas simples o circulares, solo se poda
avanzar en un sentido, es decir, escuchar la siguiente cancin, eso serva para ver imgenes pero no para
regresar a escuchar la siguiente cancin. Modifica el esquema que se te presenta de tal forma que se
pueda tocar tanto la cancin siguiente como la meloda previa.
Diagrama Base: Lista doblemente enlazada.

18

CONALEP-2011

[Programacin bsica]

APNDICE
Ejercicio 1
1.- Miembros. 2.- Estructuras. 3.- Inicializadores. 4.- Operador flecha / Apuntadores. 5.- Operador punto.
6.- struct. 7.- struct carro. 8.- Uniones. 9.- Estructuras de datos.

Ejercicio 2
1.- (b); 2.- (c); 3.- (f); 4.- (i); 5.- (h); 6.- (e); 7.- (a); 8.- (j); 9.-(g); 10.-(d)

Ejercicio 3
1.- (V); 2.- (F); 3.- (F); 4.- (V); 5.- (F); 6.- (F); 7.- (V); 8.- (F); 9.- (V); 10.- (V)

Ejercicio 4
1.- Uniones. 2.- Estructuras dinmicas. 3.- Inicializadores. 4.- Operador flecha / Apuntadores. 5.- Operador punto.
6.- union. 7.- union moto. 8.- Direccin. 9.- Listas enlazadas abiertas.

Ejercicio 5
1.- (V); 2.- (V); 3.- (F); 4.- (F); 5.- (V); 6.- (F); 7.- (V); 8.- (V); 9.- (F); 10.- (F)

Ejercicio 6
1.- (a); 2.- (h); 3.- (j); 4.- (b); 5.- (d); 6.- (c); 7.- (i); 8.- (g); 9.- (f); 10.- (e)

19

CONALEP-2011

[Programacin bsica]

RESUMEN DE LA UNIDAD.

Ejercicio 7
Las variables de
estructura
pueden estar declaradas despus del parntesis que
contiene el cdigo de la estructura, sus variables internas pueden ser de diferentes tipos; las
estructuras estn definidas por la palabra
reservada
struct , llamando a sus
elementos miembros
de la estructura, a los que hacemos referencia por medio del
operador flecha , adems de permitir contener apuntadores , a travs de los cuales se pueden
crear estructuras de datos que varan su tamao en memoria.
Las estructuras, a diferencia de los arreglos , permiten que sus miembros puedan ser de
diferentes tipos, estando permitida la anidacin de estructuras, es decir, una dentro de otra.
Las uniones son parecidas a las estructuras, con la diferencia de que almacenan de
forma simultnea en el mismo bloque de memoria, a todos los miembros que las componen.
Las estructuras dinmicas de datos llaman a sus elementos nodos , teniendo entre
estas estructuras a las pilas, o estructuras LIFO ; en las cuales los ltimos nodos en entrar son
los primeros en salir; y las colas o estructuras FIFO , en las cuales el primer nodo en entrar
es el primero en salir; ambas estructuras estn entrelazadas internamente. Tambin existen
estructuras doblemente enlazadas, en las que cada nodo se conecta con el posterior y con
el anterior .

20

CONALEP-2011

[Programacin bsica]

Ejercicio 8
Sopa de letras
E
N
T
R
E
L
A
Z
A
D
A
S

D I F E

F
L
R E N T E S
C
H
G L O S A
I
F I F O
O

R
A R R E
S
E
R
N
V
C
O A N I D A C I O N
D
L
A O
A
S
S

M
I
E
M
B
R
O
S
T A M A O

P
R
I
M
E
R
O
S

D
I
N
A
U N I O N E S
M
I
S T R U C T
C
A N T E R I O R
A
E S T R U C T U R A S

21

A
P
U
N
T
A
D
O
D R
O E
B S
L
E
M
E
N
T
E

CONALEP-2011

[Programacin bsica]

Crucigrama
Unidad 7
1

5
7

V
A
R
I
A
B
L
E

D I N A
R
C
P U N T
L
A
11
E
R
E
S
13
A B

17

F L E

18

V E C

I C A S

4
S
N
6
L I S T A S
8
A D O R E S
O
R
O
N
U
9
C O 10L A S
B
E
N L A Z A D A S
T
I
E
F
12
F I F O
M
I E R T A S
N
14
15
N
P
T
16
M E M O R I A

H A
T
O R
I
Z

D
O

22

L
A
S

CONALEP-2011

[Programacin bsica]

Listado de Ejercicios RESUELTOS de la unidad 7


Nota: Las soluciones a los ejercicios fueron probadas en las versiones para Windows de los compiladores
Turbo C++ versin 3.0 y Dev-C++ versin 4.9.9.2.
Listado 7.1.1.
/* -----------------------------------------------------------------Programa: Ejercicio7-1-1.c
Objetivo: Declaracin de estructuras.
-------------------------------------------------------------------*/
#include <stdio.h>
struct certamen
{
char nombre[30];
float puntuacion;
};
struct certamen eliminadas, finalistas;

23

CONALEP-2011

[Programacin bsica]

Listado 7.1.3.
/* -----------------------------------------------------------------Programa: Ejercicio7-1-3.c
Objetivo: Declaracin y asignacin de datos a estructuras.
-------------------------------------------------------------------*/
#include <stdio.h>
struct fecha
{
int dia;
int mes;
int aho;
};
struct fecha f_nacimiento, f_hoy;
void main()
{
f_nacimiento.aho = 1968;
f_nacimiento.mes = 6;
f_nacimiento.dia = 19;
f_hoy.dia = 04;
f_hoy.mes = 8;
f_hoy.aho = 2011;
clrscr();
printf(" Tu fecha de nacimiento es: %d / %d / %d", f_nacimiento.dia,
f_nacimiento.mes, f_nacimiento.aho);
printf("\n La fecha de hoy es: %d - %d - %d", f_hoy.dia, f_hoy.mes,
f_hoy.aho);
getch();
}

24

CONALEP-2011

[Programacin bsica]

Listado 7.1.5
/* -----------------------------------------------------------------Programa: Ejercicio7-1-5.c
Objetivo: Usar arreglos de estructuras.
-------------------------------------------------------------------*/
#include <stdio.h>
#define NV 10
#define SM 50
#define PC 15
void captura();
void lista_vendedores ();
struct vendedor
{
char
int
float
float
};

nombre[100];
sdo_base;
tot_vtas;
comision;

struct vendedor vendedores[NV];


void main()
{
captura();
lista_vendedores();
}
/* -----------------------------------------------------------------Funcin: captura()
Objetivo: leer nombres, ventas, sueldo base y comisin para 10 vendedores o
menos.
Parmetros: ninguno.
Salida: ninguna.
-------------------------------------------------------------------*/
void captura()
{
struct vendedor aux;
int n = 0, i;
char *fin;
clrscr();
printf ("\n Finalizar captura con <ctrl+z> \n\n");
printf ("\n Nombre del vendedor: ");
fin = gets(aux.nombre);
while ((n < NV) && (fin != NULL))
{
printf ("\n total de ventas: ");

25

CONALEP-2011

[Programacin bsica]

scanf("%f", &aux.tot_vtas);
aux.comision = aux.tot_vtas * PC /100;
aux.sdo_base = 30 * SM;
vendedores[n] = aux;
n++;
printf ("\n Nombre del vendedor: ");
fin = gets(aux.nombre);
fin = gets(aux.nombre);
}
}
/* -----------------------------------------------------------------Funcin: lista_vendedores ()
Objetivo: sacar una lista de los vendedores y su nmina.
Parmetros: Ninguno.
Salida: Ninguna.
-------------------------------------------------------------------*/
void lista_vendedores ()
{
int c;
float sueldos;
sueldos = 0.0;
printf("\n Nomina de los vendedores \n ");
printf("\n Nombre: \t \t \t Sueldo \t Comisin");
for (c = 0; c < NV; c++)
{
printf("\n %s \t \t \t \t %d \t \t %8.2f", vendedores[c].nombre,
vendedores[c].sdo_base, vendedores[c].comision);
sueldos += vendedores[c].sdo_base + vendedores[c].comision;
}
printf("\n La nomina total de los vendedores es de
getch();
}

26

$%8.2f", sueldos);

CONALEP-2011

[Programacin bsica]

Listado 7.1.7
/* -----------------------------------------------------------------Programa: Ejercicio7-1-7.c
Objetivo: Utilizar estructuras y uniones.
-------------------------------------------------------------------*/
#include <stdio.h>
#define PART 1
#define EDIF 2
struct domicilio
{
char
char
char
char
long int
int
union edif
{

nombre[30];
direccion[30];
colonia[30];
ciudad[20];
cp;
tipo_dom;

char
int
} dpto;

nom_edif[20];
num_dpto;

};
struct domicilio temp;
void imprime();
void main()
{
struct domicilio dom_part, dom_edif;
strncpy(dom_part.nombre, "Filho Enrique Borjas", 30);
dom_part.tipo_dom = PART;
dom_part.cp = 58270;
strncpy(dom_part.direccion, "Nios Hroes No. 35", 30);
strncpy(dom_part.colonia, "Chapultepec Norte", 30);
strncpy(dom_part.ciudad, "Morelia, Mich." , 20);
strncpy(dom_edif.nombre, "Luis Gerardo Zavala", 30);
dom_edif.tipo_dom = EDIF;
dom_edif.cp = 58290;
strncpy(dom_edif.direccion, "Perifrico Republica", 30);
strncpy(dom_edif.colonia, "Sector Nva. Espaa", 30);
strncpy(dom_edif.ciudad, "Len, Gto.", 20);
strncpy(dom_edif.dpto.nom_edif, "Torre G", 20);
dom_edif.dpto.num_dpto = 43;
clrscr();
temp = dom_part;
imprime();

27

CONALEP-2011

[Programacin bsica]

temp = dom_edif;
imprime();
}
/* -----------------------------------------------------------------Funcin: imprime()
Objetivo: Imprimir un domicilio ya sea particular o de un Apartamento.
Parmetros: Ninguno.
Salida: Ninguna.
-------------------------------------------------------------------*/
void imprime()
{
printf("%s \n", temp.nombre);
printf("%s \n", temp.direccion);
if (temp.tipo_dom == EDIF)
printf("%s - %d \n", temp.dpto.nom_edif, temp.dpto.num_dpto);
printf("%s \n", temp.colonia);
printf("%li %s \n", temp.cp, temp.ciudad);
getch();
}

28

CONALEP-2011

[Programacin bsica]

Pilas
Solucin ejercicio 7.2.1:

Solucin ejercicio 7.2.2:

Solucin ejercicio 7.2.3

29

CONALEP-2011

[Programacin bsica]

Solucin ejercicio 7.2.4:

Solucin ejercicio 7.2.5:

Solucin ejercicio 7.2.6:

30

CONALEP-2011

[Programacin bsica]

Colas
Solucin ejercicio 7.2.7:

Solucin ejercicio 7.2.8:

Solucin ejercicio 7.2.9.

Solucin ejercicio 7.2.10

31

CONALEP-2011

[Programacin bsica]

Solucin ejercicio 7.2.11:

Solucin ejercicio 7.2.12:

Solucin ejercicio 7.2.13:

32

CONALEP-2011

[Programacin bsica]

Solucin Ejercicio 7.2.14:

Solucin ejercicio 7.2.15:

Solucin Ejercicio 7.2.16:

Solucin ejercicio 7.2.17:

33

CONALEP-2011

[Programacin bsica]

Solucin Ejercicio 7.2.18: Lista doblemente enlazada.

34

You might also like