Vous êtes sur la page 1sur 176

ESIME TICOMN

FUNDAMENTOS DE
PROGRAMACIN
RODRIGO AVILS VILLAREAL

2013

INSTITUTO POLITCNICO NACIONAL

1
NDICE
Unidad I. Introduccin a la Programacin .................................................................................................. 1
1. Definicin, caractersticas y funcin de un Sistema Operativo........................................................ 1
1.1

Anlisis comparativo de Sistemas Operativos. Linux y Windows. ...................................... 5

2. Definicin de caractersticas de los Lenguajes de programacin. Visual Basic, Java y


Lenguaje C. ............................................................................................................................................. 10
3. Compilador (Dev C++) ........................................................................................................................ 16
Unidad Il. Fundamentos de programacin estructurada ........................................................................ 19
1. Estructura general de un programa. .................................................................................................. 20
1.1

Tipos de variables ..................................................................................................................... 28

1.2

Constantes (uso de #define) ................................................................................................... 42

1.3

Operadores ................................................................................................................................ 45

2. Funciones de entrada .......................................................................................................................... 68


2.1

La funcin scanf() ...................................................................................................................... 68

2.2

Las funciones getch() y getche()............................................................................................. 70

3. Funciones matemticas ....................................................................................................................... 73


4. Funciones generadas por el usuario ................................................................................................. 78
4.1 Declaracin y definicin de una funcin ..................................................................................... 78
4.2 Funcin sin argumentos que no devuelve ningn valor .......................................................... 80
4.3 Funcin con argumentos que no devuelve ningn valor ......................................................... 82
4.4 Funcin sin argumentos que devuelve un valor ....................................................................... 85
Unidad III. Sentencias de control ............................................................................................................... 90
1. Sentencia de control for ...................................................................................................................... 90
2. Sentencias de control while y do while ............................................................................................ 96
3. Sentencia de control if else .............................................................................................................. 105
4. Sentencia de control break................................................................................................................ 112
5. Sentencia de control switch .............................................................................................................. 116
6.Sentencia de control goto ................................................................................................................... 123

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Unidad IV. Estructuras de datos .............................................................................................................. 133
1. Arreglos (Arrays) Unidimensionales ................................................................................................ 133
2. Arreglos de caracteres (strings) ...................................................................................................... 140
3. Arreglos (Arrays) Bidimensionales ................................................................................................... 148
4. Apuntadores (Punteros) Concepto ................................................................................................. 155
5. Operadores con apuntadores ........................................................................................................... 162
6. Relacin de apuntadores con arreglos........................................................................................... 166

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Unidad I. Introduccin a la Programacin

1. Definicin, caractersticas y funcin de un Sistema Operativo

Mapa de conceptos

Unidad I
Introduccin a la Programacin

Definicin, caractersticas y
funcin de un Sistema
Operativo

Definicin de caractersticas de
los Lenguajes de programacin.
Visual Basic, Java y Lenguaje C.

Compilador
(Dev C++)

Anlisis
comparativo
de Sistemas
Operativos.
Linux y
Windows

Introduccin.
Cuando se enciende una computadora comienza a trabajar en ella un conjunto de
programas de aplicacin. Para que este conjunto de programas trabajen ordenadamente
se requiere de un Sistema Operativo.
El Sistema Operativo es un programa que proporciona el ambiente sobre el cual los
dems programas funcionarn, adems de brindar una interfaz entre el usuario y la
computadora.
Para todo programador es necesario identificar el concepto, caractersticas y funcin de
un sistema operativo ya que los programas que desarrollars en esta unidad de
aprendizaje y en otras unidades, se ejecutarn dentro de un sistema operativo, por lo
tanto es necesario conocer el ambiente sobre el cual se trabaja.
Comentamos en lneas anteriores, acerca de un Sistema Operativo, pero veamos
exactamente a que nos referimos.
1

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Qu es un Sistema Operativo?

Un Sistema Operativo (SO) es el programa encargado de


controlar y administrar tanto el software como el hardware y
todos los recursos en una computadora.
Por ejemplo Windows es el SO en el cul se pueden correr
programas como Microsoft Oficiey Adobe Reader,Windows
se encarga de gestionar y brindar los recursos y
herramientas que estos programas requieren para su
funcionamiento.
Un SO provee un ambiente sobre el cual puedan ejecutarse
otros programas los cuales se apoyan en l para poder
acceder a los recursos que necesitan como memoria o la
atencin del procesador, es decir, que el procesador le
brinde un poco de tiempo ya sea a las funciones que realizan el monitor, descargar un
archivo, o utilizar un teclado, entre otras funciones.
El SO brinda a los usuarios los medios necesarios para que pueda establecerse una
comunicacin con l, para dar rdenes e instrucciones a la computadora, con el objetivo
principal de lograr que tanto el software (los programas) como el hardware (los
componentes fsicos de la computadora) se empleen eficientemente.
Ntese que un error comn es denominar al conjunto completo de herramientas y
programas sistema operativo, por ejemplo pensar que Microsoft Office, Internet Explorer,
WinRAR, etc., son parte del SO, esto es un error ya que solamente Microsoft Windows es
el sistema operativo y los otros mencionados son aplicaciones de propsito especfico.
En otras palabras un SO es el software (Windows, Linux) sobre el cual se instalan y
ejecutan otros programas (office, adobe Reader, AutoCad, etc.).

Cules son las caractersticas ms importantes de un Sistema Operativo?


En general, un Sistema Operativo tiene las siguientes caractersticas:
Conveniente.
Un SO hace ms sencillo el uso de una computadora cuando el sistema operativo brinda
una interfaz grfica. Por ejemplo: el escritorio de una computadora cuando la
encendemos.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Eficiente.
Un Sistema Operativo hace que todos los recursos de una computadora trabajen lo ms
eficientemente posible.
Flexible.
Un SO permite el desarrollo, prueba o introduccin efectiva de nuevas funciones del
sistema sin interferir con el correcto funcionamiento del equipo de cmputo. Por ejemplo,
Instalar una actualizacin sin interferir con el trabajo que se est realizando en un
documento Word.
Administrador eficiente.
El SO es encargado de administrar y manejar eficientemente todos los recursos de una
computadora, por ejemplo: la memoria RAM, el disco duro, el procesador, la tarjeta de
video y los puertos.
Gestor de dispositivos
El SO se encarga de controlar la comunicacin entre los dispositivos perifricos, cuando
el usuario as lo requiera, por ejemplo, se encarga de comunicar al teclado o al mouse de
una computadora cuando estos son accionados por el usuario.
Facilitador.
El SO facilita la entrada y salida de datos as como el acceso y manejo de los dispositivos
de Entrada/Salida de la computadora, por ejemplo observamos la facilidad con que
podemos enviar un archivo desde Mis documentos hacia una memoria USB instalada en
nuestra computadora.

Qu hace un Sistema Operativo?


Las funciones bsicas de un Sistema Operativo son:
Interpretar los comandos que permiten al usuario
comunicarse con la computadora, a travs de la
interfaz.
Coordinar y manipular el hardware de la
computadora, como la memoria RAM, las
impresoras, las unidades de disco, el teclado o el
Mouse.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Organizar los archivos en diversos dispositivos de almacenamiento, como discos
duros, discos compactos o memorias USB.
Gestionar los errores del hardware y la prdida de datos, es decir, enva mensajes
de error cuando se da una orden que no se puede ejecutar y da opciones de
solucin.
Organizar datos para acceso rpido y seguro, es decir, permite generar y
administrar un directorio de carpetas para organizar los archivos, por ejemplo: las
carpetas mis documentos, system, Archivos de Programa, etc.
Permite al usuario manejar las comunicaciones en red con gran facilidad todo lo
referente a la instalacin y uso de redes, por ejemplo, en un cibercaf todas las
computadoras comparten el internet y el SO es el encargado de hacer esto posible.

Para saber ms:


Los Sistemas Operativos ms utilizados son Windows, Linux y
Mac. Algunos SO ya vienen con un navegador integrado, como
Windows que trae el navegador Internet Explorer.
En Linux el navegador es FireFox.

Hasta aqu has aprendido la importancia del SO y que gracias a l se pueden ejecutar
otros programas que ayudan a realizar trabajos en las computadoras, ahora es momento
de que pongas en prctica los conocimientos adquiridos en este apartado.
Actividad de aprendizaje 1. SO
El objetivo de esta actividad es que conozcas e identifiques los elementos bsicos de los
sistemas operativos.
Instrucciones:
En esta actividad debers responder con tus palabras un breve cuestionario, mismo que
se te presenta en un documento Word a continuacin.
Descarga el archivo SO Cuestionario y respndelo.
Cabe aclarar que si tu asesor detecta que copiaste y pegaste la informacin de una
pgina de internet, se anular esta actividad.
Cuida tu ortografa, sintaxis y redaccin ya que tambin se te tomar en cuenta para la
calificacin.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Al terminar de responder el cuestionario gurdalo en tu PC y envalo a tu profesor con tus
datos en el siguiente formato: apellidopaterno_materno_nombre_actividadnumero.
La comparacin de los sistemas operativos Microsoft Windows y Linux es un tema muy
comn entre los usuarios. Windows es el sistema operativo ms utilizado bajo una licencia
propietaria de software, esto quiere decir que tenemos que pagar por el uso de este SO,
mientras que Linux es el sistema operativo ms importante bajo una licencia libre de
software, esto quiere decir que el usuario no tiene que pagar por el uso de este SO.

1.1 Anlisis comparativo de Sistemas Operativos. Linux y Windows.


Qu es Linux?
Linux es un sistema operativo construido por un equipo de
desarrolladores de todo el mundo. Contiene todas las
aplicaciones que necesitas: un navegador web, aplicaciones
ofimticas, de mensajera y muchas otras ms.
Existen muchas distribuciones diferentes de GNU/Linux: Debian, Gentoo, RedHat o
Mandriva son algunos ejemplos.
Por otra parte, casi todos hemos utilizado alguna vez el sistema operativo de Microsoft
Windows en alguna de sus versiones, hemos descubierto y experimentado las
herramientas y aplicaciones que nos brinda este SO, realizamos nuestras tareas,
navegamos por el internet, chateamos, vemos videos, escuchamos msica, digitalizamos
e imprimimos nuestros archivos, grabamos msica, en fin nos es muy cotidiano el uso de
este SO.
A continuacin se muestra una pequea comparacin entre algunas caractersticas de
Windows y de Linux
Instalacin:

En Linux la instalacin no es sencilla, pero te permite personalizar totalmente los


paquetes que quieras instalar.
En Windows la instalacin es mnimamente configurable aunque es muy sencilla.

Compatibilidad:

Ninguno de los dos sistemas operativos son totalmente compatibles con la totalidad
del Hardware existente en el mercado.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin

Linux gracias a su popularidad ofrece una alta compatibilidad ofreciendo, adems,


actualizaciones frecuentes.
Windows ofrece una gran cantidad de drivers.

Programas:

Linux posee menos software y en algunos campos, por ejemplo las industrias, tiene
una menor aceptacin, aunque gracias a los apoyos de empresas como Sun
Microsystems o IBM ha logrado muchos avances.
Windows al ser el ms usado, posee una gran cantidad de software.

Robustez:

En Linux puede pasar mucho tiempo e incluso aos sin la necesidad de apagar o
reiniciar el equipo, si una aplicacin falla este error no bloquea totalmente al
equipo.
En Windows siempre hay que reiniciar cuando se cambia la configuracin del
sistema, y se bloquea fcilmente.

Ya que conoces algunas caractersticas importantes de ambos sistemas operativos se te


invita a probar lo que millones de personas alrededor del mundo han denominado como
El mejor Sistema Operativo del Mundo, Linux:
En el siguiente video tutorial se muestran los pasos que necesitas seguir para descargar e
instalar Ubuntu 10.10 MaverickMeerkat en tu computadora, se te recomienda observar la
totalidad del video antes de comenzar.

Nota importante: La instalacin de Ubuntu 10.10 se realiza como la


instalacin de cualquier otro programa bajo Windows, esta instalacin
no borrar ni daara tus archivos, tampoco descompondr tu
computadora y puedes trabajar con cualquiera de los dos SO Windows
o Linux.
Actividad de aprendizaje 2 Instalacin de Linux (Ubuntu 10.10)
Ya conoces algunas caractersticas tanto de Windows como de Linux, ahora es tiempo de
que realices algunas pruebas con el programa que acabas de instalar en tu PC, el objetivo
de esta actividad es que utilices los elementos bsicos del Sistema Operativo Linux
(Ubuntu), de manera analtica y reflexiva para descubrir el uso, caractersticas, ventajas y
desventajas de este sistema operativo en su modo grfico y compararlo con el Sistema
Operativo Windows.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Para realizar la actividad necesitas un cronometro (puedes ocupar tu reloj o tu celular),
lpiz y una hoja de papel
A continuacin se te dan las instrucciones para realizar esta actividad, de las cuales en un
primer momento vas a ir registrando los resultados en una hoja de papel y posteriormente
en una tabla que elaborars con OpenOffice.org Writer, que es un programa de Linux.
Para saber ms:
OpenOffice.org Writer es un procesador de texto que forma parte
del conjunto de aplicaciones de la suite ofimtica OpenOffice.org.
Adems de otros formatos estndares y ampliamente utilizados de
documentos, puede abrir y grabar el formato propietario .doc de
Microsoft Word casi en su totalidad. El formato nativo (por defecto)
para exportar documentos es XML. Tambin puede exportar a
ficheros PDF nativamente sin usar otros programas intermedios
Instrucciones:
1. Dibuja la siguiente tabla en una hoja de papel, en ella vas a ir registrando los
resultados de esta actividad, no la copies, ya que las vas a elaborar
posteriormente.

Caractersticas

WINDOWS(Especifica tu
versin)

LINUX (UBUNTU 10.10)

Tiempo de apagado
Tiempo de Encendido
Respuesta Inmediata
Rapidez al abrir un
programa

2. Estando dentro de Windows apaga el sistema operativo y registra el tiempo que


tarda en hacerlo, mide el tiempo a partir del momento en que des clic sobre el
botn apagar y antalo en la tabla de tu hoja de papel.
3. Enciende nuevamente tu computadora e inicia en Windows, registra el tiempo que
tarda en cargar todos los programas, hasta el momento en que se muestra el
escritorio por primera vez.
4. Inmediatamente despus de que se muestra el escritorio da clic sobre el botn
inicio y ve a la opcin Mi PC o Equipo (dependiendo de la versin de tu SO). y
da clic sobre ella, observa si la respuesta es inmediata, es decir si aparece de

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
inmediato la ventana de esta opcin. tu anotacin en la hoja de papel ser si o no
dependiendo de tu resultado.
Nota: Es importante que sea inmediatamente despus de que se muestra por primera vez
el escritorio al encender la computadora.
5. En este momento registrars en la hoja de papel si el proceso de abrir un
programa, es rpido o lento, ve al men inicio y abre Microsoft Office Word,
observa la rapidez con que se abre el programa y registra tu observacin, tu
respuesta en la hoja de papel ser si o no dependiendo de tu resultado.
6. Ahora cierra todos los programas que se estn ejecutando en Windows y apaga el
equipo.
7. Vuelve a encender tu computadora e inicia en Ubuntu, registra el tiempo que tarda
en cargar todos los programas, hasta el momento en que se muestra el escritorio
por primera vez.
8. Inmediatamente despus de que se muestra el escritorio por primera vez da clic
sobre el botn Lugares luego da clic sobre Equipo, Observa si la respuesta es
inmediata, tu anotacin en la hoja de papel ser si o no dependiendo de tu
resultado.
Nota: Es importante que sea inmediatamente despus de que se muestra por primera vez
el escritorio al encender la computadora.
9. Ahora registra si el proceso de abrir un programa, es rpido o lento, ve al men
aplicaciones y abre la pestaa Oficina, da clic sobre OpenOffice.org Writer,
procesador de textos, y observa la rapidez con que se abre el programa, registra
tu observacin, tu respuesta ser si o no.
10. En el programa OpenOffice.org Writer (procesador de textos) elabora la tabla que
copiaste en la hoja de papel con los resultados que obtuviste, gurdala con
extensin .doc y .XML, (esta aplicacin puede guardar los archivos en estas dos
extensiones) el archivo que subirs a la plataforma para tu evaluacin ser el
archivo con extensin .XML
Al terminar de responder el cuestionario gurdalo en tu PC y envalo a tu profesor con tus
datos en el siguiente formato: apellidopaterno_materno_nombre_actividadnumero

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Conclusin
Hemos terminado el primer tema de la Unidad por lo que haremos una pequea sntesis
de lo visto.
Un Sistema Operativo es un programa software encargado de administrar y gestionar
todos los recursos que integran a una computadora, tanto de software como de hardware,
para que estos trabajen en conjunto eficientemente, adems de proveer de un ambiente
sobre el cual, otros programas pueden instalarse y ejecutarse sin ningn problema;
tambin se encarga de brindar al usuario una interfaz o medio de comunicacin entre el
propio Sistema Operativo y el usuario.
Tanto Windows como Linux poseen ventajas y desventajas, aunque desde un punto de
vista ms tcnico Linux es mejor. Linux es ms rpido y estable, adems de ser gratuito,
aunque en comparacin con Windows no tiene la misma cantidad de software ni tampoco
el mismo nmero de usuarios a nivel mundial.
Avancemos al Tema 2

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
2. Definicin de caractersticas de los Lenguajes de programacin. Visual Basic,
Java y Lenguaje C.

Introduccin.
En este apartado conocers lo que son los Lenguajes de Programacin, los cuales se
pueden definir como un idioma creado por el hombre, para que ste pueda dar rdenes a
una computadora, sin necesidad de hablar el mismo idioma o lenguaje que la mquina
(ceros y unos, Lenguaje Mquina).

Qu es un Lenguaje de Programacin?

Un lenguaje de programacin es un conjunto de smbolos,


reglas sintcticas y semnticas, mismas que definen
concretamente la estructura, la escritura y relacin entre los
comandos,
de instrucciones, diseado para expresar
operaciones, mismas que pueden ser ejecutadas por
computadoras.
Tambin puede usarse para crear programas que controlen el comportamiento fsico y
lgico de cualquier mquina electrnica, para expresar algoritmos, o para el desarrollo de
un SO.

Para saber ms:


Al proceso por el cual se escribe, se depura y se compila el
cdigo fuente (instrucciones escritas) de un programa se le llama
programacin.
Cabe aclarar que la palabra programacin tambin se define
como el proceso de creacin de un programa de computadora,
mediante la aplicacin de procedimientos lgicos.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Qu Lenguaje de Programacin es el ms utilizado?
Actualmente existen varios lenguajes de programacin con los que se pueden trabajar,
pero los ms utilizados son: Visual Basic, Java y desde luego el Lenguaje C, a
continuacin se te describen brevemente cada uno de ellos.
Visual Basic
Visual Basic es un lenguaje de programacin desarrollado por el
alemn Alan Cooper para Microsoft. Su primera versin fue
presentada en 1991, con la ventaja principal de simplificar la
programacin utilizando un ambiente de desarrollo completamente
grfico.

Visual Basic constituye un IDE (entorno de


desarrollo integrado, o en ingls, Integrated
Development
Enviroment)
que
ha
sido
empaquetado como un programa de aplicacin, es
decir, consiste en un editor de cdigo que es un
programa donde se escribe el cdigo fuente, un
depurador que es un programa que encuentra
errores en el cdigo fuente para que pueda ser
compilado correctamente, un compilador que es
un programa que traduce el cdigo fuente a
lenguaje mquina.
Este Lenguaje se emplea comnmente en el desarrollo de aplicaciones de Internet y de
propsito general como un diccionario, una base de datos para una biblioteca, un editor
de texto, entre otras.
JAVA
Java es un lenguaje de programacin orientado a
objetos, desarrollado por la empresa Sun Microsystems
a principios de los aos 90.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Este lenguaje toma mucha de la sintaxis propia de los lenguajes C y de C++, pero tiene
un modelo de objetos ms simple pero te restringe la manipulacin de punteros, que es
caracterstico de los lenguajes de bajo nivel.
Nota importante:
No confundas C++ con C, C++ es un lenguaje, solo que es una mejora de
lenguaje C y el modelo de programacion es orientado a objetos.

Lenguaje de programacin C
C es un lenguaje de programacin creado en el ao de 1972 por Dennis M. Ritchie en los
Laboratorios Bell como evolucin del anterior lenguaje B.
Al igual que el lenguaje B, el Lenguaje C es un lenguaje orientado a la implementacin de
Sistemas Operativos y C est caracterizado por la eficiencia del cdigo que produce.
El lenguaje C es un lenguaje clasificado como un lenguaje de medio nivel pero con
muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes
de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un
control de medio nivel. En otras palabras es un Lenguaje muy completo.
Pero exactamente cuando hablamos de lenguaje de medio nivel, bajo y de alto nivel nos
referimos a lo siguiente.
Lenguaje de bajo nivel
Un lenguaje de programacin de bajo nivel es el que proporciona un set de instrucciones
aritmticas sin la capacidad de encapsular dichas instrucciones en funciones que no estn
ya contempladas en la arquitectura del hardware.
Lenguaje de medio nivel
Suelen ser clasificados de alto nivel, pero permiten ciertos manejos de bajo nivel. Son
precisos para ciertas aplicaciones como la creacin de sistemas operativos, ya que
permiten un manejo abstracto (independiente de la mquina, a diferencia del lenguaje
ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de
bajo nivel.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Lenguaje de alto nivel
Un lenguaje de programacin de alto nivel se caracteriza por expresar los algoritmos de
una manera adecuada a la capacidad cognitiva humana, a diferencia de lo que es
comprender el lenguaje mquina para una persona.
Te invito a que redobles esfuerzos en tu afn por aprender a programar en Lenguaje C, ya
que si dominas este arte podrs desarrollar cualquier cosa que imagines.
Es momento de aplicar lo aprendido, resuelve la siguiente actividad de aprendizaje.
Actividad de aprendizaje 3. Lenguajes de programacin.
Ahora que ya sabes lo que es un lenguaje de programacin, as como cules son los ms
utilizados, se te invita a realizar la siguiente actividad, la cual tiene por objetivo que
conozcas e identifiques los elementos bsicos de los lenguajes de programacin.
Instrucciones:

A continuacin se te presenta un cuestionario con 10 preguntas, cada una presenta


tres respuestas pero solo una es correcta, elige la que consideras adecuada para
cada pregunta.
Lee cada pregunta con atencin antes de seleccionar tu respuesta ya que solo
tendrs una oportunidad para responder.
Al terminar da clic sobre el botn enviar

Cuestionario:
1.- Qu es un lenguaje de programacin?
a) Es un conjunto de smbolos, reglas sintcticas y semnticas que pueden ser
ejecutadas por computadoras.
b) Es el software encargado de ejercer el control y coordinar el uso del hardware en
una computadora.
c) Es un IDE ((entorno de desarrollo integrado).
2.- Para qu sirve un Lenguaje de Programacin?
a) Para interpretar los comandos que permiten al usuario comunicarse con la
computadora.
b) Para gestionar los errores del hardware y la prdida de datos.
c) Para crear programas que controlen el comportamiento fsico y lgico de cualquier
mquina electrnica, para expresar algoritmos o para el desarrollo de un SO

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
3.- Al proceso por el cual se escribe, se depura y se compila el cdigo fuente de un
programa se le llama?:
a) Configuracin.
b) Programacin.
c) Compilacin.
4.- Es un lenguaje de programacin desarrollado por el alemn Alan Cooper para
Microsoft?
a) Java
b) Linux
c) Visual Basic
5.- Cul es la principal ventaja de Visual Basic?
a) Rapidez.
b) Simplificar la programacin utilizando un ambiente de desarrollo completamente
grfico.
c) Flexibilidad.
6.- Qu es Java?.
a) Es un lenguaje de programacin orientado a objetos.
b) Es un compilador.
c) Es un constructor de interfaz grfica.
7.- Qu Lenguaje de Programacin no permite la manipulacin directa de las direcciones
de memoria por medio de punteros?
a) Linux
b) Unix
c) Java
8.- De qu otros Lenguajes toma gran parte de su sintaxis el lenguaje Java?
a) Visual Basic.
b) Microsoft Windows.
c) C y C++.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
9.- Es un lenguaje de programacin creado en el ao de 1972 por Dennis M. Ritchie en
los Laboratorios Bell como evolucin del anterior lenguaje B?
a) Lenguaje C.
b) Lenguaje Ensamblador.
c) Lenjuage C++.
10.- El lenguaje de programacin C se caracteriza por?:
a) Ser un lenguaje de de alto nivel.
b) Su eficiencia del cdigo que produce.
c) Su capacidad para crear aplicaciones grficas.
Conclusin.
Como pudiste observar un lenguaje de programacin es un conjunto de smbolos, reglas e
instrucciones que es diseado por el hombre para dar instrucciones a una computadora.
Actualmente existen muchos lenguajes de programacin pero los ms utilizados son:
Visual Basic, Java y desde luego el Lenguaje C, siendo este ultimo uno de los ms
robustos.
Muy bien, terminaste el segundo tema!
Sigue adelante!

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
3. Compilador (Dev C++)

Introduccin.
El cdigo maquina es muy difcil de entender para una persona, es necesario
implementar una herramienta que se encargue de traducir un Lenguaje de programacin
a cdigo mquina, que es el lenguaje que entiende una computadora.
A este trabajo de traduccin se le llama compilar un programa, trabajo que realiza un
programa llamado compilador.
Qu es un Compilador?
Un compilador es un programa que traduce un lenguaje de programacin a lenguaje
mquina.
Es un programa informtico que traduce un programa escrito en un lenguaje de
programacin a otro lenguaje que generalmente es el lenguaje mquina (ceros y unos),
pero tambin puede ser simplemente texto. Generando un programa equivalente que la
mquina ser capaz de interpretar.
Este proceso de traduccin se conoce como compilacin.
Existen diferentes compiladores como Turbo C, Turbo Pascal, Borland y GCC, pero en
esta unidad de aprendizaje utilizaremos el compilador que est integrado en el IDE Dev
C++
En el proceso de la programacin no se necesita solamente un compilador, sino que
tambin, es necesario, un programa que nos permita editar el cdigo fuente, un programa
que se encargue de depurarlo y un compilador que se encargue de traducir el cdigo
fuente en cdigo mquina, a este tipo de programas que cuentan con estas tres
herramientas se les conoce como IDE.
Qu es un IDE?
Un IDE (Entorno de Desarrollo Integrado, por sus siglas en ingls: Integrated
Development Environment) es un programa compuesto por un conjunto de herramientas
de programacin.
IDE Dev C++, (Bloodshed Dev C++ que es su nombre completo), es un entorno de
desarrollo integrado para programar en lenguaje C y C++. Cuenta con un editor de cdigo
que es un programa donde se escribe el cdigo fuente, un depurador (programa que
corrige errores en el cdigo fuente para que pueda ser compilado correctamente) y un
compilador (programa que traduce el cdigo fuente a lenguaje mquina).

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin
Te preguntars: Dnde lo consigo?, Cmo lo instalo?
Espera, se paciente, estas dos preguntas se respondern en este apartado.
Observa el siguiente video que te mostrar como descargar e instalar el Dev C++.

