Vous êtes sur la page 1sur 52

Lenguajes

En una computadora se utilizan diferentes tipos de lenguajes, algunos empleados


directamente por el usuario, y otros que slo entiende la computadora. Los primeros se
conocen como lenguajes de alto nivel, y se usan para realizar la programacin de un
sistema operativo o de un simple programa que haga una cuenta; los otros los emplea
directamente la computadora, ya que estn en un lenguaje incomprensible para los
humanos. A continuacin, se describen.
Lenguajes de alto nivel
Generalmente se conocen como lenguajes de programacin. Con ellos se redacta en
un lenguaje similar al nuestro, aunque la mayora se encuentran en ingls. Tienen la
ventaja de ser portables, es decir, pueden entenderse y ejecutarse en diversas
computadoras; por otro lado, estos lenguajes pueden ser compiladores o intrpretes.
Intrprete
Un intrprete toma una instruccin del programa, la traduce a lenguaje mquina y la
ejecuta. Este proceso se repite con cada una de las instrucciones del programa; el
intrprete ms popular es Basic.
Compilador
Un compilador toma las instrucciones escritas en un lenguaje de alto nivel, y las traduce
a lenguaje intermedio (cdigo objeto), que despus se traduce a lenguaje mquina
creando un archivo que contiene el programa ejecutable. El lenguaje C es un compilador.
Lenguaje ensamblador
El lenguaje ensamblador, o simplemente ensamblador, es un lenguaje de bajo nivel que
se programa segn las instrucciones que tiene definidas el procesador.
Lenguaje maquina
El lenguaje mquina es un programa escrito en ceros y unos, muy lejano a nuestra forma
de expresin, pero es el nico que entiende el procesador.

Programa y programador
Un programa es un conjunto de instrucciones que tiene un objetivo especfico. Las
instrucciones estn escritas usualmente en algn lenguaje de computadora; despus, el
programa se traduce a cdigo objeto y finalmente a lenguaje mquina, que es el nico
que la computadora entiende; ste se carga en la memoria principal de la computadora
para ser ejecutado por la CPU; el resultado son las acciones para lo que fue escrito. Hay
dos grandes tipos de programas: los de aplicacin y los de sistemas. Los de aplicacin
son los ms conocidos y se utilizan directamente en la computadora como los
procesadores de palabras y las hojas de clculo. Los de sistemas son un conjunto de
programas que permiten que exista una interfaz de comunicacin amigable entre el
usuario y la computadora, algunos ejemplos son: los sistemas operativos, los
compiladores, etctera.
Programador es el trmino utilizado para denominar a la persona dedicada a escribir
programas. Frecuentemente, una aplicacin o sistema se elabora por equipos enteros
de programadores. Se denomina software a los programas utilizados en una
computadora.

Etapas de desarrollo del software


Por lo general, el desarrollo o construccin de un programa abarca las siguientes etapas:
Anlisis
Diseo
Programacin
Codificacin
Prueba
Mantenimiento
Documentacin

El anlisis y diseo dependen del tamao y la finalidad del programa; la programacin


es escribir la solucin propuesta en el idioma nativo, la codificacin consiste en escribir
el programa con instrucciones en un lenguaje de programacin, en este caso en C,
considerando el diseo (mdulos, algoritmos, diagramas). En ocasiones se emplea
indistintamente codificacin y programacin para designar esta fase del proceso.
Posteriormente se compila y prueba el cdigo; se resuelven los errores de sintaxis, en
caso de existir, y de lo contrario se procede a la ejecucin del programa para probarlo y
verificar que se obtenga lo planeado. Se detectan y corrigen los posibles errores de
lgica. Una vez terminado el programa, puede requerir mantenimiento para realizar
cambios o ajustes relativamente pequeos.
La compilacin consiste en convertir el programa escrito en C a lenguaje mquina (C
utiliza un enlazador de bibliotecas o linker). Al finalizar se crea un archivo ejecutable: es
el que se utilizar para ejecutar (correr) el programa.
El lenguaje C
C es un lenguaje de alto nivel, aunque tambin se utiliza para la programacin de
sistemas, ya que contiene instrucciones para el control a bajo nivel. Es una evolucin de
los lenguajes B y BCPL, los cuales carecan de la capacidad para manejar tipos de datos,
una desventaja para el programador. Estos tres lenguajes fueron utilizados en los
laboratorios Bell para crear el sistema operativo UNIX.
En 1978, con la publicacin del libro The C Programming Language, escrito por Brian
Kernighan y Dennis Ritchie, se inici formalmente el uso del lenguaje C. Ante el auge de
este nuevo lenguaje, fue necesario escribir un estndar que cubriera las necesidades de
compatibilidad y portabilidad. El estndar fue aprobado en 1989 por el comit tcnico
X3J11, del American National Standards Committe on Computers and Information
Processing.
El lenguaje C ha evolucionado a C++ (creado por Bjarne Stroustrup en 1986) y a otros
lenguajes que conservan caractersticas de C, como Java.

