Sunteți pe pagina 1din 63

UNIVERSIDAD CENTROAMERICANA

FACULTAD DE CIENCIA, TECNOLOGA Y AMBIENTE

Anlisis Numrico y Programacin

UNIDAD IV: PROGRAMACIN

Managua, Noviembre 2015

Contenido
Introduccin al Lenguaje C/C++ ......................................................................................... 1
Tema 1: Origen, caractersticas, uso actual y ventajas del lenguaje C/C++. ...................... 1
Introduccin.................................................................................................................... 1
Porqu el Lenguaje C/C++? ......................................................................................... 1
Transicin de C a C++ ................................................................................................... 2
Ventajas del Lenguaje C/C++ ......................................................................................... 3
Caractersticas ............................................................................................................... 3
Diferencias entre C y C++. ................................................................................................. 5
El IDE CodeBlock: conociendo el entorno.......................................................................... 8
Entorno de CodeBlocks .................................................................................................. 8
Creacin de un proyecto ................................................................................................ 9
Programas en C/C++ ....................................................................................................... 11
Elementos de un programa en C/C++. ......................................................................... 12
Precedencia de Operadores......................................................................................... 19
Estructura de un programa en C/C++. .......................................................................... 23
Tema 5: Edicin, compilacin y ejecucin de programas en C/C++ ................................. 25
Compilador del IDE CodeBlock .................................................................................... 25
Compilando y ejecutando ............................................................................................. 25
Tipos de errores ........................................................................................................... 25
El Preprocesador ......................................................................................................... 25
La directiva del preprocesador #include ....................................................................... 26
La directiva del preprocesador #define: constantes simblicas ..................... 26
La directiva del preprocesador #define: macros..................................................... 26
Depuracin ................................................................................................................... 28
Tipos de Datos en C/C++ ................................................................................................ 29
Identificadores y Palabras Claves. ................................................................................... 32
Declaracin de Variables y constantes ............................................................................ 33
Variables. ..................................................................................................................... 33
Constantes. .................................................................................................................. 33
Representacin de Datos en memoria y tamao de Variables ......................................... 37
Datos definidos por el programador ................................................................................. 37

Arreglos ........................................................................................................................... 38
Operaciones con Arreglos ............................................................................................... 39
Estructuras (struct) .......................................................................................................... 40
Construccin de expresiones en el lenguaje: aritmticas y lgicas. ................................. 43
Expresiones Aritmticas ............................................................................................... 43
Expresiones Lgicas .................................................................................................... 43
Expresiones Generales ................................................................................................ 44
Sentencias ................................................................................................................... 44
Biblioteca de funciones para C/C++. ................................................................................ 50
Principales Libreras en C/C++ ..................................................................................... 50

Anlisis Numrico y Programacin

Unidad IV: PROGRAMACION


Introduccin al Lenguaje C/C++

Objetivos especficos:
Con el desarrollo de esta unidad se pretende que el estudiante sea capaz de:
1. Comprender las caractersticas de un lenguaje de programacin de alto nivel,
especficamente C/C++.
2. Reconocer la estructura de un programa C/C++ y los elementos que lo componen.
3. Describir los elementos principales del entorno de trabajo del IDE (Integrated Development
Environment, Ambiente de Desarrollo Integrado) y sus capacidades.
4. Demostrar habilidades en la construccin de programas simples usando la sintaxis y
semntica del lenguaje C/C++.
5. Reconocer la importancia y utilidad del uso de bibliotecas de funciones en los lenguajes de
nivel alto.

Tema 1: Origen, caractersticas, uso actual y ventajas del lenguaje C/C++.


Introduccin
Porqu el Lenguaje C/C++?
A pesar de que en la actualidad existen muchos lenguajes de propsito general para el
desarrollo de aplicaciones, C/C++ ha sido desde sus inicios uno de los lenguajes ms
aceptados por los programadores debido a sus ventajas y caractersticas, que le han permitido
extenderse rpidamente.
1. Poderoso y Flexible
Dadas las caractersticas del mismo, se pueden hacer diversos proyectos como Sistemas
operativos, Procesadores de Texto, Hojas de Clculo, etc.
2. Lenguaje comn
Dado que es un lenguaje comn, existen una amplia variedad de Compiladores de C y
accesorios tiles.
3. Transportable
Se puede correr en cualquier tipo de Computadora, sta caracterstica la aumenta el
Estndar C.
4. Pocas Palabras
Tiene pocas palabras claves (que son la base sobre la cual est construida la funcionalidad
del lenguaje). Esto es una ventaja importante contrariamente a lo que parece.
5. Modular
El cdigo de C puede y debe ser escrito en mdulos llamado FUNCIONES, estas pueden
ser utilizadas y reutilizadas por otras aplicaciones o programas.

C es un lenguaje de programacin de empleo general, caracterizado por su sntesis y por


poseer un moderno flujo de control y estructuras de datos, as como un potentado conjunto de
operadores. No es un lenguaje de muy alto nivel ni grande, no se especializa en un rea en
Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

particular. Su carencia de restricciones y su generalidad lo hacen ms eficaz y conveniente


para muchas tareas que otros lenguajes.
C fue diseado originalmente para crear el sistema operativo UNIX, sin embargo no est ligado
a un hardware o sistema en concreto, siendo fcil escribir programas que ejecuten tareas sin
ningn cambio en cualquier mquina que soporte a C.
El lenguaje no cuenta con operaciones de entrada y salida: no existen instrucciones READ o
WRITE, ni mtodos propios de acceso a archivos; todos estos mecanismos de alto nivel deben
ser aportados por funciones llamadas explcitamente.
Aunque las posibilidades de C corresponden a las de muchas computadoras, el lenguaje es
independiente de cualquier arquitectura de mquina en particular y as, con algo de cuidado,
es fcil escribir programas porttiles, es decir programas que pueden ejecutarse sin cambios
en una amplia variedad de computadoras.
C posee las estructuras fundamentales de control de flujo sin las cuales no es posible escribir
programas bien estructurados: agrupamiento de sentencias, toma de decisiones (if), ciclos
(bucles), con comprobacin de la condicin de terminacin al principio (while, for) o al final (do)
y seleccin entre un conjunto de casos posibles (switch).
Finalmente C, igual que cualquier otro lenguaje, tiene sus inconvenientes: algunos de los
operadores tienen precedencia equivocada, algunas partes de la sintaxis podran ser mejores,
lo poco estricto que es el lenguaje con la comprobacin de los tipos de datos (dejando esta
tarea muchas veces en manos del programador).
Transicin de C a C++
Resea de la evolucin del lenguaje C hasta llegar a C++:
1967 ............................... Martn Richard
Lenguaje BCPL (Prototipo A)
1970 ............................... Ken Thompson
Prototipo B
Recodificacin del S.O. UNIX
1972 ............................... Dennis Ritchie
Lenguaje C
Laboratorios Bell Telephone
1980s ............................ Bjarne Stroustrup
Lenguaje C++ ................ AT&T
Se dice que C es un subconjunto de C++, es decir, todo lo que un programador conoce sobre
el lenguaje C es aplicable a C++. El lenguaje C++ se comenz a desarrollar en 1980. Su autor
fue B. Stroustrup, de la AT&T. Al comienzo era una extensin del lenguaje C que fue
denominada C with classes (C con Clases). Este nuevo lenguaje comenz a ser utilizado fuera
de la AT&T en 1983. El nombre C++ es tambin de ese ao, y hace referencia al carcter del
operador incremento de C (++).

Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

Ante la gran difusin y xito que iba obteniendo en el mundo de los programadores, la AT&T
comenz a estandarizarlo internamente en 1987. En 1989 se form un comit ANSI (seguido
algn tiempo despus por un comit ISO) para estandarizarlo a nivel internacional. En la
actualidad, el C++ es un lenguaje verstil, potente y general. Su xito entre los programadores
profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de
aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y
expresiones, flexibilidad, concisin y eficiencia. Adems, ha eliminado algunas de las
dificultades y limitaciones del C original.
La evolucin de C++ ha continuado con la aparicin de Java, un lenguaje creado simplificando
algunas cosas de C++ y aadiendo otras, que se utiliza para realizar aplicaciones en Internet.
C++ fue originalmente un precompilador, similar al preprocesador de C, el cual converta
construcciones especiales a cdigo en C. Este cdigo era entonces compilado por un
compilador normal de C. El precdigo, el cual era ledo por el precompilador de C++, era
usualmente guardado en un archivo con extensin .cc, .C o .cpp. Este archivo se converta en
un archivo de C con extensin .c.
La nomenclatura de C++ permanece igual. El hecho de que el cdigo de C++ usualmente era
tratado por un compilador de C es por la razn de que C++ es en principio un supraconjunto de
C: C++ ofrece todas las posibilidades de C y algo ms. Debido a lo anterior puede pensarse
que la transicin de C a C++ es muy fcil. Programadores que estn familiarizados con C
pueden iniciar programando en C++ usando archivos fuente con extensin .cc o .cpp en vez
de .c y de esta manera usar todas las ventajas que C++ ofrece. Sin embargo a lo largo de la
historia de C++, programadores acostumbrados a los lenguajes estructurados (C, Fortran,
Pascal, etc.) no hacen la transicin a C++ de manera simple, pues es necesario cambiar la
forma de pensar al momento de programar (Por las caractersticas de la POO).
En C++, adems de haber ms herramientas para la programacin, tambin es posible
programar usando diferentes paradigmas como programacin modular, programacin
orientada a objetos y programacin genrica.
Ventajas del Lenguaje C/C++
1.
2.
3.
4.
5.
6.

Genera los programas ms compactos y rpidos


El cdigo es altamente transportable
Facilidad de aprendizaje
Su uso es de propsito general
Libertad en la escritura de programas
Implementa bastante bien la orientacin a objetos (C++)

C++ fue desarrollado para aadirle al lenguaje C los conceptos de orientacin a objetos. Utilizan
casi las mismas palabras claves.
Caractersticas
El lenguaje C cubre el vaco entre el lenguaje de mquina y los lenguajes de alto nivel ms
convencionales. Esta flexibilidad permite el uso de C en la programacin de sistemas (por
ejemplo, el diseo de sistemas operativos) as como en la programacin de aplicaciones (por
ejemplo, para redactar un programa que resuelva un complicado sistema de ecuaciones
Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

matemticas o un programa que escriba las facturas para clientes). C se caracteriza por hacer
posible la redaccin de programas muy concisos, debido en gran parte al gran nmero de
operadores que incluye el lenguaje. Tiene un repertorio de instrucciones relativamente
pequeo, aunque las implementaciones actuales incluyen numerosas funciones de biblioteca
que mejoran las instrucciones bsicas. Es ms, el lenguaje permite a los usuarios escribir
funciones de biblioteca adicionales para su uso propio. De esta forma las caractersticas del
lenguaje se pueden ampliar fcilmente por el usuario.

Caractersticas

Una de las caractersticas ms importantes de C es la portabilidad de sus programas, ms que


los escritos en otros programas de alto nivel. La razn de esto es que C deja en manos de las
funciones de biblioteca la mayora de las funciones dependientes de la computadora. Toda
versin de C se acompaa de su propio conjunto de funciones de biblioteca, que estn escritas
para las caractersticas particulares de la computadora en la que se instale.
1.
2.
3.
4.
5.

Lenguaje de propsito general.


Programacin estructurada.
Economa en las expresiones.
Abundancia de operadores y tipos de datos.
Codificacin de alto y bajo nivel simultneamente. Pretende ser un lenguaje
de alto nivel con la versatilidad del bajo nivel.
6. Altamente transportable.
7. Eficaz, expresivo y potente.
8. Lenguaje compilado

Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

Diferencias entre C y C++.


C fue creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior
lenguaje B, a su vez basado en BCPL.
C++, por su parte, fue creado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin
de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que
permitan la manipulacin de objetos.
As que C es el lenguaje original, mientras que C++ es una ampliacin de C, por eso el ++.

En C

En C++

#include<stdio.h>

#include<iostream>

int main()
{
printf ("Hola Mundo");
return 0;
}

using namespace std;


int main()
{
cout << "Hola mundo";
return 0;
}

Lo que not al hacer estos dos programitas es que pedir un dato en C++ es mucho mucho ms
simple que en C. Sin embargo, el asunto de los << y >> puede llegar a asustar a los recin
iniciados en la programacin.

Pedir un dato en C
scanf("modificador", &nombre de la variable);

Pedir un dato en C++


cin >> nombre de la variable;

Mostrar un dato en C
printf("Dato: modificador", nombre de la
variable);

Mostrar un dato en C++


cout << "Dato: " << nombre de la variable;

Los modificadores son los siguientes: %d para int, %f para float, %s para string, %c para char.
Libreras en C++
Por simple convencin las libreras en C terminan en .h (punto hache). Todas las libreras de
C sirven para C++, sin embargo, tambin por convencin, se elimina la terminacin .h y mejor
se agrega c al principio.
Libreria en C

Librera en C++

math.h
string.h
time.h
etcetera.

cmath
cstring
ctime

Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

El namespace
C como lenguaje tiene un conjunto de palabras reservadas, como por ejemplo: if, for, while, int,
float, C++ es una ampliacin, por lo tanto tiene que agregar nuevas palabras reservadas.
stas palabras reservadas estn en un namespace (espacio de nombres). En especfico cout
y cin estn el namespace std (standard).
Si no declararamos que vamos a usar el namespace std (using namespace std;), cada vez que
quisieramos usar cout, tendramos que escribir std::cout.
Funciones
En primer lugar, en C cuando una funcin no toma parmetros, su prototipo tiene la palabra
void. Sin embargo en C++ void no es necesario(opcional).
Prototipo en C:
Prototipo en C++:

char f1(void);
char f1();

Otra diferencia entre C y C++ es que en un programa de C++ todas las funciones deben estar
en forma de prototipo, en C los prototipos se recomiendan, pero son opcionales. Tambin si
una funcin de C++ es declarada para devolver un valor obligatoriamente la sentencia return
debe devolver un valor, en C no es necesario que se devuelva.
Otra diferencia es el lugar donde se declaran las variables locales. En C, deben ser declaradas
solo al principio del bloque, mientras que en C++ las variables se pueden declarar en cualquier
punto. Aunque es conveniente realizarlo siempre al comienzo de la funcin.

Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

El IDE CodeBlock: conociendo el entorno

Entorno de CodeBlocks
Code::Blocks Es un IDE (Integrated Development Environment, Ambiente de Desarrollo
Integrado) para programar en los lenguajes C++ y C, esto es:

Una aplicacin que contiene herramientas que facilitan el desarrollo de software enC/C++.
Bsicamente, est formado por un editor de cdigo (editor de texto), un compilador (de
C/C++) y un sistema para manejo de proyectos (cdigo fuente y otros elementos para el
desarrollo de un software particular)

La primera vez que ejecutamos nuestro IDE Code::Blocks veremos algo a la siguiente imagen.
Mens y
barras de
herramientas

rea de trabajo
principal
rea de
manejo de
proyectos

rea de notificaciones

Barra de
Estado

Pestaa Proyectos: Contiene el rbol del sistema de archivos (headers: .h, .hpp, etc; y fuentes :.c,
.cpp, etc) de los proyectos abiertos.
Pestaa Recursos: Contiene el rbol del sistema de archivos de recursos (frames, panels, etc)
elacionados con wxWidgets.

Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin


Pestaa Smbolos: Contiene lista de funciones, variables y typedefs globales, variables del
preprocesador y clases (con sus atributos y mtodos)
rea de trabajo principal: Pgina de bienvenida o editor de cdigo con mltiples
pestaas (una por archivo abierto) y diseo de GUI al trabajar en proyectos.
rea de notificaciones: Mensajes de carga y descarga de archivos, detalles de
bsquedas, salida de compilacin, salida de debug, etc.
Barra de estado: Ruta absoluta de archivo actual, codificacin de caracteres, posicin
del cursor, modo de insercin, estado de archivo...

Creacin de un proyecto
Ahora, para crear un proyecto vamos a file > new > project.

Nos aparecer una ventana emergente como esta.

Seleccionamos
Console
application (o el tipo
de aplicacin que
desea)
y
presionamos
Go.
Damos clic en next y
nos aparecer una
ventana para elegir
el lenguaje

Introduccin al Lenguaje C/C++

Anlisis Numrico y Programacin

Presionamos next y introducimos el ttulo de la aplicacin en, Project title. Y presionamos next.

Nos aparecer una ventana como esta. Aqu podemos configurar las opciones del espacio de
trabajo y donde se guardaran nuestros archivos. Presionamos finish.
Build Targets Contienen los
datos que requiere el
compilador para construir el
software o partes del
software.

Introduccin al Lenguaje C/C++

10

Anlisis Numrico y Programacin

Una vez hecho esto, ya podemos empezar a programar solo tenemos que abrir el archivo main.c
para editarlo y compilarlo con F9.
Abrimos el nodo o carpeta azul de la izquierda y seleccionamos main.c, que ser el archivo de
cdigo fuente de nuestra aplicacin.

Al guardar se crea un archivo de extensin .cbp. Los programas fuente se almacenan como archivos
con extensin .c para C y .cpp para C++. Una vez almacenados se compilan, ejecutndose en una
primera fase cualquier directiva del preprocesador tal como #include. Las directivas importan cualquier
archivo necesario, normalmente definiciones de bibliotecas; por ejemplo #include<iostream.h>, incluye
en el programa a la biblioteca IO (Entrada/Salida) donde se encuentran las funciones cout (flujo de salida)
y cin (flujo de entrada). Una vez compilados los archivos del programa y los archivos a incluir se obtiene
un archivo objeto por cada archivo fuente (con extensin .o en Dev-C++). Por ltimo se enlazan los
archivos objeto con los archivos de biblioteca, proporcionando un archivo de programa ejecutable (con
extensin .exe).

Programas en C/C++
Un programa en C/C++ es una coleccin de funciones que comienza con la ejecucin de la funcin Main
( ).

Introduccin al Lenguaje C/C++

11

Anlisis Numrico y Programacin

Elementos de un programa en C/C++.


Un programa se compone de un conjunto de elementos denominados elementos lxicos (tokens) que el
compilador reconoce como una unidad fundamental. Cada elemento lxico se compone de una coleccin
de caracteres que forman el vocabulario bsico que reconoce el compilador. Un elemento lxico en C++
es, por ejemplo, main.
Los elementos de un programa C/C++ son la clave para entender la sintaxis del lenguaje como tal, pues
muestran al programador cules son las herramientas con la que cuenta para la realizacin de
programas, por ejemplo, cules son los operadores bsicos, palabras reservadas, sintaxis de escritura
del lenguaje, etc.
a) Juego de Caracteres C/C++

a b c d
A B C D
0 1 2 3
+ - * /
| \
Carcter

e
E
4
=

f
F
5
{

g
G
6
}

h
H
7
(

i
I
8
)

j k l m n o p q r s t u v w x y z
J K L M N O P Q R S T U V W X Y Z
9
[ ] < > ! # ~ ^ % & _ : ; , . ?

en blanco y tabulador

b) Palabras Reservadas
Las palabras reservadas son elementos de lxico predefinidos para el lenguaje que tienen un
significado especial para el compilador de C/C++. Sus definiciones no se pueden cambiar, por ello
no pueden utilizarse para usarlas como identificadores del usuario.
Palabras Reservadas ISO/ANSI C++ (Recuerde que C es un subconjunto de C++)

asm*
auto
bool
break
case
catch*
char
class*
const
const_cast
continue
default
delete*
Do
double
dynamic_cast

else
enum
explicit
extern
false
float
for
friend*
goto
if
inline*
int
long
mutable
namespace
new*

operator*
private*
protecte*d
public*
register
reinterpret_cast
return
short
signed
sizeof
static
static_cast
struct
switch
template*
this*

throw*
true
try
typedef
typeid
typename
union
unsigned
using
virtual*
void
volatile
wchar_t
while

Estas palabras no existen en ANSI C

Introduccin al Lenguaje C/C++

12

Anlisis Numrico y Programacin

c) Comentarios
Recordemos que los comentarios son aclaraciones que hace el programador en un programa con el
fin de hacerlo ms comprensivo para l mismo y para otros programadores. Inicialmente en el
lenguaje C los comentarios se escriban usando un smbolo de apertura (/*) y otro de cerradura (*/).

int main ( )
{
int x; /* esto es la declaracin de una variable de tipo entero */
}
C++ soporta dos mecanismos para establecer comentarios. El primero, heredado del C, que utiliza los
mismos smbolos para definir el rango que comprende el comentario, es decir, un comentario puede
iniciar en la lnea nmero uno ( iniciando con /*) y finalizar en la lnea nmero diez (terminando con */).
El segundo tipo de comentario utiliza la pareja de caracteres // que marca el comienzo de un comentario
que se extiende estrictamente hasta el final de la misma lnea.

int main ( )
{
int x; // esto es la declaracin de una variable de tipo entero
}
d) Identificadores
Un identificador es una secuencia de letras, dgitos y caracteres subrayados ( _ )que se usan para
asignar como nombre a una variable, funcin, constante y similares. Las reglas que se deben seguir
en la eleccin de un identificador son:

El primer carcter de un identificador debe comenzar con una letra o un carcter subrayado.
Los caracteres siguientes pueden ser letras, dgitos o subrayados.
No pueden dejarse espacios en blanco.
No pueden usarse caracteres especiales (distintos de A..Z, a..z, 0..9, _ ).
No se acepta un carcter acentuado o el carcter o (ninguno existe en el idioma ingls).
Los identificadores en C/C++ son sensibles a las maysculas. Por ejemplo, Volumen,
VOLUMEN, volumen, VOLumen y voluMEN son cinco identificadores distintos.
No se pueden utilizar palabras reservadas tales como int, auto, bool, etc. como nombres de
identificadores.

Reglas Prcticas de Creacin de Identificadores

Utilizar nombres con letras minsculas para las variables. En caso de nombres con ms de una
palabra separar los dos nombres con un subrayado.
primera_prueba
numero_de_items
hora_por_dia

Utilizar nombres con letras minsculas para las variables. En caso de nombre con ms de una
palabra, comenzar cada palabra con una mayscula.
PrimeraPrueba
NumeroDeItems
HorasPorDias

Utilizar letras maysculas para definir constantes.


PI
HORAS_POR_DIA
UNO
DOS

Introduccin al Lenguaje C/C++

13

Anlisis Numrico y Programacin

Identificadores Vlidos
x
y
miNombre
HORAS_POR_DIA
Numero_Hex_1
Num_Hex_1
_Longitud
_Longitud_
base23

Identificadores no Vlidos
9
9y
mi-Nombre
HORASPOR$
Numeros$Hex
protected
sizeof
switch
ao12

comienza por dgito


comienza por dgito
incluye un guin alto
incluye $
incluye $
palabra reservada
palabra reservada
palabra reservada
incluye

e) Variables
En C/C++ una variable es una posicin de memoria con nombre (identificador) donde se almacena
un valor, de un cierto tipo de dato, que puede modificarse. Las variables pueden almacenar todo tipo
de datos: nmeros enteros, nmeros con decimales, cadenas de caracteres, valores lgicos, etc.
Toda variable que se usa en un programa debe ser declarada previamente. En el caso de C++ no se
define dentro del programa un rea de declaracin de variables (como pasa con ANSI C) sino que el
programador puede hacer la declaracin en cualquier lugar del programa antes de usarla.

Una declaracin de variable reserva un espacio de almacenamiento en memoria. El proceso para crear
una variable es escribir el tipo de dato, el identificador o nombre de variable y, en ocasiones, un valor
inicial. Por ejemplo: char repuesta;
Las variables pueden ser inicializadas en el momento que se declaran, o bien inicializarlas despus de
la declaracin. Por supuesto el primer mtodo es el ms utilizado.

int total=100;
f)

char Caracter=R;

float valor=3.8;

Constantes

Una constante es un lugar en la memoria de la computadora que guarda un valor al igual que una
variable, la diferencia est en el hecho de que el valor que contiene nunca podr ser modificado durante
toda la ejecucin de un programa.
En C/C++ existen cuatro tipo de constantes: constantes de tipo entero, carcter, flotante y cadena.

Sintaxis: <const> <tipo de constante> <nombre de la constante> <=> <valor>;


Ejemplo:

const int MAX=100;


const int NUM_MAX=1000;
const char UNIDAD=A;
const double V=3.5;
const float C=3.14e+32;
const char CADENA[21]=Hola a todo el Mundo;

Introduccin al Lenguaje C/C++

14

Anlisis Numrico y Programacin

El modificador const se usa adems en C/C++ para proporcionar proteccin de slo lectura a los
parmetros que se pasan a una funcin. Cuando se hace preceder a un tipo de argumento el modificador
const para indicar que este argumento no se puede cambiar, el argumento al que se le aplica no se
puede asignar un valor ni cambiar.

void copia(const int a, int b)


Los valores de las constantes tipo carcter se representan entre comillas simples:

const char X=s;


Entonces, cmo se representa el carcter si es un elemento sintctico del lenguaje?, es decir cmo
usarlo si ya tiene un uso establecido?. El compilador C/C++ reconoce tambin un conjunto de constantes
tipo carcter denominadas secuencias de escape, fueron creadas para dar solucin a este tipo de
problemas:

Secuencia
de escape
\n
\t
\v
\b
\r
\f

Significado
Nueva lnea
Tabulacin
Tabulacin Vertical
Retroceso
Retorno
Avance de pginas

Secuencia
de escape
\\
\?
\
\
\0
\a

Significado
Barra inclinada
Signo de interrogacin
Comilla simple
Dobles comillas
Carcter nulo
Timbre

g) Operadores
Los operadores permiten construir expresiones para consultar condiciones, actualizar informacin y
asignar nuevos valores. Los operadores permiten manipular variables y construir tales expresiones.
Operandos son las variables u otras expresiones que manipulan los operadores. Muchos operadores
tienen restricciones que se aplican a los tipos de datos.
C/C++ se caracteriza por ser un lenguaje rico en operadores, de hecho tiene quince categoras.
Algunas clasificaciones: aritmticos, relacionales, lgicos, manipulacin de bits, coma, asignacin,
condicional, sizeof, entre otros.

1.

Operadores Aritmticos
Los operadores aritmticos soportan la manipulacin de enteros y nmeros de coma flotante

Operador C++
+
/

Significado
menos unitario
Suma
Resta
Divisin

Introduccin al Lenguaje C/C++

Tipo de dato
numrico
numrico
numrico
numrico

Ejemplo
x=-1*(x+1)
b=35+c
z=3.14-t
d=m/v

15

Anlisis Numrico y Programacin

Operador C++
*
%

Significado
multiplicacin
Mdulo

Tipo de dato
Ejemplo
area=longitud*altura
numrico
cuenta=w%15
entero

Los operadores aritmticos son tambin legales con tipos de datos carcter. Supongamos que la
variable carcter c contiene un carcter ASCII entre 0 y 9.
char c=9;
int digito = 0;
digito = c-0;
Estas sentencias convierten el valor a un dgito decimal (c y el valor 0 se transforman a enteros).

2.

Operadores Relacionales
Un operador relacional, tambin llamados de comparacin, es un smbolo que indica una relacin
entre dos cantidades. Estas cantidades pueden ser variables, constantes o funciones. Todos los
operadores relacionales proporcionan un resultado de tipo bool (verdadero o falso).

Operador C++
>
>=
<
<=
==
!=

3.

Significado
mayor que
mayor o igual que
menor que
menor o igual que
igual a
distinto de

Ejemplo Verdadero
5>4
10>=10
3<5
3<=15
5= =5
8!=4

Ejemplo Falso
3>5
3>=5
5<3
15<=3
10= =5
24/2!=12