Nota importante: Es muy importante que descargues este IDE ya que a


lo largo de toda la unidad de aprendizaje se utilizar para realizar los
programas que generars.

Actividad de aprendizaje 4. Descarga e instala Dev C++


Instrucciones:
Despus de observar en su totalidad el video tutorial descarga e instala en tu
computadora el IDE Dev C++.
Una vez instalado el programa Dev C++ captura la imagen del escritorio donde se
encuentra el acceso directo a este programa, a continuacin se te muestra un ejemplo.
Para obtener esta imagen del escritorio
presiona el siguiente botn Impr Pant/Petsis,
la imagen de toda la pantalla se guardara en
el portapapeles, pgala en un documento en
Word y recrtala de ser
necesario.

Ahora captura la imagen del programa Dev


C++ abierto en tu computadora de la misma forma que la imagen anterior, Aqu hay otro
ejemplo.

Fundamentos de Programacin
Unidad I. Introduccin a la Programacin

Pega estas dos imgenes en un documento en Word, gurdalas y envalas a tu profesor


con el siguiente formato: apellidopaterno_materno_nombre_actividadnumero.
Conclusin:
En el proceso de elaboracin de un programa escrito en Lenguaje C es necesario utilizar
una aplicacin que le permita al programador escribir su cdigo fuente, un depurador que
le permitir encontrar los errores en el mismo y un compilador que traduzca este
programa a un lenguaje mquina dando como resultado un archivo con extensin exe, a
las aplicaciones que cuentan con este tipo de herramientas se les conoce como Entorno
de Desarrollo Integrado (IDE).
Excelente!
Terminaste la primera unidad.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Unidad Il. Fundamentos de programacin estructurada


Mapa de conceptos

Introduccin.
A lo largo de este tema conocers la estructura general de un programa escrito en
Lenguaje C y se te explicar detalladamente el trabajo que realiza cada una de las lneas
de cdigo se te explican los tipos de variables que admite el Lenguaje C as como la
declaracin y uso de estas variables y tambin aprenders a utilizar los distintos tipos de
datos con que cuenta el Lenguaje C.
Se te invita a redoblar esfuerzos y a poner toda tu atencin ya que la informacin que a
continuacin se muestra te ser de gran utilidad para la realizacin de todos los
programas que efectuaras a lo largo de esta unidad de aprendizaje.

19

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
1. Estructura general de un programa.
Tu primer programa en lenguaje C: Hola mundo
Ahora vas a conocer la estructura de un programa escrito en Lenguaje C, es muy sencillo
ya que muestra en pantalla un mensaje con el texto Hola mundo y se te har la
explicacin de cada uno de sus elementos que te permitir aprender la estructura general
de cualquier programa escrito en Lenguaje C.
Ya que hayas conocido las partes de este programa vas a realizarlo y a probarlo, para lo
cual vas a utilizar el IDE Bloodshed Dev-C++ que instalaste anteriormente.
A continuacin se te muestra una imagen del resultado de editar, depurar y compilar el
programa Hola mundo

Cdigo fuente del programa Hola Mundo

Se le llama cdigo fuente a las instrucciones escritas por un programador en un lenguaje


de programacin, estas instrucciones no pueden ser ejecutadas por la computadora, ya
que la computadora solo entiende el Lenguaje maquina (ceros y unos), por lo que es
necesario traducir el cdigo fuente escrito por el programador a cdigo maquina y para
hacer la traduccin para que lo ejecute la computadora se necesita un compilador.
Este es el cdigo fuente del programa Hola mundo:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
A continuacin se explica cada una de las lneas de cdigo que lo componen, pon mucha
atencin.

#include<stdio.h>
Cuando el compilador se encuentra con esta directiva la sustituye por el contenido del
archivo indicado (En este caso es el archivo stdio.h). En otras palabras esta directiva del
preprocesador abre el archivo stdio.h selecciona todo el contenido de este archivo, lo
copia en el portapapeles y lo pega en lugar la directiva #include<>.
La sintaxis de esta directiva es #include<>, dentro de los operadores< > se escribe el
nombre de una libreria, (en el caso del ejemplo se utiliz studio.h) generalmente es esta
directiva la que se debe incluir porque en ella se encuentran declaradas las funciones
ms bsicas, por ejemplo: las funciones aritmticas que te permitirn sumar, restar,
multiplicar o dividir nmeros y las funciones necesarias para mostrar datos por la pantalla
o solicitar informacin por el teclado.
stdio.h Se escribe en medio de los operadores < >, para indicar a la directiva del
preprocesador #include que este es el nombre de la librera que se debe incluir, ya que
se buscan por nombre.
Te preguntars que es una librera, pues es un conjunto de recursos
(algoritmos) prefabricados que pueden ser utilizados por el
programador para realizar determinadas operaciones.
Por ejemplo: Si creas un programa en el cual necesitas obtener el
coseno de un ngulo (cos ), debes incluir la librera math.h, que es
la librera dentro de la cual est declarada y definida la funcin cos(
).
intmain( )
Todos los programas escritos en Lenguaje C deben tener una funcin llamada main( )
para poder ser catalogados como un programa, si el cdigo fuente no tiene declarada y
definida esta funcin se puede considerar como una librera o simplemente cdigo.

La funcin principal main( ) es la primera en ejecutarse. El int que tiene al principio indica
que, cuando la funcin main( ) finalice, esta devolver un nmero, mismo que ser entero.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Si el valor devuelto es cero indica que el programa termino sin errores, en caso de
devolver un valor distinto de cero, esto indicar que ha ocurrido algn error durante la
ejecucin del programa.

Nota importante: La explicacin de cmo una funcin devuelve un tipo


de dato se ver ms adelante.

Un ejemplo de que ha ocurrido un error sera este: todas las personas que han utilizado
Windows han observado alguna vez cuadros de dialogo o pantallas de error, estos
cuadros muestran un mensaje al usuario en el que se hace referencia a un nmero y a un
evento de error asignado al mismo, como muestra la imagen:

El nmero que se observa est


escrito en notacin hexadecimal

Nota: el tema referente a declaracin y definicin de funciones se te explicara


a detalle posteriormente.
{ Llave de apertura
La llave de apertura delimita las lneas de cdigo que pertenecen a una
funcin.
En el caso del ejemplo anterior, se comienza a escribir el trabajo que realizar esta
funcin a partir de la llave.
/* Aqu va el cuerpo del programa */
Esto es un comentario y no se ejecuta, sirve para describir el programa. Se te recomienda
comentar el cdigo fuente, esto te ayudara a recordar ms tarde el funcionamiento del
programa, o si alguna otra persona lee tu cdigo fuente lo va a poder entender fcilmente
auxilindose de estas notas.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Cuando el compilador detecta el operador /* (diagonal asterisco) ignora todo lo que este
despus de este, hasta encontrar */ (asterisco diagonal) que le indica al compilador el final
del comentario.
Un comentario puede ocupar ms de una lnea de cdigo y ser vlido. Un ejemplo se te
presenta a continuacin:
/* Este es un comentario
que ocupa dos filas */
Recuerda que es necesario colocar el operador /* (diagonal asterisco) para indicar al
compilador donde comienza el comentario y el operador */ (asterisco diagonal) para
indicar dnde termina.
Para saber ms:
Los comentarios se pueden poner casi en cualquier parte.
Excepto en medio de una instruccin. Por ejemplo lo siguiente no
es vlido:
pri/* Esto es un comentario */ntf( "Hola mundo" );
printf( /* Esto es un comentario */ "Hola mundo" );
Si escribimos estas lneas el depurador del IDE nos mostrara en pantalla un mensaje de
error. Otro ejemplo errneo de la utilizacin de mensajes es el siguiente:
printf( "Hola/* Esto es un comentario */ mundo" );
La lnea de cdigo anterior no dara ningn error, pero al ejecutar tendramos en pantalla:

Porque /* Esto es un comentario */ queda dentro de las comillas y C lo interpreta como


texto, no como un comentario.
printf( "Hola mundo\n" );
Esta lnea de cdigo realiza una accin que podemos ver al ejecutar el programa, en este
caso el mensaje Hola mundo.
Todo lo que se escribe dentro de los parntesis y entre comillas dobles ( ) se interpreta
como una cadena de texto.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Como puedes observar al final del mensaje aparece escrita la sentencia de escape \n esta
hace que despus de imprimir en pantalla el mensaje se realice un salto de lnea, es
decir, como un enter.

Notas importantes:

El operador\n no se muestra en pantalla, esta sentencia


de escape solamente ejecuta un salto de lnea.
Una cadena de texto es una secuencia de caracteres,
que
pueden
ser
visualizados
(aunque
no
necesariamente) en la pantalla de la computadora, este es su uso ms
comn, crear mensajes de texto.
El operador ; (punto y coma) del final de la lnea de cdigo, se utiliza en el
Lenguaje C para separar una instruccin de otra. Se pueden poner varias
instrucciones en la misma lnea siempre que se separen por un punto y
coma.

system ("PAUSE");
Esta funcin ocasiona que el programa haga una pausa en su ejecucin y es la
responsable de que en pantalla se muestre la cadena de texto: Presione una tecla para
continuar sin esta funcin el programa no realizara una pausa, y debido a que el
programa se ejecuta a gran velocidad no podramos observar la ejecucin del mismo.

return 0;
Como se ha indicado anteriormente al finalizar la ejecucin de la funcin main( ), esta
devuelve un valor entero, con la instruccin return 0, lo cual indica que no se produjo
ningn error.

} Llave de cierre
La llave de cierre delimita las lneas de cdigo que pertenecen a la funcin, en este caso a
la funcin main(), en otras palabras las lneas que se escriban dentro de las llaves de
apertura y de cierre pertenecen a la funcin main().

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Realizando el programa

Ya que se te explicaron los componentes del programa Hola mundo, se te presenta un


video en el que se muestra la forma de utilizar el Dev C++, as como editar, deparar y
compilar el mismo. Pon mucha atencin ya que en la actividad de aprendizaje siguiente
vas a realizar el programa.
Como abras observado el cdigo fuente de un programa escrito en Lenguaje C est
compuesto por palabras o instrucciones escritas en el idioma ingls, a estas instrucciones
se les conoce como palabras reservadas, ya que ests tienen una funcin preestablecida
y especfica para el compilador. Estas palabras se escriben tal y como se muestran en las
explicaciones que se te dan.
El cdigo fuente adems de estar compuesto por palabras reservadas est integrado por
smbolos como ( ) ; { } si no sabes cmo escribir alguno de estos smbolos
puedes consultar la tabla del cdigo ASCII.

Para saber ms:


Un ejemplo de cmo apoyarte en esta tabla es el siguiente, si
tienes que escribir una llave de apertura, ubica en la tabla del
cdigo ASCII el smbolo y observa el nmero que tiene asignado
en la columna Dec. Para escribir el smbolo mantn presionada
la tecla Alt y presiona en seguida el nmero 123 que aparece en
la columna Dec, despus suelta la tecla Alt y se escribir el
smbolo {
Ya que se te ha explicado el cdigo fuente del programa Hola Mundo ahora se te pide
que realices la siguiente actividad, la cual tiene por objetivo que practiques la sintaxis del
programa, adems de lo aprendido.

Actividad de aprendizaje 5. Mi primer programa


Ahora que conoces la estructura general de un programa creado en Lenguaje C, realiza la
siguiente actividad, la cual tiene por objetivo que reconozcas la estructura de un programa
y lo construyas, adems de que pondrs en prctica el conocimiento que acabas de
adquirir.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Instrucciones:
1. Edita el cdigo fuente del programa hola mundo que acabas de revisar, depralo y
complalo en el compilador Dev C++
2. Debes enviar tu archivo hasta que haya sido compilado, es decir que Dev C++ no te
haya marcado error, de lo contrario no se tomar esta actividad como vlida. El archivo
que debes subir a la plataforma es el cdigo fuente, es decir el archivo con extensin .c
que se realiz.
Cuando tengas listo tu archivo gurdalo en tu PC y envalo a tu profesor con tus datos en
el siguiente formato: apellidopaterno_materno_nombre_actividadnumero

Actividad de autoevaluacin 1. Buscando errores.


Ya se te han dado las bases para conocer la estructura general de un cdigo fuente y
acabas de realizar tu primer programa, ahora realiza lo que se te pide.
Instrucciones:
1. Analiza el siguiente programa y detecta los errores que tiene.
2. Ya que hayas detectado las inconsistencias del programa, da clic en el botn
Solucin para que compares el anlisis que realizaste con el resultado que se te
muestra.
3. Esta actividad no tiene valor en tu calificacin pero es importante que la realices
para reafirmar tus conocimientos.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Solucin:
Si se escribe y compila este cdigo fuente se obtendr un error, el cual indica que la
funcin printf esta indeclarada.
Esto es porque no se incluy la directiva
#include<stdio.h>.
En la imagen siguiente se muestra el mensaje de error que arroja el depurador del Dev
C++.
El cual indica claramente que el error est en la funcin intmain(), exactamente en la
lnea nmero 4, y adems muestra un mensaje indicando la posible causa del error.
Como podrs darte cuenta gracias a este depurador es cmo se puede corregir el cdigo
fuente que se escribi.

Actividad de aprendizaje 6. Mi nombre en pantalla


Para continuar demostrando tu aprendizaje, realiza la siguiente actividad, en la cual
reconocers y construirs un programa escrito en Lenguaje C, a travs de la
programacin estructurada.
Instrucciones:
1. Realiza un cdigo fuente en el que se muestre tu nombre completo en pantalla.
2. Cuando tengas listo tu programa, edtalo, depralo y complalo en el compilador Dev
C++
3. El archivo que debes subir a la plataforma es el cdigo fuente, es decir el archivo con
extensin .c que se cre.
4. Recuerda que si tienes alguna duda puedes pedir la ayuda de tu asesor.
Cuando tengas listo tu archivo gurdalo en tu PC y envalo a tu profesor con tus datos en
el siguiente formato: apellidopaterno_materno_nombre_actividadnumero.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
1.1 Tipos de variables

Al utilizar un programa es muy importante manipular datos. En el Lenguaje C se


almacenan los datos en variables, en este apartado conocers qu son y cules son las
ms importantes.

Variables
Una variable es el lugar fsico en donde se guarda informacin, esta puede ser de
distintos tipos por ejemplo: cadenas de caracteres (Avils), caracteres (V), nmeros (777),
nmeros con una parte decimal (5.124). El contenido de una variable se puede leer o
cambiar en cualquier momento.
Este lugar fsico se encuentra en la memoria RAM de la
computadora, fsicamente ste es el aspecto de una
memoria RAM:

El espacio de almacenamiento de una memoria RAM est estructurado de la siguiente


manera.
0
0
1
1

0
0
1
1

1
0
1
1

1
0
1
0

0
0
1
0

0
0
1
1

1
0
1
0

1
0
1
1

Direccin
0x 0000
0x 0000
0x 0000

Nota: La informacin dentro de una memoria RAM se guarda en sistema


binario (ceros y unos), cada direccin es de un tamao de 8 bits, lo que es
igual a 1 byte.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Los nombres de las variables
Para dar nombre a las variables se deben seguir las siguientes reglas:

Se pueden utilizar casi todas las letras del alfabeto, excepto la .


Se pueden utilizar los nmeros del 0 al 9.
No se pueden utilizar caracteres especiales (puntos, comas, signos de admiracin
o de interrogacin, etc.,) el nico carcter que es aceptado es el guion bajo ( _ ).
El nombre de una variable se puede formar con nmeros y letras pero no se puede
iniciar con un nmero.
No se pueden utilizar como nombres de variables las palabras reservadas que usa
el compilador, por ejemplo: for, main, do, while, etc.
El Lenguaje C distingue entre maysculas y minsculas. Por lo tanto: nombre,
Nombre y NOMBRE, son tres variables distintas.
Los nombres de las variables deben ser cadenas de caracteres, es decir, un
carcter despus de otro sin espacios entre ellos.
a) Variables de tipo int

En una variable de este tipo se almacenan nmeros enteros (sin decimales).


El rango de valores que admite es -2,147,483,648 a 2,147,483,647. Aunque el rango de
valores de esta variable es amplio, solo se puede almacenar un nmero a la vez. Para
guardar este tipo de variable en la memoria RAM se necesitan 16 bits, es decir 2 bytes.

Declaracin de una variable

Es importante que sepas que para poder usar una variable primero hay que declararla, es
decir, indicarle al compilador que queremos crear una variable para que nos reserve un
espacio de la memoria para almacenar los datos de la misma, tambin hay que indicarle
el tipo de variable.
Por ejemplo:
int numero; (donde la palabra nmero es el nombre de la variable)
numero = 4;
La primer lnea de cdigo indica la declaracin de una variable llamada nmero que va a
contener un nmero de tipo entero, en la segunda lnea se indica que la variable llamada
nmero guardar un numero 4.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
La siguiente imagen muestra su representacin en Lenguaje maquina dentro de
memoria RAM.
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

la

numero

As es como se representa el nmero 4 a 16 bits en Lenguaje maquina (sistema binario).


Tambin se puede declarar y definir el valor que guardar esta variable en una sola lnea.
int numero = 4;
Nota:
Si no se asigna el valor que guardara la variable, el compilador de manera
automtica guardara un dato aleatorio del mismo tipo del cual la variable ha
sido declarada. Por ejemplo si no se define un valor para la variable nmero
esta podra guardar un numero 5 o cualquier otro nmero de tipo int.

Cmo se pueden declarar las variables

Hay dos posibilidades, una es declararla como global y otra como local.
La variable global es aquella variable que se declara fuera de cualquier funcin, por
ejemplo la funcin main() y la variable local se declara dentro de cualquier funcin.
A continuacin se muestra el ejemplo de las dos formas de declarar las variables:
Variable Global
#include <stdio.h>
int x=0;

Variable Local
#include <stdio.h>
int main()
{
int x=0;
}

intmain()
{
}
La diferencia entre ambas declaraciones es que la variable global se puede usar en
cualquier funcin del programa y la variable local slo puede usarse en la funcin en la
cual ha sido declarada.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
En seguida se muestra un ejemplo de estas dos variables en un programa:
Nota: en el siguiente cdigo fuente se encuentra una funcin llamada
otrafuncion la cual se est utilizando como apoyo en el ejemplo de las
variables que se estn explicando, no trates de comprenderla

Este sera el resultado de editar, depurar y compilar este programa:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Explicacin:
Como puedes observar el programa est compuesto por dos funciones, la funcin llamada
otrafuncion() y la funcin principal main()
Observa que desde dentro de la funcin main es posible mostrar por pantalla el valor de la
variable intA=20;, esta variable no la declaraste dentro de la funcin main(), pero como
est declarada como global es que es posible que main() pueda utilizarla.
De igual manera la variable int a=2; es accesible desde main(), ya que es una variable
local para la funcin main(), es decir la funcin main() conoce a la variable a, ya que esta
fue declarada dentro de { } que delimitan a esta funcin.
Por otro lado, si desde main() quisiramos mostrar por pantalla a la variable intb= -82,
esto no sera posible ya que aunque int b= -82 es una variable local para la funcin
llamada otrafuncion(), y no es una variable local para main() esto quiere decir que main()
no conoce a int b= -82 porque no es local de main().
Enseguida se muestra el mensaje de error que mostrara el Dev C++ si en lugar de la
lnea de cdigo:
printf("Y el valor de a es %i \n", a);
Escribiramos:
printf("Y el valor de b es %i \n", b);
El depurador indica que int b= -82 no ha sido declarada dentro de main(). Por lo tanto
main() no conoce a esta variable

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Mostrar variables por pantalla:

Imagina que quieres mostrar el contenido de la variable x de tipo int por pantalla, para lo
cual tienes que indicar lo siguiente: Funcin printf( )
Un ejemplo del uso de esta funcin es el siguiente:
printf( "%i", x );
Si por ejemplo x vale 1 (x=1) en la pantalla tendramos: 1
El operador "%i" (tanto por ciento letra i ) es un modificador de formato, no se muestra en
pantalla, se sustituye por el valor de la variable que va despus de las comillas dobles y
el operador coma ( , ) y sirve para indicarle a la funcin printf() que el nmero que se
mostrar por pantalla es de tipo entero.
Para ver el contenido de dos variables, por ejemplo x e y, podemos realizar lo siguiente:
printf( "%i ", x );
printf( "%i", y );
Si por ejemplo x = 10 e y = 20, entonces el resultado en pantalla ser: 1020.
Aunque como sabes, se puede obtener el mismo resultado utilizando una lnea de cdigo
en lugar de dos. Con una lnea de cdigo se puede mostrar en pantalla el nmero de
variables que quieras:
printf( "%i %i", x, y );
Como puedes ver por cada variable hay que poner un %i dentro de las comillas dobles.
Tambin se puede combinar texto con el contenido que guardan las variables:
printf( "El valor de x es %i, que bien!\n", x );
Si por ejemplo x = 10 la
resultado:

lnea de cdigo anterior mostrara en pantalla el siguiente

El valor de x es 10, que bien!


Como ves, el modificador %i al imprimir en pantalla se sustituye por el valor de la variable.
Es tiempo de poner en prctica lo aprendido hasta el momento acerca de variables,
realiza la siguiente actividad para que sigas practicando.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Actividad de aprendizaje 7. Declarando variables
Ya sabes que es una variable, como se nombran y como se deben declarar.
Es tiempo de seguir practicando los nuevos conocimientos adquiridos, realiza la siguiente
actividad la cual tiene como finalidad que reconozcas el lugar en dnde debe declararse
una variable de acuerdo a su tipo, (global o local) y construyas la estructura de un
programa escrito en Lenguaje C.
Instrucciones:
1.

Edita, depura y compila en el compilador Dev C++, el cdigo fuente que se te


presenta a continuacin.

2.

El resultado de esta programacin tiene que ser igual al mostrado en la siguiente


imagen.

3. Una vez que hayas obtenido el resultado, enva el archivo del cdigo fuente a tu
profesor para que te evalu (recuerda que es el archivo con extensin .c que se cre)
con el siguiente formato: apellidopaterno_materno_nombre_actividadnumero.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
b) Variables de tipo char
Las variables de tipo char sirven para almacenar un carcter, estos se almacenan como
nmeros del 0 al 255. Los 128 primeros (0 a 127) corresponden al cdigo ASCII estndar.
Para declarar una variable de tipo char se realiza lo siguiente:
Char letra ;
En una variable char slo se puede almacenar un carcter, no almacena cadenas de
caracteres (frases ni palabras), esto se te explicar en un apartado posterior.
Ya que est declarada la variable char, para guardar un dato se tienen dos posibilidades,
mismas que se te muestran a continuacin:
letra = 'a';
letra = 97;
En ambos casos se est asignando (guardando) la letra 'a' en la variable llamada letra de
tipo char. En el primer rengln es ms que obvio, pero en el segundo se tecleo el nmero
97, esto es porque el cdigo ASCII de la letra a es el nmero 97.
Observa que para asignar directamente el carcter a se utilizan comillas simples ( '' )

Impresin en pantalla de una variable char

Para imprimir en pantalla una variable de tipo char se utiliza el modificador de formato %c
(c de carcter, carcter en ingls) Enseguida se muestra un ejemplo de esto:
char B = 'A';
printf( "La variable B de tipo char guarda una: %c.", B );
El resultado que se obtendr en pantalla ser el siguiente:
La variable B de tipo char guarda una: A
Tambin se puede imprimir en pantalla el valor en cdigo ASCII, de la variable, usando el
modificador %i en lugar del modificador %c, ejemplo:
char B = 'A';
printf("El nmero ASCII de la variable %c es: %i.", B, B);

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
El resultado que obtendr en pantalla ser el siguiente:
El nmero ASCII de la variable A es: 65
Observa que dentro de la funcin printf en lugar de utilizar el modificador %c se utiliz el
modificador %i, por lo cual la funcin printf() interpreta a ala variable B como el nmero
entero que corresponde a dicho carcter en el cdigo ASCII.
Observa que, aunque la variable de tipo char es llamada B, guarda un carcter A, el
nombre de la variable nicamente sirve para identificarla y no afecta el contenido que
almacena la variable.
Si tienes dudas acerca de los nombres de las variables consulta el apartado Los nombres
de las variables visto anteriormente.
Nota: Las variables de tipo char se pueden usar para guardar nmeros
enteros. Si se necesita almacenar un nmero pequeo (entre -128 y 127)
se puede usar una variable de tipo char que ocupa nicamente 8bits de la
memoria, en lugar de una variable de tipo int que ocupa 16bits de la
memoria, con el consiguiente ahorro de memoria.
Todo lo anteriormente explicado para las variables de tipo int, aplica tambin para las
variables de tipo char.
Actividad de autoevaluacin 2. Explicando resultados
Es momento de que evales tu aprendizaje
Realiza la siguiente actividad que tiene como objetivo el reforzar tu aprendizaje adquirido
hasta el momento, aunque no tiene valor en tu calificacin, es importante que la realices.
Instrucciones:
1.
2.
3.
4.

Revisa y analiza el siguiente cdigo fuente que se te va a presentar.


Revisa la imagen del resultado que despliega el cdigo fuente que vas a analizar
Explica por qu a partir del cdigo fuente se obtuvo este resultado.
Ya que hayas terminado la actividad ve a la Solucin para que compares el
anlisis que realizaste con el resultado que se te muestra.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