Conceptos bsicos
Un programa contiene varios elementos (aunque no es obligatorio que todos estn
presentes siempre). A continuacin, se mencionan los ms usuales.
Identificadores o variables
En un programa siempre operan diversos elementos creados por el programador
(variables, constantes, funciones, etctera) o bien creados en bibliotecas de funciones
(comnmente llamadas libreras) junto con el lenguaje, como la funcin printf. Cada uno
de estos elementos requiere un nombre exclusivo para diferenciarse de otros elementos
usados en el mismo programa; a dichos nombres se les llama identificadores.
En C se siguen ciertas reglas para formar los identificadores:
Un identificador se forma a partir de dgitos, letras y el carcter de subrayado
(guion bajo); no se puede utilizar ningn otro carcter.
El primer carcter de un identificador siempre debe ser una letra. Aunque tambin
est permitido utilizar el guion bajo como primer carcter, no es muy comn; ms
bien se emplea para formar identificadores con ms de una palabra. No se puede
utilizar un dgito como primer carcter en un identificador.
El nmero de caracteres puede ser ilimitado; es decir, desde uno hasta los que el
usuario quiera; sin embargo, algunos compiladores de C reconocen nicamente
los primeros 8 caracteres y en otros casos puede reconocer hasta 31. Un consejo
es que los identificadores sean lo ms compactos, pero tambin sean claramente
descriptivos.
Es posible utilizar letras maysculas y minsculas, pero se recomienda un empleo
consistente, ya que el lenguaje C es sensible a maysculas y minsculas, es decir,
una a es diferente de una A.
No se pueden utilizar palabras reservadas de C como identificadores; tampoco
smbolos o espacios en blanco.
A continuacin, se muestran ejemplos de identificadores vlidos:

Ahora se muestran ejemplos de identificadores no vlidos y la razn.

Tipos de datos
En un programa siempre se procesan datos, los cuales pueden ser de distinta naturaleza.
Dependiendo de su tipo, se representar y almacenar el dato en la memoria de la
computadora de una manera especfica; es decir, el tipo de dato determina la cantidad
de memoria requerida para almacenarlo. A continuacin, se listan los tipos de datos
bsicos de C, as como la cantidad de memoria que puede requerir cada uno. Cabe
sealar que estas cantidades son las ms usuales, ya que pueden variar de un
compilador a otro; los rangos de algunos de estos tipos de datos bsicos pueden variar
si se utilizan los modificadores de tipo como short, long, signed, unsigned.
Los tipos de datos bsicos son:
Unsigned Char
Char
Enum
Unsigned int
Sort int
Int
Unsigned long
Long
Float
Double
Long double
Constantes
Las constantes son elementos frecuentemente utilizados en los programas; si ya qued
claro el concepto de variable, ser ms sencillo explicar el de constante. Una constante
es un espacio en memoria que recibe un valor por primera vez y generalmente no se
modifica durante la ejecucin de un programa.
Una constante se utiliza cuando se conoce de antemano el valor de algn dato, pero
adems se sabe que este dato no debe cambiar. Por ejemplo, se puede pensar que en
un programa (no importa para qu sirva ste) se requiere trabajar con el valor de tt;
sabemos que tt generalmente maneja el valor de 3.1416 y que no puede tener otro. Sera
ilgico pensar en reservar un espacio para una variable si dicho valor no tiene por qu
cambiar en el transcurso del programa; de esta forma, lo ms conveniente sera definir
una constante para almacenar 3.1416.
En C, las constantes se crean utilizando la directiva del preprocesador #define
(constantes simblicas definidas) o bien la palabra reservada const (constantes
simblicas declaradas).

Constante simblica #define


En el lenguaje C, #define se utiliza para declarar constantes simblicas y crear macros.
En este libro slo se utilizar para definir constantes, mediante la siguiente sintaxis:

Ejemplos de constantes simblicas:

Los nombres simblicos son los identificadores; el preprocesador de C sustituye los


valores Hola a todos, 3.1416, 1506 y a cada vez que se encuentra en un programa el
nombre de las constantes simblicas SALUDO, PI, NP y CAR, respectivamente.
Cuando se utiliza #define para crear constantes, en realidad los valores no ocupan un
espacio en la memoria como en el caso de las variables, sino que el compilador sustituye
cada ocurrencia del nombre simblico por su respectivo valor, antes de analizar
sintcticamente el programa fuente.

La constante numrica const


Por otro lado, una constante tambin se puede crear utilizando la palabra reservada
const; si se procede de esta manera, el dato ocupa un espacio en memoria como si fuera
una variable, excepto porque su contenido no cambia.
La sintaxis para declarar una constante const es:

Ejemplos:

Palabras reservadas
Las palabras reservadas de C son aquellas cuyo significado se encuentra definido en el
lenguaje: ya tienen un uso especfico. stas se escriben en las instrucciones de los
programas.

Las palabras reservadas de C son:


Comentarios
Los comentarios son cadenas de caracteres o texto que describen partes del programa
que el programador desea explicar; dicho texto no es parte del programa fuente, sino
una descripcin del mismo. Los comentarios generalmente estn dirigidos a otros
programadores, no a los usuarios.
Para poder usar comentarios en un programa en C y que el compilador no los considere
como instrucciones del programa fuente, se utilizan los smbolos /* y */ para encerrar el
texto: /*... texto... */.

Entradas y salidas
Un programa es un conjunto de instrucciones que la computadora ejecuta con el fin de
obtener un resultado o bien la solucin a un problema determinado. Casi siempre, este
resultado se obtiene a partir del procesamiento de los datos. Generalmente, los datos
dependen del usuario y ste tendr que conocer los
resultados del programa que est utilizando. Para ello se requiere contar con
instrucciones que permitan a los usuarios introducir datos y otras que permitan mostrar
los resultados generados por los programas.
El lenguaje C cuenta con las funciones scanf( ) y printf( ) para entrada y salida de datos
respectivamente, las cuales se pueden utilizar agregando el archivo de cabecera
#include <stdio.h>.

La computadora dispone de diversos medios para proporcionar la salida de datos, como


la impresora, archivos o el ms utilizado: el monitor. Precisamente la funcin printf() se
utiliza para mostrar datos a travs de este dispositivo. Su sintaxis es la siguiente:
Esta funcion muestra texto en pantalla a partir de la posicin actual del cursor tiene varios
modificadores que luego vamos a mostrar pero la estructura del es printf(texto ......
[mascaras ...][,var1,var2,var3.....]);
donde texto y cadena de control de tipo son opcionales, dependiendo de lo que se desee
mostrar. Cadena de control es una cadena de caracteres %tipo que indica el tipo de
dato a desplegar.
Ejemplo:
Como ya se ha mencionado, printf() puede manejar ms de un argumento, para ello es
necesario usar las cadenas de tipo correspondientes por cada argumento que se
requiera visualizar, como en el ejemplo siguiente:

Las secuencias de escape son tambin cadenas de caracteres que tienen un significado
especial dependiendo de la cadena que se utilice. La tabla 1.3 que se presenta a
continuacin muestra las secuencias de escape que utiliza el lenguaje C, as como su
accin.
La entrada de datos, u operacin de escritura, se puede hacer a travs de diferentes
dispositivos como un teclado o un archivo, por ejemplo. Sin embargo, si se usa la funcin
scanf( ) se trata de una entrada de datos desde el teclado. La sintaxis de scanf() es la
siguiente:

Scanf permite capturar datos del teclado y guardarlos en una variable; el tipo de variables
admitidas en l es cualquier tipo el formato de scanf es Scanf( %modificador
,&var1,&var2...);
Igual que la funcin printf( ), la funcin scanf () requiere la cadena de tipo por cada
variable o variables que se desea leer, el smbolo & es un apuntador que apunta a la
direccin asignada a la variable que viene a continuacin y sta ser el rea de memoria
donde se almacenar ese dato de entrada. Es indispensable utilizar este smbolo, de lo
contrario, el valor nunca ser guardado en la variable.
Ejemplo:

supongamos que el usuario teclea 1.75, que se almacena en est; finalmente aparece el
mensaje:

Generalmente los programas interactan con el usuario en la lectura de datos.

Operadores aritmticos
Los operadores aritmticos son los que utilizamos normalmente para realizar las
operaciones bsicas aritmticas: suma, resta, multiplicacin, divisin y residuo o mdulo.
Frecuentemente escucharemos que a estos operadores se les conoce como binarios,
esto significa que siempre se utilizan dos operandos (datos) para que funcionen.
Todos los operadores aceptan la combinacin de tipos de datos, excepto mdulo %, que
slo se utiliza con operandos enteros o carcter.
El tipo de dato del resultado de la operacin depende de los tipos de datos de los
operandos que se utilicen; es decir, si se usan slo enteros, el resultado ser un entero,
pero si se combinan enteros y reales, el resultado ser un valor real.

Prioridad
Cuando en una expresin existen operadores diferentes, cul se evala primero? Estos
operadores siguen las reglas matemticas en cuanto a precedencia o jerarqua de
operadores.
En primer lugar, aparece el operador (), debido a que en las matemticas tradicionales
se utiliza este smbolo para determinar la prioridad de operadores en expresiones
grandes. En segundo lugar, se evalan multiplicacin, divisin y mdulo, los tres con la
misma prioridad; posteriormente se evalan la suma y la resta.
Cuando se combinan variables, constantes y otros elementos mediante los operadores
aritmticos, se forman expresiones aritmticas; el resultado de una expresin aritmtica
puede ser cualquier valor numrico, todo depende de los operandos y la asociatividad
de los operadores.

Operadores de asignacin
Existen otros operadores de asignacin muy particulares del lenguaje C.

Operadores de incremento y decremento


Anteriormente se mencion que a los operadores aritmticos bsicos se les suele
clasificar como binarios porque cada uno de ellos requiere siempre de dos operandos.
Sin embargo, el lenguaje C cuenta con una serie de operadores propios a los que se les
llama unarios. Eso significa que nicamente requieren de un operando cuando se
utilizan, lo cual proporciona ciertas ventajas.
El operador de incremento ++ se utiliza para modificar el valor de la variable sumndole
1 al valor que tiene.

suponiendo que la variable a se ha declarado previamente, en la primera instruccin se


le asigna el valor de 9 y en la siguiente se incrementa su valor en 1, lo cual hace que la
variable a ahora tenga almacenado un 10.
Este operador reduce el cdigo, ya que la expresin a++equivale a la expresin a=a+i,
que dicho en palabras significa a la variable a se le asigna lo que tenga ms 1.
Por otro lado, tambin se cuenta con el operador decremento Este operador es lo
contrario al anterior, es decir, disminuye en 1 el valor que tenga la variable, como en el
siguiente caso:

de igual manera se le asigna un 9 a la variable a y posteriormente se reduce su valor


quedando con valor de 8.

Operadores relacionales
Estos operadores se utilizan para expresar condiciones en los programas y as
determinar el orden en que se ejecutarn las instrucciones; una condicin en C es una
expresin booleana cuyo resultado puede ser nicamente verdadero o falso. La tabla 2.4
muestra los operadores relacinales.
Operadores lgicos
Los operadores lgicos && y 11 actan con dos operandos; el operador /, con un
operando. Se requiere que sean expresiones lgicas, generalmente formadas con los
operadores relacinales.
Los operadores lgicos sirven para unir ms de una condicin en un programa y poder
as formar condiciones ms complejas, cuyo resultado tambin puede ser nicamente
cierto o falso.

Ejemplos:
Condicionales
Este operador se utiliza para expresar condiciones en un programa y puede sustituir a la
estructura de control if-eise que se explica ms adelante. El operador requiere una
expresin lgica, la cual se evala y dependiendo si es verdadera o falsa se ejecutan
instrucciones distintas, el formato es el siguiente:

donde
<expresin 1> es la condicin que se evala (debe ser una expresin booleana), si es
verdadera, se ejecutar lo indicado en <expresin 2>; pero si <expresin 1> es falsa,
entonces se ejecutar <expresin 3>.

Prioridad de operadores condicionales


Programacin estructurada
La programacin estructurada es una tcnica para crear programas siguiendo ciertas
reglas que permiten modificarlo, leerlo y mantenerlo fcilmente. Entre las caractersticas
principales de esta metodologa se incluye el empleo de estructuras de control que
realizan acciones sobre las estructuras de datos, las cuales se explican ms adelante. El
programa debe tener una sola entrada y una sola salida.

Estructura en C
El programa consta generalmente de varias funciones. Una funcin es un subprograma
con una tarea especfica. Estos subprogramas (generalmente pequeos) se disean con
el fin de utilizarse no slo una vez ni en un solo programa, sino las veces que se requieran
y en cualquier programa.
El lenguaje C proporciona fundamentalmente dos formas de manejo de funciones: las
internas y las externas.
Las funciones internas son las ya implementadas e incorporadas en el lenguaje de
programacin. Para poder hacer uso de ellas, es necesario incluir el archivo de cabecera
estndar correspondiente (tambin llamada biblioteca) al que corresponda cada funcin.
La forma de hacer esto es escribiendo la directiva #include generalmente al principio de
un programa.
Una Funcin es una parte del cdigo independiente del programa que se llama dentro
de l, como dijimos anteriormente C no tiene procedimientos solamente funciones los
procedimientos los simula con funciones que no devuelven nada (Void) la estructura de
las funciones en C y es los elementos ms fuertes del lenguaje.
Pero tambin existen las funciones externas o definidas por el usuario, que pueden ser
diseadas por cada programador de acuerdo con sus propios requerimientos.
Es posible utilizar en un programa mltiples funciones, pero siempre debe haber una
funcin principal, de la cual depende el control del programa completo.
La estructura o sintaxis de un programa creado en C se muestra a continuacin en un
primer programa elemental.

La primera lnea es un comentario opcional (puede incluirse o no), ya que se encuentra


entre los caracteres /* y */. Recuerde que los comentarios son una explicacin del
programa y son ignorados por el compilador; en este caso se trata de una nota acerca
de la estructura del programa.
La directiva #include de la segunda lnea es necesaria para que el programa tenga
acceso a las funciones del archivo stdio.hen el que se proporciona la informacin relativa
a la funcin printf() que se utiliza en la quinta lnea. Observe que los smbolos < y > no
son parte del nombre del archivo; se utilizan slo para indicar que el archivo se encuentra
en la biblioteca estndar stdio.h.
La tercera lnea contiene la cabecera de la funcin principal main(), sta indica al
compilador el comienzo del programa y requiere los parntesis ( ) a continuacin de main.
Pero tambin est antecedida por la palabra reservada void, que es un especificador de
tipo que indica que una funcin no devuelve valor. Esto se entender mejor cuando se
haya estudiado el captulo de las funciones definidas por el usuario; por lo pronto se
recomienda utilizar la palabra void antes de main, aunque cabe sealar que no es
obligatoria, sin embargo, si se omite o se trabaja en un compilador que no admita esta
palabra reservada, entonces se deber utilizar la palabra return que se explica en la
segunda versin.
La cuarta y sexta lneas contienen los smbolos { y } que encierran el cuerpo de la funcin
main( ) y agrupan las instrucciones a ejecutar; son necesarios en todos los programas
para indicar el inicio y fin respectivamente.

Codificacion de un programa
Codificacin es la escritura en un lenguaje de programacin de la representacin del
algoritmo desarrollada en las etapas precedentes. Dado que el diseo de un algoritmo
es independiente del lenguaje de programacin utilizado para su implementacin, el
cdigo puede ser escrito con igual facilidad en un lenguaje o en otro. Para realizar la
conversin del algoritmo en programa se deben sustituir las palabras reservadas en
espaol por sus homnimos en ingls, y las operaciones/instrucciones indicadas en
lenguaje natural expresarlas en el lenguaje de programacin correspondiente.

Ejemplo 1:
Calcular el sueldo bruto.
Calcular el monto por concepto de deducciones.
Calcular el monto por concepto de percepciones.
Calcular el sueldo neto.
Mostrar los resultados.
Se solicita la cantidad de horas trabajadas adems de lo que se paga por cada hora, y
se almacenan en h y sh respectivamente. Se calcula el sueldo bruto y se asigna a sb;
posteriormente se asignan a la variable d las deducciones, las cuales son el 12% del
sueldo bruto; de igual forma en p se guardan las percepciones que corresponden al 15%
del mismo salario bruto. Se calcula el sueldo neto que consiste en el sueldo bruto menos
las deducciones ms las percepciones y finalmente se muestran las variables con los
resultados del sueldo neto desglosando los dems conceptos.

Ejecucin

Ejemplo 2
Descripcion:
Solicitar los 4 nmeros a promediar.
Aplicar la operacin para calcular el promedio.
Mostrar el resultado.
Codificacion:

Este programa funciona esencialmente como el promedio de las tres edades explicado
anteriormente; es decir, se solicitan los nmeros y se almacenan en a, b, c y d
respectivamente; se calcula el promedio y se asigna a tot, posteriormente se muestra la
variable tot con dos decimales.
La diferencia se vera en la presentacin del programa, ya que cada vez que se solicita
un nmero a promediar, avanzara dos saltos de lnea y adems se escuchara un bip.
Ejecucin:

Estructuras de control selectivas


Aqu se mencionan las diferentes formas de manejar una seleccin, clasificando la
estructura por su uso comn.
Las estructuras de control selectivas son aquellas que evalan una expresin,
usualmente una condicin booleana, y a partir del resultado permiten tomar decisiones
entre una, dos o ms opciones; a esto se le conoce como seleccin condicional. Existen
tres tipos de estructuras selectivas: seleccin simple, seleccin doble y seleccin
mltiple.
Una condicin booleana es una expresin que puede tener como resultado slo el valor
de verdadero o de falso.
La sentencia if permite comparar 2 valores entre s. Por medio de la condicin cuando
se cumple (TRUE) entra a realizar la accion1 si no pasa a cumplir la accion2

if ( condicin_logica )
{
accin 1
}
else
{
accin 2
}
Estructura simple
Es aquella que despus de evaluar una condicin determina su valor, que es verdadero
o falso, y slo si el resultado de la condicin es verdadero se realizar la instruccin o
instrucciones definidas para la condicin, su sintaxis es la siguiente:

El alcance sintctico predeterminado para una estructura de control es de una


instruccin, como se aprecia en la primera forma; cuando se requiere que se ejecute ms
de una, las instrucciones debern agruparse mediante llaves, tal como se puede ver en
la segunda forma.

Ejemplo:
Leer un nmero por el teclado y evaluar si es par o impar

Descripcin
Introducir un nmero.
Evaluar si el nmero dividido entre dos tiene de residuo cero o uno.
Imprimir si el nmero es par o impar.
Codificacin

Explicacin
Se introduce un nmero entero. Si al dividirse entre dos su residuo es cero, se cumple la
primera condicin, se imprime que el nmero es par y pasa a la siguiente condicin. Si
el nmero ledo se divide entre dos y su residuo es diferente de cero, la condicin no se
cumple, por lo que no se ejecuta la siguiente instruccin y termina el programa.
Si introducimos un nmero impar, y al dividirse entre dos su residuo no es cero, la primera
condicin no se cumple y no sucede nada; enseguida se evala la siguiente condicin;
si al dividirse entre dos, su residuo es diferente de cero, se imprime que es impar y
termina el programa.
Ejecucin

Condicin selectiva doble (If-else)


Es aquella que permite evaluar una condicin booleana y elegir entre dos opciones. Si la
condicin es verdadera, ejecutar la instruccin que se encuentra a continuacin del if,
pero si la condicin es falsa se ejecutar la instruccin que se encuentra a continuacin
del else. Por lo tanto, se seleccionan las instrucciones que se encuentran a continuacin
del if o las que estn despus de else, pero no ambas. La sintaxis es:
Ejemplo:
Indicar si el ao en el que naciste fue bisiesto

Descripcin
Introducir el ao en que naciste.
Si el ao introducido dividido entre cuatro da un residuo de cero, el ao en que naciste
fue bisiesto; de lo contrario, el ao en que naciste no lo fue.