Operadores Lgicos
Los operadores lgicos toman valores lgicos (bool) y devuelven resultados tambin lgicos (Si
o No). Existen tres operadores lgicos: and (&&), or (||) y not (!).

Operador C++
&&
||
!
4.

Significado
AND (y) lgico
OR (o) lgico
NOT (no) lgico

Ejemplo
k>1 && k<15
k<0 || k>25
! (k>1)&&(k<10)

Operadores de Asignacin
Los operadores de asignacin sirven para realizar sentencias de asignacin ya que forman parte
de ellas. La sentencia de asignacin evala el lado derecho de la asignacin y lo convierte a un
valor compatible con la variable del lado izquierdo. Este valor se asigna a la variable del lado
izquierdo.
int z=50; //asigna el valor 50 a la variable z
int z=w+1; //asigna (w+1) a z

Introduccin al Lenguaje C/C++

16

Anlisis Numrico y Programacin

C++ permite asignaciones mltiples en una sentencia nica, por ejemplo:


a=b+(c=5);

equivale a

c=5; y a=b+c;

La asignacin simple (=) se evala de derecha a izquierda, permitiendo asignaciones en cascada,


tales como: x=y=z=1; lo que hace que cada una de las variables tome el valor de 1.

Operador C++
+=
-=
/=
*=
%=

Ejemplo
suma+=x
y-=x
cuenta/=n
sol*=factor
bin%=cuenta

Ejemplo: a*=a+b
5.

Ejemplo en Formato Largo (equivalente)


suma=suma+x
y=y-x
cuenta=cuenta/n
sol=sol*factor
bin=bin%cuenta

equivale a

a=a*(a+b)

Operadores de Incremento y Decremento


C++ ofrece los operadores de incremento (++) y decremento (--) que permiten abreviar la sintaxis
de sumar o restar 1, respectivamente, al valor de una variable.
La sintaxis general del operador ++ es:
formato1: preincremento
++variable
formato2: postincremento
variable++
La versin preincremento del operador ++ incrementa el valor de su operando antes de que la
variable proporcione su valor a la expresin en la que se encuentra. La versin postincremento
incrementa el valor de su operando despus de que la variable proporcione su valor a la expresin
en la que se encuentra.
int cuenta =1;
int num;
num=cuenta++; // num almacena 1 y cuenta almacena 2
num=++cuenta; // num almacena 3 y cuenta almacena 3
La sintaxis general del operador -- es:
formato1: predecremento
--variable
formato2: postdecremento
variable
La versin predecremento del operador -- decrementa el valor de su operando antes de que la
variable proporcione su valor a la expresin en la que se encuentra. La versin postdecremento
decrementa el valor de su operando despus de que la variable proporcione su valor a la
expresin en la que se encuentra.
int cuenta =10;
int num;
num=cuenta--; // num almacena 10 y cuenta almacena 9
num=--cuenta; // num almacena 8 y cuenta 8

Introduccin al Lenguaje C/C++

17

Anlisis Numrico y Programacin

otros ejemplos:
j=++i;
j=i++;
i=++i+i++

// equivale a i=i+1; j=i;


// equivale a j=i; i=i+1;
// dependiente del sistema

Los operadores incremento y decremento trabajan tambin con flotantes y doubles .

6.

Operador Coma
El operador coma (,) es especfico de C y C++. Este operador permite la evaluacin de
expresiones mltiples es una sentencia. El operador agrupa parejas de subexpresiones:

expresin1, expresin2, expresin3, . . ., expresin


ejemplo: int suma=0, j=1;
En el ejemplo anterior j es declarada como int y toma el valor 1.
otro ejemplo usando un ciclo for:
for (int i=0, j=MAX-1; i<j; i++, j--)
En este bucle for las variables i y j controlan las iteraciones del bucle. La sentencia de
inicializacin utiliza el operador coma para iniciar ambas variables de control en la misma
sentencia. De modo similar, la parte incremento del bucle incrementa la variable i y decrementa
la variable j. El operador coma separa las dos expresiones en la parte incremento.

7.

Operador Condicional
El operador ?: es un operador ternario.
Su formato es: expresin1 ? expresin2 : expresin3

Si expresin1 se evala verdadero, expresin2 se evala; en caso contrario, se evala


expresin3.
int a=3, b=5, c;
c=(a>b)?a:b;
En este ejemplo, c toma el valor de b porque la expresin (a>b) result ser falsa.

8.

Operador sizeof
El operador sizeof devuelve el nmero de bytes de su operando.
Los formatos son:
sizeof(tipo) y sizeof (expresin)
Tipo es un tipo definido por el usuario o predefinido por el lenguaje, y ambos formatos se evalan
en tiempo de compilacin. En el segundo formato, el compilador no evala la expresin; en su
lugar, se determina el nmero de bytes del tipo de resultado de la expresin.
char nombre_unidad;
int tam=sizeof(char)
int tam2=sizeof(nombre_unidad)

Introduccin al Lenguaje C/C++

18

Anlisis Numrico y Programacin

El valor de retorno de sizeof es dependiente de la mquina y del compilador. Veamos los


siguientes ejemplos:
char buf[80];
// array de 80 caracteres
int i=15;
// int
double j=15;
// double
enum {max=100};
// enumerador
cout<<sizeof(buf);
// 80 bytes
cout<<sizeof(i); // 4 bytes
cout<<sizeof(j); // 8 bytes
cout<<sizeof(max);
// 4 bytes

Precedencia de Operadores
Los operadores en C/C++ tienen definida una precedencia de evaluacin. El orden de evaluacin indica
cmo el compilador establece la evaluacin de una expresin con operadores que tienen la misma
precedencia. La siguiente tabla muestra en la columna de precedencia los nmeros de menor a mayor.
As, los operadores con un valor 2 en la columna de precedencia tiene igual prioridad y todos los que
tienen valor 3 comparten una precedencia ms baja.
Ejemplo:

double x=3.0;
double y=6.0;
double z=10.0;
double t;
t=x+y*z;
cout<<t ;
// imprime 63

Categora
Unitario

Multiplicativo

Aditivo
Desplazamiento
(bit a bit)

Relacional

Nombre
Postincremento
Postdecremento
Direccin
NOT bit a bit
Lgico NOT
Negacin
Signo ms
Preincremento
Predecremento
Tamao de dato
Mdulo
Multiplicacin
Divisin
Suma
Resta
Desplazar
izquierda
Desplazar derecha
Menor que

Introduccin al Lenguaje C/C++

Smbolo
++
-&
~

+
++
-sizeof
%
*
/
+
<<
>>
<

Orden de Evaluacin
Izquierda a derecha
Izquierda a derecha
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha

Precedencia
2
2
2
2
2
2
2
2
2
2
3
3
3
4
4
5
5
6
19

Anlisis Numrico y Programacin

Categora

Bit a bit

Lgico
Ternario
Asignacin

Nombre
Menor o igual que
Mayor que
Mayor o igual que
Igual
Diferente
AND
XOR
OR
AND
OR
Expresin
condicional
Aritmtico

Desplazar
Bit a bit

Coma

Smbolo
<=
>
>=
==
=
&
^
|
&&
||
:
=
+=
-=
*=
/=
%=
>>=
<<=
&=
|=
^=
,

Orden de Evaluacin
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Izquierda a derecha
Derecha a izquierda

Precedencia
6
6
6
7
7
8
9
10
11
12
13

Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Derecha a izquierda
Izquierda a derecha

14
14
14
14
14
14
14
14
14
14
14
15

Adjunto a este tema una tabla de CODIGOS DE CARACTERES ASCII. Es muy til para la creacin de
algunos programas que usan caracteres y cadenas de caracteres.

Tabla de Cdigos ASCII de 8 bits


Valor
ASCII
000
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015

Carcter
(nulo)

(bip)

(tabulador)
(avance de lnea)
(hogar)
(avance de formulario)
(retorno de carro)

Introduccin al Lenguaje C/C++

Valor
ASCII
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058

Carcter
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:

Valor
ASCII
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101

Carcter
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
20

Anlisis Numrico y Programacin

Tabla de Cdigos ASCII de 8 bits


Valor
ASCII
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152

Carcter

(cursor a la derecha)
(cursor a la izquierda)
(cursor arriba)
(cursor abajo)
(espacio)

#
$
%
&

(
)
*

Introduccin al Lenguaje C/C++

Valor
ASCII
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

Carcter
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U

Valor
ASCII
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238

Carcter
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

21

Anlisis Numrico y Programacin

Tabla de Cdigos ASCII de 8 bits


Valor
ASCII
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171

Carcter

Introduccin al Lenguaje C/C++

Valor
ASCII
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214

Carcter

Valor
ASCII
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

Carcter

(espacio en
blanco)

22

Anlisis Numrico y Programacin

Estructura de un programa en C/C++.


Todo programa en C consta de una o ms funciones, una de las cuales se llama main. El programa
siempre comenzara por la ejecucin de la funcin main. Las definiciones de las funciones adicionales
pueden preceder o seguir a main.
Cada funcin debe tener:
1. Una cabecera de la funcin, que consta del nombre de la funcin, seguido de una lista opcional de
argumentos encerrados con parntesis.
2. Una lista de declaraciones de argumentos, si se incluyen estos en la cabecera.
3. Una sentencia compuesta, que contiene el resto de la funcin.
Los argumentos son smbolos que representan informacin que se le pasa a la funcin desde otra parte
del programa. Tambin se llaman parmetros a los argumentos.
Cada sentencia compuesta se encierra con un par de llaves {sentencia}. Las llaves pueden contener
combinacin de sentencias elementales (denominadas sentencias de expresin) y otras sentencias
compuestas. As las sentencias compuestas pueden estas anidadas, una dentro de otra. Cada sentencia
de expresin debe acabar en punto y coma (;).
Los comentarios pueden aparecer en cualquier parte del programa, mientras estn situados entre los
delimitadores /* y */ por ejemplo /* esto es un comentario */. Los comentarios son tiles para identificar
los elementos principales de un programa o para la explicacin de la lgica subyacente de estos.

Ejemplo de un Programa en C.

#include <stdio.h>
/* Programa para calcular el rea de un circulo. */
main()
{
float radio, area;
printf(Radio = );
scanf(%f, &radio);
area=3.14159*radio*radio;
printf(Area = %f, area);
}

Acceso a archivo de biblioteca.


Comentario.
Cabecera de funcin.
Abertura de llave.
Declaracin de variables.
Sentencia de salida.
Sentencia de entrada.
Sentencia de asignacin. Proceso
Sentencia de salida.
Cierre de llave. Fin funcin Main

Caracterstica de un programa en C.
Basado en el ejemplo anterior tenemos:

1. El programa est escrito en minscula sin acentuar (salvo los comentarios). Se pueden usar
maysculas o minsculas, aunque es costumbre escribir en minsculas las instrucciones
ordinarias. La mayora de los comentarios tambin se escriben en minsculas, aunque a

Introduccin al Lenguaje C/C++

23

Anlisis Numrico y Programacin

2.

3.
4.
5.

6.
7.

8.
9.

veces se hace en maysculas para poner especial nfasis, o distinguir ciertos comentarios
de instrucciones (las letras maysculas o minsculas no son equivalentes en c).
La primera lnea contiene una referencia a un archivo especial (stdio.h) que contiene
informacin que se debe incluir (include) en el programa cuando se compila. La inclusin
requerida de esta informacin ser manejada automticamente por el compilador.
La segunda lnea es un comentario que describe el propsito del programa.
La tercera lnea es la cabecera de la funcin main. Los parntesis vacos que siguen al
nombre de la funcin indican que esta no incluye argumentos.
Las cinco lneas restantes del programa estn adentradas con tabuladores a la izquierda y
encerrados entre un par de llaves. Estas cinco lneas integran la sentencia compuesta dentro
del main.
La primera lnea adentrada es una declaracin de variable. Establece los nombres simblicos
radio y rea como variables de coma flotante.
Las otras cuatro lneas adentradas son un tipo particular de sentencia de expresin. La
segunda lnea adentrada printf solicita informacin en este caso el valor del radio. El valor
se introduce o almacena al ejecutar la tercera lnea adentrada scanf.
La cuarta lnea adentrada es un tipo particular de sentencia de expresin llamada sentencia
de asignacin. Esta sentencia hace el clculo del rea a partir del valor del radio dado.
La ltima lnea adentrada printf presenta el valor calculado. El valor numrico esta
precedido por un breve mensaje rea =

Introduccin al Lenguaje C/C++

24

Anlisis Numrico y Programacin

Tema 5: Edicin, compilacin y ejecucin de programas en C/C++

Compilador del IDE CodeBlock


Compilando y ejecutando
Las opciones Build >> build y Build >> run, construyen y ejecutan el programa, respectivamente. Se
pueden atajar mediante las pulsaciones de teclas Ctrl+F9 y Ctrl+F10, o, incluso, si se desean realizar
ambas acciones en secuencia, pulsando F9.
En cuanto a la barra de herramientas, pulsando la rueda dentada se
compila, y pulsando el tringulo de reproduccin se ejecuta.
Cuando el proyecto consiste en una aplicacin de consola, una
ventana de consola se abre para recibir y mostrar texto, y cuando termina la ejecucin espera a que se
pulse una tecla.

Tipos de errores
Cuando el compilador traduce un programa puede encontrar errores de sintaxis tanto en el programa
fuente como en otros archivos de cdigo que utilice (archivos de cabecera en C/C++). Durante la primera
fase de compilacin, el programador tiene la posibilidad de corregir los errores detectados con slo
escribir correctamente la sintaxis del lenguaje que usa.
C/C++ trabaja con diferentes archivos (internos, externos y escritos por el programador), esto facilita la
aparicin de otro tipo de errores relacionados con el vnculo de unos archivos con otros. Tambin no
dejan de existir los errores producidos durante la ejecucin de un programa, producto de errores de
anlisis y diseo de algoritmos, los cuales tienen solucin haciendo una revisin del cdigo fuente en
base a un nuevo anlisis.

Errores