El resultado de editar, depurar y compilar este programa es el siguiente:

Solucin:
Inicialmente se declar la variable llamada CARACTeR de tipo char, a la cual se le asign
una carcter A (almacena una letra A), mismo que equivale al cdigo ASCII 65.
Despus de mostrar el contenido de la variable CARACTeR por pantalla, se increment
en una unidad a la variable CARACTeR, en otras palabras se le sumo 1 a la variable
carcter y el resultado de esta operacin aritmtica que es 66, se guard en la misma
variable CARACTeR, por esto al volver a mostrar por pantalla el contenido de la variable
CARACTeR se muestra una letra B que corresponde al cdigo ASCII 66.

c) El modificador unsigned
Este modificador, que significa sin signo, cambia el rango de valores que puede contener
una variable y slo admite valores positivos, es decir, cambia valores de signo negativo a
positivo y a partir de esto tambin se cambia el rango de las variables.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Por ejemplo:
El rango de valores que puede aceptar normalmente una variable de tipo char es el
siguiente: -128 a 127, pero si se le antepone el modificador unsigned ya no guardar
nmeros negativos, con lo cual el nuevo rango de valores que puede almacenar una
variable de tipo unsignedchar es: 0 a 256, es importante mencionar que aunque el rango
es amplio, solo puede guardar un solo valor de ese rango.
Un ejemplo de esto es el siguiente:
unsignedcharesime = 256;
En esta lnea de cdigo la variable llamada esime de tipo unsignedchar guarda el nmero
256, y ya no se le puede indicar que guarde nmeros negativos.
Nota: Este modificador se puede utilizar para cualquier otro tipo de variables
guarda un nmero.

y solo

d) Variables de tipo float


En este tipo de variables se pueden almacenar nmeros enteros con una parte decimal,
no slo nmeros enteros como en las variables de tipo int y las de tipo char.
El rango de valores que podemos almacenar en este tipo de variable es del 3,4E-38 al
3,4E37. Al igual que las otras variables almacenan solo un valor.
Para realizar la declaracin de una variable de tipo float, se hace lo siguiente:
float numero = 0.0;
Para imprimir en pantalla el contenido de una variable de tipo float se usa el modificador
%f. Ejemplo:
floatnum = 4060.80;
printf( "El valor de num es : %f", num);

El resultado que se observar en pantalla ser el siguiente:


El valor de num es: 4060.80

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Si se quiere imprimir este valor en pantalla en notacin exponencial se usa el modificador
%e, en lugar de %f por ejemplo:
floatnum = 4060.80;
printf( "El valor de num es: %e", num );
El resultado que se observar en pantalla ser el siguiente:
El valor de num es: 4.06080e003
e) Variables de tipo double
En las variables de tipo double pueden almacenarse nmeros reales (nmeros enteros
con una parte decimal) en un rango de 1,7E-307 al 1,7E306. Como puedes observar el
rango de valores que puede almacenar una variable de este tipo es mayor al de las
variables de tipo float.
Para declarar una variable de este tipo se hace lo siguiente:
doublenum = 4.85454405655;
Para imprimir en pantalla estas variables se utiliza el modificador %f al igual que en las
variables de tipo float. Ejemplo:
printf( "El valor de num es: %f", num );
El resultado que se observar en pantalla es:
El valor de num es: 4.85454405655
Si se quiere imprimir este valor en pantalla en notacin exponencial se usa el modificador
%e, en lugar de %f.
Para saber ms:
Si quieres conocer el mximo rango de valores que puede
almacenar una variable, debes hacer lo siguiente:
Primero tienes que conocer el tamao de bytes de la variable,
para esto vas a ocupar la funcin sizeof().
Esta funcin devuelve el tamao en bytes de su argumento
(el argumento es el nombre de la variable, constante o tipo de
datos que se coloca entre parntesis).

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Enseguida se te muestra un ejemplo de cmo utilizar esta funcin a travs del siguiente
cdigo fuente:

El resultado de editar, depurar y compilar este programa ser el siguiente:

Explicacin:
Observa que como argumento de la funcin sizeof() se coloc el tipo de datos int, con lo
cual la funcin sizeof() devuelve el tamao en bytes de este tipo de dato.
De lo explicado anteriormente sabes que el tipo int ocupa 4 bytes. Como sabemos 1byte =
8 bits. Por lo tanto el tipo int ocupa (4x8)=32 bits.
No solamente se puede obtener el tamao en bytes de las variables de tipo int, sino
tambin de cualquiera de los tipos de variables vistos, para esto nicamente tendras que
cambiar el argumento, por ejemplo en lugar de colocar el argumento int se puede colocar
los argumentos char, float y double.
Ahora para calcular el mximo nmero que puede almacenar una variable de tipo int se
debe elevar la constante 2 (que es el nmero que hace referencia al sistema binario) al
nmero de bits obtenidos.
En nuestro ejemplo: (232)=4 294967296. Es decir en una variable de tipo int se podra
almacenar un nmero entre 0 y 4.294.967.296 si solo almacenramos nmeros positivos.
Sin embargo lo anterior slo aplica si se usa el modificador unsigned, aunque
regularmente se almacenan nmeros positivos y negativos.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
As que de los 4294967296 posibles nmeros la mitad sern positivos y la mitad
negativos.
Por lo tanto se tiene que dividir el nmero anterior entre dos, 4294967296 / 2 =
2147483648. Como el 0 se considera positivo el rango de nmeros posibles que se
pueden almacenar en una variable de tipo int sera: -2147483648 a 2147483647.
Actividad de autoevaluacin 3. Buscando ms errores.
Es momento de poner a prueba tu capacidad de anlisis, realiza la siguiente actividad.
La actividad no tiene valor en tu calificacin pero es importante que la realices,
recuerda que la prctica hace al maestro.
Instrucciones:
1. Revisa el siguiente programa y detecta los errores que tiene, esto te va a servir como
prctica y para reafirmar tus conocimientos.
2. Cuando hayas terminado tu anlisis y hayas encontrado los errores del cdigo fuente,
ve a la solucin para que compares tus resultados y veas los aciertos que tuviste.

Solucin:
Falta la coma despus de "El valor es %i".
Adems la segunda vez nmero est escrito con maysculas, esta sera un variable
diferente, la cual no ha sido declarada.
En la funcin printf() hay otro error, se intenta imprimir en pantalla a la variable Numero,
nota la N al principio del nombre, esta variable no ha sido declara, se declara a la variable
llamada nmero con minsculas
Y por ltimo, los nombres de variables no pueden llevar acentos.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
1.2 Constantes (uso de #define)

Las constantes son aquellos datos que no pueden cambiar su valor a lo largo de la
ejecucin de un programa.
Estas constantes se definen de la siguiente manera:
#define nombre_de_la_constante
valor_de_la_constante
Como puedes observar no es necesario utilizar el operador de asignacin (=) para dar un
valor a la constante, nicamente se deja un espacio en blanco entre el nombre de la
constante y el valor que desea asignarse a ella, tampoco es necesario escribir el punto y
coma (;) que llevan al final todas las instrucciones en Lenguaje C.
Por ltimo observa que no se indic el tipo de datos de la constante (por ejemplo char,
float, etc.) esta puede ser una comodidad al momento de declarar constantes.
La palabra reservada #define indica que los datos que se escriben despus en ella no
cambian a lo largo del programa.
Se te muestra un cdigo fuente en el cul no se utiliza la declaracin de constantes
(#define), en el cual si se utilizara varias veces el valor 3.1416, lo que podra ocasionar
que hubiera un error de dedo en el cual se escribiera mal algn nmero por ejemplo:
3.1516.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Explicacin:
En este cdigo fuente radio y permetro son variables, su valor puede cambiar a lo largo
del programa, sin embargo 2 y 3.1416 son constantes, no hay manera de cambiarlas. La
nica manera de hacerlo es editando el programa.
Ahora se muestra el mismo ejemplo en el que est declarada la constante PI utilizando la
palabra reservada #define:

Con este cdigo fuente, cada vez que el compilador encuentre el nombre PI lo sustituir
por el valor 3.1416, lo cual puede ayudar a que no haya errores.
Nota: A una constante no se le puede dar un valor mientras se ejecuta el
programa, es decir, no se puede hacer lo siguiente:
#define PI 3.1416
Pi = 3.20;
Slo se le puede dar un valor con #define, y una vez.
Actividad de aprendizaje 8 Practicando las constantes
Ya sabes lo que son las constantes y como se declaran, ahora vas a practicar la
utilizacin e implementacin de las mismas a travs de esta actividad, el objetivo es que
reconozcas y construyas la estructura de un programa.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Instrucciones:
1. Edita, depura y compila el siguiente programa en Dev C++

2. En un archivo en Word explica el funcionamiento del cdigo fuente y gurdalo en tu PC.


3. Ya que hayas terminado tu actividad, enva a tu profesor el archivo del cdigo fuente
con extensin .c (siempre y cuando no te haya marcado error el compilador) y el
documento en Word en el que explicaste el funcionamiento del mismo, guarda ambos
documentos
con
el
siguiente
formato:
apellidopaterno_materno_nombre_actividadnumero.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
1.3 Operadores

Durante el proceso de la programacin en Lenguaje C surge la necesidad de manipular


datos, para llevar a cabo esta tarea el Lenguaje proporciona una herramienta sencilla y
eficaz para tal propsito, esta herramienta son los operadores.
Un operador es un smbolo que sirve para manipular datos. Los hay de varios tipos: de
asignacin, de relacin, lgicos, aritmticos y de manipulacin de bits, enseguida se te
explica cada uno.
a) Operador de asignacin =
( = ) Es un operador que ya has visto y utilizado en programas pasados, sirve para asignar
un valor a una variable. Este valor puede ser un nmero u otra variable introducido por el
teclado.
Las formas de utilizar el operador de asignacin son las siguientes:

a = 3;

/* Se asigna o guarda un 3 en la variable a */

a = b;
en a */

/* Se asigna el valor de una variable, es decir el valor de b se guarda

Recuerda que en una misma lnea de cdigo se puede dar valores a diferentes variables:
a = b = c = 100;

/* Se asigna a las variables a,b,c el valor de 100 */

Tambin se puede asignar el valor de una variable a otras diferentes en la misma lnea de
cdigo:
a = b = c = d;

/* a, b y c toman el valor de d */

Nota: En el Lenguaje C la asignacin es asimtrica, un ejemplo de esto es el


siguiente:
A=B;

El valor que est guardado en la variable de la derecha es decir B se copia y se guarda


en la variable de la izquierda en este caso A.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
En ningn caso se indica que lo que est guardado en la variable A se copia y se guarda
en la variable B.
Tampoco se indica que la variable A y la variable B son iguales. Para indicar que dos
variables son iguales en el Lenguaje C se utiliza al operador de comparacin == que se
ver ms adelante.

b) Operadores aritmticos
Los operadores aritmticos son aquellos smbolos que sirven para realizar operaciones
tales como suma, resta, divisin y multiplicacin, a continuacin se te explica cada uno de
ellos.

Operador Suma +

Este operador permite sumar entre s variables y constantes. Un ejemplo de la


implementacin de este operador se muestra enseguida:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Explicacin:
En este programa se declaran tres variables a = 2, b = 3 y c = 0.
Se suman las variables a y b y el resultado de esta suma se guarda en la variable c, para
despus por medio de la funcin printf() mostrar el resultado de esta suma en la pantalla.
Observa que el valor guardado previamente en c, en este caso un cero fue borrado y
remplazado por el valor de la suma al momento de realizar la asignacin:
c = a+b;
Se pueden sumar muchas variables, o variables y constantes (recuerda que se
consideran constantes porque nunca cambiaran su valor).
Observa el siguiente cdigo fuente en el cual se suman constantes y variables:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Explicacin:
En este programa se declararon cuatro variables, a=2, b=3, c=1 y d a esta ltima no se
asigno ningn valor inicial, (recuerda que cuando no inicias una variable el compilador
asigna un valor aleatoria en forma automtica), se sumaron los valores de las variables a,
b y c con el valor de la constante 4, el resultado que en este caso es 10 mismo que se
guardo en la variable llamada d (el valor aleatorio asignado por el compilador inicialmente
fue borrado y en su lugar se guardo un numero 10 al momento de realizar la asignacin
d=a+b+c+4; )
Tambin es posible utilizar al operador de suma (+) para incrementar el valor de una
variable, por ejemplo:
int x=0;
x = x + 5; /* se incrementa el valor de x al sumarle 5 y guarda el resultado de la suma en x
*/
Lo que se hace con la lnea de cdigo anterior es sumar cinco a la variable llamada x y el
resultado que en este caso es cinco (0+5=5), se guarda en la misma variable llamada x, el
cero que se asigno en la primer lnea es sustituido por el nuevo valor que es cinco, ya que
una variable solo puede contener un solo valor.
Este es otro ejemplo:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
En este programa escrito en Lenguaje C se declaran dos variables x e y, se asignan los
valores 3 y 5 respectivamente, en la misma lnea se incremente el valor que guarda la
variable x en dos, as: x+=2; (esto sera igual que hacer x=x+2;). Para corroborar que esto
es cierto se muestra por pantalla el valor de la variable x.
Despus se incrementa nuevamente el valor de la variable x, esta vez se le suma el valor
de la variable llamada y, guardando el resultado de esta operacin aritmtica en la
variable x. para corroborar que lo explicado es cierto se muestra nuevamente el valor de
la variable x por pantalla.

Operador Incremento:++

La funcin de este operador es sumar 1 a una variable y guardar el resultado de esta


suma en la misma variable. Ejemplo:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
En este programa se declara a la variable llamada x de tipo entero, se le asigna un 5 (x=5)
y se muestra a esta variable por pantalla utilizando la funcin printf(), esto para mostrar el
contenido de esta variable, que evidentemente es 5.
Enseguida incrementamos a la variable x en una unidad realizando x++; (es lo mismo que
realizar x = x+1;) y enseguida se muestra por pantalla el nuevo valor que guarda la
variable x.

Operador Resta o Negativo

El operador

- permite restar entre s variables o constantes.

Por ejemplo:
int z =0, x=8;
z = x- 5;

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Un ejemplo de la implementacin de este operador:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
En este programa se realiza la declaracin de dos variables de tipo entero llamadas A y
B, a las cuales, se les asigna el valor de las constantes 20 y 5 respectivamente.
Enseguida se realiza la resta de las variables A y B (A-B), guardando el resultado de esta
operacin aritmtica en la variable llamada A, despus de esto se muestra el valor
guardado en la variable A para demostrar lo explicado anteriormente.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Despus se realiza la declaracin de dos nuevas variables llamadas a y b, a la variable
de tipo entero llamada a se le asigna el valor de la constante 1, enseguida a la variable
del mismo tipo llamada b se le asigna el valor de la variable a pero con signo negativo, es
decir en b se guarda un -1, y se imprime en pantalla el valor de b.

Nota:
Al realizar la lnea de cdigo b = -a; el valor de la variable llamada a
asignado previamente, no se ve afectado, es decir a sigue
guardando un 1 positivo.

Aclarando lo anterior, al realizar la lnea de cdigo b = -a; se multiplica un -1 por el valor


de la variable a(-1*(a)) y el resultado de esta operacin algebraica se guarda en la
variable llamada b.
Despus de esto se declaro y defini con 5 otra variable de tipo entero llamada x,
enseguida se mostro por pantalla dicha variable por medio de la funcin printf(), para
demostrar que es posible en el Lenguaje C decrementar el valor de una variable se realizo
la lnea de cdigo x--; con lo que se resto 1 a la variable x guardando el resultado de esta
operacin aritmtica en la misma variable llamada x.
Para corroborar que se realiz la resta adecuadamente se imprimi en pantalla
nuevamente el valor de x.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador Multiplicacin y puntero

El operador

* sirve para multiplicar entre si variables o constantes. Por ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
En este programa se declararon dos variables de tipo float x y y a las cuales se les
asignaron los valores -5.0460 y 2.00987 respectivamente.
Se declaro una tercera variable llamada R del mismo tipo a la cual se le asigno el
resultado de la multiplicacin de los valores que guardan las variables x e y en la lnea de
cdigo R = x*y; para despus por medio de la funcin printf() mostrar el resultado por
pantalla.
El operador * Tambin sirve para definir y utilizar punteros, pero eso lo vers a detalle
ms adelante.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador Divisin

El operador

sirve para dividir entre si variables o constantes. Por ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
En este programa se declararon dos variables de tipo float x y y a las cuales se les
asignaron los valores: -5.0460 y 2.00987 respectivamente.
Se declaro una tercera variable llamada R del mismo tipo a la cual se le asigno el
resultado de la divisin de los valores que guardan las variables x y y en la lnea de
cdigo R = x/y; para despus por medio de la funcin printf() mostrar el resultado por
pantalla.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador Modulo

El operador % sirve para dividir entre si variables o constantes, pero a diferencia del
operador de divisin (/) este devuelve el modulo de la divisin. Por ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
En este programa se declararon dos variables de tipo entero llamadas a y b a las cuales
se les asigno el valor de las constantes 18 y 5 respectivamente, por medio de la funcin
printf() se imprime en pantalla el residuo de la divisin entre a y b.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
c) Operadores de comparacin
Los operadores de comparacin se utilizan para comparar cmo son entre s variables o
constantes. Cuando se realiza esta comparacin se obtiene un resultado, el cual puede
ser 0 si no se cumple la comparacin satisfactoriamente o 1 si la comparacin se cumple
satisfactoriamente.
Los operadores de comparacin son:
Operador

Nombre

Evaluacin

==

igual que

se cumple si son iguales

!=

distinto que

se cumple si son diferentes

>

mayor que

se cumple si el primero es mayor que el segundo

<

menor que

se cumple si el primero es menor que el segundo

>=

mayor o igual que se cumple si el primero es mayor o igual que el segundo

<=

menor o igual que se cumple si el primero es menor o igual que el segundo

Por ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Explicacin:
En este cdigo fuente se compara a las constantes 10 y 5. En la primer lnea de la funcin
main() se compara si 10 es mayor que 5, lo cual devuelve un 1 al cumplirse esta
comparacin, enseguida se compara si 10 es menor que 5, dicha comparacin devuelve
un 0 al no cumplirse satisfactoriamente, ms adelante se compara si 5 es igual que 5, tal
comparacin devuelve un 1 y por ltimo se compara si 10 es igual que 5, para tal
comparacin devuelve un 0 ya que no se cumple la comparacin anterior.

Nota: No slo se pueden comparar constantes, tambin se pueden


comparar variables.

d) Operadores lgicos
Los operadores lgicos nos permiten unir varias comparaciones, por ejemplo 10>5 y
6==6.
Los operadores lgicos son: AND (&&), OR (||) y NOT(!).

Operador && (AND, en espaol Y): Devuelve un 1 si se cumplen dos


comparaciones.

La tabla de verdad es la siguiente:


Comparacin 1

Comparacin 2

Resultado que devuelve


AND (&&)

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Un ejemplo de lo explicado anteriormente sera el siguiente:
printf( "Resultado: %i", (10==10 && 5>2 );
Lo cual devolvera un 1 ya que ambas condiciones se cumplen, ya que 10 es igual que 10
y 5 es mayor que 2

Operador || (OR, en espaol O)


El operador || devuelve un 1 si se cumple una de las dos comparaciones.

La tabla de verdad es la siguiente:


Comparacin 1

Comparacin 2

Resultado que devuelve


OR (||)

Un ejemplo de lo explicado anteriormente es el siguiente:


printf( "Resultado: %i", (10==10 || 5<2 );
La lnea de cdigo anterior devolvera un 1 ya que se cumple una de las dos condiciones
en este ejemplo se cumple que 10 es igual que 10, de hecho la segunda comparacin ya
no se realiza.
Ahora si en este ejemplo se le cambia la primera comparacin de la siguiente forma:
printf( "Resultado: %i", (10==0 || 5<2 );
Al realizar este cambio en la lnea anterior sta devolvera un 0, ya que ninguna de las
dos comparaciones se cumple satisfactoriamente 10 no es igual que 0 y tampoco 5 es
menor que dos.

Operador ! (NOT, negacin): Este operador lgico realiza el siguiente trabajo, si la


comparacin se cumple NOT hace que no se cumpla y viceversa.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
La tabla de verdad es la siguiente:
Comparacin

Resultado que
devuelve NOT (!)

Un ejemplo de lo explicado sera el siguiente:


printf( "Resultado: %i", ( ! 5>2 );
Esta lnea devolvera 0 ya que aunque la comparacin se cumple satisfactoriamente el
operador ! invierte esa situacin y devuelve lo contrario.
Si cambiamos los operadores de comparacin de la siguiente manera:
printf( "Resultado: %i", (! 5<2 );
Este cambio har que el operador NOT devuelva un 1 ya que aunque la condicin se
cumple satisfactoriamente el operador NOT hace que esta no se cumpla.

Operadores a nivel de bits

Ya has visto que un byte est compuesto por ocho bits. Pues bien, con los operadores a
nivel de bits podemos manipular bit a bit los valores que almacenan las variables.
Los diferentes operadores a nivel de bits son:
Operador

Descripcin

OR (O)

&

AND (Y)

XOR (O exclusivo)

Complemento a uno o
negacin

>>

Desplazamiento
derecha

la

<<

Desplazamiento
izquierda

la

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador | (OR a nivel de bits):

Toma los valores y hace con ellos la operacin OR a nivel de bits. Ve el siguiente ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
Esta es la operacin a nivel de bits:
235 -> 11101011
143 ->10001111|
239 -> 11101111
La operacin OR funciona de la siguiente manera: se toma el bit de menor peso del
primer operando y el bit de menor peso del segundo operando, los compara, si alguno de
ellos es uno, se obtiene un uno. Si ambos son cero el resultado es cero.
En el ejemplo anterior se compararon los dos primeros bits de derecha a izquierda (el
primero de cada uno de los nmeros, 1 y 1 = 1), luego la segunda pareja (1 y 0 = 1) y as
sucesivamente hasta terminar con el valor.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador & (AND a nivel de bits):

Este operador compara los bits tambin dos a dos. Si ambos son 1 el resultado es 1. Si
no, el resultado es cero. Ve el siguiente ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
Esta es la operacin a nivel de bits:
170 -> 10101010
155 ->10011011&
138 -> 10001010
El operador AND funciona de la siguiente manera: Tomamos los bits dos a dos y los
comparamos si ambos son uno, se obtiene un uno.
Si alguno es cero el resultado es cero. Si ambos son cero el resultado es cero. Primero se
compara los dos primeros (el primero de cada uno de los nmeros, 0 y 1 -> 0), luego la
segunda pareja (1 y 1 -> 1) y as sucesivamente.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador ^ (XOR a nivel de bits):

El operador ^ Compara los bits y los pone a unos si son distintos. Ve el siguiente ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
Esta es la operacin a nivel de bits:
235 -> 11101011
143 ->10001111^
100 -> 01100100
El operador XOR funciona de la siguiente manera: revisa los bits dos a dos y los compara
si ambos son uno, se obtiene un cero. Si ambos son cero se obtiene cero. Si ambos son
distintos el resultado es uno.
Primero se compara los dos primeros (el primero de cada uno de los nmeros, 0 y 1 -> 0),
luego la segunda pareja (1 y 1 -> 1) y as sucesivamente.

Operador ~ (Complemento a uno):

Este operador acepta un slo dato (un solo operando) y cambia los ceros por unos y los
unos por ceros, es decir los invierte.
Esta operacin afecta tambin al signo del operando (positivo o negativo), mismo que se
indica antes del operando.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Ve el siguiente ejemplo:

El resultado de editar, depurar y compilar este cdigo es el siguiente:

Explicacin:
Esta es la operacin a nivel de bits:
152 ->10011000~
-153 -> 01100111
El operador complemento a uno, evala bit a bit ye invierte el valor del bit evaluado, como
el bit de mayor peso en una variable numrica representa el signo (positivo o negativo)
este bit tambin es invertido, por tal motivo el signo del nuevo numero obtenido es ahora
negativo.

Operador >> (Desplazamiento a la derecha):

Este operador mueve cada bit a la derecha. El bit de la izquierda se pone a cero, el de la
derecha se pierde. Si realizamos la operacin inversa no recuperamos el nmero original.
El formato es el siguiente:
variable o constante>>nmero de posiciones a desplazar

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

El nmero de posiciones a desplazar indica cuantas veces hay que mover los bits hacia la
derecha.
Ve el siguiente ejemplo:

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
Esta es la operacin a nivel de bits y equivale a hacer dos desplazamientos a la derecha:
152 ->10011000 Nmero original
76 -> 01001100 Primer desplazamiento. Entra un cero por la izquierda,
el cero de la derecha se pierde y los dems se mueven a la derecha.
38 -> 00100110 Segundo desplazamiento. Entra un cero por la
izquierda,
el cero de la derecha se pierde y los dems se mueven a la derecha.

Nota:
Un desplazamiento a la derecha equivale a dividir entre dos. Esto es un
dato muy importante ya que el desplazamiento a la derecha es ms
rpido que la divisin. Slo sirve para dividir entre dos. Si hacemos dos
desplazamientos sera dividir entre dos veces, no dividir entre tres.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Operador << (Desplazamiento a la izquierda):

Este operador mueve cada bit a la izquierda. El bit de la derecha se pone a cero, el de la
izquierda se pierde. Si realizamos la operacin inversa no recuperamos el nmero original
Esta operacin equivale a multiplicar por 2.
Vamos a ver un ejemplo:
:

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Esta es la
nivel de bits y equivale a hacer dos desplazamientos a la izquierda:

operacin a

50 -> 00110010 Nmero original


100-> 01100100 Primer desplazamiento. Entra un cero por la derecha,
el cero de la izquierda se pierde y los dems se mueven a la izquierda.
200->11001000 Segundo desplazamiento.Entra un cero por la derecha,
el cero de la izquierda se pierde y los dems se mueven a la izquierda.

Nota:
Un desplazamiento a la izquierda equivale a multiplicar por dos.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Esto es un dato muy importante ya que el desplazamiento a la izquierda es ms rpido


que la multiplicacin. Slo sirve para multiplicar por dos. Si hacemos dos desplazamientos
sera igual que multiplicar por dos, dos veces, no multiplicar por tres.
Actividad de Aprendizaje 10. Operadores lgicos a nivel de Bits.
Ya conoces todas las operaciones lgicas a nivel de bits que se manejan en Lenguaje C,
ahora vas a practicar con ellas en la siguiente actividad, el objetivo es que comprendas el
uso y aplicacin de los operadores con que cuenta el Lenguaje de programacin C.
Instrucciones:
1. Realiza el cdigo fuente escrito en Lenguaje C que te permita realizar las operaciones
lgicas a nivel de bits OR, AND y XOR para los siguientes operandos: operando 1 =
100 y operando 2 = 200, tambin realiza las operaciones de complemento a uno o
negacin, desplazamiento a la derecha y desplazamiento a la izquierda para los
operandos 3 y 125, el >> se har por 2, es decir, dos desplazamientos a la derecha y
el << se har por uno, es decir un desplazamiento a la izquierda.
2. Todos los resultados de estas operaciones lgicas a nivel de bits se deben mostrar en
pantalla.
3. Ya que tengas el cdigo fuente realizado depralo y complalo en Dev C++
4. Debes enviar tu archivo hasta que haya sido compilado, es decir que Dev C++ no te
haya marcado error, de lo contrario no se tomar esta actividad como vlida. El archivo
que debes enviar es el cdigo fuente, es decir el archivo con extensin .c que se cre.
5. Cuando hayas terminado enva a tu profesor el archivo del cdigo fuente a la
plataforma
con
el
siguiente
formato:
apellidopaterno_materno_nombre_actividadnumero.
Conclusin:
La estructura general de un programa escrito en Lenguaje C es la siguiente:
#include<>
intmain()
{
}
#include<>Es la directiva del preprocesador. Se encarga de incluir el contenido de las
libreras en el cdigo fuente del programa, no olvides que en las libreras se encuentran
declaradas y definidas las funciones ms comunes con que cuenta el Lenguaje C, tales
como pritf().

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Todo programa escrito en Lenguaje C debe tener una funcin llamada main(), esta es
siempre la primer funcin en ejecutarse y es por medio de esta que se llaman o invocan a
las dems funciones.
Las { } delimitan tanto el comienzo como el final del programa as como las lneas de
cdigo que pertenecen a la funcin main.
Como te abras dado cuenta es imprescindible utilizar variables en un programa en
Lenguaje C, as que es necesario que recuerdes que el contenido de las variables se
puede ver o cambiar en cualquier momento.
Estas variables pueden ser de distintos tipos dependiendo de la clase de informacin
que almacenen.
No es lo mismo guardar un nombre que un nmero, ya que un nombre puede estar
compuesto por letras y nmeros, por ejemplo Rodrigo, Lucy254, etc., y un nmero es una
constante por ejemplo 0,-1,2,10.25, etc.
Hay que recordar tambin que la memoria RAM de la computadora es limitada, as que
cuando guardamos un dato, debemos usar slo la memoria necesaria, ya que es en la
memoria RAM donde se cargaran y ejecutaran nuestros programas.
Recuerda tambin que los operadores son smbolos que le indicaran al compilador como
manipular la informacin, por ejemplo cuando escribimos a+2, en este caso el operador es
el smbolo de + (ms) el cual tiene vinculada una funcin que le dice al compilador
exactamente lo que tiene que hacer con los operandos a y 2 (sumarlos), existen
operadores para manipular casi todo tipo de informacin.
Excelente, terminaste el primer tema!
Sigue adelante con tu trabajo!

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

2. Funciones de entrada
Introduccin
Como recordars en las libreras (por ejemplo conio.h) se encuentran declaradas y
definidas funciones, estas funciones desarrollan un trabajo especfico y resuelven la
mayora de necesidades que se suscitan durante el proceso de la programacin, por
ejemplo estas funciones nos permiten introducir datos por el teclado, mostrar informacin
en pantalla, obtener el coseno de un ngulo, etc.
De manera general, podemos decir, que existen funciones dentro de las libreras casi para
cualquier necesidad, pero qu pasa cuando necesitamos realizar una tarea muy
especializada o simplemente no existe ninguna funcin prefabricada?, pues surge
entonces la necesidad de generar nuestras propias funciones y que el Lenguaje C nos
permita generar nuestras propias funciones es una herramienta muy potente.
2.1 La funcin scanf()
Esta funcin permite que el usuario introduzca informacin a travs de la entrada
estndar de la computadora (el teclado).
A continuacin un ejemplo:

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Explicacin:
En el cdigo fuente anterior se declara una variable de tipo char llamada le, por medio de
la funcin printf() se escribe en pantalla el mensaje Introduce un carcter, nota que la
instruccin es introducir un carcter no dos o ms, en la siguiente lnea por medio de la
implementacin de la funcin scanf() el usuario puede teclear un carcter y este ser
guardado en la variable llamada le.
Es necesario colocar el modificador %c para indicar explcitamente al compilador que el
tipo de datos que se va a introducir por el teclado es de tipo char, as mismo, es necesario
escribir el operador &(direccin de ) antes del nombre de la variable donde se desea que
se guarde la informacin introducida por el usuario a travs del teclado.
Observa que el usuario tecleo equivocadamente una palabra en lugar de un carcter,
debido a que la variable llamada le de tipo char solo puede almacenar un carcter, ya que
solamente se guarda el primer carcter, en este caso la E.
La dems informacin tecleada por el usuario se pierde ya que no existe variable que
pueda almacenarla.
Para corroborar que el primer carcter ha sido guardado nuevamente se utiliza la funcin
printf() para mostrar el contenido de la variable llamada le.
Es posible introducir ms de un dato por el teclado con una sola funcin scanf(), es
necesario colocar un modificador % por cada variable declarada y escribir explcitamente
por medio de el operador direccin de (&) el orden y lugar donde se guardara la
informacin.
Por ejemplo:

El resultado de editar, depurar y compilar las lneas de cdigo anteriores dentro de una
funcin main() ser el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

2.2 Las funciones getch() y getche()


Estas dos funciones permiten al usuario introducir un carcter por el teclado. La diferencia
entre getche() y getch() es que la primera imprime en pantalla la tecla que se ha pulsado y
la segunda no. Ambas funciones se encuentran declaradas y definidas en la librera
llamada conio.h. Enseguida se te da un ejemplo:

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
Observa que al utilizar a la funcin getch() se tecleo una R, pero al momento de teclearla
no se imprime este carcter en pantalla, se imprime nicamente al mostrarla por medio de
la funcin printf(), en cambio con la funcin getche() al momento de presionar en el
teclado el carcter o este se imprime en la pantalla automticamente.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Para corroborar que los datos se guardaron correctamente se utiliza a la funcin printf()
para mostrar el contenido de la variable.

Actividad Integradora 1. Introduciendo datos por el teclado


Ya conoces la estructura general de un programa, los tipos de variables con que cuenta el
lenguaje C, adems sabes cmo implementar las funciones de entrada y de salida
estndar con que cuenta este Lenguaje, es momento de poner en prctica todos estos
conocimientos.
Instrucciones:
1.
Realiza un cdigo fuente escrito en Lenguaje C que te permita introducir el RFC de
cualquier persona fsica.
2.

Se debe introducir el RFC carcter por carcter sin espacios en blanco entre ellos.

3.
Despus de introducir el ltimo carcter, al presionar la tecla Enter, en la pantalla
de tu PC se debe desglosar la informacin correspondiente a cada uno de los
elementos que componen el R.F.C. la imagen siguiente muestra el resultado que debes
obtener:

4.
El Programa debe funcionar correctamente para cualquier RFC que introduzcas.
5.
Cuando hayas terminado t programa, lo hayas depurado, compilado y funcione
correctamente, enva a tu profesor el archivo del cdigo fuente y la imagen del
programa en ejecucin
a la plataforma con el siguiente formato:
apellidopaterno_materno_nombre_actividadnumero.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Antes de comenzar lee la siguiente nota informativa en la que te puedes apoyar para
realizar tu cdigo fuente, en ellas se te explica qu es el RFC, y como se determina.
Qu es el RFC?
El Registro Federal de Contribuyentes (RFC) es una clave que debe tener cualquier
persona en Mxico que realice alguna actividad laboral lcita y est registrada ante
Hacienda, El RFC se forma con los datos personales del contribuyente, su nombre y
fecha de nacimiento. El registro se debe hacer en las oficinas del Servicio de
Administracin Tributaria de la Secretaria de Hacienda y Crdito Pblico, esta instancia
otorga una homoclave diferente para cada registro y es obligatorio para todas las
personas.
Cmo se determina?
Para explicarte como elaborar el RFC se va a tomar como ejemplo los datos de la
siguiente persona:
El Sr. Jos Vlez Cuevas, naci el 26 de marzo de 1986.
Partiendo de estos datos, se toman las dos primeras letras del apellido paterno (VE), la
primera letra de apellido materno (C), la primera letra del nombre (J), posteriormente se
agrega a la clave la fecha de nacimiento, comenzando con el ao, el mes y el da, todo
con nmeros (aa, mm, dd): 860326, finalmente, el RFC del Sr. Jos Vlez es el siguiente:
VECJ860326, ya que se tiene el R.F.C., la Secretara de Hacienda designa una
homoclave.
Conclusin.
Las funciones estndar para introducir informacin por el teclado son: scanf(), getch() y
getche()
La primera permite introducir cualquier cantidad de informacin en una sola lnea y de
cualquier tipo, siempre y cuando se indique en forma explcita con el operador %i, %c, o
%f de acuerdo al tipo de variable que se desea introducir.
En cambio las funciones getch() y getche() nicamente permiten introducir un solo dato,
adems de que getch() no muestra en pantalla la informacin tecleada desde la entrada
estndar de la computadora (el teclado) y la funcin getche() si lo hace.
Buen trabajo!
Contina con el Tema 3!

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
3. Funciones matemticas
Introduccin
En ocasiones durante el proceso de la programacin en Lenguaje C es necesario realizar
clculos matemticos, por ejemplo: calcular la raz cuadrada de un nmero u obtener el
valor absoluto de una variable; debido a estas necesidades los desarrolladores del
lenguaje proveen una librera en la cual se encuentran declaradas y definidas las
funciones matemticas ms usadas por los programadores, esta librera se llama math.h
Para usar la librera de matemticas math.h, se debe incluir la directiva del preprocesador
#include<math.h>.
Al incluir esta directiva en tu cdigo fuente podrs utilizar las siguientes funciones:
Funcin

Tipo de variable

Propsito

acos(d)

double

Devuelve el arco coseno de d

asin(d)

double

Devuelve el arco seno de d

atan(d)

double

Devuelve el arco tangente de d

atan(d1, d2)

double

Devuelve el arco tangente de d1/d2

ceil(d)

double

Devuelve el valor redondeado por exceso, al siguiente entero mayor

cos(d)

double

Devuelve el coseno de d

cosh(d)

double

Devuelve coseno hiperblico de d

exp(d)

double

Eleva a la potencia d

fabs(d)

double

Devuelve el valor absoluto de d

floor(d)

double

Devuelve el valor redondeado por defecto al entero menor ms cercano

log(d)

double

Devuelve el logaritmo natural de d

log10(d)

double

Devuelve el lo. (base10) de d

pow(d1, d2)

float

sin(d)

Double

Devuelve el seno de d

sinh(d)

double

Seno hiperblico de d

sqrt(d)

float

Tan(d)

double

Devuelve la tangente de d

tanh(d)

double

Devuelve la tangente hiperblica de d

Devuelve d1 elevado a la potencia d2

Raz cuadrada de d

Algunos ejemplos de cmo utilizar las funciones mostradas en la tabla anterior se


presentan a continuacin.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Se necesita escribir el cdigo fuente de un programa en Lenguaje C, dicho programa
ser capaz de obtener el valor de la hipotenusa del siguiente triangulo rectngulo:

A= 20.2 cm. C=

? cm.

C2 = A2 + B2

B= 50.05 cm.
El cdigo fuente que da solucin a este problema es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
En este cdigo fuente se declararon cuatro variables de tipo float A, B, C y
respectivamente, las cuatro variables se iniciaron con el valor de la constante cero.

Enseguida, gracias a la funcin printf()se muestra la cadena de caracteres: "Introduce el


valor del cateto A: "
Despus se coloc la funcin scanf() la cual permite que el usuario del programa
introduzca el valor solicitado por medio del teclado de la computadora, este valor se
guarda en la variable A.
Se muestra otra cadena de caracteres que indica al usuario del programa tecle el valor del
cateto B, una vez ms la funcin scanf() permite almacenar este valor en la variable de
tipo float llamada B.
Posteriormente se eleva el valor de la variable A al cuadrado(pow(A,2)), utilizando a la
funcin pow(), como se pudo observar en la tabla mostrada anteriormente, esta funcin
acepta dos argumentos, el primero (en este caso la variable A) y el segundo (en este caso
la constante 2) que se encarga de indicar el exponente al cual ha de elevarse la variable
llamada A de tipo float.
Se realiza la misma operacin con la variable B. El resultado de estas dos operaciones se
guarda en las variables D y E respectivamente.
Inmediatamente despus se suman estos dos valores y se guarda en la variable C de tipo
float, para enseguida obtener la raz cuadrada de esta operacin aritmtica (suma), para
ello se utiliza a la funcin sqrt() que como se muestra en la tabla anterior esta funcin
acepta un solo argumento de tipo float y devuelve la raz cuadrada de este argumento, en
este caso el valor de la variable C que contiene la suma de los cuadrados de las variables
A y B.
Por ltimo se muestra el resultado de esta operacin por medio de la funcin printf().

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Nota: La implementacin de las otras funciones matemticas es similar a la vista
anteriormente.
Actividad de aprendizaje 11. Calculando
Ahora conoces las funciones matemticas y su aplicacin, ests en condiciones de aplicar
este conocimiento para la construccin de software que permita dar solucin a problemas
de ingeniera.
Instrucciones:
1. Escribe un cdigo fuente en Lenguaje C que calcule el volumen de un elipsoide
(Zepeln).
2. Las longitudes de los semiejes se debern introducir por el teclado y el volumen
correspondiente a las dimensiones que el usuario teclee se mostrar en pantalla.
3. Para apoyarte en la realizacin del programa revisa la informacin que se te presenta,
a continuacin para calcular el volumen de un dispositivo con esta geometra. Da clic en la
palabra Elipsoide para que se te muestre dicha informacin.

Un elipsoide es una superficie curva cerrada cuyas


tres secciones ortogonales principales son elpticas,
es decir, son originadas por planos que contienen dos
ejes cartesianos.
Volumen:
El volumen de un elipsoide est dado por la ecuacin:

Donde a, b y c son las longitudes de los semiejes del


elipsoide respecto de los ejes x, y , z; son nmeros reales positivos y determinan la forma
del elipsoide. Si dos de estos semiejes son iguales, el elipsoide es un esferoide; si los tres
son iguales, se trata de una esfera.
Cuando hayas terminado tu programa, lo hayas depurado, compilado y funcione
correctamente, enva a tu profesor el archivo del cdigo fuente y la imagen del programa
en
ejecucin
a
la
plataforma
con
el
siguiente
formato:
apellidopaterno_materno_nombre_actividadnumero.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Conclusin.
La librera llamada math.h contiene la declaracin y definicin de las funciones
matemticas ms usadas por los programadores de Lenguaje C, en ella se encuentran
declaradas las funciones sqrt() para obtener la raz cuadrada de numero o la funcin
pow() que nos permite elevar un nmero a una potencia dada, el uso de estas funciones
es muy sencillo y para poder utilizarlas dentro de un cdigo fuente de Lenguaje C basta
con incluir en la directiva del preprocesador el nombre de esta librera.
Muy bien, terminaste!
Concluye la unidad trabajando el Tema 4

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
4. Funciones generadas por el usuario
Introduccin
Durante el proceso de la programacin en Lenguaje C surgen necesidades muy
especficas para las que no existe ninguna funcin prefabricada, el Lenguaje C brinda una
forma sencilla y flexible al programador para que ste pueda declarar y definir sus
propias funciones, esta es una herramienta muy potente ya que al declarar y definir las
funciones propias se est en posibilidad de dar casi cualquier orden a la computadora.
4.1 Declaracin y definicin de una funcin
Una funcin es un mtodo en el cual se escriben de forma explcita las instrucciones que
la computadora deber ejecutar, para alcanzar un objetivo especfico.
Ya has utilizado algunas funciones prefabricadas, por ejemplo la funcin printf() y la
funcin system(PAUSE), cada una realiza una tarea especfica y como ya sabes estas
estn declaradas y definidas dentro de las libreras.
Para poder utilizar una funcin es necesario declararla, es decir indicarle al compilador en
forma explcita cual es el nombre de la funcin, su tipo y si posee o no argumentos.
Tambin es necesario definirla, es decir, escribir en forma explcita las instrucciones que
pertenecen a dicha funcin (dentro de las llaves de apertura y cierre { }), finalmente estas
instrucciones describen el funcionamiento de la funcin (el Qu hace?).
La declaracin y definicin de una funcin debe realizarse de acuerdo a la siguiente
sintaxis:

Tipo_de_variablenombre_de_la_funcion( argumentos )

{
definicin de variables;
5

cuerpo de la funcion;
return
}

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
1. Cuando una funcin termina de ejecutarse puede o no devolver un valor, el cual puede
ser cualquiera de los tipos de variable vistos anteriormente, (int, char, float, double) o un
tipo de dato definido por nosotros. Este valor devuelto suele ser el resultado de las
operaciones que se realizan en la funcin y si han tenido xito o no. Tambin se puede
usar el tipo void. Este tipo de datos no regresa ningn valor al finalizar la funcin.
2. Para el nombre se pueden utilizar letras, nmeros y el smbolo _. No se pueden utilizar
ni acentos ni espacios en blanco. Adems el nombre de la funcin debe comenzar por
una letra, no puede comenzar con un nmero. Tampoco puede ser una palabra
reservada. El nombre de la funcin se usa para llamarla dentro del programa. Por
ejemplo, un nombre valido para una funcin puede ser el siguiente: Rodrigo_Aviles()
Resta123()
3. Los argumentos son variables de cualquier tipo, sirven para dotar a la funcin de la
capacidad de recibir informacin, debe declararse cada argumento(variable) separado
por un operador coma (,), la declaracin de estos argumentos no termina con el
operador punto y coma (;).
Nota: No en todas las funciones se declaran argumentos, nicamente se declaran cuando
es necesario recibir informacin proveniente de alguna otra funcin u otro programa.
4. Dentro de la funcin podemos definir variables (variables locales) que slo sean
conocidas dentro de la funcin (delimitada por las llaves de apertura y cierre { }). Si
declaramos una variable en una funcin no podemos usarla en otra.
5. Aqu es donde se escriben de forma explcita las instrucciones que describirn la
ejecucin de la funcin, es decir que trabajo realizara la funcin.
6. La sentencia return es la funcin devuelve un valor, es la encargada de realizar esta
tarea, el dato que se pone despus de return es el dato que se devuelve, ste puede ser
una constante o una variable y debe ser del mismo tipo que el tipo_de_variable.
Aunque la excepcin a esta regla es la siguiente: Si se coloc el tipo de variable void, no
debe colocarse la instruccin return. Las funciones deben declararse y definirse antes de
ser llamadas (utilizadas en un programa).
En los ejemplos que se muestran en los siguientes apartados se llama a la funcin desde
main, as que se tiene que declarar y definir la funcin antes que se escriba la funcin
principal main().

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
4.2 Funcin sin argumentos que no devuelve ningn valor
Observa el siguiente cdigo fuente, en el se muestra la declaracin y definicin de una
funcin que no devuelve ningn valor, adems de no tener argumentos esta funcin se
llama resta y su trabajo consiste en realizar la resta de dos nmeros que se introducirn
por el teclado, el resultado se mostrara por pantalla.

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Explicacin:
En este cdigo fuente se declara y define la funcin llamada resta(), esta funcin no
devuelve ningn valor por lo tanto se le coloca la palabra reservada void, ms adelante se
mostrara una funcin que si regresa valores, as podrs comparar esta caracterstica de
las funciones, observa que la declaracin y definicin de la funcin resta(), se realiz
antes de la funcin principal main():
void resta()
{

Declaracin y definicin de la funcin resta()

}
Intmain()
{

Funcinprincipal main()

Dentro de las llaves de apertura y cierre ( { } ) se declararon tres variables locales de tipo
int llamadas a, b y c respectivamente.
En la siguiente lnea de cdigo se imprime en pantalla el siguiente texto Esta funcin
restar dos valores: y enseguida por medio de otra funcin printf() se indica al usuario
que introduzca el valor que almacenar la variable a, por medio de la funcin scanf()
El valor tecleado por el usuario del programa se guardara en la variable a, para
inmediatamente despus realizar exactamente el mismo procedimiento pero ahora el
valor tecleado por el usuario se guardara en la variable b.
Enseguida de realiza la resta entre a y b guardando el resultado de esta resta en la
variable c, de este modo c = a-b; recuerda que en el Lenguaje C la asignacin es
asimtrica es decir el valor de la variable de la derecha se guarda en la variable de la
izquierda, por lo tanto el resultado de la resta se guarda en la variable c que
inmediatamente despus se muestra por pantalla.
Lo explicado anteriormente es nicamente la declaracin y definicin de la funcin resta(),
en otras palabras, aqu solo estamos escribiendo (indicndole al compilador) el tipo de
variable que devolver la funcin, en este caso no devuelve ninguno (void),

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
El nombre de la funcin en este caso es resta() y especificamos si esta funcin tiene
argumentos, esto se hace declarando variables dentro de los parntesis, en este caso no
los tiene.
Si no realizaras la invocacin de resta() desde la funcin main() el programa solo
ejecutara la funcin system(PAUSE); y nunca se ejecutara la funcin resta().
Si se edita, depura y compila el cdigo fuente anterior y se omite la invocacin a la funcin
resta, se obtiene el siguiente resultado:

Omisin de la
invocacin.

4.3 Funcin con argumentos que no devuelve ningn valor


Observa el siguiente cdigo fuente, en l se muestra la declaracin y definicin de una
funcin que no devuelve ningn valor, esta funcin tiene argumentos, se llama suma y su
trabajo consiste en realizar la suma de dos nmeros que se introducirn por el teclado, el
resultado se mostrara por pantalla. Observa que este cdigo fuente es muy semejante al
anterior, pero ahora la funcin se llama suma y tiene dos argumentos (variables) de tipo
int, por tal motivo es necesario que otra funcin o programa le proporcione los valores de
a y de b respectivamente.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Explicacin:
En este cdigo fuente escrito en Lenguaje C se declar y defini una funcin llamada
suma(), con dos argumentos (variables) de tipo int a y b respectivamente, es en estas dos
variables en donde la funcin suma() recibir los valores que sumara, la ventaja que se
obtiene al declararle argumentos a una funcin es dotarla de la capacidad de recibir
informacin, esta informacin proviene de otra funcin u otro programa.
Por lo anterior es necesario pasarle estos datos a la funcin, en este caso la funcin
suma() nicamente puede recibir informacin de tipo int y solamente puede recibir dos
valores ya que solo tiene dos argumentos de este tipo.
Esta funcin no regresa ningn valor por lo tanto se le antepuso la palabra reservada void.
Despus se declar una variable local llamada c de tipo entero, la cual fue iniciada con la
constante cero. Enseguida y por medio de la funcin printf() se imprime en pantalla una
cadena de caracteres indicando que la funcin sumar dos nmeros, despus por medio
de la instruccin c=a+b;
Se suman los valores de las variables a y b, el resultado se almacena en la variable
llamada c, si observas cuando se declararon los argumentos a y b ( suma (int a, int b) ) a
ninguno de estos dos argumentos se le asigno valor alguno, es decir estas variables no
fueron iniciadas, pero por tratarse de argumentos el compilador se encarga de iniciar
estas variables llamadas argumentos con valor cero, en otras palabras el compilador
guarda un cero en estas variables.
Te podrs preguntar: sumar 0 + 0? y la respuesta es:
La funcin suma() realizar la operacin de suma de los valores que almacenen los
argumentos a y b, recuerda que estos valores debes pasrselos.
Observa los comentarios en el cdigo fuente, en el vers el momento en que se le pasan
estos datos es en la lnea suma(A,B); y por ltimo la funcion suma() muestra el resultado
de esta operacin aritmtica en pantalla.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

En la lnea siguiente encontrars la declaracin y definicin de la funcin principal del


programa es decir main(), dentro de esta se encuentra la declaracin de dos variables de
tipo int llamadas A y B, (observa que estas variables tienen un nombre diferente que los
argumentos) por medio de la funcin printf() se solicita introducir el valor de la variable A
para posteriormente guardar el valor tecleado por el usuario en la variable llamada A por
medio de la funcin scanf(), enseguida se realiza la misma operacin pero ahora con la
variable llamada B, guardando el valor tecleado en la variable B.
A continuacin se observa la invocacin a la funcin suma() de la siguiente manera:
suma(A,B); lo que se est haciendo aparte de invocar a esta funcin es pasarle el valor
que almacena la variable A al argumento llamado a, de igual forma el valor que almacena
B se le pasa al argumento b y de esta forma la funcin suma() recibe los dos valores que
ha de sumar.
En este ejemplo la funcion principal main() es la funcin que se encarga de proveer
(pasarle ) informacin a la funcion suma().
4.4 Funcin sin argumentos que devuelve un valor
Observa el siguiente cdigo fuente escrito en Lenguaje C, en l se muestra la declaracin
y definicin de una funcin sin argumentos que devuelve un valor, el trabajo que realizara
esta funcin es multiplicar dos valores y regresar el resultado de esta multiplicacin. Te
puedes preguntar Y a quin y cmo le regresa este valor ?Respuesta: El valor que
regresa la funcin debe recibirlo una variable del mismo tipo que la informacin que
devuelve la funcin.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

El resultado de editar, depurar y compilar este programa es el siguiente:

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Explicacin:
En este cdigo fuente escrito en Lenguaje C se declar y defini la funcin llamada por()
sin argumentos, esta funcin devuelve un valor y el valor que devolver ser de tipo float,
esto se debe a que se le antepuso la palabra reservada float de esta manera: float por()
Dentro de la funcinpor() se declaran e iniciaron tres variables con valor cero de tipo float
llamadas a,b y c respectivamente.
Por medio de la funcin printf() se solicit introducir el valor de la variable a y b guardando
la informacin tecleada por el usuario por medio de la funcin scanf() en a y b
respectivamente.
En la lnea c=a*b; se realiza la multiplicacin de estos dos valores. Despus se regresa el
resultado de esta multiplicacin, almacenado en la variable c, con la instruccin return c;
la palabra reservada return indica al compilador que deber devolver el valor de la
variable cuyo nombre se coloca enseguida, en este caso la variable local c.
Dentro de la funcin principal main() se declar una variable llamada C de tipo float la cual
almacenar el valor que regresa la funcin por(), debido a que la funcin por() devuelve el
contenido de la variable c de tipo float es que la variable C declarada en main() debe ser
tambin de tipo float, esto para poder almacenar correctamente dicho valor devuelto.
Enseguida se invoca a la funcin por() y el valor que devuelve esta funcin se almacena
en la variable llamada C como ya se explic anteriormente. Por ltimo se muestra en
pantalla a la variable C que ahora contiene el resultado de la multiplicacin.
Actividad de aprendizaje 12. Declarando una funcin
Para realizar esta actividad se va a retomar el cdigo fuente y el resultado de la misma,
que es el volumen del elipsoide.
El objetivo de esta actividad es que construyas un software que implemente funciones
capaces de resolver problemas de ingeniera.
Instrucciones:
Realiza un cdigo fuente escrito en Lenguaje C que te permita calcular la capacidad de
ascensin (Peso que puede elevar) de un elipsoide.
Para realizar estos clculos revisa la informacin que se te presenta mismo que te va a
servir de apoyo para esta actividad.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada
Helio:
El helio es un gas inerte, incoloro e inodoro mucho ms ligero que el aire y adems es
seguro, no txico, no inflamable y no explosivo. Recuerda que de acuerdo a sus
propiedades el helio (He) es el gas ms apropiado para inflar un zepeln.
Clculo de la capacidad de ascensin
El peso especfico del helio es, en condiciones ambientales normales, 0,18 kg/m, el del
aire es 1,21 kg/m. La diferencia entre ambos significa que la capacidad terica
ascensional es de aproximadamente 1 g por litro de helio. En la prctica, dicha capacidad
est asegurada si el peso del globo y de los anexos (cordeles, tarjetas) es menor de 0,5 a
0,6 g por litro del volumen del globo.
El volumen (V) en litros del globo se calcula en funcin del dimetro (d) de la siguiente
forma:
V (litros) = (0,524/1000) (d (en cm)). Por lo tanto, un globo esfrico con un dimetro de
30 cm tiene un volumen de 14,1 litros y una capacidad ascensin al suficiente para un
peso de aproximadamente 7 a 8,5 g. Los globos en forma de pera que cuentan con el
mismo dimetro, tienen un volumen levemente ms grande.
De acuerdo a la informacin que se te est proporcionando y retomando el cdigo fuente
que desarrollaste en la actividad de aprendizaje 12, declara y define una funcin llamada
ACENCION() que te permita calcular la capacidad de ascensin del elipsoide cuyas
dimensiones se deben introducir por el teclado.
La funcin ACENCION() debe ser invocada en main() y recibir el volumen calculado
previamente, esta realizar el clculo de la ascensin y mostrar este resultado en
pantalla.
Cuando hayas terminado t programa, lo hayas depurado, compilado y funcione
correctamente, enva a tu profesor el archivo del cdigo fuente y la imagen del programa
en
ejecucin
a
la
plataforma
con
el
siguiente
formato:
apellidopaterno_materno_nombre_actividadnumero.

Nota: Con esto tendrs una idea aun ms clara no solo de las dimensiones y cantidad de
helio que utilizaras si decidieras realizar un prototipo de esta clase, sino tambin el peso
que podras elevar con este elipsoide.

Fundamentos de Programacin
Unidad Il. Fundamentos de programacin estructurada

Conclusin:
La declaracin y definicin de una funcin adems de permitir al programador dar
rdenes a una computadora, hace posible solucionar problemas para los que no existe
ninguna funcin prefabricada en las libreras, existen funciones que posen argumentos y
funciones que no poseen argumentos, as como funciones que egresan valores y
funciones que no regresan nada, lo anterior depende de las necesidades especificas para
las cueles se declara y define una funcin.
Vas muy bien y ests a la mitad del camino para concluir esta Unidad de aprendizaje,
sigue esforzndote y practicando ya que estas son las bases para lograr el xito y
aprender a programar.
Adelante con la Unidad III!

Fundamentos de Programacin
Unidad III. Sentencias de control

Unidad III. Sentencias de control

Mapa de conceptos
Unidad III
Sentencias de control

Sentencia de
control for

Sentencias de
control while y do
while

Sentencia de
control if else

Sentencia de
control break

Sentencia de
control switch

Sentencia de
control goto

Introduccin:
Durante el proceso de la programacin pueden surgir algunas necesidades a la hora de
crear un programa, por ejemplo puede ser necesario que alguna o algunas instrucciones
se repitan ms de una vez, o un nmero determinado de veces, o quiz por un nmero
ilimitado de veces o hasta que se cumpla alguna condicin.
Para satisfacer tales necesidades el Lenguaje de programacin C brinda al programador
herramientas sencillas y eficaces, estas herramientas se llaman sentencias de control y
sirven para manipular y re direccionar el flujo de ejecucin de un programa.
Para poder utilizar cualquiera de las sentencias de control basta con incluir la librera
stdio.h y en esta unidad temtica se te van a explicar todas las sentencias del Lenguaje
C.
1. Sentencia de control for

La sentencia de control for, se utiliza para repetir un nmero determinado de veces, una o
varias instrucciones que se encuentren escritas dentro de las llaves de apertura y cierre ( {
} ) que delimitan el cuerpo de esta sentencia de control, su interpretacin en espaol
puede ser ciclo

90

Fundamentos de Programacin
Unidad III. Sentencias de control
.
La sintaxis de esta sentencia de control es la siguiente:

for(asignacin inicial ; condicin ; incremento_o_decremento )

Sentencias o bloque de instrucciones;


}

1. sentencia de control for


2. asignacin inicial: En esta instruccin se asigna un valor cualquiera (el que se necesite)
a una variable declarada previamente, esta variable puede ser de cualquier tipo.
3. condicin: en este lugar se indican los requisitos necesarios para que las instrucciones
escritas dentro de las llaves de apertura y cierre se ejecuten continuamente el nmero de
veces establecido por esta condicin, mientras la condicin se cumpla las instrucciones se
ejecutaran, cuando la condicin no se cumpla las instrucciones dejarn de realizarse.
Para realizar esta accin puedes auxiliarte de los operadores lgicos aprendidos
anteriormente, por ejemplo, cuando la condicin sea verdadera (regrese un 1) el ciclo for
se ejecutar continuamente cuando la condicin sea falsa (regrese un 0), se dejar de
ejecutar (puedes agregar ms de una condicin).
4. Incremento_o_decremento: Aqu se puede realizar tanto un incremento como un
decremento segn sea la necesidad, regularmente se incrementa una variable (esta debe
ser declarada previamente) la cual interviene en la condicin de esta sentencia de control.
Para realizar los incrementos te puedes apoyar en el operador ++ o para los decrementos
te puedes apoyar en el operador - - .
5. llave de apertura
6. llave de cierre
La ejecucin de la sentencia de control for se efecta de la siguiente manera:

Fundamentos de Programacin
Unidad III. Sentencias de control
1. Se realiza la asignacin inicial en la variable que se escribe despus de la palabra
reservada for y el operador parntesis de apertura (, terminando esta instruccin con
un punto y coma.
2. Se evala la condicin que se encuentra despus de la asignacin inicial, obtenindose
un resultado verdadero o falso (0 1).
3. Si el resultado es falso (cero) la(s) sentencia(s) no se ejecuta(n), y se ejecuta la
siguiente instruccin situada despus de la llave de cierre ( }).
4. Si el resultado es verdadero (distinto de cero) se ejecuta(n) la(s) sentencia(s) una vez,
despus se realiza la parte de los incrementos o decrementos que se hayan escrito,
despus este mismo proceso se repite desde el punto 2.

Notas: El nmero de veces que se repetirn las instrucciones est en


funcin del nmero de veces que se cumpla la(s) condicin(es).
Observa que en la sintaxis de la lnea de cdigo de for, al final de los
parntesis, no se escribi punto y coma (;).
A continuacin se te mostrar un ejemplo en el que se utiliza la sentencia for en un
programa donde se calcula las coordenadas de un proyectil, el cual realiza un movimiento
parablico, este programa va a calcular 10 puntos de la trayectoria.
Analzalo y despus edtalo, depralo y complalo porque lo vas a necesitar para la
siguiente actividad que realices.
Para realizar el programa se ocuparn las siguientes frmulas, mismas que sirven para
calcular la trayectoria de un mvil en tiro parablico:

Donde Vi es la velocidad inicial del proyectil,


es el ngulo de lanzamiento del proyectil, t
es el tiempo y g es la gravedad.

Fundamentos de Programacin
Unidad III. Sentencias de control
Este es el cdigo fuente del programa:

Fundamentos de Programacin
Unidad III. Sentencias de control
Este es el resultado que debes de obtener al editar, depurar y compilar el cdigo fuente
anterior:
Foro 1. PoR qU Lo HaCe?

Ahora que se te explic la sentencia de control for y analizaste el cdigo fuente que se te
mostro como ejemplo, adems de que lo trabajaste, estas en condiciones de participar en
el siguiente foro, la cual tiene como objetivo que razones el aprendizaje que has adquirido
hasta este momento y realices lo que se te pide a continuacin:
Instrucciones:
1. Responde las siguientes preguntas con base al cdigo fuente que trabajaste:
En qu lnea de cdigo se encuentran la asignacin inicial, la condicin y los
incrementos que cumplen la sintaxis de la sentencia de control for:
Por qu la sentencia de control for, implementada en el cdigo, calcul 11 posiciones
(coordenadas) y no 10 como se indic?
Cmo solucionaras esta falla en el programa para lograr que calcule nicamente 10
posiciones?
Por qu se incluy la siguiente lnea de cdigo antes de la sentencia de control for?
ang = ((ang*PI)/180);
Comenta qu modificaciones realizaras al programa para que ste calculara 359854
posiciones (coordenadas en x y y) del proyectil en tiro parablico.

2. Tienes que emitir primero tu participacin para poder ver las aportaciones de tus
compaeros.
3. Retroalimenta dos participaciones de tus compaeros.
4. Recuerda participar en el foro de manera respetuosa.

Fundamentos de Programacin
Unidad III. Sentencias de control

Conclusin:
En este tema, se expuso la sentencia for. Esta sentencia se utiliza para ejecutar un
nmero determinado de lneas de cdigo (instrucciones), ya sea una o ms veces, y esto
ayuda a ahorrar trabajo al realizar un programa.
Buen trabajo, sigue adelante con tus temas!

Fundamentos de Programacin
Unidad III. Sentencias de control

2. Sentencias de control while y do while

Introduccin:
Como ya se mencion anteriormente durante el proceso de programacin surgen
necesidades muy especficas, como repetir una o ms instrucciones (o lneas de cdigo)
en lo que se cumple una condicin, por ejemplo si un programa se encarga de verificar los
sistemas de control de un vehculo (la computadora de un auto), se le puede indicar que
nicamente lo haga cuando el auto este encendido, si el auto est apagado no verificara
nada, en este contexto es conveniente utilizar una sentencia de control while o una
sentencia de control do while, en este tema se te explicar cada una, as como la
diferencia entre ambas.
while
La sentencia de control while, puede ejecutar una o varias instrucciones (lneas de cdigo)
cero o ms veces, dependiendo de una condicin especfica, para realizar esta sentencia
te puedes apoyar en los operadores lgicos. La interpretacin que se le puede dar en
espaol a esta sentencia es mientras (mientras se cumple la condicin).
Su sintaxis es la siguiente:
while (condicin)
{
Sentencia(s);
}
Descripcin:

La condicin indicada despus de la sentencia while puede ser cualquier condicin


numrica, relacional o lgica.
Si la condicin se cumple se realizan las sentencias que se encuentran entre las
llaves de apertura y cierre hasta que la condicin deje de cumplirse.

La ejecucin de la sentencia de control while se efecta de la siguiente manera:


1.
Se evala la condicin que se encuentra despus de la sentencia while,
obtenindose un resultado verdadero o falso (0 1).

Fundamentos de Programacin
Unidad III. Sentencias de control

2.
Si el resultado es falso (cero) la(s) sentencia(s) no se ejecuta(n), y se ejecuta la
siguiente instruccin situada despus de la llave de cierre ( }).
3.
Si el resultado es verdadero (distinto de cero) se ejecuta(n) la(s) sentencia(s) y el
proceso descrito se repite desde el punto 1.

Nota: observa que en la sintaxis de la lnea de cdigo de while al final de


los parntesis no se escribi punto y coma (;).

A continuacin se te mostrar un ejemplo en el que se utiliza la sentencia while en un


programa escrito en Lenguaje C.
Debes editarlo, depurarlo y compilarlo. Este programa te permitir incrementar una
variable de forma ininterrumpida, el valor inicial de la variable es 3, el incremento debe
realizarse de uno en uno y la variable dejar de incrementarse cuando su valor sea igual a
300, cada incremento debe mostrarse en pantalla a partir del valor inicial hasta llegar al
valor final.
El siguiente es el cdigo fuente que permite realizar la accin descrita anteriormente:

Fundamentos de Programacin
Unidad III. Sentencias de control

En la imagen siguiente se muestra el resultado de editar, depurar y compilar el cdigo


fuente anterior.

No funcion el programa?
Si editaste, depuraste y compilaste el cdigo fuente anterior pudiste constatar que el
programa no funciono como se requera.
No te preocupes los errores son muy comunes en la programacin, se te invita a volver a
leer el cdigo fuente, pero ahora con ms atencin, busca el posible error y recuerda que
puedes ponerte en contacto con tu asesor, el puede ayudarte y aclarar tus dudas.
Da clic sobre el botn explicacin para que se te d a conocer el motivo del error
sucedido:
Explicacin:
El error no es de sintaxis ya que se compilo exitosamente el programa, sin embargo,
observa detalladamente las instrucciones en la quinta y sexta lneas de cdigo:
int contador = 301;
while ( contador==300 )
Es en estas lneas en las que se encuentra el problema, como puedes ver, en la quinta
lnea de cdigo a la variable de tipo entero llamada contador se le asign un valor de 301
al momento de declararla, ahora revisa la sexta lnea de cdigo, en ella se ordena
ejecutar las instrucciones escritas dentro de las llaves de inicio y cierre ({ } ), siempre y

Fundamentos de Programacin
Unidad III. Sentencias de control
cuando se cumpla la condicin entre parntesis ( contador==300 ), es decir que la
variable contador sea igual al valor 300, como ya observaste la variable contador fue
declarada con un valor de 301, por lo que no se cumple la condicin ya que al hacer la
comparacin el operador (==) devuelve un valor de cero y las instrucciones no se
ejecutan.
Ahora que ya sabes dnde estuvo el error, responde la siguiente pregunta:
Qu crees que pas si en lugar iniciar a la variable contador con valor de 301 se inicia
con valor 0 (cero)?
Prueba esta sugerencia en el cdigo fuente y se vuelve a editar, depurar y compilar el
programa, no contines con la lectura hasta que realices esto que se te pide.
Si ya realizaste el cambio de la variable contador a cero y ya compilaste el programa, da
clic en el botn nuevo resultado es importante que no revises esta informacin si no has
compilado el programa con el cambio que se te indic, ya que tu aprendizaje ser mejor si
experimentas lo que se te indica.
Nuevo resultado
El resultado de editar depurar y compilar el cdigo fuente ya corregido es el siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control
Upss! Aun no funciona?

El programa sigue sin funcionar, lo cual indica que existe otro error en el cdigo fuente, no
te desesperes solo tienes que revisar con mucho detalle tu cdigo fuente, recuerda que a
la computadora se le debe indicar exactamente lo que tiene que hacer, ese es el
problema, alguna instruccin que se le est dando a la computadora est mal.
Observa nuevamente la sexta lnea de cdigo: while ( contador==300 ) el operador de
comparacin que se est utilizando compara si la variable contador es igual que 300
(esto ya lo sabes), pues bien, la condicin solamente se cumplir si contador almacena un
valor igual a 300, entonces no se esta utilizando el operador de comparacin adecuado a
las necesidades de este programa, el operador ms apropiado para este caso es el
operador < (menor que) , por lo que la correccin al cdigo fuente debe ser de la
siguiente manera:
while ( contador < 300 )
{
contador++;
printf( "La variable contiene un: %i,.\n", contador );
}
De esta forma las instrucciones escritas dentro de las llaves de apertura y cierre se
ejecutarn ininterrumpidamente mientras la variable contador sea menor que 300.
Observa el siguiente ejemplo del resultado de compilar el cdigo fuente ya corregido.

Fundamentos de Programacin
Unidad III. Sentencias de control

Explicacin:
En el cdigo fuente anterior dentro de la funcin principal main() se declaro una variable
de tipo int llamada contador, la cual fue iniciada con cero, enseguida se implemento la
sentencia de control while, dentro de la cual se escribi la comparacin siguiente:
(contador < 300), aqu se le indica a la computadora que las instrucciones escritas dentro
de { y } se ejecutarn de forma ininterrumpida mientras se cumpla que contador sea
menor que trescientos
Dentro de la sentencia while lo primero que realizar la computadora es incrementar el
valor de contador en uno, para enseguida mostrar el contenido de esta variable por
pantalla y despus de esto volver a evaluar si contador es menor que trescientos, ahora
contador ya no guarda un 0 sino un 1 (ya que fue incrementado), pero sigue siendo menor
que 300 entonces las instrucciones dentro de las llaves de apertura y cierre se vuelven a
ejecutar 299 veces ms.
Recuerda: cualquier duda que tengas, puedes consultar a tu asesor.
do while
La sentencia de control do while es muy similar a la sentencia de control while, con la
diferencia de que en la sentencia do while las instrucciones escritas dentro de { y } se
ejecutan por lo menos una vez, esto se debe a su sintaxis:
Nota: la interpretacin que se le puede dar en espaol a estas palabras
reservadas es:
Do: hacer
While: mientras

Esta es la sintaxis:
do
{
Sentencia(s);
}
while (condicin);

Fundamentos de Programacin
Unidad III. Sentencias de control
Descripcin:
Despus de la palabra reservada do se escriben las instrucciones dentro de las llaves de
apertura y cierre que se ejecutarn una vez, para despus evaluar la(s) condicin(es)
escrita(s) dentro de los parntesis escritos delante de la palabra reservada while.
Si la(s) condicin(es) no se cumplen no se volvern a ejecutar las instrucciones que estn
escritas dentro de las llaves de apertura y de cierre, si las condiciones se cumplen, las
instrucciones antes mencionadas se ejecutaran continuamente hasta que la condicin
deje de cumplirse, es decir, sea falsa.
La ejecucin de la sentencia de control do while se efecta de la siguiente manera:
1. Se ejecutan una vez las instrucciones escritas dentro de las llaves de apertura y
cierre ( { } )
2. Se evala la condicin, obtenindose un resultado verdadero o falso (0 1).
3. Si el resultado es falso (cero) la(s) sentencia(s) no vuelven a ejecutarse, y se
ejecuta la siguiente instruccin situada despus del parntesis final de la sentencia
while.
4. Si el resultado es verdadero (distinto de cero) se vuelven a ejecutar la(s)
sentencia(s) y el proceso descrito se repite desde el punto 1.

Nota: La condicin es cualquier condicin numrica, relacional o lgica.


Observa que despus del parntesis de cierre de la condicin se escribe
punto y coma (;)
Se te presenta el ejemplo de un programa en el que se utiliza la sentencia de control do
while, al revisarlo podrs notar la diferencia entre las sentencias while y do while

Fundamentos de Programacin
Unidad III. Sentencias de control
El cdigo fuente:

Aparentemente se volvi a cometer el error de iniciar a la variable contador con 301, pero
esta vez las instrucciones escritas dentro de { y } se ejecutaran por lo menos una vez,
debido a la sentencia de control do while. El resultado de editar, depurar y compilar este
programa es el siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control

Conclusin:
La sentencia de control
while sirve para repetir una o ms lneas de cdigo
(instrucciones), mientras se cumpla una condicin, existiendo la posibilidad de que no se
ejecuten ni una sola vez si la condicin no se cumple.
Mientras tanto en la sentencia de control do while las instrucciones escritas entre { y } se
ejecutan por lo menos una vez an sin cumplirse la condicin.
Bien hecho!
Adelante con el tema 3

Fundamentos de Programacin
Unidad III. Sentencias de control
3. Sentencia de control if else

Introduccin:
En ocasiones durante el proceso de la programacin es necesario (de acuerdo a las
necesidades y al contexto especifico) re direccionar la ejecucin de un programa escrito
en Lenguaje C, es decir, inducir la ejecucin del programa por un camino u otro.
En este punto es necesario que la computadora tome una decisin y el programador es el
encargado de darle a la computadora los elementos necesarios para que se lleve a cabo
esta decisin, esto se hace con ayuda de la sentencia if else.
Su traduccin aproximada es: If (si) / Else (de lo contrario).
La sentencia de control if else permite re-direccionar la ejecucin de un programa, a partir
de un resultado obtenido, es decir, si el programa detecta un resultado verdadero (1) se
ejecutan cierto bloque de instrucciones, pero si detecta un resultado falso (0) se ejecutara
otro bloque de instrucciones distinto, para la realizacin de esta sentencia el programador
se apoya en los operadores lgicos, estudiados en la unidad temtica 2.
La sintaxis de la sentencia de control if else es la siguiente:
if ( condicin )
{
bloque que se ejecuta si se cumple la condicin
}
else
{
bloque que se ejecuta si no se cumple la condicin
}
Descripcin:
La condicin indicada despus de la sentencia if puede ser numrica, relacional o lgica.
Las instrucciones que se escriben dentro de las llaves de apertura y cierre que se
encuentran inmediatamente despus de la sentencia if(condicion), son el bloque de
instrucciones que se ejecutarn si la condicin escrita dentro de los parntesis de la
sentencia se cumple.

Fundamentos de Programacin
Unidad III. Sentencias de control
Las instrucciones que se escriben dentro de las llaves de apertura y cierre ( { } ) que se
encuentran inmediatamente despus de la palabra reservada else, son el bloque de
instrucciones que se ejecutaran si la condicin escrita dentro de los parntesis de la
sentencia if no se cumple.
La ejecucin de la sentencia de control if else se realiza de la siguiente manera:
1.

Se evala la condicin, obtenindose un resultado verdadero o falso (0 1).

2.
Si el resultado es falso (cero) el bloque de instrucciones que se ejecuta es el que
se encuentra inmediatamente despus de la palabra reservada else y dentro de las llaves
de apertura y cierre. Ya que se hayan ejecutado las instrucciones de este bloque, el
programa ejecutar la instruccin que se encuentre inmediatamente despus de la llave
de cierre ( } ), de este mismo bloque.
3.
Si el resultado es verdadero (distinto de cero) el bloque de instrucciones que se
ejecutara ser el que est situado inmediatamente despus de la lnea de cdigo
if(condicion). y dentro de las llaves de apertura y cierre. Una vez ejecutado este bloque de
instrucciones el programa seguir ejecutando las instrucciones que se encuentran
despus de la llave de cierre ( } ) que se sitan al final del bloque de instrucciones de la
palabra reservada else
A continuacin se te muestra un programa escrito en Lenguaje C en el que se utiliza la
sentencia if else, el cual debes editar depurar y compilar, este programa debe indicar al
usuario que introduzca un nmero entero cualquiera y despus presione la tecla enter, ya
que se haya hecho lo solicitado el programa indicar con un mensaje en pantalla si el
nmero introducido es par o no par.
El programa escrito en Lenguaje C que ejecuta las instrucciones anteriormente
mencionadas es el siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente, en el caso de


que se introduzca un nmero entero par.

Y en el caso de que se introduzca un nmero entero no par:

Fundamentos de Programacin
Unidad III. Sentencias de control
Explicacin:
En este programa se incluy la librera conio.h, ya que dentro de la funcin principal
main() se utiliza la funcin scanf().
La primer instruccin en ejecutarse dentro de la funcin main() declara e inicia una
variable de tipo entero que es indicada con cero, enseguida se muestra en pantalla la
cadena de texto "Introduce un numero entero cualquiera: " para despus almacenar el
numero tecleado en la variable nmero. Esto ya sabes cmo hacerlo.
Enseguida se encuentra la sentencia de control if la cual evala la condicin (numero%2
== 0) y observa que se est utilizando al operador % (modulo) el cual divide entre dos el
contenido que almacena la variable nmero y devuelve el residuo de esta divisin, si en
este caso el usuario introduce un numero 56554 el operador % divide entre dos y
devuelve como resultado de esta divisin un 0, ya que 56554/2 = 28277.0 y %(modulo)
devuelve nicamente el residuo de la divisin no la parte entera.
El residuo, en este caso es cero y se compara por medio del operador de comparacin
==(igual que) si el residuo es igual que cero esta nueva comparacin es verdadera, es
decir se cumple, y entonces se ejecutar la lnea de cdigo; printf( "\nEl nmero es par
\n"); escrita entre { y } esta lnea debajo de la sentencia if(numero%2 == 0).
Si por el contrario el usuario del programa introduce un 9 el operador % divide entre dos y
devuelve como resultado de esta divisin un 5, ya que 9/2 = 4.5 y %(modulo) devuelve
nicamente el residuo de la divisin no la parte entera.
El residuo, en este caso es cinco se compara por medio del operador de comparacin
==(igual que) y debido a que el residuo no es igual que cero esta nueva comparacin es
falsa, es decir no se cumple, entonces se ejecutar la lnea de cdigo; printf( "\nEl numero
no es par \n"); escrita entre { y } esta lnea debajo de la palabra reservada else.
Despus de ejecutar cualquiera de los dos bloques de instrucciones se ejecuta la funcin
system(PAUSE); que es la ltima funcin en ejecutarse dentro de la funcin principal
main().

If else if

Es posible anidar, es decir colocar otra sentencia if despus de la palabra reservada else,
esto se hace para evaluar ms de una condicin, por ejemplo si se necesitara el mismo
programa presentado en el ejemplo anterior con algunas variantes, es decir, ahora se
necesita que el usuario introduzca un numero entero cualquiera por el teclado y despus
de presionar la tecla enter la computadora debe mostrar en pantalla un mensaje indicando
si el nmero que se introdujo es mayor que 30 y menor que 60 o es un nmero mayor que
60.

Fundamentos de Programacin
Unidad III. Sentencias de control

El programa escrito en Lenguaje C que ejecuta las instrucciones anteriormente


mencionadas es el siguiente:

Explicacin:
Despus de introducir por el teclado el nmero solicitado se realiza la siguiente
evaluacin:
if(numero < 30)
si el nmero es menor que el valor 30 se ejecutar la siguiente lnea de cdigo:
{printf( "\nEl numero es menor que 30 \n");}

Fundamentos de Programacin
Unidad III. Sentencias de control

Cuyo resultado en pantalla ser el siguiente.

Si esta condicin no se cumple es decir, el nmero es mayor que 30 el programa lee la


lnea de cdigo 11 (else) y ejecuta la lnea de cdigo 12:
if(numero > 30 && numero < 60)
En esta lnea de cdigo hay dos condiciones, la primera que numero sea mayor que
treinta y la segunda que numero sea menor que sesenta, estas dos evaluaciones deben
de cumplirse (ser verdaderas) para que se ejecute el siguiente bloque de instrucciones:
{{printf( "\nEl numero es mayor que 30 y menor que 60\n ");}}
Cuyo resultado en pantalla ser el siguiente:

Nota: Para unir ms de una evaluacin, como en el caso anterior puede


hacerse uso de los operadores lgicos, en este caso el operador lgico
AND (&&) visto anteriormente.

Si esta otra condicin no se cumple (que el nmero sea mayor que 30 y menor que 60),
es decir que el nmero sea mayor de 60, se ejecuta la siguiente lnea de cdigo:
{printf( "\nEl numero es mayor que 60\n ");}

Fundamentos de Programacin
Unidad III. Sentencias de control
Cuyo resultado en pantalla ser el siguiente.

De esta forma es como puede anidarse ms de una sentencia de control if else.


Conclusin:
La sentencia de control if else permite al programador re-direccionar el flujo de ejecucin
de un programa, permitiendo as ejecutar un bloque de instrucciones u otro distinto de
acuerdo al resultado de una condicin especificada. Adems de ser posible la anidacin
de sentencias de control if else if.

Buen trabajo!
Sigue adelante con el tema 4

Fundamentos de Programacin
Unidad III. Sentencias de control
4. Sentencia de control break

Introduccin
En este apartado se te explicar cmo puedes abortar (romper) la ejecucin del ciclo for
en algn momento, antes de que este termine de ejecutarse, lo cual se hace con la
sentencia de control break
break
La sentencia de control break (romper en ingls) permite al programador detener la
ejecucin de la sentencia de control for, de acuerdo a una condicin dada, an cuando la
condicin del ciclo for se cumpla (sea verdadera).
Para ejemplificarte esta sentencia se retomara el programa realizado en el tema 1.
Sentencia de control for, el cual calcula y muestra en pantalla las coordenadas
cartesianas de un proyectil en tiro parablico. Pero ahora se le agregar una condicin
especial, esta es: si la coordenada y alcanza un valor igual o superior a 5000 el ciclo for
que calcula las coordenadas del proyectil dejara de ejecutarse, ya que a esta altura no es
necesario monitorear al proyectil.
El programa escrito en Lenguaje C que ejecuta las instrucciones anteriormente
mencionadas es el siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control
#include <stdio.h>
#include <math.h>
#include <windows.h>
#define grav 9.81
#define PI

3.141592

int main ()
{
int t;
float x=0,y=0,ang,vi;
printf( " Cual es el angulo de lanzamiento: ");
scanf("%f",&ang);
printf( "\n Cual es la velocidad inicial de lanzamiento: ");
scanf("%f",&vi);
ang = ((ang*PI)/180);
for (t=1;t <= 10; t++)
{
x = (vi*cos(ang)*t);
y = ((vi*sin(ang)*t)*(0.5*grav*t*t));
if(y >= 5000)

Si se cumple
ejecuta break;

{break; }
else
printf( "\n Coordenada %i en x = %f, coordenada en y %f. ",t,x,y);

Si no sigue la
ejecucin de for

}
system ("PAUSE");
}

Explicacin:
El cdigo fuente anterior ya se explico en el tema 1 (revsalo), nicamente se detallarn
las lneas de cdigo que se agregaron:
if(y >= 5000)
{break; }

Fundamentos de Programacin
Unidad III. Sentencias de control
else
Como se puede observar en la lnea de cdigo de la sentencia if(y >= 5000), si la variable
y que corresponde a la coordenada en y en algn momento del clculo es mayor o igual
a 5000 se ejecutar la sentencia de control break, al ejecutarse esta sentencia se rompe
el ciclo for (ya no se sigue ejecutando), despus de esto la siguiente lnea de cdigo en
ejecutarse es la que se encuentre inmediatamente despus de la llave de cierre (}) del
ciclo for, en esta caso esa lnea invoca a la funcin system(PAUSE);
Si lo anterior ocurre este sera el resultado en pantalla:

En este caso nicamente se mostraron 5 coordenadas ya que debido al ngulo de


lanzamiento y alcanzo en la 6ta. ejecucin un valor mayor o igual a 5000.
Pero si el ngulo hubiese sido mucho menor, el ciclo for se hubiera ejecutado
normalmente calculando las diez coordenadas para lo cual fue declarado.

Fundamentos de Programacin
Unidad III. Sentencias de control
Este es el resultado en pantalla de lo explicado:

Conclusin:
La sentencia de control break permite al programador romper (abortar) la ejecucin de un
ciclo for an cuando la propia condicin del ciclo for se cumpla.
break tambin es capaz de abortar la ejecucin de la sentencias de control while y Do
while.
Muy bien, buen trabajo!
Sigue adelante

Fundamentos de Programacin
Unidad III. Sentencias de control
5. Sentencia de control switch

Introduccin
Ya conoces el funcionamiento y aplicacin de la sentencia de control If else, sabes que
sta permite re-direccionar el flujo de ejecucin de un programa por un camino u otro (un
bloque de instrucciones u otro), pero y si son muchos caminos?, podras pensar que la
solucin est en el anidamiento de la sentencia if else if, pero el Lenguaje C brinda una
herramienta an ms sencilla que la sentencia de control if else, esta es la sentencia de
control switch.
switch
La sentencia de control switch permite al programador re-direccionar el flujo de ejecucin
de un programa, es decir, ejecutar un bloque de instrucciones u otro, esta decisin se
toma con base en la evaluacin de una condicin, su funcionamiento es semejante al
anidamiento de la sentencia de control if else, pero su formato es ms claro,
regularmente esta sentencia de control se utiliza para elegir una opcin de varias
disponibles de acuerdo a un men mostrado en pantalla.
La sintaxis de la sentencia de control switch es la siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control
Descripcin:
variable es una variable de cualquier tipo que almacena un valor idntico a cualquiera de
las etiquetas escritas en los diferentes casos (case).
case opcin_1: es una etiqueta (sin incluir la palabra reservada case).
Case es una palabra reservada que se utiliza nicamente con la sentencia de control
switch, la interpretacin ms adecuada para la misma es caso, esta palabra siempre
tiene que estar acompaada por una etiqueta escrita inmediatamente despus y separada
por un espacio en blanco.
Una etiqueta es una instruccin que nicamente sirven como referencia para el
compilador, es decir, no se ejecutan, no muestran nada en pantalla y no realizan ninguna
operacin, para nombrar una etiqueta se toman las mismas reglas que para nombrar una
variable o una constante, al final de la lnea de cdigo de una etiqueta se pone el
operador : (dos puntos), como puedes ver en el cdigo fuente anterior hay dos etiquetas
opcin_1: y opcin_2:.
Las instrucciones que se escriban dentro de { y } debajo de la lnea de cdigo
switch(variable), son los diferentes bloques de instrucciones que se ejecutaran de
acuerdo al valor que contenga variable
La ejecucin de la sentencia de control switch sucede as;
1.

Se evala el contenido de variable.

2.
Si el contenido de variable corresponde con alguna de las etiquetas escritas en
alguno de los casos (case), se ejecutar el bloque de instrucciones escrito despus de
esta etiqueta, por ejemplo si se tiene la siguiente sentencia de control switch:

Fundamentos de Programacin
Unidad III. Sentencias de control

Si variable almacena un 1, este valor almacenado corresponde con la etiqueta escrita en


el primer caso.
Entonces se ejecutar la instruccin a = a+b; despus de ejecutarse esta instruccin se
realiza la instruccin sentencia de control break; la cual como ya sabes, permite romper la
accin de otra sentencia de control, despus de esto la siguiente sentencia en llevarse a
cabo ser la que est escrita inmediatamente despus de } de la sentencia de control
switch.
Pero si variable almacena un 2, este valor almacenado corresponde con la etiqueta
escrita en el segundo caso.
Entonces no se ejecutara el bloque de instrucciones correspondiente a la etiqueta case 1:
sino el bloque correspondiente a la etiqueta case 2: es decir la instruccin a = a-b;
despus de ejecutarse esta instruccin se realiza la instruccin sentencia de control
break; y posteriormente la siguiente sentencia en desarrollarse ser la que este escrita
inmediatamente despus de } de la sentencia de control switch.
Pero si variable almacena un nmero diferente, es decir que no corresponda con ninguna
etiqueta, se ejecutara el bloque de instrucciones escrito debajo de la etiqueta default:
ejecutndose igual que los casos anteriores.

Fundamentos de Programacin
Unidad III. Sentencias de control

Nota: La sentencia de control switch puede tener el nmero de


casos que desees.

Para ejemplificar lo anteriormente explicado se te mostrar un programa escrito en


Lenguaje C que muestra un men de opciones en pantalla, de la siguiente forma:

Para mostrar tu nombre en pantalla presiona 1.


Para mostrar tu primer apellido en pantalla presiona 2.
Para mostrar tu segundo apellido en pantalla presiona 3.

El nmero que el usuario del programa tecle se almacenara en una variable llamada
opcin de tipo int, y de acuerdo al valor que almacene la variable opcin se ejecutar el
caso que muestre nicamente la informacin correspondiente.
El programa escrito en Lenguaje C que ejecuta las instrucciones mencionadas es el
siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main()
{
int opcion;
printf( " Para mostrar tu nombre en pantalla presiona 1.\n " );
printf( " Para mostrar tu primer apellido en pantalla presiona 2.\n " );
printf( " Para mostrar tu segundo apellido en pantalla presiona 3.\n " );
scanf( "%i", &opcion );
switch( opcion )
{
case 1:
printf( " RoDrIgO \n" );
break;
case 2:
printf( " AvIlEs \n" );
break;
case 3:
printf( " ViLlArEaL \n" );
break;
default:
printf( " nO ES UN CASO VALIDO\n" );
}
system ("PAUSE");
}

Fundamentos de Programacin
Unidad III. Sentencias de control
El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:
Si el usuario presion 1:

Si el usuario presiono 2:

Si el usuario presiono 2:

Pero si el usuario se equivoco o a propsito escribi un 10 esto es lo que ejecutara el


programa:

Fundamentos de Programacin
Unidad III. Sentencias de control
Explicacin:
En este programa escrito en Lenguaje C, de acuerdo a el nmero que almacene la
variable de tipo entero llamada opcin (su valor se solicita por teclado) se ejecutar el
bloque de instrucciones.
En este caso una funcin printf() que muestra en pantalla el nombre o el primer apellido o
el segundo apellido y si el numero tecleado no corresponde con ninguna etiqueta se
ejecutara el caso llamada default, el cual tambin muestra una cadena de texto indicando
el error.
Conclusin
La sentencia de control switch permite ejecutar un bloque de instrucciones, de varios
disponibles de acuerdo al contenido de una variable de cualquier tipo, siempre y cuando
corresponda a una etiqueta previamente escrita en alguno de los casos (case) de la
sentencia switch, de no coincidir el valor de dicha variable con ninguna etiqueta se
ejecutar un bloque de instrucciones escrito en un caso llamada default.
Esta sentencia de control puede tener el nmero de casos que el programador decida.

Bien!
Sigue con el ltimo tema!

Fundamentos de Programacin
Unidad III. Sentencias de control
6.Sentencia de control goto

Introduccin:
Con este tema, finalizas el estudio de la unidad temtica III y con ella el conocimiento de
las sentencias de control.
Ahora conocers como re-direccionar el flujo de ejecucin de un programa saltando
bloques enteros de cdigo, para realizar esto el Lenguaje C brinda al programador la
sentencia de control goto.
goto
La sentencia de control goto permite re-direccionar la ejecucin del programa saltando
bloques de cdigo hasta encontrar una etiqueta. La interpretacin en espaol del nombre
de esta sentencia seria: Ir a.
A continuacin se te muestran dos formas de sintaxis de esta sentencia de control:
Sintaxis 1:

Sintaxis 2:

E:

goto E;

/*lneas

/*lneas

de codigo*/

de codigo*/

goto E;

E:

Como puedes ver la etiqueta se puede escribir debajo de la instruccin goto.

Recuerda que: Una etiqueta es una instruccin que nicamente sirven como
referencia para el compilador, es decir, no se ejecutan, no muestran nada en
pantalla y no realizan ninguna operacin, para nombrar una etiqueta se toman las
mismas reglas que para nombrar una variable o una constante, al final de la lnea
de cdigo de una etiqueta se escribe el operador : (dos puntos).

Fundamentos de Programacin
Unidad III. Sentencias de control

Descripcin:
E: es una etiqueta, que sirve para ayudar a la instruccin goto a identificar un bloque de
cdigo.
La sentencia de control goto indica al compilador que debe re-direccionar el flujo de
ejecucin del programa, es decir, debe irse y ejecutar la siguiente instruccin escrita
despus de la etiqueta.
La ejecucin de la sentencia de control goto de los ejemplos anteriores sucede as:
En la sintaxis 1:
1. El compilador primero encuentra la etiqueta llamada E: no ejecuta ninguna accin
simplemente nota la existencia de esta etiqueta.
2. Ejecuta la(s) siguiente(s) instruccin(es) que se encuentren escritas despus de la
etiqueta.
3. Al ejecutarse la sentencia goto el flujo de ejecucin del programa ser redireccionada, es decir se volver(n) a ejecutar la(s) siguiente(s) instruccin(es) que
se encuentren escritas despus de la etiqueta E: de forma indefinida.
En la sintaxis 2:
1. El compilador primero ejecuta la sentencia de control goto el flujo de ejecucin del
programa ser re-direccionado, es decir, ya no se ejecutarn las instrucciones que
se encuentran escritas en entre la instruccin goto E; y E: sino que se van a
ejecutar la(s) siguiente(s) instruccin(es) que se encuentren escritas despus de la
etiqueta.
A continuacin se te presenta un cdigo fuente en el que se te explicar el funcionamiento
de esta sentencia:
#include <stdio.h>
int main()
{
printf( " RoDrIgO \n" );
goto Aqui;
printf( " AvIlEs \n" );

Re++direccionamiento, salto de la instruccin.

Fundamentos de Programacin
Unidad III. Sentencias de control
Aqui:
system ("PAUSE");
}
Explicacin:
En este cdigo fuente se muestra por pantalla la palabra RoDrIgO por medio de la funcin
printf(), enseguida se encuentra la sentencia de control goto la cual re-direcciona el flujo
de ejecucin del programa y salta la siguiente lnea de cdigo: printf( " AvIlEs \n" ); para
ejecutar la instruccin escrita despus de la etiqueta Aqui: que es la invocacin a la
funcin system (PAUSE);
Para ejemplificar el uso de esta sentencia de control se utilizar el programa realizado en
el tema anterior, se desea que este programa se repita continuamente en forma infinita,
es decir, que se pregunte en pantalla una y otra vez la opcin a elegir.
El programa escrito en Lenguaje C que ejecuta las instrucciones anteriormente
mencionadas es el siguiente:

Fundamentos de Programacin
Unidad III. Sentencias de control
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main()
{
int opcion;
INICIO: /*etiqueta*/
printf( " Para mostrar tu nombre en pantalla presiona 1.\n " );
printf( " Para mostrar tu primer apellido en pantalla presiona 2.\n " );
printf( " Para mostrar tu segundo apellido en pantalla presiona 3.\n " );
scanf( "%i", &opcion );
switch( opcion )
{
case 1:
printf( " RoDrIgO \n" );
break;
case 2:
printf( " AvIlEs \n" );
break;
case 3:
printf( " ViLlArEaL \n" );
break;
default:
printf( " nO ES UN CASO VALIDO\n" );
}
goto INICIO;/*te vas a etiqueta y nunca termina el programa*/

Fundamentos de Programacin
Unidad III. Sentencias de control
El resultado de editar depurar y compilar este cdigo fuente es el siguiente.

Explicacin:
Al colocar la sentencia de control goto INICIO; se le indica a la computadora que debe
volver a ejecutar todas las instrucciones que se encuentran escritas debajo de la etiqueta
llamada INICIO: de esta forma el programa se repetir en un ciclo infinito, es decir nunca
terminara.
Muy bien, es momento de aplicar tu aprendizaje mediante la realizacin de una actividad
integradora, cuyo objetivo es que desarrolles software (un programa) eficiente que aplique
las sentencias de control con que cuenta el lenguaje C para dar solucin a problemas de
ingeniera.
Actividad integradora 2. Aplicando las sentencias de control
Instrucciones:
1. Realiza un programa escrito en Lenguaje C a travs de la programacin
estructurada capaz de controlar el movimiento de un motor a pasos de tipo
unipolar, este motor debe mover el alern de un avin en un rango de 90 grados,
(45 grados hacia arriba y 45 grados hacia abajo). El ngulo de giro de este motor a
pasos es de 1.8 grados por paso, este motor proporcionara el impuso necesario
para que se mueva un alern. En el siguiente video se te muestra como debe ser el
movimiento de los alerones:

Fundamentos de Programacin
Unidad III. Sentencias de control
2. El usuario del programa debe escoger de un men de opciones la direccin en que
se mover el alern, hacia arriba o hacia abajo. De esta forma:

3. Si se elijen las opciones 1 2, el programa debe preguntar el nmero de pasos que


se mover el alern, recuerda que no deben ser mas de 45 grados (hacia arriba o
hacia abajo) los que se mueva o de lo contrario podra haber alguna avera
mecnica, por lo anterior debes asegurar que el programa no acepte un nmero de
pasos que sobrepase este rango de movimiento.
El programa tambin debe mostrar en pantalla el nmero de paso que se est
ejecutando y el ngulo en el que se encuentra el eje del motor, esto en la prctica
real le ayudara al piloto para saber la posicin exacta del alern en cuestin.
Observa la siguiente imagen la cual te muestra el resultado que se obtiene.

4. Observa que se eligi la opcin 1 y se decidi mover el alern 7 pasos (esto no


sobrepasa el rango de giro del alern), el programa nicamente ejecuta 7 pasos, y
en pantalla se muestra el ngulo de giro en el que se encuentra el eje del motor y
el dato enviado al puerto, como puedes observar los datos enviados son 1, 2, 4, 8,
1, 2 y 4 que justamente harn que el motor se mueva 7 pasos y este queda
esttico a un ngulo de giro de 12.6 grados.
5. Si se escoge la opcin nmero 2, el programa se comportar de forma similar que
en la opcin nmero 1, con la diferencia de que ahora el alern se mover hacia
abajo, por este motivo los datos enviados al puerto deben ser invertidos, observa la
siguiente imagen:

Fundamentos de Programacin
Unidad III. Sentencias de control

6. Como puedes observar se repiti 3 veces el ciclo de 4 pasos para que el motor
girara exactamente 12 pasos, que fue lo que el usuario tecleo, el rotor del motor
giro exactamente 21.6 grados y se quedo en esta posicin (esttico).
7. Si despus de elegir una opcin el usuario desea elegir otra diferente, el programa
debe permitirlo sin tener que volver a ejecutarse, es decir, el programa despus de
ejecutar los pasos indicados debe volver a mostrar el men de opciones y permitir
se vuelva a repetir el proceso de nuevo, hasta que el usuario elija la opcin
correspondiente a salir, de esta forma:

Fundamentos de Programacin
Unidad III. Sentencias de control

8. Como apoyo puedes descargar y probar el archivo ejecutable que da solucin a


esta actividad as sabrs exactamente lo que tienes que hacer, es decir el
resultado a donde debes llegar. Da clic en el siguiente ttulo para que se te muestre
el ejecutable.
9. Si no conoces el funcionamiento de un motor a pasos puedes revisar la informacin
que se te muestra a continuacin, la cual te lo explicar, da clic en el siguiente
ttulo para que te aparezca dicha informacin:
10. Ya que hayas terminado de leer la informacin referente a los motores a pasos por
favor revisa el siguiente archivo (Material de apoyo), el cual te va a ayudar mucho
para la realizacin de esta actividad.
Material de apoyo
Para controlar el motor a pasos unipolar es necesario que la computadora envi a la
pantalla de la computadora los datos precisos para moverlo y estos datos son los
siguientes:
1. Para que un motor se mueva un primer paso es decir nicamente se mueva 1.8
grados y se quede esttico en esa posicin es necesario que el programa envi un
numero 1 a la salida estndar de la computadora (la pantalla).
2. Para que el motor se mueva un segundo paso es decir, se mueva nuevamente 1.8
grados y se quede esttico en esa posicin (hasta ahora abra girado 3.6 grados) es
necesario que el programa envi un numero 2 a la pantalla de la computadora.

Fundamentos de Programacin
Unidad III. Sentencias de control
3. Para que el motor se mueva un tercer paso es decir, nuevamente se mueva 1.8
grados y se quede esttico en esa posicin (hasta ahora abra girado 5.4 grados) es
necesario que el programa envi un numero 4 a la pantalla de la computadora.
4. Para que el motor se mueva un cuarto paso es decir, se mueva nuevamente 1.8
grados y se quede esttico en esa posicin (hasta ahora abra girado 7.2 grados)
es necesario que el programa envi un numero 8 a la pantalla de la computadora.
5. Para que el motor se siga moviendo es necesario repetir los pasos anteriores,
comenzando por el punto 1, lo que hara un ciclo.
Recuerda que:
Para que un motor a pasos que posee un ngulo de giro de 1.8 grados por paso gire una
vuelta completa, ste tendr que dar 200 pasos, en otras palabras tendras que repetir la
siguiente secuencia 50 veces.
Numero de
paso
Paso 1
Paso 2
Paso 3
Paso 4

Dato
enviado
1
2
4
8

Si deseas que el motor se mueva en sentido contrario se invierte el orden de los datos
enviados, de esta forma:
Numero de
paso
Paso 1
Paso 2
Paso 3
Paso 4

Dato
enviado
8
4
2
1

11. Ya tengas listo tu programa, edtalo, depralo y complalo en el compilador Dev


C++
12. El archivo que debes enviar a tu profesor para que se te evale es el cdigo
fuente, es decir el archivo con extensin .c que se cre.
13. Recuerda que si tienes alguna duda puedes pedir la ayuda de tu asesor.
Cuando tengas listo t archivo gurdalo en tu PC y envalo a tu profesor con tus datos en
el siguiente formato: apellidopaterno_materno_nombre_actividadnumero

Fundamentos de Programacin
Unidad III. Sentencias de control

Conclusin:
Muy bien, acabas de terminar la unidad temtica III, y con ella has adquirido ms
conocimientos que te van a ser tiles al realizar programas en Lenguaje C, hasta el
momento sabes cmo repetir un bloque de instrucciones determinado nmero de veces
utilizando a la sentencia for.
Tambin sabes cmo repetir de forma indefinida un bloque de instrucciones en funcin de
una condicin gracias a la sentencia while. Aunado a esto aprendiste a re-direccionar el
flujo de la ejecucin de un programa con la implementacin de las sentencias if else o
switch
Finalmente aprendiste a re-direccionar el flujo de ejecucin de un programa saltando
lneas de cdigo con la sentencia goto.
Solo falta una unidad para que concluyas esta unidad de aprendizaje.

Sigue adelante con la unidad 4!

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Unidad IV. Estructuras de datos

Mapa de conceptos

Introduccin:
Hasta ahora conoces los diferentes tipos de variables con que cuenta el Lenguaje C,
sabes cmo declarar variables y asignar un valor a las mismas. Pero, qu pasa cuando
es necesario declarar una gran cantidad de variables?, por ejemplo si quisieras almacenar
y promediar el valor de la temperatura de cada hora del da, tendras que declarar
veinticuatro variables, aunque no es difcil declarar una variable quiz pueda ser laborioso
declarar 24 variables y todas con distinto nombre, adems de que posiblemente tal
declaracin ocupar ms de una lnea de cdigo.
Si lo que se desea es almacenar y promediar las temperaturas de un da pero
monitoreando esta magnitud cada minuto entonces tendras que declarar mil
cuatrocientas cuarenta variables, imagina cuanto trabajo representara esto, adems de la
complejidad de leer y entender un cdigo tan extenso a consecuencia de tantas
declaraciones.
El Lenguaje C brinda al programador una herramienta eficaz, flexible y sencilla para hacer
ms sencilla la declaracin y manejo de una gran cantidad de variables del mismo tipo,
esta herramienta es conocida con el nombre de arreglos (arrays), y esto es lo que
veremos en esta unidad.
1. Arreglos (Arrays) Unidimensionales
Los arreglos unidimensionales son un conjunto de variables de un mismo tipo (tipo de
variable) cuyo nombre se diferencia en el ndice (nmeros entre corchetes). Por ejemplo
el arreglo: numero[20] y numero[21]. Estos son dos elementos de un mismo arreglo,
ambos se llaman numero[ ] pero como en un mismo cdigo fuente no puede haber dos
variables (en este caso los elementos del arreglo) con el mismo nombre es por esto que
133

Fundamentos de Programacin
Unidad IV. Estructuras de datos
se diferencian por el ndice, es decir el numero entre los corchetes [ y ]. Entonces uno se
llama numero[] con ndice veinte y el otro numero[] con ndice veintiuno.

Nota: Los arreglos tambin son conocidos con los nombres de arrays,
matrices o vectores. Sin embargo, en esta unidad de aprendizaje, se va a
usar el trmino arreglo.
Esta es la sintaxis necesaria para declarar un arreglo: Tipo nombre [
tamao ];
Descripcin:
Tipo: es cualquier tipo de variable, por ejemplo char, int, float o doubl.
nombre: corresponde al nombre del arreglo, este nombre obedece a las mismas reglas
que el nombre de una variable o el de una constante.
[tamao]: Lo encerrado entre corchetes (ndice) es el tamao del arreglo, es decir el
nmero de variables que forman al arreglo, este puede estar determinado por el valor que
almacena una variable o una constante y debe de ser un nmero entero, es posible omitir
en la declaracin de un arreglo el tamao y posteriormente se puede asignar, por ejemplo
en tiempo de ejecucin, es decir cuando el programa est funcionando.
Se te muestra un ejemplo en el que se declara un arreglo de nmeros enteros llamado
num con tres elementos, lo cual se hace de la siguiente forma:
int num[3];
Con esta lnea de cdigo se estn declarando tres variables de tipo entero llamadas
num[0], num[1] y num[2].
Una alternativa para realizar esta misma declaracin es la siguiente:
Int r =3;
int num[r];
En este caso tambin se declaro un arreglo de tres variables de tipo entero llamadas
num[0], num[1] y num[2]. Observa que el tamao del arreglo est determinado por el valor
de la variable r.
En el Lenguaje C, todos los arreglos usan cero como ndice para el primer elemento. Por
tanto, el ejemplo anterior declara un arreglo de enteros con tres elementos desde num[0]
hasta num[2].

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Siguiendo con el ejemplo anterior, para asignar un valor a un elemento de un arreglo se
hace lo siguiente:
num[2] = 15; /* Asigna 15 al 3er elemento del arreglo llamado num*/
Con este arreglo se obtendrn dos elementos: num[0] y num[15], como puedes observar
el valor de 15 se le dio al tercer elemento. Recuerda que existe el elemento num[0],
num[1] y num[2], ya que los inician su ndice desde cero
Otro ejemplo de cmo asignar valores a los elementos de un arreglo es el siguiente:
int temp[10] = { 15, 18, 20, 23, 22, 24, 22, 25, 26, 25 };
Ahora el primer elemento que ser temp[0] almacenar un 15. El elemento 1 (el segundo)
almacenara un 18 y el ltimo elemento es decir, el decimo almacenara un 25. Como
puedes observar se utilizaron los operadores { } (llaves de apertura y cierre) para realizar
la asignacin, adems de que los nmeros asignados estn separados por el operador
coma (,).
Para acceder al valor almacenado en un elemento de un arreglo y posteriormente
guardarlo en otra variable (que no sea un elemento de un arreglo) se puede realizar lo
siguiente:
int num;
int listA[3];
listA[2] = 3;
num = listA[2]; /* Asigna el contenido del 3er elemento a la variable num es decir un
nmero 3 se almacena en la variable num*/
Para aclarar lo anteriormente explicado, analiza el siguiente cdigo fuente, el cual vas a
utilizar en la siguiente actividad que realices:

Fundamentos de Programacin
Unidad IV. Estructuras de datos
#include <stdio.h>
#include <windows.h>
int main ()
{
int hora;
int
temp[24]={15,18,20,23,22,24,22,25,26,25,24,22,21,20,18,17,16,17,15,14,14,14,1
3,12};
for (hora=0 ; hora<24 ; hora++ )
{
printf( "La temperatura a las %i hrs, era de %i grados.\n", hora, temp[hora] );
}
system ("PAUSE");
}

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
En la primer lnea de cdigo, dentro de la funcin principal main() se declaro una variable
llamada hora de tipo entero de esta forma: int hora; Enseguida se encuentra la siguiente
lnea de cdigo:
int temp[24]={15,18,20,23,22,24,22,25,26,25,24,22,21,20,18,17,16,17,15,14,14,14,13,12};
La lnea de cdigo anterior declara un arreglo de tipo entero (tipo de variable) llamado
temp[ ], el tamao de este arreglo es veinticuatro. (Este arreglo declara 24 variables de
tipo int llamadas temp[ ] diferenciadas por el ndice) y enseguida por medio del operador
de asignacin ( = ) se almacenan 24 constantes (nmeros) a cada uno de los elementos
del arreglo, es decir el primer elemento del arreglo temp[0] almacena un quince, el
segundo elemento temp[1] almacena un dieciocho, el tercer elemento temp[2], almacena
un 20 y as sucesivamente hasta el ltimo elemento del arreglo temp[23] que almacena un

Fundamentos de Programacin
Unidad IV. Estructuras de datos
doce, observa que se utilizaron los operadores { y } para realizar la asignacin, adems
de que los nmeros asignados estn separados por el operador coma ( , ).
Despus de asignar un valor a cada uno de los elementos del arreglo se utiliza la
sentencia de control for para mostrar por pantalla el contendido (lo que almacena) de
cada uno de los elementos del arreglo, observa que la sentencia de control for ejecutara
24 veces la funcin printf() que se encuentra entre { y } de la sentencia for, ya que as lo
indica la condicin hora<24; La funcin printf() muestra la hora y el contenido de cada uno
de los elementos que componen el arreglo, uno por uno es decir primero muestra el
contenido del elemento cero temp[0] (se mostrara un numero quince en pantalla),
despus se mostrara en pantalla el contenido del segundo elemento temp[1] (un numero
dieciocho) y as sucesivamente hasta mostrar el contenido del ltimo elemento. Observa
la siguiente lnea de cdigo que pertenece al cdigo fuente anterior:
printf( "La temperatura a las %i hrs, era de %i grados.\n", hora, temp[hora] );
Por qu el primer elemento en mostrarse en pantalla es el elemento temp[0]?
Respuesta:
Observa el siguiente fragmento de cdigo fuente escrito en la funcin printf() de este
cdigo fuente:
\n", hora, temp[hora] );
Nota que el nmero de elemento que se mostrara en pantalla est determinado por el
valor de una variable llamada hora de tipo entero, esta variable fue iniciada con cero; for
(hora=0 ; hora<24 ; hora++ ) por lo tanto la primera vez que se ejecuta printf() el nmero
de elemento que se mostrara en pantalla ser temp[0].
Despus de ejecutarse una vez la funcin printf() se incrementa la variable hora en una
unidad, (si tienes dudas de esto puedes revisar sentencia de control for vista
anteriormente) por lo tanto la siguiente vez que se ejecute printf() el contenido del
elemento del arreglo que se mostrara en pantalla es el que almacena temp[1]. Y as se
irn mostrando uno a uno el contenido de cada uno de los elementos del arreglo, hasta
que deje de cumplirse la condicin de la sentencia de control for.
Ya sabes lo que es un arreglo y como funciona, ahora realiza la siguiente actividad en la
que pondrs en prctica la realizacin de un programa que implemente arreglos a travs
de la programacin estructurada.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Actividad de aprendizaje 13. Arreglos unidimensionales
Instrucciones:
1. Edita, depura y compila el cdigo fuente que se te acaba de explicar, en el cual
agregaras la siguiente caracterstica: el tamao del arreglo se tiene que ingresar
por el teclado de la computadora en tiempo de ejecucin.
2. El valor que almacenar cada uno de los elementos del arreglo tambin se debe
introducir por el teclado y cuando se haya introducido el ltimo valor del ltimo
elemento, se mostrar en pantalla la informacin introducida, para corroborar que
se almaceno correctamente en cada uno de los elementos del arreglo.
3. Ya que hayas editado, depurado, compilado y funcione correctamente el programa
sube a la plataforma para su evaluacin el archivo del cdigo fuente, es decir el
archivo con extensin .c que se cre.
Recuerda que si te surgen dudas debes consultar a tu asesor.
Cuando tengas listo tu archivo gurdalo en tu PC y envalo a tu profesor con tus datos en
el siguiente formato: apellidopaterno_materno_nombre_actividadnumero
Muy bien, contina practicando la implementacin de arreglos en un programa realizando
la siguiente actividad:
Actividad de aprendizaje 14. Mas arreglos
Instrucciones:
Para realizar correctamente el programa es necesario que conozcas que es un altmetro,
como funciona y para qu sirve, d clic sobre el siguiente hipervnculo para que se te
despliegue esta informacin:
En caso de que tengas problemas para descargar el archivo, consulta la siguiente
direccin: http://www.manualvuelo.com/INS/INS23.html
1. Imagina que eres el encargado de realizar un programa que monitorea, almacena y
realiza la media aritmtica del muestreo realizado al altmetro de un avin tipo
Cessna 500 Citatio, en vuelo.
2. El programa que vas a realizar debe monitorear las mediciones que realiza el
altmetro instalado en el avin, como no cuentas con un altmetro y la interfaz
electrnica para conectar este instrumento de medicin a la computadora, el
usuario del programa simular estas lecturas introduciendo el valor de la altitud por
el teclado.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
3. Adems de monitorear, almacenar y obtener la media aritmtica de estas lecturas
el programa debe mostrar en pantalla si la altitud de vuelo es apropiada o no, (toma
como referencia 4500 ft a 5000ft como una altitud apropiada). Si en algn momento
la altitud introducida por el usuario es menor que 4500 ft el programa debe mostrar
un mensaje en la pantalla de la computadora indicando que la altitud es ms baja
que lo permitido. Ahora bien si en algn momento la altitud introducida por el
usuario del programa es superior a 5000 ft el programa mostrara un mensaje en
pantalla indicando que la altitud es ms alta que lo permitido.
4. El programa nicamente monitoreara y almacenara 10 lecturas, despus de

almacenar y mostrar el mensaje correspondiente a la ltima lectura se desplegarn


en pantalla los valores introducidos previamente para corroborar que fueron
almacenados correctamente en el arreglo, es decir el contenido de las diez
variables que almacenan estos valores, adems se debe mostrar en pantalla la
media aritmtica de dichas mediciones, despus de mostrar esta informacin el
programa se repetir indefinidamente.
Ya que hayas editado, depurado, compilado y funcione correctamente el programa sbelo
a la plataforma para su evaluacin el archivo del cdigo fuente, es decir el archivo con
extensin .c que se cre.
Cuando tengas listo t archivo gurdalo en tu PC y envalo a tu profesor con tus datos en
el siguiente formato: apellidopaterno_materno_nombre_actividadnumero
Conclusin:
Un arreglo que tambin es conocido con el nombre de array, matriz o vector es un
conjunto de variables del mismo tipo (tipo de variable) cuyo nombre se diferencia en el
ndice.
Su tarea es declarar ms de una variable del mismo tipo en una sola lnea, para asignar o
acceder a la informacin que almacena cada uno de los elementos de un arreglo el
programador puede hacer uso de las sentencias de control for, while o Do while.
Una caracterstica muy importante de los arreglos es que al declararlos es posible omitir el
tamao que tendr el arreglo para despus indicarlo por medio de una variable, incluso en
tiempo de ejecucin del programa.
Buen trabajo, sigue adelante!

Fundamentos de Programacin
Unidad IV. Estructuras de datos
2. Arreglos de caracteres (strings)
Introduccin:
Hasta este momento has trabajado con frases o palabras mostradas por pantalla
auxilindote de la funcin printf(), pero qu sucede si es necesario introducir y almacenar
una palabra o frase tecleada por el usuario es posible?.
Recuerda que el tipo de variable char permite almacenar un solo carcter por cada
variable, entonces, si por ejemplo, se quisiera almacenar el nombre Emanuel sera
necesario declarar siete variables de tipo char para as almacenar cada uno de los siete
caracteres que forman este nombre.
Imagina cuantas variables tendras que declarar para almacenar el nombre completo de
una persona incluyendo los apellidos o si quisieras almacenar el texto de una carta o un
escrito.
Ya sabes cul es la herramienta que utilizaras para
supuesto, los arreglos.

resolver este problema? Por

Los arreglos de caracteres son un conjunto de variables de un mismo tipo (tipo de variable
char) cuyo nombre se diferencia en el ndice. Por ejemplo el arreglo: nombre[7] y
nombre[2].
Estos son dos elementos de un mismo arreglo, ambos se llaman nombre[ ] pero como en
un mismo cdigo fuente no puede haber dos variables (en este caso los elementos del
arreglo de caracteres) con el mismo nombre es por esto que se diferencian por el ndice,
es decir el numero entre [ y ].
Entonces uno se llama nombre[ ] con ndice siete y el otro nombre[ ] con ndice dos.
Al declarar ms de una variable de tipo char es posible almacenar una palabra o una frase
dentro de un arreglo (cada elemento del arreglo almacena un carcter).

Nota: Los arreglos de caracteres tambin son conocidos con el nombre de


strings o cadenas de texto. Sin embargo, en esta unidad de aprendizaje,
vamos a usar el trmino arreglo de caracteres.

Esta es la sintaxis necesaria para declarar un arreglo de caracteres: char nombre [


tamao ];

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Descripcin:
char: es el tipo de variable capaz de almacenar un carcter dentro de una variable.
nombre: corresponde al nombre del arreglo de caracteres, este nombre obedece a las
mismas reglas que el nombre de una variable o el de una constante.
[tamao]: es el tamao del arreglo de caracteres, es decir, el nmero de variables que
forman al arreglo.
El tamao del arreglo de caracteres puede estar determinado por el valor que almacena
una variable o una constante, el tamao de un arreglo de este tipo debe de ser un nmero
entero. Es posible omitir en la declaracin de un arreglo de caracteres el tamao, para
posteriormente asignarlo, por ejemplo, en tiempo de ejecucin, es decir, cuando el
programa est funcionando.
A continuacin se te muestra un ejemplo en el que se declara un arreglo de caracteres
llamado nom con tres elementos, lo cual se hace de la siguiente forma:
char nom[3];
Con esta lnea de cdigo se est declarando a tres variables de tipo char llamadas
nom[0], nom[1] y nom[2].
Una alternativa para realizar esta misma declaracin es la siguiente:
Int r =3;
char nom[r];

En este caso tambin se declar un arreglo de tres variables de tipo char llamadas
nom[0], nom[1] y nom[2]. Observa que el tamao del arreglo est determinado por el valor
de la variable r.

Recuerda que en el Lenguaje C, todos los arreglos usan cero como ndice para el primer
elemento. Por tanto, el ejemplo anterior declara un arreglo de caracteres con tres
elementos desde nom[0] hasta nom[2].

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Siguiendo con el ejemplo anterior, dos formas de asignar un valor a un elemento de un
arreglo son las siguientes:
nom[2] = A; /* Asigna el carcter A al 3er elemento del arreglo llamado nom*/
Observa que para realizar la asignacin del carcter A se utiliz al operador comilla
simple () en lugar del operador comilla doble (), esto se debe a que es un solo carcter el
que se est asignando.
nom[2] = 65; /* Asigna el carcter A al 3er elemento del arreglo llamado nom ya
que el cdigo ASCII de la letra A es 65 */
Ahora se te mostrar cmo asignar varios valores a los elementos de un arreglo:
char nom[7] = { 'E','m','A','n','U','e','L' };
En este arreglo el primer elemento que es nom[0] almacenar un carcter E.
El segundo elemento que es nom[1] almacenar un carcter m,
El tercer elemento que es nom[2] almacenar un carcter A
Y as sucesivamente hasta llegar al sptimo elemento que es nom[6] que almacenar un
carcter L.
Para acceder al valor almacenado en un elemento de un arreglo de caracteres y
almacenarlo en otra variable (que no es un elemento de un arreglo) se puede realizar lo
siguiente:
char nom;
char listA[3];
listA[2] = x;
nom = listA[2]; /* Asigna el contenido del 3er elemento a la variable nom es decir el
carcter x se almacena en la variable nom*/
A continuacin se te muestra un cdigo fuente en el cual se utiliza un arreglo, analzalo:

Fundamentos de Programacin
Unidad IV. Estructuras de datos

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

1er sentencia for

2da sentencia for

3er sentencia for

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Explicacin:
La primer lnea de cdigo escrita despus de la { de la funcin principal main() declara
una variable llamada h de tipo entero de esta forma int h; la siguiente lnea de cdigo
declara y define un arreglo de caracteres llamado nom[ ] de tamao siete, de esta forma:
char nom[7] = { 'E','m','A','n','U','e','L' };
Al primer elemento que conforma el arreglo de caracteres, es decir a nom[0] se le asigna
el carcter E, al segundo elemento que es nom[1] se le asigna el carcter m, as hasta
almacenar en el ltimo elemento de el arreglo el carcter L, es decir, en nom[6] se
almacen el carcter L.
Enseguida se encuentra la primera sentencia de control for de este cdigo fuente, de esta
forma:
for (h=0 ; h<7 ; h++ )
{
printf( "El elemento %i del arreglo, almacena este carcater %c.\n", h, nom[h] );
}
Esta sentencia de control for, mostrar en pantalla el contenido de cada uno de los
elementos del arreglo, uno por uno, desde el elemento cero hasta el elemento seis
mostrando en pantalla el siguiente resultado:

Por qu se muestran
estos caracteres en
pantalla?

Respuesta.
Al momento de declarar el arreglo de caracteres ste se inicio almacenando en cada uno
de sus elementos los caracteres que se muestran en pantalla. Observa que dentro de la
funcin printf() se coloc el modificador %c, el cual indica a esta funcin que el tipo de
variable que se mostrar en pantalla es de tipo char.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Ahora observa las siguientes lneas de cdigo del programa:
printf( "\n\n Ahora introduce un nombre con menos de 7 caracteres: ");
scanf( "%s", nom );

En la primer lnea se utiliz a la funcin printf() para mostrar en pantalla una cadena de
texto que da la siguiente indicacin: Ahora introduce un nombre con menos de 7
caracteres
Para posteriormente por medio de la funcin scanf() introducir esta informacin por la
entrada estndar de la computadora (el teclado), y guardar esta informacin en el arreglo
llamado nom[ ].
Observa que en esta ocacin no se utilizo al operador direccin de (&) ni los operadores [
y ] solamente se coloco el modificador de formato %s que sirve para indicar a la funcin
scanf() que la informacin tecleada se almacenar en un arreglo de caracteres.
La segunda sentencia for que observas enseguida es la encargada de mostrar
nuevamente en pantalla el contenido de todos los elementos del arreglo de caracteres:
for (h=0 ; h<7 ; h++ )
{
printf( "El elemento %i del arreglo, almacena este caracter %c.\n", h, nom[h] );
}

Cuyo resultado en pantalla es el siguiente:

Como puedes observar, se tecleo la palabra Josue, esta palabra tiene cinco caracteres y
la sentencia for mencionada anteriormente muestra la nueva informacin que almacena el
arreglo (la informacin se reescribi, perdindose la anterior informacin almacenada, es
decir EmAnUeL).

Fundamentos de Programacin
Unidad IV. Estructuras de datos

Nota que el quinto elemento muestra un espacio en blanco en la pantalla.


T crees que se haya tecleado ese espacio en blanco?
Respuesta.
No, despus de teclear el ultimo carcter de la palabra Josue se presion la tecla enter, al
presionar esta tecla se aade un carcter especial al arreglo de caracteres, el carcter de
fin de cadena \0, se lee diagonal invertida cero, que sirve para indicar a la funcin scanf()
que ya no hay ms caracteres que almacenar, este carcter se almacena precisamente
en el elemento nmero cinco que es nom[4]. Este carcter especial no es imprimible en
pantalla por eso se observa un espacio en blanco.
Observa que tambin en el ltimo elemento, es decir, el sptimo (nom[6]) se muestra que
aun existe el carcter L, de la palabra EmAnUeL, esto se debe a que la palabra josue
est formada nicamente por cinco caracteres y uno ms el carcter de fin da cadena (\0),
que se almacenaron en el arreglo de caracteres solamente ocuparon 6 elementos y no
siete, por lo tanto el ltimo elemento del arreglo nom[6] no fue reescrito ni borrado,
permaneci intacto.
Por ltimo encontrars las siguientes lneas de cdigo:
printf( "\n\n Ahora introduce un nombre con mas de 7 carcateres: ");
scanf( "%s", nom );
for (h=0 ; h<7 ; h++ )
{
printf( "El elemento %i del arreglo, almacena este caracter %c.\n", h, nom[h] );
}

Estas lneas de cdigo realizan exactamente el mismo trabajo que las anteriormente
explicadas, con la nica diferencia de que ahora el nombre tecleado est compuesto por
ms de siete caracteres, el nombre teclado es BENJAMIN, el resultado en pantalla de
estas lneas de cdigo es el siguiente:

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Como puedes observar no se almaceno el ltimo carcter del nombre BENJAMIN, la N ya
que no hay un elemento (una variable) para poder realizar esta operacin, este carcter
se pierde.
Conclusin:
Un arreglo de caracteres que tambin es conocido con el nombre de array, matriz o vector
es un conjunto de variables del mismo tipo (tipo de variable char) cuyo nombre se
diferencia en el ndice.
Su tarea es declarar ms de una variable de tipo char en una sola lnea, para asignar o
acceder a la informacin que almacena cada uno de los elementos de un arreglo de
caracteres el programador puede hacer uso de las sentencias de control for, while o Do
while.
Una caracterstica muy importante de los arreglos es que al declararlos es posible omitir el
tamao que tendr el arreglo para despus indicarlo por medio de una variable, incluso en
tiempo de ejecucin del programa.
Muy bien hecho, sigue adelante!

Fundamentos de Programacin
Unidad IV. Estructuras de datos
3. Arreglos (Arrays) Bidimensionales

Introduccin:
Hasta este momento conoces lo sencillo y til que es
necesario manipular ms de una variable del mismo tipo.

utilizar arreglos cuando es

Pero qu sucede si se necesitan utilizar un nmero importante de variables, por ejemplo:


Si fuera necesario almacenar las temperaturas de todo un da, monitoreando esta
magnitud cada hora, los siete das de la semana.
Con lo aprendido hasta el momento la solucin a esta situacin sera declarar 7 arreglos
con veinticuatro elementos cada uno, aunque esta tarea no es difcil, s es muy laboriosa,
tales declaraciones ocuparn varias lneas de cdigo restando legibilidad al cdigo fuente.
Para estos casos especiales el Lenguaje de programacin C provee al programador la
capacidad de declarar arreglos multidimensionales, en esta unidad de aprendizaje
estudiars nicamente los arreglos bidimensionales.
Arreglos bidimensionales:
Los arreglos bidimensionales son un conjunto de variables del mismo tipo (tipo de
variable) agrupadas en filas y columnas, cuyo nombre se diferencia en el ndice (nmeros
entre corchetes).
Esta es la sintaxis necesaria para declarar un arreglo bidimensional:

Tipo
1 nombre [ filas
3 ][ columnas ];
2

1 Tipo: es cualquier tipo de variable, por ejemplo char, int, float o doubl.
2 Nombre: corresponde al nombre del arreglo, este nombre obedece a las mismas reglas
que el nombre de una variable o el de una constante.
3 [filas]: Lo encerrado entre corchetes (ndice) es el tamao de la primera dimensin del
arreglo, es decir el nmero de filas (variables) que forman la primera dimensin del
arreglo, este puede estar determinado por el valor que almacena una variable o una
constante y debe de ser un nmero entero, es posible omitir en la declaracin de un

Fundamentos de Programacin
Unidad IV. Estructuras de datos
arreglo el tamao y posteriormente se puede asignar, por ejemplo en tiempo de
ejecucin, es decir, cuando se ejecuta el programa.
4 [columnas]: Lo encerrado entre corchetes (ndice) es el tamao de la segunda
dimensin del arreglo, es decir el nmero de columnas (variables) que forman la segunda
dimensin del arreglo, este puede estar determinado por el valor que almacena una
variable o una constante y debe de ser un nmero entero, es posible omitir en la
declaracin de un arreglo el tamao y posteriormente se puede asignar. por ejemplo en
tiempo de ejecucin.
Por ejemplo, para declarar un arreglo bidimensional de nmeros enteros llamado num con
tres filas y dos columnas se hace de la siguiente forma:
intnum[3]num[2];
Con esta lnea de cdigo se estn declarando seis variables de tipo entero llamadas
num[0][0], num[0][1], num[1] [0], num[1][1], num[2][0] y num[2][1].
Nota: En el Lenguaje C, todos los arreglos bidimensionales usan cero
como ndice para el primer elemento.

Una alternativa para realizar esta misma declaracin es la siguiente:


int r =3,m=2;
intnum[r][m];
En este caso tambin se declar un arreglo de seis variables de tipo entero.
Observa que el tamao del arreglo est determinado por el valor de la variable r y la
variable m.
Enseguida se muestra una representacin grfica del conjunto de variables que forman al
arreglo bidimensional.

Columna 0

Fila 0
Fila 1
Fila 2

num[0][0]
num[1][0]
num[2][0]

Columna 1

num[0][1]
num[1][1]
num[2][1]

Fundamentos de Programacin
Unidad IV. Estructuras de datos

Como puedes ver, en esta representacin se indican tanto filas como columnas del
arreglo bidimensional, la lgica es la siguiente:
En el primer elemento: num[0] [0], el primer ndice pertenece a la fila 0 y el segundo ndice
pertenece a la columna 0.
En el segundo elemento: num[0] [1], el primer ndice pertenece a la fila 0 y el segundo
ndice pertenece a la columna 1.
En el tercer elemento: num[1] [0], el primer ndice pertenece a la fila 1 y el segundo ndice
pertenece a la columna 0.
En el cuarto elemento: num[1] [1], el primer ndice pertenece a la fila 1 y el segundo ndice
pertenece a la columna 1.
En el quinto elemento: num[2] [0], el primer ndice pertenece a la fila 2 y el segundo ndice
pertenece a la columna 0.
En el sexto elemento: num[2] [1], el primer ndice pertenece a la fila 2 y el segundo ndice
pertenece a la columna 1.
Si el tamao del arreglo bidimensional fuera mayor se seguira la misma lgica.
Un ejemplo de cmo asignar un valor a un elemento de un arreglo bidimensional es el
siguiente:
num[0][0] = 15; /* Asigna 15 al 1er elemento del arreglo bidimensional llamado
num*/

Nota: El elemento llamado num[0] [0] es nicamente una variable con una
direccin de memoria, por lo tanto, solamente puede almacenar un valor.
Otro ejemplo de cmo asignar valores a los elementos de un arreglo bidimensional es el
siguiente:
int t[2][2] = { { 15, 17 },
{ 18, 20 } };

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Ahora el primer elemento que ser t[0][0] almacenar un 15.
El segundo elemento t[0][1] almacenar un 17, el tercer elemento t[1][0]almacenar un 18
y el cuarto elemento t[1][1] almacenar un 20.

Como puedes observar se utilizaron los operadores { } para realizar la asignacin,


adems de que los nmeros asignados estn separados por el operador coma (,).
Lo siguiente, es la representacin grfica del arreglo:
num[0][0]=15
num[1][0]=18

num[0][1]=17
num[1][1]=20

Para acceder al valor almacenado en un elemento de un arreglo bidimensional y


almacenarlo en otra variable (que no sea un elemento de un arreglo) se puede realizar lo
siguiente:

Para aclarar lo anteriormente explicado analiza el siguiente cdigo fuente, el cual vas a
retomar posteriormente para realizar una actividad integradora.
Este cdigo fuente declara un arreglo bidimensional de siete filas y veinticuatro columnas
con lo cual se declaran ciento sesenta y ocho variables, para almacenar la temperatura
de las veinticuatro horas de un da por toda una semana, es decir, por siete das.
Despus de almacenar esta informacin el programa calcula el promedio de la
temperatura de toda la semana y lo muestra por pantalla.

Fundamentos de Programacin
Unidad IV. Estructuras de datos

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Fundamentos de Programacin
Unidad IV. Estructuras de datos

Explicacin:
En la primer lnea de cdigo despus de la llave de apertura de la funcin main() se
declara un arreglo bidimensional llamado temp de ocho filas y veinticuatro columnas, no
se asigno ningn valor a los ciento sesenta y ocho elementos que forman este arreglo
bidimensional, quedando de la siguiente forma:

floattemp[7][24];
En las siguientes dos lneas de cdigo se declararon tres variables la primera de tipo float
llamada media a la cual se le asigno un valor de cero, las siguientes dos variables
declaradas son de tipo entero sus nombres son hora y da, estas dos variables no fueron
iniciadas en esta lnea sino ms abajo dentro de las dos sentencias de control for.
Enseguida encontramos un par de sentencias de control for anidadas, es decir, una
dentro de la otra, la primera es la que a continuacin se muestra:

for( dia=1 ; dia<8 ; dia++ )


Esta sentencia de control for, se ejecutara siete veces de acuerdo a la condicin de que:
dia<8 ;
Por esto se ejecutar nicamente siete veces (los 7 das de una semana) ya que la
variable da se inicio con uno.
Dentro de esta sentencia de control for se encuentra otra sentencia for, la cual se muestra
enseguida:

Como puedes observar esta sentencia repetir el cdigo escrito entre { y } veinticuatro
veces (las 24 horas que forman un da), entonces esta ltima sentencia de control (for) se

Fundamentos de Programacin
Unidad IV. Estructuras de datos
repetir siete veces, con lo cual se solicitara la temperatura de los siete das de la semana
con sus veinticuatro horas.
El cdigo escrito entre { y } se encarga de solicitar la temperatura del da 1 a las 0 horas,
ya que estos son los valores con que se iniciaron las variables da y hora
respectivamente.
La funcin scanf( )es la encargada de solicitar por el teclado la temperatura y guardar esta
informacin en cada uno de los elementos del arreglo bidimensional, el primer elemento
donde se guarda la primera lectura es: temp[1][0], el segundo se guarda en el elemento
temp[1][1], y as sucesivamente hasta el ltimo.
Observa que los ndices que establecen el nmero de elemento estn determinados por
las variables da y hora.
Para poder calcular el promedio semanal de la temperatura es necesario sumar cada uno
de los valores introducidos para realizar esta operacin se implemento la siguiente lnea
de cdigo:

media = media +temp[dia][hora];


En la variable llamada media de tipo float se van almacenando y sumando el valor
guardado en cada uno de los elementos del arreglo bidimensional.
Por ltimo, despus de que se ejecutaron por completo las dos sentencias de control for
encontramos las siguientes lneas:

media = media/168;
printf( "El promedio de la temperatura en toda la semana es: %f\n ", media );
La primera lnea se encarga de calcular el promedio y la segunda de mostrar este
resultado en pantalla.
Conclusin
Los arreglos bidimensionales son un conjunto de variables del mismo tipo, agrupadas en
filas y columnas, cuyo nombre se diferencia en el ndice.
La implementacin de un arreglo bidimensional permite al programador manejar una gran
cantidad de variables del mismo tipo, con mayor claridad que los arreglos
unidimensionales.
Buen trabajo, cada vez falta menos para terminar!
Sigue adelante!

Fundamentos de Programacin
Unidad IV. Estructuras de datos
4. Apuntadores (Punteros) Concepto

Introduccin:
En el momento en el cual se declara una variable, el Sistema Operativo reserva un
espacio de la memoria RAM de la computadora para almacenar informacin, el tamao de
este espacio depende del tipo de variable que se est declarando, ya que, como se vio
anteriormente, los distintos tipos de variable con que cuenta el Lenguaje C tienen
diferentes tamaos.
En ocasiones el programador necesitar adems de saber la direccin de memoria (es
decir en que parte de la memoria RAM se encuentra almacenada la variable declarada),
guardar la direccin de memoria de una variable.
Las direcciones de memoria de una variable deben almacenarse en otras variables
llamadas punteros o apuntadores.
Apuntadores:
Antes de explicarte lo que es un apuntador es necesario que sepas qu es la direccin de
memoria de una variable, ya que es indispensable para comprender el funcionamiento de
un apundador.

Direccin de memoria de una variable:

La direccin de memoria de una variable es el lugar exacto en donde se encuentra


almacenada (guardada) la informacin de una variable en la memoria RAM de la
computadora. Esta direccin es un nmero escrito en el sistema de numeracin
hexadecimal, por ejemplo, los nmeros: 0022FF74 y 0011FA12 son direcciones de
memoria de dos variables.
Al momento de declarar una variable, el preprocesador y el SO son los encargados de
asignar el lugar en la memoria RAM de la computadora para almacenar la informacin de
la variable, el lugar asignado depende del espacio disponible.
Se te muestra un ejemplo de la representacin de la memoria RAM.
Cada casilla representa una direccin de memoria compuesta por un byte (8 bits) y cada
nmero de la izquierda es su direccin de memoria.
La primera casilla es la posicin 00001 de la memoria.
La segunda casilla la posicin 00002 y as sucesivamente.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Ejemplo:
Supn que ahora se declara una variable de tipo char: llamada numero, a la cual se le
asigna un valor de cuarenta y tres, de esta forma:
Int numero =43;
El contenido de esta variable se guardara en la posicin 00003 de la memoria RAM y ya
no puede ser asignada a otra variable porque queda reservada.
Observa la siguiente imagen, en ella se representa esto que se te acaba de explicar:

Para saber cul es la direccin de memoria de una variable puedes utilizar el operador
direccin de (&), el cual devuelve la direccin de memoria de su operando (es decir la
variable de la que se desea obtener la direccin).
Para aclarar esto enseguida se te muestra un ejemplo del cdigo fuente necesario para
obtener la direccin de memoria de una variable y mostrarla en pantalla.

#include <stdio.h>
#include <windows.h>
int main()
{
int numero = 43;
printf( "Direccin de numero = %p, valor de numero = %i\n", &numero, numero );
system ("PAUSE");
}

Fundamentos de Programacin
Unidad IV. Estructuras de datos
El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
La primera lnea de cdigo escrita despus de la declaracin y definicin de la funcin
principal del programa, declara una variable de tipo entero llamada numero, a la cual se le
asigna el valor de cuarenta y tres.
Enseguida se encuentra escrita la siguiente lnea de cdigo:

printf( "Direccin de numero = %p, valor de numero = %i\n", &numero, numero );


La funcin printf() se encarga de mostrar en pantalla tanto la direccin como el contenido
de la variable llamada numero, recuerda que no es lo mismo la direccin de la variable,
que en este caso es: 0022FF44 y el contenido de la variable (la informacin que
almacena), que en este caso es el numero 43.
Observa el siguiente fragmento de la lnea de cdigo anterior:

&numero, numero );
En l puedes observar la implementacin del operador direccin de (&), al colocar delante
de este operador el nombre de la variable nmero, ste operador devolver la direccin
de memoria de esta variable, la funcin printf() recibe el valor devuelto por el operador
direccin de (& y posteriormente )se encarga de mostrar en pantalla esta direccin.
Despus muestra el contenido de la variable llamada nmero.
Observa que dentro de la funcin printf() se coloc el modificador de formato %p, el cual
sirve para mostrar direcciones de memoria por pantalla.
Ahora que sabes lo que es una direccin de memoria, se te explicara lo que son los
apuntadores:
Un apuntador es una variable capaz de almacenar la direccin de memoria de una
variable.

Nota: El apuntador almacena la direccin de memoria de una variable, no


el contenido de la variable.

Fundamentos de Programacin
Unidad IV. Estructuras de datos

La sintaxis para declarar un apuntador es la siguiente:


tipo *nombre;
Tipo: es cualquier tipo de variable, por ejemplo char, int, float o doubl. Depende del tipo
de datos de la variable de la cual se pretenda almacenar su direccin de memoria. Por
ejemplo si se desea almacenar la direccin de una variable de tipo char, el apuntador que
almacene la direccin de esta variable debe ser tambin de tipo char.
*: El operador asterisco indica la declaracin de un apuntador, se escribe antes del
nombre del apuntador sin espacios en blanco.
Nombre: corresponde al nombre del apuntador, este nombre obedece a las mismas reglas
que el nombre de una variable o el de una constante.
Los apuntadores tienen otras utilidades, por ejemplo:

Nos permiten pasar argumentos (o parmetros) a una funcin y modificarlos.


Tambin permiten el manejo de cadenas de caracteres y de arreglos.
Otro uso importante es que permiten acceder directamente a la pantalla, al
teclado y a todo el hardware de la computadora,
Permiten tambin la posibilidad de acceder (leer o modificar) a esas
posiciones de memoria.

Nota: Para acceder a la informacin almacenada en una direccin de


memoria a travs de un apuntador, se usa el operador asterisco (*), debe
escribirse antes del nombre del apuntador sin espacios en blanco, este
operador no se debe confundir con el operador de la multiplicacin.
A continuacin se te muestra un cdigo fuente en el que se utilizan apuntadores,
analzalo:

Fundamentos de Programacin
Unidad IV. Estructuras de datos

#include <stdio.h>
#include <windows.h>
int main()
{
int numero = 43;
int *punt; /*Declaracin del apuntador*/
punt = &numero; /*Almacenamos la direccin en el puntero*/
printf( "Direccin de numero = %p, valor de numero = %i\n", &numero, numero );
*punt = 30; /*Guardamos 30 en la direccin de memoria que guarda el apuntador*/
printf( "Direccion de numero = %p, valor de numero = %i\n", &numero, numero );
system ("PAUSE");
}
El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
En la primer lnea de cdigo, despus de la declaracin y definicin de la funcin de este
programa (la funcin main()) se declar una variable llamada numero de tipo entero a la
cual se le asigna el valor de cuarenta y tres.
Enseguida se encuentra la lnea de cdigo siguiente:
int *punt;

Con esta lnea de cdigo se declara un apuntador llamado punt capaz de almacenar la
direccin de memoria de una variable de tipo entero.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Enseguida se encuentra escrita la siguiente lnea de cdigo:
punt = &numero;
El operador direccin de (&) devuelve la direccin de memoria de la variable llamada
nmero, este valor devuelto se asigna (guarda) en el apuntador llamado punt.

Observa que en esta asignacin no se utiliz al operador asterisco ( * ).


En este momento se dice que punt apunta a la variable nmero ya que almacena su
direccin de memoria.
Enseguida la funcin printf( ) se encarga de mostrar en pantalla, tanto la direccin de
memoria de la variable nmero como su contenido, que en este caso son: 0022FF74 y 43
respectivamente.
Despus est escrita la siguiente lnea de cdigo:
*punt = 30;
Con esta lnea de cdigo se guarda el valor de treinta dentro de la direccin de memoria
que almacena el apuntador punt, es decir, dentro de nmero, se est accediendo a la
variable nmero sin tocarla, es decir, sin realizar una asignacin directa, por ejemplo:
numero =30; gracias al apuntador punt se est modificando el contenido de una variable
sin utilizar su nombre directamente.
El cuarenta y tres que se haba guardado previamente en esta misma variable fue
reemplazado y en su lugar se guard un treinta.
Para corroborar que las lneas de la explicacin anterior son ciertas por medio de la
funcin printf() se volvi a mostrar por pantalla tanto la direccin de memoria de numero
como su nuevo contenido.
Puedes observar que la direccin de memoria no cambio, esto es porque se trata de la
misma variable, pero el contenido que almacenaba nmero si cambio (por medio del
apuntador).

Fundamentos de Programacin
Unidad IV. Estructuras de datos

Conclusin.
Un apuntador es una variable capaz de almacenar la direccin de memoria de otra
variable, cuando un apuntador almacena una direccin de memoria se dice que ste
apunta a la variable de la cual almacena su direccin, por medio de un apuntador es
posible acceder a los datos almacenados en una direccin de memoria (leerlos o
modificarlos).
Muy bien, continua con tus temas!

Fundamentos de Programacin
Unidad IV. Estructuras de datos
5. Operadores con apuntadores

Introduccin.
Como ya se mencion anteriormente los apuntadores permiten acceder a la informacin
que se almacena en otra variable por medio de su direccin de memoria, para
potencializar esta tarea los apuntadores pueden utilizarse en conjunto con los operadores
con los que cuenta el Lenguaje de programacin C a continuacin se muestra cmo
hacerlo.
Ejemplo. Una comparacin con apuntadores
El Lenguaje de programacin C permite utilizar en conjunto a los distintos operadores
(Operadores de relacin, de comparacin, a nivel de bits, lgicos, etc.), con los
apuntadores.
Observa y analiza el siguiente cdigo fuente, en el se implementan tanto operadores de
relacin como apuntadores junto con una sentencia de control.

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Fundamentos de Programacin
Unidad IV. Estructuras de datos
A primera vista pareciera que la condicin escrita dentro de los parntesis de la sentencia
de control if se cumple ya que las variables a y b son iguales, pero la imagen anterior que
muestra la ejecucin del cdigo fuente indica lo contrario.
Explicacin:
Despus de la llave de apertura de la funcin main() se declararon dos variables llamadas
a y b respectivamente, ambas de tipo entero, estas fueron iniciadas con el valor de cinco,
enseguida se declararon dos punteros llamados punt1 y punt2, ambos son capaces de
almacenar la direccin de memoria de una variable de tipo entero.
Enseguida se encuentra escrita la siguiente lnea de cdigo:

punt1 = &a; punt2 = &b;


Con esta lnea se guarda tanto la direccin de memoria de la variable a como de la
variable b, gracias al operador llamado direccin de (&), en los punteros punt1 y punt2
respectivamente.
Enseguida se encuentran escritas las siguientes tres lneas de cdigo:
if ( punt1 == punt2 )
printf( "Son iguales\n" );
system ("PAUSE");

Al evaluar la condicin escrita dentro de los parntesis por medio del operador de
comparacin igual que (==) se obtiene un resultado falso (no verdadero) y por lo tanto la
siguiente lnea de cdigo que es:

Por lo tanto el programa finaliza despus de ejecutarse la funcin system(PAUSE);


La condicin escrita entre los parntesis de la sentencia de control if no se cumple ya que
se estn evaluando los contenidos de los apuntadores punt1 y punt2, los cuales
almacenan una direccin de memoria diferente, punt1 almacena la direccin de a y punt2
almacena la direccin de b.
Esto sucedi as debido a que no se coloco el operador asterisco (*) antes del nombre de
los apuntadores.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Para poder comparar la informacin que esta almacenada en las direcciones de memoria
a donde apuntan los apuntadores, es decir para comparar el contenido de las variables a
y b es necesario colocar el operador asterisco (*) antes del nombre de los apuntadores.
El siguiente cdigo fuente incluye el cambio mencionado anteriormente, analzalo
detalladamente:

Como puedes observar el nico cambio hecho a este cdigo, es el siguiente: se le agreg
el operador asterisco (*) antes del nombre de los apuntadores, de esta forma:

if ( *punt1 == *punt2 )
Con este cambio se evalan los contenidos de las variables a donde apuntan los
apuntadores punt1 y punt2, es decir a y b respectivamente.
Como a y b almacenan un cinco entonces el operador de comparacin igual que (=)
devuelve un resultado verdadero (un uno), por lo cual se ejecuta la siguiente lnea de
cdigo::

printf( "Son iguales\n" );

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Mostrando el mensaje correspondiente en pantalla:

Conclusin.
Es posible utilizar a los distintos operadores con que cuenta el Lenguaje de programacin
C para realizar operaciones de cualquier tipo conjuntamente con los apuntadores para
acceder a las direcciones de memoria guardadas en dichos apuntadores.
Multiplicando con esto las posibilidades que nos brindan los apuntadores, de acceder a
cualquier variable o hardware de la computadora a travs de las direcciones de memoria.

Muy bien, continua as!

Fundamentos de Programacin
Unidad IV. Estructuras de datos
6. Relacin de apuntadores con arreglos

Introduccin.
Ya conoces el gran potencial que ofrecen los apuntadores, el acceder a la informacin
almacenada en cualquier variable o hardware de una computadora, tambin has
experimentado la sencillez con que puedes declarar y manejar una gran cantidad de
variables a travs de los arreglos, pero ser posible acceder a la informacin
almacenada en los elementos que forman a un arreglo a travs de apuntadores?
La respuesta es s, el Lenguaje de programacin C permite almacenar la direccin de
memoria de un elemento del arreglo en un apuntador, pero qu pasa si el arreglo tiene mil
elementos debe el programador declarar mil apuntadores?, o como alternativa debe
declarar el programador un arreglo de apuntadores?
Estas preguntas se respondern a lo largo del tema.
Si tuvieras un arreglo de 30 elementos (ya sabes que cada uno de estos elementos tiene
su propia direccin en la memoria RAM), sabes cul de estas 30 direcciones es la que
se tendra que almacenar en un apuntador? (recuerda que un apuntador solo puede
almacenar una direccin en memoria).
Contina leyendo para conocer la respuesta.
Como ya se menciono anteriormente un arreglo permite al programador declarar ms de
una variable en una sola lnea de cdigo, por ejemplo al declarar el siguiente arreglo:
char a[2];
Sabes que esto declara tres variables de tipo char, a[0], a[1], a las cuales el
preprocesador y el SO asignan una direccin de memoria (a cada una), contigua de esta
forma:
Elemento del arreglo
a[0]
a[1]

Direccin asignada
0022FF40
0022FF41

Nota: La informacin de la tabla anterior nicamente es para ejemplificar la


asignacin de las direcciones.

Como puedes observar las direcciones son consecutivas (una despus de la otra), as son
asignadas por tratarse de variables que integran un arreglo.

Fundamentos de Programacin
Unidad IV. Estructuras de datos

Tambin sabes que un apuntador almacena una direccin de memoria, entonces es


correcto preguntar Qu direccin debe almacenar el apuntador?
Respuesta:
Para que un apuntador contenga la direccin de memoria de un arreglo, es necesario que
el apuntador que guarde la direccin de memoria del primer elemento del arreglo es decir
al elemento con ndice [0].
Enseguida se muestra un fragmento de cdigo que contiene lo explicado anteriormente:
int *puntero;
int temperaturas[24];
puntero = &temperaturas[0];

El apuntador almacena la direccin del primer elemento, en este caso es temperaturas[0].


Para corroborar que las direcciones asignadas a los elementos que forman a un arreglo
son diferentes y consecutivas, se presenta el siguiente cdigo fuente el cual muestra en
pantalla las direcciones de cada uno de los elementos del arreglo.
Analzalo cuidadosamente.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Explicacin:
En la primer lnea de cdigo de este programa, despus de la llave de apertura { de la
funcin main(), se declar una variable de tipo int llamada i, la cual no fue iniciada con
ningn valor (esta variable se utilizar despus dentro de la sentencia de control for),
enseguida se declara un arreglo de tipo int de 7 elementos, de esta forma:

int temp[7];
Nota: recuerda que los elementos un arreglo comienzan con el ndice [0].
Posteriormente gracias a la sentencia de control for, que se ejecutar hasta que deje de
cumplirse la condicin: i<7.
Dentro de { y } de esta sentencia de control se encuentra escrita la siguiente lnea de
cdigo:

printf( "La direccin del elemento %i es %p.\n", i, &temp[i] );


Esta lnea de cdigo muestra en pantalla la direccin de memoria de cada uno de los
elementos que forman el arreglo.
Como ya se vio anteriormente el Lenguaje C permite al programador acceder a la
informacin almacenada en una variable a travs de un apuntador.
Esta caracterstica tambin es permitida para los elementos de un arreglo ya que tambin
son variables.
A continuacin se muestra un cdigo fuente escrito en Lenguaje C el cual permite acceder
a la informacin almacenada en los elementos que forman a un arreglo y mostrarla por
pantalla.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Analzalo:

El resultado de editar, depurar y compilar este cdigo fuente es el siguiente:

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Explicacin:
Despus de la llave de apertura de la funcin main() se encuentra escrita la siguiente
lnea de cdigo:

int temperaturas[7] = { 15, 18, 20, 23, 22, 24,5};


Esta lnea declara un arreglo llamado temperaturas de ndice siete, lo cual genera siete
elementos, a los cuales se les asignan los siguientes valores: 15, 18, 20, 23, 22, 24 y 5
respectivamente a cada uno de los elementos que forman este arreglo.
Posteriormente se declar un arreglo llamado punt, capaz de almacenar la direccin de
memoria de una variable de tipo int, el mismo tipo que los elementos del arreglo.
Inmediatamente despus se declaro una variable de tipo entero llamada i, la cual no fue
iniciada con ningn valor, esta variable se utilizara ms abajo dentro de los parntesis de
la sentencia de control for.
Enseguida se encuentra escrita la siguiente lnea de cdigo:

punt = &temperaturas[0];
Esta lnea de cdigo, asigna la direccin de memoria del elemento cero del arreglo
llamado temperaturas[ ] al puntero punt, esto por medio del operador direccin de (&).
Enseguida se encuentra escrita la sentencia de control for, misma que se ejecutara
mientras la variable i sea menor que siete. Dentro de { y } est escrita la siguiente lnea de
cdigo:

printf( "Elemento %i: almacena un: %i\n", i, *punt );

Esta lnea de cdigo se encarga de mostrar en pantalla el contenido que est guardado
en cada uno de los elementos del arreglo por medio del apuntador llamado punt y el
operador asterisco (*) escrito antes del nombre del apuntador.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Es momento de poner en prctica todo tu conocimiento, realiza la actividad que se te
presenta a continuacin la cual tiene por objetivo que compruebes el funcionamiento de
los apuntadores y que reconozcas el funcionamiento de los arreglos bidimensionales a
travs de la programacin estructurada.

Actividad Integradora 3. Arreglos y apuntadores


1. Para realizar esta actividad vas a retomar el cdigo fuente que se te explic en el
tema 3 de esta unidad temtica arreglos bidimensionales, a este programa le vas
a agregar las siguientes variantes: para mostrar en pantalla el promedio de la
temperatura de toda la semana se utilizar la sentencia de control while y se debe
de acceder a la informacin almacenada en los elementos del arreglo
bidimensional a travs de un apuntador.
2. Recuerda que si te surgen dudas debes consultar a tu asesor.
3. Ya que hayas editado, depurado, compilado y funcione correctamente el programa
sube a la plataforma para su evaluacin el archivo del cdigo fuente, es decir el
archivo con extensin .c que se creo
4. Cuando tengas listo t archivo gurdalo en tu PC y envalo a tu profesor con tus
datos en el siguiente formato: apellidopaterno_materno_nombre_actividadnumero

Conclusin:
A lo largo de esta unidad de aprendizaje te formaste un conocimiento de que un arreglo
tambin es conocido con el nombre de array, matriz o vector, un arreglo es un conjunto
de variables del mismo tipo cuyo nombre se diferencia en el ndice. Su tarea es declarar
ms de una variable del mismo tipo en una sola lnea, para asignar o acceder a la
informacin que almacena cada uno de los elementos de un arreglo, el programador
puede hacer uso de las sentencias de control for, while o Do while.
Una caracterstica muy importante de los arreglos es que al declararlos es posible omitir el
tamao que tendr el arreglo para despus indicarlo por medio de una variable, incluso en
tiempo de ejecucin del programa. Las caractersticas mencionadas anteriormente son
validas tanto para los arreglos unidimensionales, como arreglos bidimensionales y de
caracteres.

Fundamentos de Programacin
Unidad IV. Estructuras de datos
Tambin aprendiste que un apuntador es una variable capaz de almacenar la direccin
de memoria de otra variable, cuando un apuntador almacena una direccin de memoria
se dice que ste apunta a la variable de la cual almacena su direccin, por medio de un
apuntador es posible acceder a los datos almacenados en una direccin de memoria
(leerlos o modificarlos). Es posible utilizar a los distintos operadores con que cuenta el
Lenguaje de programacin C para realizar operaciones de cualquier tipo conjuntamente
con los apuntadores para acceder a las direcciones de memoria guardadas en dichos
apuntadores.
Por ltimo debes recordar que es posible que los apuntadores permitan acceder a la
informacin almacenada en los elementos de un arreglo, ya sea nicamente para leerla o
para modificar esta informacin.

Acabas de terminar la Unidad de aprendizaje, en hora buena, diste un paso ms en la


adquisicin de tus conocimientos acadmicos y lograste una ms de tus metas, no resta
ms que felicitarte.

El xito no es para los que piensan que pueden hacer algo sino para quienes lo hacen.
Annimo.
Felicidades concluiste la Unidad de aprendizaje!

Vous aimerez peut-être aussi