Codificacin
Explicacin
Se ingresa el ao en que naciste, si al dividirse entre cuatro su residuo es cero, la
condicin se cumple y se imprime El anio en que naciste es bisiesto.
Si el ao introducido al dividirse entre cuatro produce un residuo distinto de cero, la
condicin no se cumple y se imprime El anio en que naciste NO es bisiesto.

Ejecucin

Selectiva doble anidada


Es aquella estructura que dentro del alcance de una condicin tiene otra condicin; en
otras palabras, en un if - else se encuentra otro if - else. Cada condicin ser evaluada
en el orden en el que va apareciendo: si la condicin 1 es verdadera se ejecuta la primera
instruccin y ya no se revisan las dems condiciones, de lo contrario se evala la
siguiente condicin la 2 y si sta es verdadera realizar su instruccin y as
sucesivamente.
El else final que contiene la ltima instruccin ser ejecutado si ninguna de las
condiciones anteriores fue verdadera. Esta estructura es ms til cuando se tienen tres
o ms opciones. Es posible utilizar tantos anidamientos como se requiera. Su sintaxis es
la siguiente:
Ejemplo:
Introducir los tres lados del tringulo.
Comparar si los tres lados son iguales o si dos de ellos son iguales.
Imprimir el tipo de tringulo.

Codificacin
Explicacion:
Se introducen los valores de los tres lados del tringulo. Se compara si son iguales en
cuyo caso se cumple la primera condicin y se imprime El tringulo es Equiltero. En
caso contrario, se compara si dos lados son iguales; si lo son, es verdadera la condicin
y se imprime El tringulo es issceles. Si la segunda condicin no se cumple, se imprimir
El tringulo es Escaleno.

Ejecucin
Selectiva mltiple (switch-case)
La sentencia switch es una sentencia C que se utiliza para seleccionar una de entre
mltiples alter- nativas. La sentencia switch es especialmente til cuando la seleccin se
basa en el valor de una variable simple o de una expresin simple denominada expresin
de control o selector. El valor de esta expresin puede ser de tipo int o char, pero no de
tipo float ni double.
Es aquella estructura que permite elegir entre dos o ms opciones, switch evala la
expresin que se encuentra dentro de los parntesis y el resultado se compara con
valores alternativos.
El switch en la expresin lleva implcito el operador igual (==), por lo que compara si la
expresin es igual a alguna de las opciones. Por lo tanto, no se puede comparar
utilizando otro operador relacional.
El tipo de dato de la expresin slo puede ser entero o carcter; por lo tanto, las opciones
debern coincidir con el tipo de dato de la expresin.
switch compara el valor de la expresin con cada una de las opciones en el orden en que
se encuentran. Cada opcin se representa con la palabra reservada case, por lo tanto,
habr tantos case como opciones. Una vez que encuentra la igualdad de la expresin
con una opcin se realizarn las instrucciones que estn a continuacin del case hasta
encontrar un break; si no encuentra ningn valor igual a la expresin, realizar la
instruccin asignada al default, si ste existe.
Se deber utilizar la palabra reservada break al termino de cada case para interrumpir la
estructura y no revisar las siguientes opciones.
Como se mencion anteriormente, el default se ejecutar cuando la expresin no
coincida con ninguna opcin. Sin embargo, ser decisin del programador incluirla o no
en su programa, ya que ste es opcional. La sintaxis es:
La expresin de control o selector se evala y se compara con cada una de las etiquetas
de case. La expresin selector debe ser un tipo ordinal (por ejemplo, int, char, pero no
float o string). Cada etiqueta es un valor nico, constante y cada etiqueta debe tener un
valor diferente de los otros.
Si el valor de la expresin selector es igual a una de las etiquetas case -por ejemplo,
etiqueta - entonces la ejecucin comenzar con la primera sentencia de la secuencia
sentencia y continuar hasta que se encuentra el final de la sentencia de control switch,
o hasta encontrar la sentencia break.
Es habitual que despus de cada bloque de sentencias correspondiente a una secuencia
se desee terminar la ejecucin del switch; para ello se sita la sentencia break como
ltima sentencia del bloque. break hace que siga la ejecucin en la siguiente sentencia
ai switch. Sintaxis

Ejemplo:
Elegir una figura geomtrica y calcular su rea

Descripcin:
Elegir una figura geomtrica a partir del men.
Solicitar los valores.
Mostrar el rea.
Codificacin
Explicacin:
El dato importante a conocer es el de la figura geomtrica. El operador que se introduce
en el ejemplo es 1, que corresponde al rea del tringulo; a continuacin, la variable
selectora se compara con la opcin 1, al ser iguales, se solicita el valor de la base y la
altura, despus se muestra el resultado.

Ejecucin

Ejemplo 2:
Imprimir el salario real de un trabajador

Descripcin:
Introducir las horas trabajadas.
Introducir el puesto que desempea.
Indicar el salario real; si el trabajador gana ms de $8,000 a la semana reducir 20% de
su salario.
Codificacin:
Explicacin:
En este programa se solicitan dos datos al usuario: la cantidad de horas trabajadas y el
puesto. A continuacin, se calcula el salario bruto; y si ste es mayor que $8,000 se har
un descuento del 20%. Finalmente se muestra el salario neto.
Ejecucin
Estructuras de control repetitivas

