1. MANUAL DE
C/C++
Facilitador: Ing. Elsner B. González O.
DESCRIPCIÓN BREVE
Manual de usuariode loslenguajesde programación
C y C++.
Joshtin Antonio Meléndez Ocampo
Laboratoriode ProgramaciónI
2. 1
Introducción
Este es un manual de usuario de los lenguajes de programación en C y C++ el cual presenta la
mayoría de las característicasque tienenque saberse al usarestoslenguajes,desde la declaración
de una variable, palabras reservadas, arreglos, etc.
El manual fue creado con el propósito de afinar y reforzar los saberes de los programadores con
falta de experiencia, conocimientos y practica endicha materia.
3. 2
Índice
Contenido
Introducción ............................................................................................................................. 1
Índice ....................................................................................................................................... 2
Identificador............................................................................................................................. 4
Tipos de datos........................................................................................................................... 5
Declaración de Variablesen lenguaje C....................................................................................... 5
Declaración de Variables en Lenguaje C++ .................................................................................. 7
Asignar un valor a una variable en C........................................................................................... 8
Asignar un valor a una variable en C++........................................................................................ 9
Palabras reservadasen C y C ++.................................................................................................10
Palabras que no provienen de C y que, por tanto, solo utiliza C++: ..............................................11
Comandos de salida de C ..........................................................................................................12
Comandos de salida de C++.......................................................................................................13
Operadores..............................................................................................................................15
Operadores Aritméticos........................................................................................................16
Operadores Relacionales.......................................................................................................16
Operadores Logicos..............................................................................................................16
Operadores de Asignacion.....................................................................................................16
Tabla ASCII...............................................................................................................................17
Operador (Función) SizeOf........................................................................................................18
Arreglos...................................................................................................................................19
Arreglos Unidimensionales:...................................................................................................19
Arreglos Bidimensionales......................................................................................................20
Arreglos de estructuras.............................................................................................................21
printf y scanf............................................................................................................................23
Ficheros...................................................................................................................................24
Función fopen..........................................................................................................................25
Función fclose..........................................................................................................................26
Función fputs...........................................................................................................................27
Función feof.............................................................................................................................28
Función fgets ...........................................................................................................................29
5. 4
Identificador
Un identificadoresunasecuenciade caracteresalfabéticos,numéricosyel guionbajo.Conellos
podemosdarnombresa variables,constantes,tiposde datos,nombresde funcioneso
procedimientos,etc.
Cada lenguaje de programacióntiene suspropiascaracterísticasdel tamañodel identificador;el
estándarde lenguaje Cnoespecificalímite de tamañoparaunidentificador,peroparaciertas
implementacionesde C++ sololosprimeros31 caracteresson significativos.
Reglas para el nombramiento de un identificador:
I. Debe comenzarcon unaletra (A a Z) mayúsculaominúsculayno puede contenerespacios
enblanco.
II. En lenguaje C,el carácter“_” (Guionbajo) esconsideradocomoletra,porloque puede
serutilizadocomoprimercarácter.
III. Letras,dígitos,y el carácter guionbajoestánpermitidos despuésdelprimercarácter.
IV. No puedenexistirdosidentificadoresiguales,esdecir,doselementosde unprogramano
puedennombrarse de lamismaforma.Simembargo,unidentificadorpuede aparecer mas
de una vezenun programa.
V. No se puede utilizaruna palabrareservadacomoidentificador,sinembargo,los
identificadoresestándarse puedendefinir.
VI. En lenguaje Cexistenidentificadoresque podríantenerunoovariospuntos,talescomo:
persona.apellidoPaterno
6. 5
Tipos de datos
Los diferentesobjetosde informaciónconlosque unalgoritmooprograma trabaja se
conocencolectivamente comodatos.
Todoslos datostienenuntipoasociadoconellos;el tipode undato esel conjuntode
valoresque puede tomardurante el programa.
Cabe destacar que el tipo de dato a digitalizardebe sercorrectamente usado,porejemplo,
para un entero( 24 ) se debe usar el tipode dato “int”,de lo contrariosi se usara untipo
de dato como “float”, nose podráhacer ningúntipode operaciónconese dato.
Ejemplo:
7. 6
Declaración de Variables en lenguaje C
En lenguaje C la sintaxis para declarar una variable es la siguiente:
Tipo_de_dato _ Nombre_variable
tipo_de_dato_ es cualquier tipo válido de C; estos pueden ser enteros, flotantes, cadenas…
nombre_variableesunidentificadorválidoenC,estoes,unaletraseguidaopcionalmenteporotras
letras y números.
Téngase en cuenta que no se admiten signos diacríticos (acentos, tildes, etc.) y que las letras
mayúsculasyminúsculasnose consideranequivalentes.Porotraparte, no se admite utilizarcomo
identificadores los nombres de palabras reservadas en C.
Ejemplo:
8. 7
Declaración de Variables en Lenguaje C++
El sistemaessiempre el mismo,primerose especificael tipoya continuaciónunalistade variables
y finalmente un punto y coma.
La declaración de variables es uno de los tipos de sentencia de C++.
La prueba más clara de esto es que la declaración terminará con un ";".
<tipo> <lista de variables>;
Ejemplo:
9. 8
Asignar un valor a una variable en C
En el lenguaje C la asignación es un operador y la operación de asignación puede formar parte de
una expresión que sea parte de otra asignación. El valor de una asignación será siempre el de su
parte derecha.
Ejemplo:
10. 9
Asignar un valor a una variable en C++
La sintaxis es la misma, cabe destacar que es posible inicializar las variables dentro de la misma
declaración.
Ejemplo:
11. 10
Palabras reservadas en C y C ++
Las palabras reservadas son identificadores predefinidosque tienen significados especiales y no
pueden usarse como identificadores creados por el usuario en los programas.
Las palabras reservadas de C++ pueden agruparse en 3 grupos.
El primero contiene las palabras de C y que C++ como evolución de C también contiene:
Auto, const, double,float,int, short,struct, unsigned,break,continue, else, for, long,signed,
switch,void, case,default,enum, goto,register,sizeof,typedef,volatile,char,do,extern,
if, return,static,union,while,
12. 11
Palabras que no provienen de C y que, por tanto, solo
utiliza C++:
asm dynamic_cast namespace reinterpret_cast try bool explicit
new static_cast typeid catch false operator template
typename class friend private this using const_cast inline
public throw virtual delete mutable protected true wchar_t
Las siguientes palabras reservadas se han añadido como alternativas para algunos operadores de
C++ y hacen los programas más legibles y fáciles de escribir:
and bitand compl not_eq or_eq xor_eq and_eq bitor not or xor
13. 12
Comandos de salida de C
Se refiere alasoperacionesque se producenenel tecladoyenla pantallade la computadora.En C
no haypalabras clavespararealizarlas accionesde Entrada/Salida,estasse hacenmedianteel uso
de las funcionesde labibliotecaestándar(stadio.h).Parautilizarlasfuncionesde E/ S debemos
incluirenel programael archivodecabecera,ejemplo:stdio.h,medianteladeclaratoria:
#include <stdio.h>
Las Funcionesde E/Smás simplessongetchar() que leeun carácterdel teclado,esperaunretorno,
esdecirun
enter
y el eco aparece.Esdecirla teclapresionada.
putchar():
Imprime uncarácter enla pantalla,enlaposiciónactual del cursor.Algunasvariaciones:
getche():
Aparece el Eco
getch():
No aparece el ecoestasinstruccionesse encuentranen labiblioteca
conio.h
14. 13
Comandos de salida de C++
Cuandonosreferimosaentrada/salidaestándar(E/Sestándar) queremosdecirque los datosobien
se estánleyendodel teclado,óbiense estánescribiendoenel monitorde video.Comose utilizan
muy frecuentemente se consideran como los dispositivos de E/S por default y no necesitan ser
nombrados en las instrucciones de E/S.
En el lenguaje c++ tenemosvariasalternativasparaingresary/omostrar datos, dependiendode la
libreríaque vamosa utilizarparadesarrollarel programa,entre estas están: iostream.h y sodio.h.
< IOSTREAM.H>
Las operaciones de entrada y salida no forman parte del conjunto de sentencias de C++, sino que
pertenecenal conjuntode funciones yclasesde la bibliotecaestándarde C++. Ellasse incluyenen
los archivos de cabecera iostream.h por lo que siempre que queramos utilizarlas deberemos
introducir la línea de código #include <iostream.h>
Esta bibliotecaesunaimplementaciónorientadaaobjetosyestábasadaenel conceptode flujos.
A nivel abstractounflujoesunmediode describirlasecuenciade datosde unafuente aundestino
o sumidero. Así, por ejemplo,cuando se introducen caracteres desde el teclado, se puede pensar
encaracteres que fluyeno se trasladan desde el teclado a las estructuras de datos del programa.
Los objetos de flujo que vienen predefinidos serán:
cin, que toma caracteres de la entrada estándar (teclado);
cout, pone caracteres en la salida estándar (pantalla);
cerr y clog ponen mensajes de error en la salida estándar.
Estosobjetosse utilizanmediantelosoperadores <<y >>. El operador<< se denominaoperadorde
inserción;yapuntaal objetodonde tiene que enviarla información.Porlotantola sintaxisde cout
será:
cout<<variable1<<variable2<<...<<variablen;
No olvidemos que las cadenas de texto son variables y se ponen entre " " (comillas dobles).
Porsu parte >> se denominaoperadorde extracción,leeinformacióndel flujocin(alaizquierdadel
operador) y las almacena en las variables indicadas a la derecha).
La sintaxis sería la siguiente:
cin>>variable1>>...>>variablen;
<STDIO.H>
Operaciones de salida.
15. 14
Printf: Imprimir en pantalla
Para utilizar la función printf en nuestros programas debemos incluir la directiva:
#include <stdio.h>
Si sólo queremos imprimir una cadena basta con escribir la siguiente línea de código.
printf( "Cadena" );
Como resultado muestra en pantalla:
Cadena
Lo que pongamos entre las comillas es lo que vamos a sacar por pantalla.
16. 15
Operadores
Un operadores unsímboloque permite relacionardosdatosenunaexpresiónyevaluarel
resultadode laoperación.
Los programasde lascomputadorasse apoyanesencialmente enlarealizaciónde numerosas
operacionesaritméticasymatemáticasde diferentecomplejidad.
Los operadoresfundamentalesson:
Aritméticos
Relacionales
Lógicos
Asignación
17. 16
Operadores Aritméticos
Los operadoresaritméticos(+, -, *, /) puedenserutilizadoscontiposenterosorealesy
sirvenpararealizaroperacionesaritméticasbásicas.
Operadores Relacionales
Describenunarelaciónentre dosvalores;porlotanto,se usanpara expresarcondicionesy
comparar dosvalores.
El resultadode unaexpresiónrelacional esunvalortipológico obooleano,solopuedeser
verdaderoofalso.
Estos operadoresson:(<,>,==,>=, <= ,!= ).
Operadores Logicos
Las expresioneslógicaspueden combinarseparaformarexpresionesmascomplejas
utilizandolosoperadoreslógicos.
Estos operadoresson:&&( Y ), || ( o ),! (no),.
Operadores de Asignacion
El operadorde asignaciónpermite evaluarunaexpresiónyasignarel resultadoenuna
variable comoporejemplo:
Ejemplo:
19. 18
Operador (Función) SizeOf
El operadorsizeof proporcionalacantidadde almacenamiento,enbytes,necesariaparaalmacenar
un objetodel tipodel operando. Este operadorpermite notenerque especificartamañosde datos
dependientes del equipo en los programas.
Ejemplo:
20. 19
Arreglos
tipode dato estructuradoque almacenaenunasola variable unconjuntolimitadode datoso
elementosdel mismotipo.Asimismo,esunconjuntode localidadesde memoriacontiguas donde
la direcciónmásbajacorresponde al primerelementoyladirecciónmásaltaal último.Porsí
mismo,el nombre del arregloapuntaala direccióndel primerelementodel arreglo.
Un arreglose caracterizapor:
1. Ser una listade un númerofinitode nelementosdelmismotipo.
2. Almacenarloselementosdel arregloenmemoriacontigua.
3. Tenerun úniconombre de variable que representaatodosloselementosyéstosse diferencian
por un índice o subíndice.
4. Accederde maneradirectao aleatoriaa loselementosindividualesdel arreglo,porel nombre
del arregloy el índice o subíndice.
Conocemosdostiposde arreglos:
Arreglos Unidimensionales:
Un arreglounidimensional esunconjuntode nelementosdel mismotipoalmacenadosen
memoriacontinuaenunvectoro lista.Para accedera cada elementodel arreglose
requiere de unsoloíndice osubíndice,el cual representalaposiciónenlaque se
encuentra.
Sintaxis:
tipo_datoidentif_arreglo[tam_arreglo];
tipo_datose refiere al tipode datode cada elementodel arreglo;puede serentero,real,
carácter, etcétera.identif_arreglo esel nombre que representaatodoel arreglo
tam_arregloesla cantidadde elementosque contieneel arreglo.
Ejemplo:
21. 20
Arreglos Bidimensionales
Un arreglobidimensionalesunconjuntode nelementosdel mismotipoalmacenadosenmemoria
contiguaenuna matrizo tabla.A diferenciade losarreglosunidimensionalesque sólorequieren
de un subíndice,losarreglosbidimensionales paraaccedera cada elementodel arreglorequieren
de dos índiceso subíndicesdeclaradosendosparesde corchetes,donde el primercorchete se
refiere al tamañode filasyel segundoal tamañode columnas.
Sintaxis:
tipo_datoident_arr[tam_fila][tam_col];
tipo_datoesel tipode dato de todoel arreglo.
ident_arresel nombre del arreglo.
tam_filaesel total de filas.
tam_col esel total de columnas.
Ejemplo:
22. 21
Arreglos de estructuras
Una estructura define unaplantillaconlaque posteriormentese puede declararuna
variable.Unade las característicasde lasestructurasesque hay que definirlasantesde
usarlasenla declaraciónde variables.Enladefiniciónnose declarani reservando
memoriapara ningunavariable,sólose construye unaestructuracondeterminadas
características,para despuéspoderdeclararunavariable de ese tipo.
Para crear una estructuraprimerocomenzamospordefinirel tipode estructura,paraello
se procede de maneraparecidaa la definiciónde unavariable,conalgunas
modificaciones;enlenguajeCpara definirunaestructura,se utilizalapalabrareservada
struct, normalmente seguidaporunnombre y llave izquierda;despuésse defineel tipoy
nombre para unoo más campos.
Ejemplo:
24. 23
printf y scanf
La funciónscanf() se usaparala entraday nos permite leer(introducir) datosdesde el teclado
y asignarlosavariablesde C,de acuerdo con el formatoespecificado.Sintaxis:scanf (“cadena
de control”,argumento1,argumento2…); La cadenade control tiene unoovarios
especificadoresocódigosde formatoque haránreferenciaal tipode datode losargumentos
y, si se desea,suanchura.
Ejemplo:
La funciónprintf() essimilarala funciónscanf(),perose usapara lasalida;permite escribir
textosydatos enla pantallacondeterminadoformato.
Sintaxis:
printf (“cadenade control”,argumento1,argumento2…);
Ejemplo:
25. 24
Ficheros
C define la estructura de datos FILE en el fichero de cabecera stdio.h para el manejo de ficheros.
Nosotros siempre usaremos punteros a estas estructuras.
La definiciónde éstaestructuradependedel compilador,peroengeneral mantienenun campocon
la posiciónactual de lectura/escritura,unbufferparamejorarlasprestacionesde accesoal fichero
y algunos campos para uso interno.
26. 25
Función fopen
Sintaxis:
FILE *fopen(char *nombre, char *modo);
Esta función sirve para abrir y crear ficheros en disco. El valor de retorno es un puntero a una
estructura FILE. Los parámetros de entrada son:
nombre:unacadenaque contiene unnombre de ficheroválido,estodependedel sistema operativo
que estemos usando. El nombre puede incluir el camino completo.
modo:especificael tipode ficheroque se abriráose creará y el tipode datos que puede contener,
de texto o binarios:
r: sólo lectura. El fichero debe existir.
w: se abre para escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
a: añadir,se abre para escritura,el cursorse sitúaal final del fichero.Si el ficheronoexiste,se crea.
r+: lectura y escritura. El fichero debe existir.
w+: lectura y escritura, se crea un fichero nuevo o se sobrescribe si ya existe.
a+: añadir,lecturayescritura,el cursor se sitúaal final del fichero. Si el fichero no existe, se crea.
t: tipo texto, si no se especifica "t" ni "b", se asume por defecto que es "t"
b: tipo binario.
27. 26
Función fclose
Sintaxis:
int fclose(FILE *fichero);
Es importante cerrar losficherosabiertosantesde abandonarlaaplicación.Esta funciónsirve para
eso.Cerrarunficheroalmacenalosdatosque aúnestánenelbuffer de memoria,yactualizaalgunos
datos de la cabecera del fichero que mantiene el sistema operativo. Además permite que otros
programas puedan abrir el fichero para su uso. Muy a menudo, los ficheros no pueden ser
compartidos por varios programas.
Un valor de retorno cero indica que el fichero ha sido correctamente cerrado, si ha habido algún
error, el valor de retorno es la constante EOF. El parámetro es un puntero a la estructura FILE del
fichero que queremos cerrar.
28. 27
Función fputs
Sintaxis:
int fputs (int caracter, FILE *fichero);
Esta función escribe un carácter a un fichero.
El valorde retornoesel carácterescrito,si laoperaciónfuecompletadaconéxito,encasocontrario
será EOF. Los parámetrosde entrada sonel carácter a escribir,convertidoa int y un punteroa una
estructura FILE del fichero en el que se hará la escritura.
29. 28
Función feof
Sintaxis:
int feof(FILE *fichero);
Esta función sirve para comprobar si se ha alcanzado el final del fichero. Muy frecuentemente
deberemostrabajarcontodoslosvaloresalmacenadosenunarchivode formasecuencial,laforma
que suelentenerlosbuclesparaleertodoslosdatos de unarchivoespermanecerleyendomientras
no se detecte el fin de fichero. Esta función suele usarse como prueba para verificar si se ha
alcanzado o no ese punto.
El valor de retorno es distinto de cero sólo si no se ha alcanzado el fin de fichero. El parámetro es
un puntero a la estructura FILE del fichero que queremos verificar.
30. 29
Función fgets
Sintaxis:
char *fgets(char*cadena,intn, FILE *fichero);
Esta funciónestádiseñadapara leercadenasde caracteres.Leeráhasta n-1caracteres o hasta que
leaun retornode línea.En este últimocaso,el carácter de retornode líneatambiénesleído.
El parámetron nospermite limitarlalecturaparaevitarderbordarel espaciodisponibleen
la cadena.
El valorde retornoes unpunteroa la cadenaleída,si se leyóconéxito,yes NULL si se detectael
final del ficheroosi hayun error. Losparámetrosson: lacadena a leer,el númerode caracteres
máximoa leeryun punteroa unaestructura FILE del ficherodel que se leerá.
31. 30
Función fputs
Sintaxis:
intfputs(constchar*cadena, FILE *stream);
La función fputsescribe unacadenaenunfichero.Nose añade el carácter de retornode líneani el
carácter nulofinal.
El valorde retornoes unnúmerono negativooEOF encaso de error. Los parámetrosde entrada
son lacadena a escribiryun punteroa laestructura FILE del ficherodonde se realizarálaescritura.
32. 31
Función fread
Sintaxis:
size_tfread(void*puntero,size_ttamaño,size_tnregistros, FILE*fichero);
Esta funciónestápensadaparatrabajar con registrosde longitudconstante.Escapazde leer
desde unficherounoo variosregistrosde lamismalongitudya partirde unadirecciónde
memoriadeterminada.El usuarioesresponsable de asegurarse de que hayespaciosuficientepara
contenerlainformaciónleída.
El valorde retornoes el númerode registrosleídos,noel númerode bytes.Losparámetrosson:
un punteroa lazona de memoriadonde se almacenaránlosdatosleídos,el tamañode cada
registro,el númerode registrosaleeryun punteroa laestructura FILE del ficherodel que se hará
la lectura.
33. 32
Función fwrite
Sintaxis:
size_tfwrite(void*puntero,size_ttamaño,size_tnregistros,FILE*fichero);
Esta funcióntambiénestápensadaparatrabajarcon registrosde longitudconstante yforma
parejacon fread.Es capaz de escribirhaciaun ficherounoo variosregistrosde lamismalongitud
almacenadosapartir de una direcciónde memoriadeterminada.
El valorde retornoes el númerode registrosescritos,noel númerode bytes.Losparámetrosson:
un punteroa lazona de memoriadonde se almacenaránlosdatosleídos,el tamañode cada
registro,el númerode registrosa leeryun punteroa laestructura FILE del ficherodel que se hará
la lectura.
34. 33
Funciones
Una funciónesun conjuntode líneasde códigoque realizanunatareaespecíficaypuede retornar
un valor.
Las funcionespuedentomarparámetrosque modifiquensufuncionamiento.Lasfuncionesson
utilizadasparadescomponergrandesproblemasentareassimplesypara implementar
operacionesque soncomúnmenteutilizadasdurante unprogramay de estamanera reducirla
cantidadde código.
Cuandouna funciónesinvocadase le pasa el control a la misma,unavezque estafinalizóconsu
tarea el control esdevueltoal puntodesde el cual lafunciónfue llamada.
Normalmente, las funciones operan sobre ciertos valores pasados a las mismas ya sea como
constantes literales o como variables, aunque se pueden definir funciones que reciban
parámetros. Existen dos formas en C++ de pasar parámetros a una función; por referencia o
por valor. El hecho es que si en una declaración de función se declaran parámetros por
referencia, a los mismos no se les podrá pasar valores literales ya que las referencias apuntan
a objetos (variables o funciones) residentes en la memoria; por otro lado, si un parámetro es
declarado para ser pasado por valor, elmismo puede pasarse como una constante literalo como
una variable. Los parámetros pasados por referencia pueden ser alterados por la función que
los reciba, mientras que los parámetros pasados por valor o copia no pueden ser alterados por
la función que los recibe, es decir, la función puede manipular a su antojo al parámetro, pero
ningún cambio hecho sobre este se reflejará en el parámetro original.
Parámetros por valor
La función cuadrado() (ver arriba) es un clásico ejemplo que muestra el paso de parámetros
por valor, en ese sentido la función cuadrado() recibe una copia del parámetro n. En la misma
función se puede observar que se realiza un calculo ( n*n ), sin embargo el parámetro original
no sufrirá cambio alguno, esto seguirá siendo cierto aún cuando dentro de la función hubiera
una instrucción parecida a n = n * n; o n*=n;.
Parámetros por referencia
Para mostrar un ejemplo del paso de parámetros por referencia, vamos a retomar el caso de la
función cuadrado, salvo que en esta ocasión cambiaremos ligeramente la sintaxis para definir
la misma.
35. 34
Funciones tipo Void
Cuandose utilizacomoun tipode valordevueltode función,lapalabraclave voidespecificaque la
funciónnodevuelveningúnvalor. Cuandose utilizaparalalistade parámetrosde una función,
voidespecificaque lafunciónnotomaningúnparámetro.
Cuandose utilizaenladeclaraciónde unpuntero,voidespecificaque el punteroes"universal".
Si el tipode punteroes void*, el punteropuede señalaracualquiervariable que nose declare con
la palabraclave constovolatile.
Un punterovoidnose puede desreferenciaramenosque se conviertaenotrotipo. Un puntero
voidse puede convertirencualquierotrotipode punterode datos.
Un punterovoidpuede señalaraunafunción,peronoa unmiembrode clase enC++.
No se puede declararunavariable de tipovoid.
Ejemplode Void: