Professional Documents
Culture Documents
PROGRAMACIN
BSICA
ii
PROGRAMACIN
BSICA
iii
Cubierta de CIE-CONALEP
Colaboracin:
Coordinacin de Innovacin Educativa, CIE/QFB - UMSNH
Sistema Nacional de Educacin a Distancia, SINED
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
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.
xi
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.
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.
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
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.
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
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.
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
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
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.
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.-
10.- El
, que aparece en 1972, fue implementado inicialmente para crear programas
de aplicaciones en el sistema operativo UNIX.
CONALEP-2011
[Programacin bsica]
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
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
CONALEP-2011
6.- El
de la vida diaria.
[Programacin bsica]
[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.
b) Programacin
funcional.
c) Programacin
estructurada.
d) Serie de
procedimientos
que actan sobre
los datos.
e) Funcin.
f) Programacin
orientada a objetos.
g) Objeto.
h) Clase.
[Programacin bsica]
CONALEP-2011
i) Programacin
orientada a
eventos.
j) Herencia.
CONALEP-2011
[Programacin bsica]
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
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
b) Evento
c) Clase
d) Herencia
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
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]
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.
[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.
b) Lenguaje mquina.
c) Lenguaje
ensamblador.
d) Lenguaje de
mnemotcnicos.
e) Lenguaje de alto
nivel.
f) Lenguaje C.
g) Traductor.
h) Programa.
10
[Programacin bsica]
CONALEP-2011
i) Cdigo fuente.
j) Lenguaje numrico
(representado en
bits).
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.
2.- A la
3.- El
4.- El
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
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
b) Intrprete
c) Cdigo fuente
d) Cdigo objeto
c) Intrprete
d) Compilador
b) Cdigo objeto
b) Enlazador
c) Intrprete
d) 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
13
d) COBOL
CONALEP-2011
a) Lenguaje C
[Programacin bsica]
b) Basic
c) LISP
d) COBOL
b) Traductores
c) Fase de anlisis
d) Fase de sntesis
b) Fase de sntesis
c) Fase de anlisis
d) Fase semntica
b) Fase de sntesis
c) Fase de anlisis
14
d) Fase semntica
[Programacin bsica]
CONALEP-2011
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.
d) Software genrico.
e) Usabilidad.
f) Modelo en
cascada.
g) Software
personalizado.
producir un software.
6.- Es un atributo de aquel software que hace un uso
producir un software.
8.- Programa o software desarrollado para un uso general
h) Eficiencia.
15
[Programacin bsica]
CONALEP-2011
i) Modelo de flujo de
trabajo.
j) Proceso de
desarrollo de
software.
16
CONALEP-2011
[Programacin bsica]
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
y tcnicas de la ingeniera de
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.
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]
Anlisis de requerimientos
Prueba
Mantenimiento
Programacin
Anlisis previo
Representaciones de interface
Estructura de datos
Algoritmo
19
CONALEP-2011
[Programacin bsica]
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
Flujo de la informacin
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]
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
matemticas.
22
CONALEP-2011
[Programacin bsica]
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
Inicio
SI
Condicin
Accin A
NO
Accin B
Fin
Condicin
SI
Accin A
NO
Accin B
23
[Programacin bsica]
CONALEP-2011
( )
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.
b) Etapa de prueba.
c) Mantenimiento.
de vida del
software.
e) Actualizacin.
f) Implantacin.
g) Implementacin.
24
[Programacin bsica]
CONALEP-2011
h) El riesgo.
i) No seguir
estrictamente el
ciclo secuencial.
mejorar el programa.
9.- Consiste en determinar hasta dnde se desea llegar
j) El programa se
finaliza hasta la
ltima etapa del
ciclo.
25
CONALEP-2011
[Programacin bsica]
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
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]
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]
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
Inicio
SI
NO
Condicin
Accin A
Accin B
Fin
Condicin
SI
NO
Accin A
( )
Accin B
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.
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.
b) MS DOS
c) Unix
d) Ensamblador
b) El lenguaje B
c) El lenguaje
Pascal
d) El lenguaje
COBOL
b) Ken
Thompson
c) Brian
Kernighan
c) Ken
Thompson
d) Bjarne
Stroustrup
d) Bjarne
Stroustrup
b) C++
c) ANSI C
d) C#
c) ANSI C
d) C#
b) C++
[Programacin bsica]
CONALEP-2011
b) Ken Thompson
c) Brian
Kernighan
d) Bjarne
Stroustrup
b) Java
c) Delphi
d) Prolog
b) C++
c) Visual C
d) ANSI 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
b) Bajo nivel
c) Lenguaje C++
d) Consumo excesivo
de tiempo y
esfuerzo en el
desarrollo
e) Portabilidad
f) Son caractersticas
del lenguaje C++
g) Popularidad
h) Estructura y
modularidad
CONALEP-2011
i) Apuntador
j) Lenguaje BCPL
[Programacin bsica]
9. Desventaja durante el diseo y mantenimiento de
funciones y clases.
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:
Variables globales
Palabras reservadas
else
Identificador
Sentencia
Operadores
Comentarios
Llaves
Variable
Constante
1.- Las
2.- Un
es utilizado para referirnos a un valor constante, a una variable o a una
estructura de datos.
3.-
4.- Una
coma.
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.
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
9.- Los
10.- La
es un identificador o nombre de un valor que puede cambiar durante
la ejecucin de un programa.
[Programacin bsica]
CONALEP-2011
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
b) Prototipo de una
funcin
c) Bibliotecas de
funciones
d) Directiva
#include
e) stdio.h
f) Librera estndar
g) Instrucciones de
inclusin
h) Directiva
#define
CONALEP-2011
[Programacin bsica]
i) Directivas del
preprocesador
j) Archivos de
cabecera de la
librera estndar
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
Prototipos de funcin
Estructuras de control
Estructuras secuenciales
CONALEP-2011
[Programacin bsica]
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
d) .exe
e) Cdigo objeto
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
12
CONALEP-2011
[Programacin bsica]
CRUCIGRAMA
HORIZONTALES
1.- La estructura
de la otra.
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]
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]
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]
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.
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
.
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.
CONALEP-2011
[Programacin bsica]
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
Heterogneos
Registros
Carcter
Doble precisin
Tipos de
datos
Homogneos
Compuestos
Uniones
CONALEP-2011
[Programacin bsica]
a) Operador de
asignacin
b) For
c) Expresin
d) Evaluacin en
cortocircuito
e) Operadores
lgicos
f) int
g) Identificadores
CONALEP-2011
h) Long
[Programacin bsica]
i) break
j) Operadores
aritmticos
10. Permiten la
constantes
comparacin
entre
variables
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
CONALEP-2011
[Programacin bsica]
4.- El
otro.
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
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
c) %f
CONALEP-2011
[Programacin bsica]
4. Palabra reservada empleada en una instruccin de
control condicional.
d) Instruccin
e) Llaves { }
f) printf( )
g) exit( )
h) if
i) \n
j) void
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.
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.
stdout
10.Funcin, diferente a
printf(), que imprime un carcter en la salida estndar.
%f
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
return
if
CONALEP-2011
[Programacin bsica]
for
4.-
if else
continue
do while
while
8.instruccin switch.
switch
Ciclos anidados
11.-
Retorno de funcin.
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
{
;
else
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]
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]
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]
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]
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]
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
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.
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.
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.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]
Ejercicio 3
1.- (j); 2.- (c); 3.- (f); 4.- (g); 5.- (h); 6.- (b); 7.- (i); 8.- (a); 9.- (d); 10.- (e)
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)
Ejercicio 6
1.- stderr; 2.- stdout; 3.- stdin; 4.- getch(); 5.- printf();
6.- %c; 7.- %d; 8.- %s; 9.- %f; 10.- putc()
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)
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]
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]
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.
9.
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
b) Clase de
almacenamiento
c) Cabecera de la
funcin
d) Return
e) #include
f) Lista de parmetros
h) void
i)
Variables globales
j)
Llamadas a las
funciones.
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
2.- El
3.- Un
una llamada a esta.
4.- Los
declarados.
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]
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
b) void
c) Recursiva
d) Esttico
b) Instrucciones
c) Mdulos
d) Constantes
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
b) Encabezado
c) Variables
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
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
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.
CONALEP-2011
[Programacin bsica]
[Programacin bsica]
CONALEP-2011
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
b) Funciones
predefinidas
c) time.h
d) math.h
e) string.h
f) stdio.h
g) stdlib.h
h) asctime()
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
15.- Son los argumentos que utilizamos en la definicin y/o declaracin de una funcin.
16.-Las funciones de
necesidades.
VERTICALES
1.- La lista de
10
CONALEP-2011
7.- En los
biblioteca.
[Programacin bsica]
3
4
5
10
11
12
13
14
15
16
17
18
19
20
11
CONALEP-2011
[Programacin bsica]
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]
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]
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.
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.
Costo
15 segundos
$100,000.00
17
CONALEP-2011
[Programacin bsica]
No.
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.
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]
25
CONALEP-2011
[Programacin bsica]
26
CONALEP-2011
[Programacin bsica]
27
CONALEP-2011
[Programacin bsica]
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
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
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]
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]
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
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
de sus elementos.
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.
CONALEP-2011
[Programacin bsica]
Ejercicio 3
Utilizando las expresiones del lado derecho, pon la sintaxis correcta de cada una de las
instrucciones siguientes:
rango
Tipo de dato
Nombre del arreglo
ndice fila
ndice columna
Nombre del arreglo
Tipo de dato
CONALEP-2011
[Programacin bsica]
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.
c) Fila.
d) Cadena de caracteres.
e) Columnas.
f) Matrices.
g) Multidimensionales.
i) Indizacin de
arreglos.
CONALEP-2011
[Programacin bsica]
Ejercicio 5
Utilizando las expresiones del lado derecho, pon la sintaxis correcta de cada una de las
instrucciones siguientes:
ndice columna
Nombre del arreglo
ndice fila
___ },
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]
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.
[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
de
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.
VERTICALES
2.- Entre
10
CONALEP-2011
[Programacin bsica]
10
11
12
13
14
15
16
17
18
11
CONALEP-2011
[Programacin bsica]
12
CONALEP-2011
[Programacin bsica]
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]
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] ;
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] ;
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).
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]
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:
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
b) void
c) Desreferencia
d) Comparacin
e) Decremento
f) Indireccin
mltiple
g) Variable vlida
h) Asignacin de
apuntadores
i) NULL
j) Accesar una
direccin no vlida
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. Es imposible hacer que un apuntador haga referencia a un elemento
de un arreglo.
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
*
;
+
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
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
b) realloc ( )
c) free ( )
d) void
e) malloc ( )
f) Copia
g) calloc ( )
h) stdlib.h
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.
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
VERTICALES
2.- Podemos
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]
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 */
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().
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;
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]
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]
*Z = var_temp;
/* Colocar en la direccin 1012 el valor de var_temp y salir de la funcin intercambio() */
25
CONALEP-2011
[Programacin bsica]
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;
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]
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
3.- Los
4.- Se usa el
de
8.- Las
son un bloque de memoria que almacena simultneamente datos de variables
de diferentes tipos.
9.- Las
[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.
b) Uniones
c) typedef
d) Variable estructura
e) carro.color
f) struct carro
g) main( )
h) Indireccin
mltiple
i) Estructuras
autorreferenciadas
a) Etiqueta de una
estructura
j) Estructuras
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.
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
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.
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
b) Listas doblemente
enlazadas
c) Nodo
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
f) FIFO
g) Borrar un nodo
h) Insertar un nodo
i) Pila
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
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.
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.
CONALEP-2011
[Programacin bsica]
3
4
9
11
12
13
14
15
16
17
18
10
10
CONALEP-2011
[Programacin bsica]
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]
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;
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:
29
CONALEP-2011
[Programacin bsica]
30
CONALEP-2011
[Programacin bsica]
Colas
Solucin ejercicio 7.2.7:
31
CONALEP-2011
[Programacin bsica]
32
CONALEP-2011
[Programacin bsica]
33
CONALEP-2011
[Programacin bsica]
34