Una de las caractersticas de las computadoras que aumentan considerablemente su


potencia es su capacidad para ejecutar una tarea muchas (repetidas) veces con gran
velocidad, precisin y fiabilidad. Las tareas repetitivas es algo que los humanos
encontramos difciles y tediosas de realizar. En este captulo se estudian las estructuras
de control iterativas o repetitivas que realizan la repeticin o iteracin de acciones. C
soporta tres tipos de estructuras de control: los bucles while, for y do-while. Estas
estructuras de control o sentencias repetitivas controlan el nmero de veces que una
sentencia o listas de sentencias se ejecutan.
Una estructura iterativa permite repetir una accin; la repeticin es controlada por una
expresin que es una condicin booleana. Hay tres formas de expresar las repeticiones
o los ciclos: for, while y do-while.
El cuerpo del ciclo est constituido dentro de la estructura repetitiva; la repeticin puede
ser definida o indefinida. La iteracin es definida cuando se conoce de antemano el
nmero de repeticiones a ejecutar; por ejemplo, si se desea sumar cinco nmeros, se
conoce de antemano que se repetir la accin de sumar cinco ocasiones y, para estos
casos, es mejor utilizar la estructura de control for.
La iteracin es indefinida cuando no se conoce de antemano el nmero de veces que se
repetir alguna accin; por ejemplo, cuando se pregunta al usuario si desea repetir
alguna instruccin y ste puede responder s o no. En este caso no se conoce cuntas
veces se repetir porque esto depende de la respuesta del usuario. Para las repeticiones
indefinidas es mejor utilizarlas estructuras while y do-while. Es posible usar las
estructuras de control while, do-while y for casi en forma indiferente.

Ciclo while
Un bucle while tiene una condicin del bucle (una expresin lgica) que controla la
secuencia de repeticin. La posicin de esta condicin del bucle es delante del cuerpo
del bucle y significa que un bucle while es un bucle pretest de modo que cuando se
ejecuta el mismo, se evala la condicin antes de que se ejecute el cuerpo del bucle.
En esta estructura, la repeticin se realizar tantas veces como se indique mientras se
cumpla una condicin. La cantidad de repeticiones puede ser definida o indefinida. La
representacin de la estructura es la siguiente:
Ejemplo
Encontrar cuatro mltiplos de un nmero cualquiera

Descripcin
Leer un nmero.
Leer nmeros arbitrarios.
Verificar que el nmero sea mltiplo del primero.
Si es mltiplo imprimirlo.
Codificacin

explicacin
Se solicita un nmero y se guarda en num, que servir para buscar sus mltiplos. A
continuacin, se analiza la condicin en la que se pregunta si cont es menor o igual que
4; cont almacena la cuenta del nmero de mltiplos encontrados. Se guarda un nmero
en numC, luego se evala si el residuo de numC dividido entre num es igual que cero; si
es verdadero se muestra el mltiplo y se incrementa cont. Se repite esta operacin hasta
que el contador cont llegue a 4.
Ejecucin

Estructura do-while
La sentencia do-while se utiliza para especificar un bucle condicional que se ejecuta al
menos una vez. Esta situacin se suele dar en algunas circunstancias en las que se ha
de tener la seguridad de que una determinada accin se ejecutar una o varias veces,
pero al menos una vez.
En esta estructura do-while, la condicin de continuacin del ciclo se prueba al final del
mismo. Funciona de manera similar a la estructura while; la diferencia es que una evala
al inicio del ciclo y la otra al final. En esta estructura es indispensable escribir las llaves,
aunque pudiera parecer innecesario utilizarlas. Tambin se debe notar que al final de la
condicin do-while se escribe punto y coma. La representacin de la estructura es la
siguiente:

Donde:
La estructura tiene los mismos elementos que utiliza la estructura while. Como se
mencion anteriormente, estas estructuras funcionan de forma similar.
El do-while tiene una aplicacin muy usual: cuando se requiere repetir por lo menos una
vez un programa.

Ejemplo:
Adivinar en un mximo de cinco oportunidades un entero comprendido entre 1 y 100. En
cada ciclo la computadora debe decir si el que se captura es mayor o menor que el que
gener automticamente

Descripcin
Generar un nmero aleatorio.
Solicitar un nmero al usuario.
Compararlos.
Mostrar el resultado.

Codificacion:
Explicacion
Aqu se utiliza la biblioteca stdlib.h, que permite el uso de las funciones randomize() y
random(); la primera inicializar el generador de nmeros pseudoaleatorios, con una
semilla que va en funcin de la hora actual, lo que permite que no se repitan las mismas
secuencias de nmeros aleatorios. La segunda funcin produce un pseudoaleatorio en
el rango de 0 a x-1.
Por tal razn se escribe primero la generacin de un nmero pseudoaleatorio y
enseguida con random(i00) se genera el nmero entre 0 y 99, por lo que agregamos 1
para que quede el valor de numcom entre 1 y 100. Uno de los operadores que se utiliza
es / = que significa diferente y se lee: si nusuario es diferente de numcom. Observemos
que la condicin est compuesta por dos enunciados, unidos por el operador && (and),
que deben ser verdaderos para que se repita el ciclo.
Al momento de ser iguales nusuario y numcom se imprime la palabra felicidades y el
nmero de intentos; en caso contrario imprime la leyenda -Mejor suerte para la prxima".