Lgicos: Estos errores tienen su origen en el diseo de algoritmos (un algoritmo mal
diseado produce resultados inesperados). Generalmente son errores que no generarn problemas
al momento de la compilacin, pero es probable que los resultados esperados de un problema no
sean los ms satisfactorios. Muchas veces estos errores provocan otro tipo de errores.
Errores de Sintaxis: Son aquellos que violan las reglas de escritura de un lenguaje de programacin.
Todo lenguaje tiene definidas una sintaxis y una semntica que deben cumplirse al momento de
escribir el cdigo fuente.

Errores de Enlace: Los errores de enlace se producen cuando en un programa se hace referencia

a otros archivos que no existen, tienen otro nombre o no estn incluidos como parte del programa
mismo. Generalmente se presentan cuando se trabaja modularmente.
Errores de Ejecucin: Se producen durante la ejecucin de un programa. Regularmente son errores
provocados por acceso a memoria no permitida, conflicto en los tipos de datos, divisin por cero,
entre otros. Estos errores se presentan como consecuencia de errores lgicos.

El Preprocesador
El preprocesamiento ocurre antes de que se compile un programa. Algunas acciones posibles son:
inclusin de otros archivos en el archivo bajo compilacin, definicin de constantes simblicas y macros,
compilacin condicional de cdigo de programa y ejecucin condicional de directivas de preprocesador.
Introduccin al Lenguaje C/C++

25

Anlisis Numrico y Programacin

El preprocesador es algo caracterstico de C/C++, que no se suele encontrar en otros lenguajes de


programacin. El preprocesador acta sobre el programa fuente, antes de que empiece la compilacin
propiamente dicha, para realizar ciertas operaciones. En general se encarga de modificar el cdigo
fuente, segn una serie de directivas. Estas se reconocen puesto que empiezan por # y no tienen que
terminar en ;, a diferencia de la mayora de las instrucciones de C/C++. Todas las directivas del
preprocesador empiezan con el signo #, y antes de una directiva de preprocesador en una lnea slo
pueden aparecer espacios en blanco.

La directiva del preprocesador #include


La directiva #include hace que en lugar de la directiva se incluya una copia del archivo especificado. Las
dos formas de la directiva son:
#include <NombredeArchivo>
#include NombredeArchivo
La diferencia entre estas dos formas radica en la localizacin donde el preprocesador buscar el archivo
a incluirse. Si el nombre del fichero est encerrado entre comillas, el preprocesador buscar el archivo a
incluirse en el mismo directorio que el archivo que se est compilando. Este mtodo se utiliza
normalmente para incluir archivos de cabecera definidos por el programador. Si el nombre del fichero
est encerrado en corchetes angulares (< y >) que se utilizan para los archivos de cabecera estndar
de biblioteca la bsqueda se llevar a cabo de forma independiente en directorios predesignados del
compilador.
La directiva #include se utiliza por lo general para incluir archivos de cabecera de biblioteca estndar
como stdio.h y stdlib.h. La directriz #include tambin se utiliza con programas formados de varios archivos
fuente que deben ser compilados juntos.

La directiva del preprocesador #define: constantes simblicas


La directiva #define crea constantes simblicas constantes representadas con smbolos y macros, es
decir operaciones definidas como smbolos. El formato de la directiva #define es:

#define identificador texto_de_ reemplazo


Cuando en un archivo aparece esta lnea, todas las subsecuentes apariciones de identificador sern de
forma automtica reemplazadas por texto_de_reemplazo, antes de la compilacin del programa.

Ejemplo:

#define PI 3.14159

La directiva del preprocesador #define: macros


Una macro es una operacin definida en una directiva de preprocesador #define. Como en el caso de
las constantes simblicas, antes de compilarse el programa, el macro identificador se reemplaza en l
mismo por el texto_de_reemplazo. Las macros pueden ser definidas con o sin argumentos. Una macro
sin argumentos se procesa como que fuera una constante simblica. En una macro con argumentos, los
Introduccin al Lenguaje C/C++

26

Anlisis Numrico y Programacin

argumentos se sustituyen en el texto de reemplazo, y a continuacin la macro de expande, es decir, en


el programa el texto de reemplazo reemplaza al identificador y a la lista de argumentos.

Ejemplo:
#define PI 3.14
#define AREA_CIRCULO(x) PI*(x)*(x)
Ahora podemos usar la macro como si fuera funcin normal:
void main()
{
int a;
a = AREA_CIRCULO(3);
}
Durante la compilacin la macro se expande a:

a = 3.14 * (3) * (3)


y obtenemos el resultado esperado.
Las macros nos permiten insertar cdigo en el programa directamente, evitando la sobrecarga de invocar
o llamar a una funcin, pero conservando la legibilidad del programa. Por otra parte permite realizar
clculos durante la compilacin, en lugar de realizarlos durante la ejecucin. As, en el ejemplo anterior,
el compilador le da directamente el valor adecuado a la variable a, en lugar de insertar instrucciones
para que se evale cada vez que se use.
Es importante no olvidar los PARNTESIS alrededor de los parmetros en la definicin de la macro, de
lo contrario la expansin de parmetros puede ser incorrecta, por ejemplo:
#define AREA_CIRCULO(x) PI*x*x
void main()
{
int a,b;
a = AREA_CIRCULO(c + 3);
}
expande a:

a = 3.14 * c + 3 * c + 3
que, atendiendo la precedencia de operadores, es equivalente a

a = (3.14 * c) + (3 * c) + 3
en lugar de expandir a:

a = 3.14 * (c + 3) * (c + 3)
que es lo que debera hacer.
Que son Archivos de Cabecera?
Los archivos de cabecera en C/C++ (extensin .h) contienen definiciones, tales como los tipos y nombres
de variables externas, definiciones de estructuras, constantes, macros y prototipos de funciones.

Introduccin al Lenguaje C/C++

27

Anlisis Numrico y Programacin

Inclusin de Archivos de Cabecera


C++, al igual que C, permite escribir programas que utilizan diversas libreras mediante la directiva
#include. C++ soporta dos formatos de directiva #include.
El procesador permite incluir el contenido de un archivo en el cdigo fuente con:

#include <stdio.h>
#include <iostream.h>
#include trabajador.h
Estas tres lneas son sustituidas lgicamente por el contenido de los archivos de cabecera stdio.h,
iostream.h y trabajador.h. Se dice entonces que se han incluido estos tres archivos. Los caracteres < >
y sirven para indicar dnde se buscan los archivos de cabecera:
<...>

El archivo de cabecera se busca slo en el directorio por omisin. (donde est instalado el
compilador).

...

El archivo de cabecera se busca sucesivamente en:


1. El directorio actual (donde se crea el proyecto o programa), y si no se encuentra
ah,
2. En los directorios generales de include (una carpeta con libreras estndar en el
compilador).

Se pueden especificar nombres de camino (rutas de archivo) relativos, por ejemplo


#include<sys\stat.h>
Indica al compilador que busque stat.h en el directorio sys, que es un subdirectorio de uno
de los directorios por omisin.
Depuracin
La depuracin en CodeBlocks no se produce cuando el programa se ejecuta normalmente, mediante
Ctrl+F10 F9. Para depurar un programa es necesario seleccionar la opcin Debug >> start, o bien
pulsar F8, que lanza la depuracin del programa desde el principio. Si se desea empezar a depurar desde
un punto determinado, o durante la depuracin, hacer que el programa corra normalmente hasta una
determinada lnea, se sita el cursor sobre esa lnea y se selecciona Debug >> run to cursor, o se pulsa
F4. A la hora de depurar una aplicacin, se utilizan principalmente las opciones Debug >> Step into (Shift
+ F7) y Debug >> next line (F7).
Mientras que la segunda va avanzando de lnea en lnea, y ejecutando a las funciones que sean llamadas
en cada una de manera transparente, la primera permite saltar de funcin en funcin, conjuntamente con
el flujo del programa.
Breakpoints Los puntos de ruptura (breakpoints), se utilizan para parar la ejecucin cuando se est
depurando, y se pulsa F8 para que la ejecucin contine normalmente. Se marcan con un crculo rojo a
la izquierda de la lnea, pulsando con el ratn entre la lnea y el nmero de lnea, o bien situndose en
esa lnea y pulsando F5

Introduccin al Lenguaje C/C++

28

Anlisis Numrico y Programacin

Tipos de Datos en C/C++


Los lenguajes pueden clasificarse segn la forma de comportarse con respecto a la evaluacin de los
tipos de datos que maneja, de tal manera que podemos decir que un lenguaje es fuertemente tipado o
dbilmente tipado. C/C++ es un lenguaje fuertemente tipado desde el punto de vista esttico, es decir,
en tiempo de compilacin puede advertirnos de cualquier inconsistencia o error al respecto de tomar un
tipo por otro o utilizarlo de forma inadecuada. Sin embargo, en tiempo de ejecucin se comporta a veces
de forma muy permisiva (en realidad el programador puede terminar haciendo casi lo que le venga en
gana). La razn de que se haya puesto especial nfasis en la comprobacin esttica de tipos (en tiempo
de compilacin) en lugar de la comprobacin dinmica (en tiempo de ejecucin), se debe a que en C/C++
todas las caractersticas de diseo han estado encaminadas a favor de lograr la mxima velocidad de
ejecucin.
En C/C++ existen distintos tipos de datos, cada uno de los cuales se representa de forma diferente en la
memoria de la computadora, segn la naturaleza y el tamao designado. La Tabla de Datos muestra los
tipos de datos en C/C++ y los requerimientos de memoria. Estos requerimientos pueden variar de una
mquina a otra (segn el procesador y el compilador mismo). La cantidad de memoria que utilizan los
datos determina el rango de valores que pueden soportar.

Tipos de datos bsicos

Los tipos de datos bsicos o fundamentales de C/C++ se caracterizan porque son integrales, no pueden
ser modificados, tanto sus propiedades como las operaciones que se pueden realizar con ellos estn
predefinidos en el lenguaje. La literatura especializada tambin se suele referir a ellos diciendo que estn
preconstruidos o intrnsecamente definidos en el lenguaje.
Los tipos bsicos se pueden clasificar en tres grupos: Numricos, Fraccionarios y Sin valor.
Grupo

Numricos
(Enteros)

Nombre

int
char
bool
(No existe en C)
enum
float

Fraccionarios
double
Sin Valor

void

Descripcin

Cantidades enteras
Caracteres
Valores lgicos

Rango de Valores

-2,147,483,648 a 2,147,483,647
0 a 255 (valores de la tabla ASCII)
False, True

Enumeraciones
Nmero en coma flotante
(nmero que incluye punto
decimal y/o exponente)
Nmero en coma flotante de
doble precisin (ms cifras
significativas y mayor valor
en el exponente)
Sin valor

Requerimiento de
Memoria
4 bytes
1 byte
1 byte

Dominio de los int


-3.4x10-38 a 3.4x1038

4 bytes

8 bytes
-1.7x10-308 a 1.7x10308

Tabla de Datos A
Tipo Entero (int)
El especificador de tipo int, junto con sus variantes short y long en sus versiones signed y unsigned,
identifican a los enteros.

Sintaxis:

[signed|unsigned] [short|long] <int> <identificador> ;

Introduccin al Lenguaje C/C++

29

Anlisis Numrico y Programacin

El especificador int se utiliza para definir un dato tipo nmero entero. Junto con sus variantes short y long
en sus versiones signed y unsigned, dan lugar a las combinaciones autorizadas que se indican en la
tabla, los sinnimos se deben a los valores que se suponen por defecto.

Especificadores de enteros (sinnimos en la misma lnea)


int
signed int
unsigned
unsigned int
short
short int
signed short int
unsigned short
unsigned short int
long
long int
signed long int
unsigned long
unsigned log int

signed y unsigned solo pueden usarse con int, short y long.


Las palabras clave signed y unsigned, usadas aisladamente, significan signed int y unsigned int.
Con int solo pueden usarse long o short.
Las palabras clave long y short usadas aisladamente significan long int y short int.

Por una larga tradicin de C, el especificador int poda omitirse en la mayora de los casos, ya que se
supona por defecto, adems si no se indicaba otra cosa, se supona tambin signed int. Sin embargo,
en C++ es necesario especificarlo siempre, ya que es un lenguaje que se preocupa ms de la integridad
de los tipos utilizados (lo que puede prevenir muchos problemas).

int x signed int x


unsigned x unsigned int x
short x short signed int x
unsigned short x unsigned short int x
long x long signed int x
unsigned long x unsigned long int x

Tipo
int
signed short
unsigned short

Tamao bytes
Rango
4
-2,147,483,648 a 2,147,483,647
2
-32767 a 32767
2
0 a 65535

Tipo Caracter (char)


El especificador char se utiliza para definir un dato tipo caracter. Se almacenan en 1 byte, es decir,
siempre ocurre que sizeof(char) = 1. Esta es la definicin ANSI de byte en C/C++: la memoria requerida
para almacenar un carcter.

Sintaxis:

[signed|unsigned] <char> <identificador>

Un char puede ser con signo (signed), sin signo (unsigned) o no especificado; por defecto se suponen
con signo. Los objetos declarados de tipo caracter pueden contener cualquiera de los caracteres de la
tabla ASCII; son valores que pueden asimilarse fcilmente a los enteros; de hecho se pueden realizar

Introduccin al Lenguaje C/C++

30

Anlisis Numrico y Programacin

con ellos operaciones aritmticas, el compilador los trata entonces como valores numricos (0..255). En
estos casos puede pensarse en char como un nmero muy pequeo, por lo que pueden ser usados
libremente en expresiones aritmticas, lo que proporciona considerable flexibilidad en cierto tipo de
transformaciones con caracteres.
Ejemplos:

declara una variable tipo caracter


asigna la letra 'a' a la variable letra
asigna el valor correspondiente a 6 en la tabla ASCII
El valor de letra en este caso puede utilizarse en operaciones matemticas.
declara un vector de 10 caracteres (cadena de 10 caracteres)
asigna a la posicin 1 de la cadena s el carcter '5'

char letra;
letra = 'a' ;
letra = 6;
char s[10];
s[1]= '5' ;

Tipo Booleano (bool)


El estndar ISO/ANSI C++ ha introducido este nuevo tipo de dato para manejar directamente datos
lgicos verdadero o falso de un modo directo, sin recurrir al modelo que tiene en cuenta el valor cero
(falso) o distinto de cero (verdadero). La palabra clave bool declara un tipo especial de variable
(denominada booleana) que slo puede tener dos valores: true y false. Por esta razn a estas variables
tambin se las denomina variables lgicas.

Sintaxis: <bool> <identificador>;


Evidentemente el tipo bool est especialmente adaptado para realizar comprobaciones lgicas. Por su
parte, las palabras clave false y true son literales que tienen valores predefinidos (podemos considerar
que son objetos de tipo booleano de valor constante predefinido). false tiene el valor falso
(numricamente es cero), true tiene el valor cierto (numricamente es uno o distinto de cero).

bool val = false;


val = true;
val = 0;

declara val como booleana y la inicializa en 0


ahora se cambia su valor a 1
ahora val recibe el valor 0, es decir false

Tipo Flotante (float y double)


Tambin llamados de coma flotante: son float y double. Slo se permite un modificador adicional (long),
dando lugar a los long double, de forma que son en realidad tres tipos: float, double y long double.

Sintaxis:

<float> <identificador>;
[long] <double> <identificador>;

Ejemplos:
float x = 3.14;
double y = 6.2e+006;
Tanto el especificador float como el double son palabras clave que definen un identificador como de tipo
numrico de coma flotante (fraccionario). La razn principal de usar float es economizar espacio o tiempo
Introduccin al Lenguaje C/C++

31

Anlisis Numrico y Programacin

cuando se almacenan grandes nmeros en mquinas donde el uso de double es muy costoso en
trminos de tiempo de computacin. En ciertos casos los tipos float pueden ser promovidos a double de
forma automtica por el compilador. El almacenamiento interno y rango de los tipos fraccionarios es
dependiente de la implementacin, es decir, cada compilador C++ es libre de definirlos a su manera. El
Estndar solo establece para ellos las siguientes condiciones:
*
*
*
*

El tipo double permitir al menos tanta precisin como el float.


El tipo long double permitir al menos tanta precisin como el double.
El rango de valores de float ser un subconjunto del rango de los double.
El rango de valores de double ser un subconjunto del rango de los long double.

Es recomendable, para evitar problemas en algunos compiladores, establecer en el valor de una variable
fraccionaria la parte decimal, incluso cuando sea cero. float x; x=4.0;

Tipo Sin Valor (void)


void es palabra reservada, indicador de un tipo especial: ausencia de valor.

Sintaxis:

<void> <identificador>;

Es importante sealar que void es tratado por el compilador como un tipo, es sintcticamente un tipo
fundamental del mismo modo que pueden serlo int, char, double, etc., aunque de tipo un poco
especial. El hecho de que signifique ausencia de valor no es inconveniente para que sea un tipo con
todas sus caractersticas; podramos suponer que representa en el conjunto de los tipos de datos lo
mismo que el cero en el conjunto de los nmeros.
int entero;
char caracter;
void novalor;

// Ok. entero es int


// Ok. caracter es char
// Error! uso no permitido. (no pueden declararse variables de tipo void)

En cambio s estn permitidas con l otras expresiones propias de los tipos:


void* puntero;
void func();

// Ok. puntero es un puntero a void


// Ok. El tipo devuelto por la funcin es void

void se usa de varias formas:


*
*
*

Para indicar que una funcin no devuelve ningn valor o no acepta ningn parmetro.
Para crear punteros genricos.
Para modelado de tipos.

Identificadores y Palabras Claves.


Los identificadores son nombres que se les da a varios elementos de un programa, como variables,
funciones, y array. Un identificador est formado por letras y dgitos, en cualquier orden, excepto el primer
carcter, que deber ser una letra. Se pueden utilizar maysculas y minsculas no acentuadas, aunque
es costumbre utilizar minsculas para la mayora de identificadores. Ejemplo:
X
y12
suma_1
_temperatura
nombres
area
porcentaje
TABLA

Introduccin al Lenguaje C/C++

32

Anlisis Numrico y Programacin

Los siguientes nombres no son validos


4num

orden-no

indicador error

Hay ciertas palabras reservadas, denominadas palabras clave, que tienen en C un significado predefinido
estndar. Las palabras clave solo se pueden utilizar para su propio propsito ya establecido; no se
pueden utilizar como identificadores definidos por el programador. Las palabras claves son:
auto
break
case
char
const
continue
default
do

doubl
else
enum
extern
float
for
goto
if

int
long
register
return
short
signed
sizeof
static

struct
switch
typedef
union
unsigned
void
volatile
while

Declaracin de Variables y constantes


Variables.
Una variable es un identificador que se utiliza para representar cierto tipo de informacin dentro de una
determinada parte del programa. En su forma ms sencilla, una variable contendr un dato simple, esto
es una cantidad numrico o una constante de carcter. En algn punto del programa se le asignara a la
variable un determinado valor. Este valor se puede recuperar despus en el programa con simplemente
hacer referencia al nombre de la variable.
A una variable se le pueden asignar diferentes valores en distintas partes del programa, de esta forma la
informacin representada por la variable puede cambiar durante la ejecucin del programa. Sin embargo
el tipo de dato asociado a la variable no puede cambiar.
Ejemplo: un programa en c contiene las siguientes lneas:
Int a, b, c;
Char d;
...
a=3;
b=5;
c=a+b;
d=a;

a=4;
b =2
c=a-b;
d=W

Constantes.
C tiene cuatro tipos de bsicos de constantes: constantes enteras, constantes de coma flotante,
constantes de carcter y constantes de cadena de caracteres (hay tambin constantes enumeradas).
Las constantes enteras y de coma flotantes representan nmeros. Se las denomina, en general
constantes de tipo numrico. Las siguientes reglas se pueden aplicar a todas las constantes numricas.
1.
2.
3.
4.

No se pueden incluir comas ni espacios en blanco en la constante.


Si se desea, la constante puede ir precedida de una signo menos (-).
El valor de una constante no puede exceder un lmite mximo y un mnimo especifico.
Si la constante tiene dos o ms dgitos el primero de ellos deber distinto de cero.

Introduccin al Lenguaje C/C++

33

Anlisis Numrico y Programacin

Ejemplos de constantes enteras.


0

743

5280

32767 9999

Las siguientes constantes estn escritas incorrectamente.


12,245
36.0
10 20 30
123-45-6789
0900

carcter ilegal (,)


carcter ilegal (.)
carcter ilegal (espacio en blanco)
carcter ilegal (-)
el primer digito no puede ser cero

Constantes de Carcter: una constante de carcter consta de cualquier nmero de caracteres


consecutivos o ninguno encerrados entre comillas ()Ejemplos
verde
$19.95

Nicaragua
Granada, Nicaragua

Lnea 1 \n lnea 2

Representacin de Datos en memoria y tamao de Variables

Existen en C/C++ distintos tipo de datos, cada uno de los cuales se puede encontrar
representado de forma diferente en la memoria de la computadora.
Tipo de datos
int
char
float
double

Descripcin

Requerimiento tpico
de memoria
Cantidad entera.
2 byte o un palabra
Carcter.
1 byte
Numero con coma flotante(un nmero que 1 palabra 4 byte
incluye punto decimal y/o exponente(
Numero de coma flotante de doble precisin (mas 2 palabras 8 byte
cifras significativas y mayor valor posible del
exponente)

Datos definidos por el programador


En un programa se pueden usar los distintos tipos de datos predefinidos por el lenguaje de
programacin en el que est escrito. Adems, algunos lenguajes de programacin tambin
permiten que el programador pueda definir sus propios tipos de datos
El programador tiene la posibilidad de definir ( declarar ) sus propios tipos de datos. Los tipos
de datos simples que puede definir el programador son:

Introduccin al Lenguaje C/C++

37

Anlisis Numrico y Programacin

Operador typedef
La caracterstica typedef permite a los usuarios definir nuevos tipos de datos que sean equivalentes
a los tipos de datos existentes. Una vez que el tipo de datos definido por el usuario ha sido
establecido, entonces las nuevas variables, arrays, estructuras, etc., pueden ser declaradas en
trminos de este nuevo tipo de datos.
En trminos generales, un nuevo tipo de datos se define como

typedef tipo nuevo-tipo;

donde tipo refiere un tipo de datos existente (bien un tipo de datos estndar o bien un tipo de datos
previamente definido por el usuario) y nuevo-tipo el nuevo tipo de datos definido por el usuario.
Sin embargo, debe quedar claro que el nuevo tipo ser nuevo solo en el nombre. En realidad, este
nuevo tipo de datos no ser fundamentalmente diferente de los tipos de datos estndar
Aqu tenemos una declaracin simple que involucra el uso de typedef.
typedef int edad;
En esta declaracin edad es un tipo de datos definido por el usuario equivalente al tipo int. De aqui,
la declaracin de variable
edad varon, hembra;

es equivalente a escribir

int varon , hembra;

En otras palabras, varn y hembra se consideran variables de tipo edad, pero son realmente
variables de tipo entero.

Arreglos
Un arreglos es una coleccin, o grupo de datos, donde cada dato tiene su posicin (primero, segundo,
tercero) y todos los datos del grupo son del mismo tipo , es decir, o todos son enteros, o todos son
reales, etc.
En otras palabras, es un conjunto de datos que se almacenan en memoria de manera seguida con el
mismo nombre. Es una coleccin de variables del mismo tipo, cada una de ellas se llama elemento y
posee una posicin dentro del arreglo llamado ndice.
Un arreglo tiene

Tamao: el nmero de datos.


Tipo: cul es el tipo de todos los datos del
arreglo.
Nombre: el nico nombre bajo el cual
vamos a dirigirnos al mismo.

Introduccin al Lenguaje C/C++

38

Anlisis Numrico y Programacin

Operaciones con Arreglos


Para acceder al elemento de un arreglo es necesario tener presente el ndice, este se escribe entre
parntesis cuadrados ([ ]), por ejemplo para el arreglo A y la posicin 5 se escribe A[5].
Al declarar una variable cualquiera siempre indicamos: tipo y nombre.
Por ejemplo:
int a;
Para declarar un arreglo, se debe indicar Tipo Nombre y Tamao Un arreglo de 10 elementos enteros,
se declara:
int ArregloEnteros[10];
y lo podemos visualizar: Cada elemento del grupo va a estar identificado por un valor numrico, llamado
ndice En C el primer elemento de un arreglo tiene el ndice 0.
Usamos el nombre del arreglo y el ndice que identifica al elemento:
nombre_arreglo[indice]
Si se desea asignar el valor de 2 al primer elemento del arreglo:
arregloEntero[0] = 2;
arregloEntero[1] = 9;
arregloEntero[4] = 1;
Cada elemento es en efecto una variable del tipo declarado para el arreglo.
Leer o imprimir datos en el arreglo
Si tenemos 10 elementos en un arreglo, y queremos pedir que los ingresen por teclado, debemos repetir
el ingreso 10 veces, utilizando la sentencia For, la cual abordaremos ms adelante:

As mismo, para imprimir todos los elementos de un arreglo, deberamos repetir el proceso de imprimir,
pero diez veces:

Un arreglo en C/C++ tambin se puede inicializar de las siguientes formas:

Crear un arreglo de 3 elementos Inicializando cada elemento: int A[]={11,2,8}; int A[3]={11,2,8};
Inicializando todos los elementos con el mismo valor: int A[3]={0};

Introduccin al Lenguaje C/C++

39

Anlisis Numrico y Programacin

Estructuras (struct)
Hemos visto anteriormente el tipo de dato compuesto Arreglos definido como una coleccin
de elementos del mismo tipo.
Elementos
de tipo cadena

Elementos
de tipo entero

En algunos casos nos puede interesar trabajar con colecciones de elementos de distinto tipo:
Estructura

Una estructura es una coleccin de uno o ms elementos, cada uno de los cuales puede ser de un tipo
de dato diferente. Cada elemento de la estructura se denomina miembro.
Una estructura puede contener un nmero ilimitado de miembros. A las estructuras tambin se las llama
registros.
Sintaxis:

Ejemplo:
Podemos crear una estructura llamada disco que contiene 4 miembros: ttulo del disco, nmero de
canciones, precio y fecha de compra.

Introduccin al Lenguaje C/C++

40

Anlisis Numrico y Programacin

Para definir el tipo de dato disco como una estructura con 4 miembros

Una vez definido el tipo de dato estructura, necesitamos declarar variables de ese tipo.
Existen dos formas diferentes:
1. En la definicin del tipo de datos estructura

2. Como el resto de las variables. Indicando el tipo (en este caso el nombre de la estructura)
y el nombre de la variable.

Los miembros de cada variable se almacenan en posiciones consecutivas en memoria.


Inicializar una Estructura
Se especifican los valores de cada uno de los miembros entre llaves y separados por comas.

Introduccin al Lenguaje C/C++

41

Anlisis Numrico y Programacin

Acceso a los miembros de una variable de tipo estructura


Una vez que hemos declarado una variable de tipo estructura, podemos acceder a los miembros de dicha
variable:

Nos puede interesar modificar la informacin de alguno de los miembros, recuperar informacin para
imprimirla por pantalla, etc.
El acceso a los miembros de la estructura se realiza utilizando el operador punto (.)
variable.miembro
Ejemplo:

cd.titulo , cd.precio , cd.num_canciones

Almacenar informacin en la
variable cd mediante el teclado.

Recuperar y modificar
informacin de la variable cd

Se puede asignar una estructura a otra de la siguiente manera:

Introduccin al Lenguaje C/C++

42

Anlisis Numrico y Programacin

Construccin de expresiones en el lenguaje: aritmticas y lgicas.


Expresiones y Sentencias en C/C++
Una expresin es una combinacin de variables y/o constantes, y operadores. La expresin es
equivalente al resultado que proporciona al aplicar sus operadores a sus operandos. Por ejemplo, 1+5
es una expresin formada por dos operandos (1 y 5) y un operador (el +); esta expresin es equivalente
al valor 6, lo cual quiere decir que ah donde esta la expresin aparece en el programa, en el momento
de la ejecucin es evaluada y sustituida por su resultado. Una expresin puede estar formada por otras
expresiones ms sencillas, y puede contener parntesis de varios niveles agrupando distintos trminos.
En C/C++ existen distintos tipos de expresiones.

Expresiones Aritmticas
Estn formadas por variables y/o constantes, y distintos operadores aritmticos e incrementales (+, -, *,
/, %, ++, --). Tambin se pueden emplear parntesis de tantos niveles como se desee, y su interpretacin
sigue las normas aritmticas convencionales. Por ejemplo, la solucin de la ecuacin de segundo grado:

se escribe, en C/C++ en la forma:

x=(-b+sqrt((b*b)-(4*a*c)))/(2*a);

donde, estrictamente hablando, slo lo que est a la derecha del operador de asignacin (=) es una
expresin aritmtica. El conjunto de variables que est a la izquierda del signo (=), el operador de
asignacin, la expresin aritmtica y el carcter (;) constituyen una sentencia. En la expresin anterior
aparece la llamada a la funcin de librera sqrt(), que tiene como valor de retorno la raz cuadrada de
su nico argumento. En las expresiones se pueden introducir espacios en blanco entre operandos y
operadores; por ejemplo, la expresin anterior se puede escribir tambin de la forma:

x = (-b + sqrt((b * b) - (4 * a * c)))/(2 * a);


Expresiones Lgicas
Los elementos con los que se forman estas expresiones son valores lgicos; verdadero (true,
o distintos de 0) y falso (false, o iguales a 0), y los operadores lgicos ||, && y !. Tambin
se pueden emplear los operadores relacionales (<, >, <=, >=, ==, !=) para producir
estos valores lgicos a partir de valores numricos. Estas expresiones equivalen siempre a un
valor 1 (true) o a un valor 0 (false). Por ejemplo:
a = ((b>c)&&(c>d))||((c==e)||(e==b));
donde de nuevo la expresin lgica es lo que est entre el operador de asignacin (=) y el (;). La variable
a valdr 1 si b es mayor que c y c mayor que d, si c es igual a e e es igual a b.

Introduccin al Lenguaje C/C++

43

Anlisis Numrico y Programacin

Expresiones Generales
Una de las caractersticas ms importantes (y en ocasiones ms difciles de manejar) del C/C++ es su
flexibilidad para combinar expresiones y operadores de distintos tipos en una expresin que se podra
llamar general, aunque es una expresin absolutamente ordinaria de C/C++.
El resultado de una expresin lgica es siempre un valor numrico (un 1 un 0); esto permite que
cualquier expresin lgica pueda aparecer como sub-expresin en una expresin aritmtica.
Recprocamente, cualquier valor numrico puede ser considerado como un valor lgico: true si es distinto
de 0 y false si es igual a 0. Esto permite introducir cualquier expresin aritmtica como sub-expresin de
una expresin lgica. Por ejemplo:
(a - b*2.0) && (c != d)
A su vez, el operador de asignacin (=), adems de introducir un nuevo valor en la variable que figura a
su izquierda, deja tambin este valor disponible para ser utilizado en una expresin ms general. Por
ejemplo, supngase el siguiente cdigo que inicializa a 1 las tres variables a, b y c:
a = b = c = 1;

que equivale a:

a = (b = (c = 1));

Sentencias
Las expresiones de C/C++ son unidades o componentes elementales de unas entidades de rango
superior que son las sentencias. Las sentencias son unidades completas, ejecutables en s mismas. Ya
se ver que muchos tipos de sentencias incorporan expresiones aritmticas, lgicas o generales como
componentes de dichas sentencias.
Sentencias Simples
Una sentencia simple es una expresin de algn tipo terminada con un carcter (;). Un caso tpico son
las declaraciones o las sentencias aritmticas. Por ejemplo:
float real;
espacio = espacio_inicial + velocidad * tiempo;

Sentencia Vaca Nula


En algunas ocasiones es necesario introducir en el programa una sentencia que ocupe un lugar, pero
que no realice ninguna tarea. A esta sentencia se le denomina sentencia vaca y consta de un simple
carcter (;).
Por ejemplo:

Sentencias Compuestas o Bloques


Muchas veces es necesario poner varias sentencias en un lugar del programa donde debera haber una
sola. Esto se realiza por medio de sentencias compuestas. Una sentencia compuesta es un conjunto
Introduccin al Lenguaje C/C++

44

Anlisis Numrico y Programacin

de declaraciones y de sentencias agrupadas dentro de llaves {...}. Tambin se conocen con el nombre
de sentencias de bloque. Una sentencia compuesta puede incluir otras sentencias, simples y
compuestas. Un ejemplo de sentencia compuesta es el siguiente:
{
int i = 1, j = 3, k;
double masa;
masa = 3.0;
k = y + j;
}
Generalmente se usan para indicar que se ejecute un conjunto de sentencias como un solo bloque, es
decir cuando el compilador encuentra el smbolo de apertura { inicia a ejecutar todas las sentencias hasta
llegar al smbolo de cerradura }.
Ejemplo:
if (x>0)
x--;
cout<<x<<endl;

if (x>0)
{
x--;
cout<<x<<endl;
}

Estas instrucciones indican que si x es


mayor que cero, x se decrementa.
Luego se imprime.

Estas instrucciones indican que si x es


mayor que cero, x se decrementa y
se imprime.

La sentencia de bloque encierra varias sentencias entre llaves para expresar un conjunto lgico de
operaciones.
Control del Flujo de Ejecucin
En principio, las sentencias de un programa en C/C++ se ejecutan secuencialmente, esto es, cada una
a continuacin de la anterior empezando por la primera y acabando por la ltima. El lenguaje C/C++
dispone de varias sentencias para modificar este flujo secuencial de la ejecucin. Las ms utilizadas se
agrupan en tres familias: las bifurcaciones, que permiten elegir entre dos o ms opciones segn ciertas
condiciones, los bucles, que permiten ejecutar repetidamente un conjunto de instrucciones tantas veces
como se desee, cambiando o actualizando ciertos valores y los saltos, que proporcionan mecanismos
para interrumpir, alterar o modificar el orden de ejecucin de los programas.

Introduccin al Lenguaje C/C++

45

Anlisis Numrico y Programacin

Bifurcaciones
OPERADOR CONDICIONAL
El operador condicional es un operador con tres operandos (ternario) que tiene la siguiente forma
general:
expresion_1 ? expresion_2 : expresion_3;
Se evala expresion_1. Si el resultado de dicha evaluacin es true (#0), se ejecuta expresion_2; si el
resultado es false (=0), se ejecuta expresion_3.

SENTENCIA IF
Esta sentencia de control permite ejecutar o no una sentencia simple o compuesta segn se cumpla o
no una determinada condicin. Esta sentencia tiene la siguiente forma general:
if (expresion)
sentencia;
Se evala expresion. Si el resultado es true (#0), se ejecuta sentencia; si el resultado es false (=0), se
salta sentencia y se prosigue en la lnea siguiente. Hay que recordar que sentencia puede ser una
sentencia simple o compuesta (bloque { ... }).

SENTENCIA IF ... ELSE


Esta sentencia permite realizar una bifurcacin, ejecutando una parte u otra del programa segn se
cumpla o no una cierta condicin. La forma general es la siguiente:
if (expresion)
sentencia_1;
else
sentencia_2;

Se evala expresion. Si el resultado es true (#0), se ejecuta sentencia_1 y se prosigue en la lnea


siguiente a sentencia_2; si el resultado es false (=0), se salta sentencia_1, se ejecuta sentencia_2 y
se prosigue en la lnea siguiente. Hay que indicar aqu tambin que sentencia_1 y sentencia_2 pueden
ser sentencias simples o compuestas (bloques { ... }).

SENTENCIA IF ... ELSE MLTIPLE


Esta sentencia permite realizar una ramificacin mltiple, ejecutando una entre varias partes del
programa segn se cumpla una entre n condiciones. La forma general es la siguiente:

if(expresion_1)
Introduccin al Lenguaje C/C++

46

Anlisis Numrico y Programacin

sentencia_1;
else
if(expresion_2)
sentencia_2;
else
if(expresion_3)
sentencia_3;
else
if(...)
...
else
sentencia_n;

Se evala expresion_1. Si el resultado es true, se ejecuta sentencia_1. Si el resultado es false, se salta


sentencia_1 y se evala expresion_2. Si el resultado es true se ejecuta sentencia_2, mientras que si
es false se evala expresion_3 y as sucesivamente. Si ninguna de las expresiones o condiciones es
true se ejecuta expresion_n que es la opcin por defecto (puede ser la sentencia vaca, y en ese caso
puede eliminarse junto con la palabra else). Todas las sentencias pueden ser simples o compuestas.
SENTENCIA SWITCH
La sentencia que se va a describir a continuacin desarrolla una funcin similar a la de la sentencia if ...
else con mltiples ramificaciones, aunque como se puede ver presenta tambin importantes diferencias.
La forma general de la sentencia switch es la siguiente:

switch(expresion)
{
case expresion_cte_1: sentencia_1;
case expresion_cte_2: sentencia_2;
...
case expresion_cte_n: sentencia_n;
default
: sentencia;
}
Se evala expresion y se considera el resultado de dicha evaluacin. Si dicho resultado coincide con el
valor constante expresion_cte_1, se ejecuta sentencia_1 seguida de sentencia_2, sentencia_3, ...,
sentencia. Si el resultado coincide con el valor constante expresion_cte_2, se ejecuta sentencia_2
seguida de sentencia_3, ..., sentencia. En general, se ejecutan todas aquellas sentencias que estn a
continuacin de la expresion_cte cuyo valor coincide con el resultado calculado al principio
Si ninguna expresion_cte coincide se ejecuta la sentencia que est a continuacin de default. Si se
desea ejecutar nicamente una sentencia_i (y no todo un conjunto de ellas), basta poner una sentencia
break a continuacin (en algunos casos puede utilizarse la sentencia return o la funcin exit()). El efecto
de la sentencia break es dar por terminada la ejecucin de la sentencia switch. Existe tambin la
posibilidad de ejecutar la misma sentencia_i para varios valores del resultado de expresion, poniendo
varios case expresion_cte seguidos.

Introduccin al Lenguaje C/C++

47

Anlisis Numrico y Programacin

El siguiente ejemplo muestra las posibilidades citadas:

switch(expresion)
{

case expresion_cte_1: sentencia_1;


break;
case expresion_cte_2:
case expresion_cte_3: sentencia_2;
break;
default
: sentencia_3;
}

SENTENCIAS IF ANIDADAS
Una sentencia if puede incluir otros if dentro de la parte correspondiente a su sentencia, A estas
sentencias se les llama sentencias anidadas (una dentro de otra), por ejemplo,

if(a >= b)
if(b != 0.0)
c = a/b;
En ocasiones pueden aparecer dificultades de interpretacin con sentencias if...else anidadas, como
en el caso siguiente:

if(a >= b)
if(b != 0.0)
c = a/b;
else
c = 0.0;
En principio se podra plantear la duda de a cul de los dos if corresponde la parte else del programa.
Los espacios en blanco las indentaciones de las lneas parecen indicar que la sentencia que sigue a
else corresponde al segundo de los if, y as es en realidad, pues la regla es que el else pertenece al if
ms cercano. Sin embargo, no se olvide que el compilador de C/C++ no considera los espacios en blanco
(aunque sea muy conveniente introducirlos para hacer ms claro y legible el programa), y que si se
quisiera que el else perteneciera al primero de los if no bastara cambiar los espacios en blanco, sino
que habra que utilizar llaves, en la forma:
if(a >= b)
{
if(b != 0.0)
c = a/b;
}
else
c = 0.0;
Todas las sentencias if e if...else, equivalen a una nica sentencia por la posicin que ocupan en el
programa.

Introduccin al Lenguaje C/C++

48

Anlisis Numrico y Programacin

Bucles
Adems de bifurcaciones, en el lenguaje C/C++ existen tambin varias sentencias que permiten repetir
una serie de veces la ejecucin de unas lneas de cdigo. Esta repeticin se realiza, bien un nmero
determinado de veces o bien hasta que se cumpla una determinada condicin de tipo lgico o aritmtico.
De modo genrico, a estas sentencias se les denomina bucles o ciclos. Las tres construcciones del
lenguaje C/C++ para realizar bucles son el while, el for y el do...while.
SENTENCIA WHILE
Esta sentencia permite ejecutar repetidamente, mientras se cumpla una determinada condicin, una
sentencia o bloque de sentencias. La forma general es como sigue:
While( expresion_de_control)
sentencia;
Se evala expresion_de_control y si el resultado es false se salta sentencia y se prosigue la ejecucin.
Si el resultado es true se ejecuta sentencia y se vuelve a evaluar expresion_de_control
(evidentemente alguna variable de las que intervienen en expresion_de_control habr tenido que ser
modificada, pues si no el bucle continuara indefinidamente). La ejecucin de sentencia prosigue hasta
que expresion_de_control se hace false, en cuyo caso la ejecucin contina en la lnea siguiente a
sentencia. En otras palabras, sentencia se ejecuta repetidamente mientras expresion_de_control sea
true, y se deja de ejecutar cuando expresion_de_control se hace false.
Obsrvese que en este caso el control para decidir si se sale o no del bucle est antes de sentencia,
por lo que es posible que sentencia no se llegue a ejecutar ni una sola vez.

Sintaxis: while (expresin)


sentencia;

while (expresin)
{
sentencia1;
sentencia2;
sentenciaN;
}

SENTENCIA FOR
For es quizs el tipo de bucle ms verstil y utilizado del lenguaje C/C++. Su forma general es la
siguiente:

for(inicializacion; expresion_de_control; actualizacion)


sentencia;
Posiblemente la forma ms sencilla de explicar la sentencia for sea utilizando la construccin while que
sera equivalente. Dicha construccin es la siguiente:

inicializacion;
while(expresion_de_control)
{
sentencia;
actualizacion;
}
Introduccin al Lenguaje C/C++

49

Anlisis Numrico y Programacin

donde sentencia puede ser una nica sentencia terminada con (;), otra sentencia de control ocupando
varias lneas (if, while, for, ...), o una sentencia compuesta o un bloque encerrado entre llaves {...}. Antes
de iniciarse el bucle se ejecuta inicializacion, que es una o ms sentencias que asignan valores iniciales
a ciertas variables o contadores. A continuacin se evala expresion_de_control y si es false se
prosigue en la sentencia siguiente a la construccin for; si es true se ejecutan sentencia y
actualizacion, y se vuelve a evaluar expresion_de_control. El proceso prosigue hasta que
expresion_de_control sea false. La parte de actualizacion sirve para actualizar variables o
incrementar contadores.

Sintaxis:
for (expresin1; expresin2; expresin3)
sentencia;

for (expresin1; expresin2; expresin3)


{
sentencia1;
sentencia2;
sentenciaN;
}

int n=5;
for(pe =0.0, i=1; i<=n; i++)
{
pe += i*2;
}

Primeramente se inicializa la variable pe a cero y la variable i a 1; el ciclo se repetir mientras que i sea
menor o igual que n, y al final de cada ciclo el valor de i se incrementar en una unidad. En total, el bucle
se repetir n veces. La ventaja de la construccin for sobre la construccin while equivalente est en
que en la cabecera de la construccin for se tiene toda la informacin sobre como se inicializan, controlan
y actualizan las variables del bucle. Obsrvese que la inicializacion consta de dos sentencias separadas
por el operador (,).

Biblioteca de funciones para C/C++.


Principales Libreras en C/C++

C/C++ es un lenguaje completo en s mismo, las libreras ANSI que se incluyen con todos los
compiladores estn escritas en C o en ensamblador, y por lo tanto no son "imprescindibles" para escribir
programas en C.

A continuacin se detallan algunas de las principales libreras de C/C++ y sus funciones


principales, el fin de presentarlas en este documento no es memorizarlas, sino conocerlas y
utilizarlas de acuerdo a lo que necesitamos. No obstante recomiendo que las lean y sealen las
ms importantes, les aseguro que muchas de estas funciones les pueden facilitar la vida al
momento de crear programas y en el desarrollo de sus proyectos.
Introduccin al Lenguaje C/C++

50

Anlisis Numrico y Programacin

<math.h>
Contiene la declaracin de algunas funciones para realizar operaciones matemticas comunes
sobre valores de tipo "double".
acos
double acos (double x);
Angulo cuyo coseno es "x", en el rango [0,p] radianes.
asin
double asin (double x);
Angulo cuyo seno es "x", en el rango [-p/2, +p/2] radianes.
atan
double atan (double x);
Angulo cuya tangente es "x", en el rango [-p/2, +p/2] radianes.
atan2
double atan2 (double y, double x);
Angulo cuya tangente es "y/x", en el rango [-p, +p] radianes.
ceil
double ceil (double x);
Valor entero ms pequeo no menor que "x".

cos
double cos (double x);
Coseno de "x" (en radianes).
cosh
double cosh (double x);
Coseno hiperblico de "x".
exp
double exp (double x);
Exponencial de "x", ex.
fabs
double fabs (double x);
Valor absoluto de "x", "|x|".
floor
double floor (double x);
Mayor valor entero menor que "x".
ldexp
Introduccin al Lenguaje C/C++

53

Anlisis Numrico y Programacin

double ldexp (double x, int exponente);


Devuelve "x*2exponente".
log
double log (double x);
Devuelve el logaritmo natural de "x".
log10
double log10 (double x);
Devuelve el logaritmo en base 10 de "x".
pow
double pow (double x, double y);
Devuelve "x" elevado a la potencia "y".
sin
double sin (double x);
Devuelve el seno de "x" (en radianes).
sinh
double sinh (double x);
Devuelve el seno hiperblico de "x".
sqrt
double sqrt (double x);
Devuelve la raz cuadrada de "x".
tan
double tan (double x);
Devuelve la tangente de "x" (en radianes).
tanh
double tanh (double x);
Devuelve la tangente hiperblica de "x".
fmod
double fmod (double x, double y)
Devuelve el residuo en punto flotante de x dividido entre y.

<stdio.h>
Incluye macros y funciones para realizar operaciones de entrada y salida sobre ficheros y flujos
de datos.
EOF
#define EOF <expresin constante entera -1>
Valor de retorno utilizado para sealar el fin de fichero.
Introduccin al Lenguaje C/C++

54

Anlisis Numrico y Programacin

NULL
#define NULL <0, 0L, o (void *)>
Constante de puntero nulo que es utilizable como una expresin de direccionamiento constante.
getchar
int getchar (void);
Lee un carcter de la terminal
gets
char *gets (char *s);
Lee caracteres por el flujo estndar de entrada ("stdin") y los almacena en el "array" que comienza
en "s" hasta que se almacena un carcter "NULL" o se active el indicador de error o el de fin de
fichero. Si almacena algn elemento, termina almacenando un carcter nulo. Devuelve "s" si
almacena algn carcter. Sustituye el carcter NULL por \0.
printf
int printf (const char *formato, ...);
Escribe texto formateado por el flujo "stdout", segn las especificaciones de "formato" y la lista
de expresiones. Devuelve el nmero de caracteres escritos o un valor negativo en caso de error.
putchar
int puchar (int c);
Escribe el carcter c en pantalla.
puts
int puts (const char *s);
Escribe los caracteres de la cadena "s" por el flujo "stdout". Escribe un carcter "NL" en lugar de
nulo de terminacin. Devuelve un valor no negativo. En caso de error, devuelve EOF.
scanf
int scanf (const char *formato, ...);
Lee texto por el flujo "stdin" y lo almacena segn las especificaciones de "formato". Devuelve el
nmero de valores asignados o "EOF" si se produce error o se alcanza fin de fichero sin
producirse lectura.
fopen
FILE *fopen(const char *nombre_fichero, const char *modo);
Abre el fichero de nombre nombre_fichero, lo asocia con un flujo de datos y devuelve un
puntero al mismo. Si falla la llamada, devuelve un puntero nulo. Algunos de los caracteres
iniciales de modo son:
r, para abrir un fichero de texto existente para su lectura.
w, para crear un fichero de texto o abrir y truncar uno existente, para su escritura.
a, para crear un fichero de texto o abrir uno existente, para su escritura. El indicador de
posicin se coloca al final del fichero antes de cada escritura.
r+, para abrir un fichero de texto existente para su lectura y escritura.
fclose
Introduccin al Lenguaje C/C++

55

Anlisis Numrico y Programacin

int fclose(FILE *flujo);


Cierra el fichero asociado con ``flujo''. Devuelve 0 en caso de xito y EOF (end of file) en caso
contrario.
fwrite
size_t fwrite(const void *buffer, size_t n, size_t c, FILE *flujo);
La rutina fwrite permite escribir c elementos de longitud n bytes almacenados en el buffer
apuntado por flujo.
fread
size_t fread(const void *buffer, size_t n, size_t c, FILE *flujo);
La rutina fread permite leer c elementos de longitud n bytes del fichero apuntado por flujo y
los almacena en el buffer especificado.
fgetc
int fgetc(FILE *flujo);
Lee el siguiente carcter por flujo, avanza el indicador de posicin y devuelve int. Devuelve
EOF si pone a 1 el indicador de fin de fichero o el de error.
fgets
char *fgets(char *s, int n, FILE *flujo);
Lee caracteres por flujo y los almacena en elementos sucesivos del array que comienza en
s, continuando hasta que almacene n-1 caracteres, almacene un carcter de nueva lnea o
ponga a 1 los indicadores de error o de fin de fichero. Si almacena un carcter, concluye
almacenando un carcter nulo en el siguiente elemento del array. Devuelve s si almacena
algn carcter y no ha puesto a 1 el indicador de error; en caso contrario devuelve un puntero
nulo.
fputc
int fputc(int c, FILE *flujo);
Escribe el carcter c por flujo, avanza el indicador de posicin del fichero y devuelve int c . En
caso de error devuelve EOF.
fputs
int fputs(const char *s, FILE *flujo);

Escribe los caracteres de la cadena s por flujo. No escribe el carcter nulo de terminacin. En
caso de xito, devuelve un valor no negativo; en caso de error devuelve EOF.
fscanf
int fscanf(FILE *flujo, const char *formato, ...);
Introduccin al Lenguaje C/C++

56

Anlisis Numrico y Programacin

Lee texto y convierte a la representacin interna segn el formato especificado en formato.


Devuelve el nmero de entradas emparejadas y asignadas, o EOF si no se almacenan valores
antes de que se active el indicador de error o de fin de fichero.
fprintf
int fprintf(FILE *flujo, const char *formato, ...);
Genera texto formateado, bajo el control de formato formato y escribe los caracteres generados
por flujo. Devuelve el nmero de caracteres generados o un valor negativo en caso de error.
A modo de resumen estas son las especificaciones de formato ms comunes para fprint y
fscanf:
Formato Descripcin
%d

Entero con signo

%u

Entero sin signo

%c

Caracter

%s

Puntero a cadena de caracteres

fseek
int fseek( FILE *flujo, long desplazamiento, int origen);
La funcin fseek mueve el puntero de posicin del fichero correspondiente al flujo de datos
apuntado por flujo. La nueva posicin, medida en bytes, se obtiene aadiendo el nmero
indicado por desplazamiento a la posicin especificada por origen. La variable origen puede
tomar tres valores:

SEEK_SET: El puntero de posicin apuntar al inicio del fichero ms el desplazamiento


SEEK_CUR: El puntero de posicin apuntar a la posicin actual del puntero de
posicin del fichero ms el desplazamiento.
SEEK_END: El puntero de posicin apuntar al fin del fichero ms el desplazamiento
(deber ser menor o igual que cero).

rename
int rename(const char *viejo, const char *nuevo);
El nombre del fichero apuntado por la cadena viejo ser conocido como el nombre apuntado por
la cadena nuevo. Cualquier intento posterior a abrir el fichero usando ese nombre fallar, al
menos que se cree de nuevo. Si el fichero nombrado por nuevo ya existe anteriormente a la
llamada de rename, el comportamiento de la funcin est definido segn la implementacin del
compilador.

Introduccin al Lenguaje C/C++

57

Anlisis Numrico y Programacin

La funcin retorna cero si la operacin fue realizada con xito. Si falla, entonces retorna un valor
cualquiera excepto cero; en este caso el fichero sigue siendo conocido con el nombre viejo.
clearerr
void clearerr(FILE *stream);
La funcin clearerr despeja los indicadores de final de fichero y de posicin de fichero para el
stream apuntado por stream al comienzo del fichero.
feof
int feof(FILE *stream);
La funcin feof comprueba el indicador de final de fichero para el stream apuntado por stream.
La funcin feof retorna un valor distinto a cero si y slo si el indicador de final de fichero est
activado para stream.

ferror
int ferror(FILE *stream);
La funcin ferror comprueba el indicador de errores para el stream apuntado por stream. La
funcin ferror retorna un valor distinto a cero si y slo si el indicador de errores est activado
para stream.
fgetpos
int fgetpos(FILE *stream, fpos_t *posicion);
La funcin fgetpos guarda el valor actual del indicador de posicin de ficheros para el stream
apuntado por stream en el objeto apuntado por posicin. El valor guardado contiene informacin
no especificado servible a la funcin fsetpos para recolocar el stream a su posicin cuando se
llam a la funcin fgetpos.
fsetpos
int fsetpos(FILE *stream, const fpos_t *posicion);
La funcin fsetpos activa el indicador de posicin de ficheros para el stream apuntado por
stream segn el valor del objeto apuntado por posicin, el cual ser un valor obtenido de una
llamada previa a la funcin fgetpos del mismo stream.
remove
int remove(const char *nombre);
El nombre del fichero apuntado por la cadena nombre ya no es accesible por ese nombre.
Cualquier intento posterior a abrir el fichero usando ese nombre fallar, al menos que se cree de
nuevo. Si el fichero est abierto el comportamiento de la funcin est definido segn la
implementacin del compilador. Por esta razn se ha de cerrar antes de borrar.
La funcin retorna cero si la operacin fue realizada con xito. Si falla, entonces retorna un valor
cualquiera distinto a cero.

Introduccin al Lenguaje C/C++

58

Anlisis Numrico y Programacin

<stdlib.h>
Contiene las declaraciones de una coleccin de funciones de utilera generales y la definicin de
tipos y macros para usarlas.
NULL
#define NULL <0, 0L, o (void *) >
Produce una constante de puntero nulo que es utilizable como una expresin de direccionamiento
constante.
RAND_MAX
#define RAND_MAX <expresin constante entera 32767>
Produce el mximo valor devuelto por "rand".
abort
void abort (void);
Llama a "raise(SIGABRT)" que produce la seal de abortar, lo que causa la terminacin anormal
del programa informando al entorno operativo.
abs
int abs (int i);
Devuelve el valor absoluto de "i".
atof
double atof(const char *s);
Convierte los caracteres de la cadena s a la representacin interna de tipo double y devuelve ese
valor.
atoi
int atoi (const char *s);
Convierte los caracteres de la cadena "s" a la representacin interna de tipo "int" y devuelve ese
valor.
atol
long atol (const char *s);
Convierte los caracteres de la cadena "s" a la representacin interna de tipo "long" y devuelve
ese valor.
rand
int rand(void);
Calcula un nmero pseudoaleatorio "x" basado en un valor inicial (semilla) almacenado en un
objeto de datos interno de duracin esttica, altera el valor almacenado y devuelve "x". El valor
devuelto est comprendido en el intervalo [0,RAND_MAX].
system
int system (const char *s);
Si "s" no es un puntero nulo, se pasa la cadena "s" para que sea ejecutada por el intrprete de
comandos del entorno operativo, y devuelve la informacin de estado proporcionada por el
Introduccin al Lenguaje C/C++

59

Anlisis Numrico y Programacin

intrprete. Si "s" es un puntero nulo, la funcin devuelve un valor distinto de cero. Si existe
intrprete de comandos en el entorno operativo, ejecuta el comando indicado. Esto incluye tanto
los comandos del sistema operativo, como cualquier programa que nosotros le indiquemos. Al
acabar la ejecucin del comando, volver a la lnea de cdigo situada a continuacin de la
sentencia system.
En realidad system es una manera de implementar comandos del sistema desde el programa.
Sintaxis: system(comando);

Por ejemplo:
system("cls"); /* limpia la pantalla */
system("pause"); /* detiene la pantalla */
system("dir"); /* muestra el contenido del directorio especificado */
system("edit C:\archivo.txt"); /* abre el programa edit y muestra el contenido
de archivo.txt */

malloc
void *malloc(size_t longitud);
Asigna una direccin de memoria para un objeto de datos de tamao longitud y devuelve esa
direccin.
calloc
void *calloc(size_t nelem, size_t longitud);
Asigna una localizacin en memoria a un objeto de datos array que contiene nelem elementos
de tamao longitud, asignando ceros a todos los bytes del array y devuelve la direccin del primer
elemento en caso de xito; en caso contrario, devuelve un puntero nulo.
realloc
void *realloc(void *p, size_t longitud);
Cambia el tamao de la memoria apuntada por p al que se indica con longitud. Asigna una
direccin de memoria para un objeto de datos de tamao longitud, copiando los valores
almacenados en p. Devuelve la nueva direccin de memoria asignada.
free
void free(void *p);
Si p no es un puntero nulo, la funcin libera la memoria asignada al objeto de datos cuya direccin
es p, en caso contrario, no hace nada. Se puede liberar la memoria asignada con calloc, malloc,
realloc.
exit
void exit(int status)
Termina la ejecucin del programa y regresa status al entorno. Cuando el programa termina
normal el valor de status debe ser cero, se puede usar tambin los valores EXIT_SUCCESS y
EXIT_FAILURE.

<string.h>
Contiene la declaracin de una coleccin de funciones tiles para manejar cadenas y otros arrays
de caracteres.

Introduccin al Lenguaje C/C++

60

Anlisis Numrico y Programacin

NULL
#define NULL <0, 0L, o (void *)>
Produce una constante de puntero nulo que es utilizable como una expresin de direccionamiento
constante.
strcat
char *strcat (char *s1, const char *s2);
Copia la cadena "s2", incluyendo el nulo de terminacin, en elementos sucesivos del "array de
char" que almacena la cadena "s1", empezando en el elemento que almacena el nulo de
terminacin de "s1". Devuelve "s1".
strchr
char *strchr (const char *s, int c);
Busca el primer elemento de la cadena "s" que sea igual a "(char)c". Considera el nulo de
terminacin como parte de la cadena. En caso de xito, devuelve la direccin del elemento
emparejado; en caso contrario, devuelve un puntero nulo.
strcmp
int strcmp (const char *s1, const char *s2);
Compara los elementos de dos cadenas "s1" y "s2" hasta que encuentra elementos diferentes. Si
todos son iguales, devuelve 0. Si el elemento diferente de "s1" es mayor que el de "s2", devuelve
un valor mayor que cero; en caso contrario, devuelve un valor menor que cero.
strcpy
char *strcpy (char *s1, const char *s2);
Copia la cadena "s2", incluyendo el nulo, en el "array de char" que comienza en "s1". Devuelve
"s1".
strcspn
size_t strcspn (const char *s1, const char *s2);
Busca el primer elemento "s1[i]" de la cadena "s1" que sea igual a cualquiera de los elementos
de la cadena "s2" y devuelve "i".
strlen
size_t strlen (const char *s);
Devuelve el nmero de caracteres de la cadena "s", sin incluir el nulo de terminacin.
strncat
char *strncat (char *s1, const char *s2, size_t n);
Copia "n" elementos de la cadena "s2" en la cadena "s1" a partir de su nulo de terminacin. Al
final pone el nulo de terminacin y devuelve "s1".
strncmp
int strncmp (const char *s1, const char *s2, size_t n);
Compara los elementos de las cadenas "s1" y "s2" hasta que encuentra alguno diferente o hasta
que se han comparado "n" elementos. Si todos los elementos son iguales, devuelve 0. Si el
elemento diferente de "s1" es mayor que el de "s2" (tomados como "unsigned char"), devuelve
un nmero positivo. En caso contrario, devuelve un nmero negativo.
Introduccin al Lenguaje C/C++

61

Anlisis Numrico y Programacin

strncpy
char *strncpy (char *s1, const char *s2, size_t n);
Copia la cadena "s2", sin incluir el nulo, en la cadena "s1". Copia no ms de "n" caracteres de
"s2". Entonces almacena, cero o ms caracteres nulos si son necesarios para completar un total
de "n" caracteres. Devuelve "s1".
strpbrk
char *strpbrk (const char *s1, const char *s2);
Busca el primer elemento "s1[i]" en la cadena "s1" que sea igual a cualquiera de los elementos
de "s2". Si "s1[i]" no es el nulo de terminacin, devuelve "&s1[i]"; en caso contrario, devuelve
un puntero nulo.
strrchr
char *strrchr (const char *s, int c);
Busca el ltimo elemento de la cadena "s" que es igual a "(char)c". En caso de xito, devuelve la
direccin de tal elemento; en caso contrario, devuelve un puntero nulo.
strspn
size_t strspn (const char *s1, const char *s2);
Busca el primer elemento "s1[i]" en la cadena "s1" que no sea igual a ninguno de los elementos
de "s2" y devuelve "i".
strstr
char *strstr (const char *s1, const char *s2);
Busca la primera secuencia de elementos en la cadena "s1" que se empareje con los elementos
de la cadena "s2", sin incluir su nulo. En caso de xito, devuelve la direccin del primer elemento
emparejado; en caso contrario, devuelve un puntero nulo.
strdup
char *strdup(const char *s);
Devuelve un puntero a una nueva cadena de caracteres que es un duplicado de la cadena s. La
memoria para esta cadena de caracteres se obtiene con la funcin malloc y se libera con la funcin
free.
strndup
char *strndup(const char *s, size\_t n);
Devuelve un puntero a una nueva cadena de caracteres que es un duplicado de la cadena s, solo
copia los primeros n caracteres, incluyendo el nulo. La memoria para esta cadena de caracteres
se obtiene con la funcin malloc y se libera con la funcin free.

<Conio.h>
clrscr
void clrscr(void);
Introduccin al Lenguaje C/C++

62

Anlisis Numrico y Programacin

Limpia o borra la pantalla en modo texto y coloca el cursor en la esquina superior izquierda (en
la posicin 1,1).
clreol
void clreol(void);
Borra desde la posicin actual del cursor hasta el final de lnea, sin mover el cursor.
delline
void delline(void);
Elimina todo el rengln actual de la posicin del cursor, moviendo todo lo que est abajo de l
un rengln hacia arriba. El cursor no se mueve.
insline
void insline(void);
Inserta una nueva lnea en la posicin actual del cursor, moviendo todo un rengln hacia abajo.
El cursor no se mueve. Se pierde la ltima lnea.
gotoxy
void gotoxy(int x, int y);
Mueve el cursor a la posicin dada por x,y (coordenada horizontal y vertical respectivamente).
Por default la pantalla es de 80 columnas por 25 renglones, donde la esquina superior izquierda
es la posicin: (x=1,y=1), y la esquina inferior derecha la coordenada: (80,25).
wherex
wherey
int wherex(void);
int wherey(void);
Regresan la x-coordenada y la y-coordenada de la posicin actual del cursor respectivamente.
Si la pantalla de texto tiene el tamao por default de 80 columnas por 25 renglones, wherex()
regresa un nmero comprendido entre 1 y 80, y wherey() entre 1 y 25.

void textcolor(int nuevocolor);


Cambia el color del texto. Todos los caracteres que se muestren despus de una llamada a esta
funcin aparecern con dicho color en pantalla. El texto que fue mostrado antes llamar a esta
funcin conservar su color original. Los colores disponibles tanto para textcolor y
textbackground son los mismos que para su predecesores (de 0 a 15):
0 BLACK (negro)
1 BLUE (azul marino)
2 GREEN (verde perico)
3 CYAN (verde claro)
4 RED (rojo)
5 MAGENTA (morado o violeta)
6 BROWN (caf)
7 LIGHTGRAY (gris claro)
8 DARKGRAY (gris oscuro)
Introduccin al Lenguaje C/C++

63

Anlisis Numrico y Programacin

9 LIGHTBLUE (azul marino claro)


10 LIGHTGREEN (verde claro)
11 LIGHTCYAN (azul claro)
12 LIGHTRED (rojo claro)
13 LIGHTMAGENTA (rosa mexicano)
14 YELLOW (amarillo)
15 WHITE (blanco)
textbackground
void textbackground(int nuevocolor);
Cambia el color de fondo del texto. Esta funcin cambia slo el color de fondo de los caracteres.
Para cambiar el fondo a toda la pantalla hay que llamar a textbackground y luego a system(cls)
para borrar la pantalla y aparezca con el nuevo color. Para este propsito no usar clrscr() para
borrar la pantalla, pues no toma en cuenta el nuevo valor del color de fondo.
_setcursortype
void _setcursortype(int tipo);
Cambia la apariencia del cursor de texto (no del mouse).
Coloca el tipo de cursor a uno de los siguientes:
_NORMALCURSOR (como caracter de subrayado)
_NOCURSOR (oculta el cursor)
_SOLIDCURSOR (cursor slido)

<dos.h >
delay
void delay(int miliseg);
Pausa la ejecucin del programa un determinado tiempo dado por su argumento en milisegundos.
(1 seg=1000 miliseg).
sleep
void sleep(int seg);
Pausa la ejecucin del programa un determinado tiempo dado por su argumento en segundos.

<ctype.h>
tolower
int tolower(int ch);
Convierte un carcter a minscula.
Valor de retorno: ch debe estar en el rango 0 a 255, y si est entre A y Z lo convierte a su
equivalente en el rango a - z, el resto de los valores no son modificados. El valor de retorno es el
valor convertido si ch era una mayscula, o el valor original en caso contrario.
Nota: los caracteres en acentuados, o con diresis, en mayscula y la no sufren modificaciones.

Introduccin al Lenguaje C/C++

64

Anlisis Numrico y Programacin

toupper
int toupper(int ch);
Convierte un carcter, en un parmetro entero ch, a mayscula.
Valor de retorno: ch debe estar en el rango 0 a 255, y si est entre a y z lo convierte a su
equivalente en el rango A - Z, el resto de los valores no son modificados. El valor de retorno es
el valor convertido si ch era una minscula, o el valor original en caso contrario.
Nota: los caracteres en acentuados, o con diresis, en minscula y la no sufren modificaciones.
isalnum
int isalnum(int c);
Comprueba sin un carcter es alfanumrico. Isalnum es una macro que verifica el entero c
pertenece al rango de letras (A - Z o a - z) o al de dgitos (0 - 9), por defecto.
Valor de retorno: El valor de retorno ser no nulo si c es una letra o un nmero, y cero en caso
contrario.
isdigit
int isdigit(int c);
Comprueba sin un carcter es un dgito decimal. Isdigit es una macro que verifica si el entero c
pertenece al rango de cacteres de dgitos decimales, el rango es de ('0' - '9').
Valor de retorno: El valor de retorno ser no nulo si c es un dgito decimal.
ispunct
int ispunct(int c);
Comprueba sin un carcter es correspondiente a un signo de puntuacin. Ispunct es una macro
que verifica si el entero c pertenece al rango de caracteres de los signos de puntuacin, que por
defecto son todos menos los alfanumricos y el blanco ' '.
Valor de retorno: El valor de retorno ser no nulo si c es un signo e puntuacin.
isalpha
int isalpha(int c);
Comprueba sin un carcter es alfabtico. Isalpha es una macro que verifica si el entero c pertenece
al rango de letras (A - Z o a - z), por defecto.
Valor de retorno: El valor de retorno ser no nulo si c es una letra y cero en caso contrario.
islower
int islower(int c);
Comprueba sin un carcter es de tipo minscula. Islower es una macro que verifica si el entero c
pertenece al rango de caracteres de letras minsculas, que por defecto son los que estn en el
rango a - z.
Valor de retorno: El valor de retorno ser no nulo si c es un carcter en minscula.
isupper
int isupper(int c);
Comprueba sin un carcter es de tipo mayscula. Islower es una macro que verifica si el entero
c pertenece al rango de caracteres de letras maysculas, que por defecto son los que estn en el
rango A - Z. Valor de retorno: El valor de retorno ser no nulo si c es un carcter en mayscula.
Introduccin al Lenguaje C/C++

65

Anlisis Numrico y Programacin

isspace
int isspace(int c);
Comprueba sin un carcter es de tipo espacio. Isspace es una macro que verifica si el entero c
pertenece al grupo de caracteres de espacio, ' ', tab, retorno de carro, nueva lnea, tabulador
vertical o salto de pgina. Valor de retorno: El valor de retorno ser no nulo si c es un carcter
de tipo espacio.

Referencias Bibliogrficas
Joyanes Aguilar L, & Zahonero Martnez I. (2001). Metodologa de la Programacin. En L.
Joyanes Aguilar & I. Zahonero Martnez, Programacin en C. Metodologa, algoritmos y
estructura de datos (pgs. 15-24). Madrid: McGrawHill.

Joyanes, L. (2003). Fundamentos de Programacin. Madrid: McGrawHill.

Introduccin al Lenguaje C/C++

66

S-ar putea să vă placă și