Ejecucin

Estructura repetitiva for


Un bucle for se debe construir con gran precaucin, asegurndose que la expresin de
inicializacin, la condicin del bucle y la expresin de incremento harn que la condicin
del bucle se convierta en false en algn momento. En particular: si el cuerpo de un bucle
de conteo modifica los valores de cualquier variable implicada en la condicin del bucle,
entonces el nmero de repeticiones se puede modificar. Esta regla anterior es
importante, ya que su aplicacin se considera una mala prctica de programacin. Es
decir, no es recomendable modificar el valor de cualquier variable de la condicin del
bucle dentro del cuerpo de un bucle for, ya que se pueden producir resultados
imprevistos.
La estructura de control for se utiliza generalmente cuando la repeticin est definida.
Esta estructura maneja todos los detalles de la repeticin controlada por contador. La
representacin de la estructura repetitiva es la siguiente:

Donde:
La expresin 1 y expresin 3 siempre sern asignaciones, mientras que expresin 2
siempre tendr que ser una expresin booleana. Al igual que en las anteriores
estructuras repetitivas, las partes de la estructura for son similares.
Las estructuras repetitivas pueden ser equivalentes en ciertos casos. Lo ideal es usar for
cuando la repeticin es definida, y las otras dos cuando la repeticin es indefinida, while
generaliza la repeticin, y las otras dos estructuras son casos particulares del uso de
ella, y facilitan la repeticin.

Ejemplo:
Crear un marco en la pantalla utilizando asteriscos en las coordenadas (1,1), (1,80),
(80,24) y (1,24)

Descripcin:
Dibujar una lnea horizontal en la parte superior de la pantalla.
Dibujar una lnea vertical en el lado derecho de la pantalla.
Dibujar una lnea horizontal en la parte inferior de la pantalla.
Dibujar una lnea vertical en el lado izquierdo de la pantalla.

Codificacin:
Ejecucin:
Arreglos
Un arreglo, o array, es un conjunto de elementos del mismo tipo de datos almacenados
en memoria continua.
Existen diferentes tipos de arreglos: unidimensionales, bidimensionales,
tridimensionales, etctera.
Vectores:
Un arreglo unidimensional, tambin llamado lista o vector, contiene un conjunto de
variables del mismo tipo. Su declaracin, como la de cualquier variable, requiere de un
nombre y un tipo de dato; adems se debe agregar el nmero de elementos que
contendr.

Pbr ejemplo, si se requiere una lista para anotar las calificaciones de cinco alumnos, el
arreglo ser de tipo entero, podra llamarse LisCalif (que es un nombre arbitrario como
el de cualquier variable), y ser de tamao 5. Su declaracin quedara as:

Ejemplo:
Imprimir el contenido de las posiciones 0, 3 y 4 del arreglo vec.

Descripcin:
Inicializar arreglo.
Imprimir los nmeros de las posiciones indicadas.
Codificacion:

Ejecucin

Funciones
Como ya se mencion, cada funcin se disea de manera independiente. La accin de
disear o crear una funcin en C es conocida tambin como definirla y, segn el propsito
especfico, las funciones pueden ser diseadas de las siguientes maneras:
1. Funciones sin paso de parmetros. Son subprogramas que no requieren
informacin adicional de su entorno, pues simplemente ejecutan una accin
cada vez que son invocadas.
2. Funciones con paso de parmetros. Para la ejecucin de estos subprogramas se
requiere adems de su invocacin, que se le pase informacin adicional de su
entorno.
3. Funciones que no regresan valor. Subprogramas que luego de su ejecucin no
devuelven al entorno algn valor como resultado de su ejecucin.
4. Funciones que regresan valor. Funciones que luego de su ejecucin generan un
valor como resultado y entregan ese valor a su entorno.
Todas estas funciones se pueden combinar, es decir, se puede disear una funcin con
parmetros que regrese valoro que no lo haga, si as se requiere; o bien disear una
funcin sin parmetros que regrese valoren un mismo programa. Esto depender del
programador, y de cmo decida que es ms conveniente el diseo de la funcin.

Ejemplo:
Escribir un programa con una funcin que realice las siguientes operaciones con un
nmero: raz cuadrada, cuadrado y cubo. Mostrar el resultado en forma de tabla, con los
nmeros del 1 al 10.

Descripcin
Generar los nmeros del 1 al 10.
Invocar la funcin con cada uno de los nmeros del 1 al 10.
Imprimir el resultado.

Codificacin
Ejecucin
Fuentes:

Marquez, G. (2011). Introduccion a la programacion estructurada en C (1 ed.,


Vol., pp.). Naucalpan de Juarez, Estado de Mexico: Pearson.

Joyanes Aguilar, L. (2002). Programacion en C. Metodologia, algoritmos y


estructura de datos (1 ed., Vol., pp.). Madrid: Mc Grawl Hill.

Vous aimerez peut-être aussi