trabajo de lenguaje c

49
 República bolivariana de Venezuela. Ministerio del Poder Popular para la Educación Universitaria. Instituto Universitario de Tecnología Cumaná ³Extensión Punta de Mata´. Programa Nacional de Formación ³Ing. I nstrumentación y C ontrol´. Punta de Mata. edo Monagas. Trayecto 2. Br: Bistochet Carlos C.I:17.405.859. Santil José C.I:20.404.139. Sanvicente Paola C.I:20.563.262. Rondón Leomarys C.I:22.709.621. Ubac Jesús C.I: 19.975.829. Profesor:

Upload: jose-santil

Post on 13-Jul-2015

1.011 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 1/49

 

República bolivariana de Venezuela.

Ministerio del Poder Popular para la Educación Universitaria.

Instituto Universitario de Tecnología Cumaná ³Extensión Punta de Mata´.Programa Nacional de Formación ³Ing. Instrumentación y Control´.

Punta de Mata. edo Monagas.

Trayecto 2.

Br:

Bistochet Carlos C.I:17.405.859

Santil José C.I:20.404.139

Sanvicente Paola C.I:20.563.262

Rondón Leomarys C.I:22.709.621

Ubac Jesús C.I: 19.975.829

Profesor:

Page 2: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 2/49

 

Introducción:

El lenguaje c ha venido desenvolviendo un papel fundamental en la programación ya quela mayoría de los programas o aplicación que instalamos en nuestros ordenadores sonbasado bajo código en c, lo que hace imprescindible aprender este lenguaje de

programación para la formación integral de los profesionales de hoy en día.

Page 3: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 3/49

 

Desarrollo:

C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en losLaboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos,concretamente Unix. C es apreciado por la eficiencia del código que produce y es ellenguaje de programación más popular para crear software de sistemas, aunque tambiénse utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipificado de medio nivel pero con muchascaracterísticas de bajo nivel. Dispone de las estructuras típicas de los lenguajes de altonivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control amuy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitanmezclar código en ensamblador con código C o acceder directamente a memoria odispositivos periféricos.

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. Ellenguaje que define este estándar fue conocido vulgarmente como ANSI C.Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). Laadopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, elcódigo es portátil entre plataformas y/o arquitecturas.

Historia 

Desarrollo inicial

El desarrollo inicial de C se llevó a cabo en los Laboratorios Bell de AT&T entre 1969 y1973; según Ritchie, el periodo más creativo tuvo lugar en 1972. Se le dio el nombre "C"porque muchas de sus características fueron tomadas de un lenguaje anterior llamado"B".

Hay muchas leyendas acerca del origen de C y el sistema operativo con el que estáíntimamente relacionado, Unix. Algunas de ellas son:

y  El desarrollo de C fue el resultado del deseo de los programadores de jugar conSpace Travel. Habían estado jugando en el mainframe de su compañía, perodebido a su poca capacidad de proceso y al tener que soportar 100 usuarios,Thompson y Ritchie no tenían suficiente control sobre la nave para evitarcolisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7de la oficina que no se utilizaba; pero esa máquina no tenía sistema operativo, asíque decidieron escribir uno. Finalmente decidieron portar el sistema operativo delPDP-11 que había en su oficina, pero era muy costoso, pues todo el código estabaescrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto

Page 4: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 4/49

 

nivel y portátil para que el sistema operativo se pudiera portar fácilmente de unordenador a otro. Consideraron usar B, pero carecía de las funcionalidadesnecesarias para aprovechar algunas características avanzadas del PDP-11. Entoncesempezaron a crear un nuevo lenguaje, C.

y  La justificación para obtener el ordenador original que se usó para desarrollar Unix

fue crear un sistema que automatizase el archivo de patentes. La versión originalde Unix se desarrolló en lenguaje ensamblador. Más tarde, el lenguaje C sedesarrolló para poder reescribir el sistema operativo.

En 1973, el lenguaje C se había vuelto tan potente que la mayor parte del kernel Unix,originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. Éste fueuno de los primeros núcleos de sistema operativo implementados en un lenguaje distintoal ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y MasterControl Program para el B5000 de Burroughs, escrito en ALGOL en 1961).

El C de Kernighan y Ritchie 

En 1978, Ritchie y Brian Kernighan publicaron la primera edición de El lenguaje de

 programación C , también conocido como La biblia de C . Este libro fue durante años laespecificación informal del lenguaje. El lenguaje descrito en este libro recibehabitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (Lasegunda edición del libro cubre el estándar ANSI C, descrito más abajo.)

Kernighan y Ritchie introdujeron las siguientes características al lenguaje:

y  El tipo de datos struct.y  El tipo de datos long int.y  El tipo de datos unsigned int.y  Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigüedad

sintáctica de expresiones como i=-10, que se podría interpretar bien como i =- 10 obien como i = -10.

El C de Kernighan y Ritchie es el subconjunto más básico del lenguaje que un compiladordebe de soportar. Durante muchos años, incluso tras la introducción del ANSI C, fueconsiderado "el mínimo común denominador" en el que los programadores debíanprogramar cuando deseaban que sus programas fueran transportables, pues no todos loscompiladores soportaban completamente ANSI, y el código razonablemente bien escritoen K&R C es también código ANSI C válido.

En estas primeras versiones de C, las únicas funciones que necesitaban ser declaradas si seusaban antes de la definición de la función eran las que retornaban valores no enteros. Esdecir, se presuponía que una función que se usaba sin declaración previa (prototipo)devolvería un entero.

Page 5: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 5/49

 

Ejemplo de llamada que requiere declaración previa (prototipo):

long int cierta_funcion();

int l lamando_funcion()

{ long int ret;ret = cierta_funcion();

}

Ejemplo de llamada que no requiere declaración previa:

int l lamando_funcion(){

int ret;ret = alguna_otra_funcion();

}

int alguna_otra_funcion(){

return 0;}

Dado que el lenguaje C de K&R no incluía ninguna información sobre los argumentos delas funciones, no se realizaba comprobación de tipos en los parámetros de las funciones,aunque algunos compiladores lanzan mensajes de advertencia si se llamaba a una función

con un número incorrecto de argumentos. A su vez, para indicar los parámetros que seutilizaban en una función, estos se declaraban de la siguiente manera:2 

int main(){

return callme(1, "c");}

int callme(i, s)int i;char *s;{/*....*/}

En los años siguientes a la publicación del C de Kernighan y Ritchie, se añadieron allenguaje muchas características no oficiales, que estaba soportadas por los compiladoresde AT&T, entre otros. Algunas de estas características eran:

Page 6: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 6/49

 

y  Funciones void y el tipo de datos void *.y  Funciones que retornaban tipos de datos struct o union (en lugar de punteros).y  Asignación de tipos de datos struct.y  Calificador const, que hace que un objeto sea de sólo lectura.y  Una biblioteca estándar, que incorporaba la mayoría de las funcionalidades

implementadas por varios desarrolladores de compiladores.y  Enumeraciones.

ANSI C e ISO C

 Artículo principal:  ANSI C  

A finales de la década de 1970, C empezó a sustituir a BASIC como lenguaje deprogramación de microcomputadores predominante. Durante la década de 1980 seempezó a usar en los IBM PC, lo que incrementó su popularidad significativamente. Almismo tiempo, Bjarne Stroustrup empezó a trabajar con algunos compañeros de Bell Labspara añadir funcionalidades de programación orientada a objetos a C. El lenguaje quecrearon, llamado C++, es hoy en día el lenguaje de programación de aplicaciones máscomún en el sistema operativo Microsoft Windows; mientras que C sigue siendo máspopular en el entorno Unix. Otro lenguaje que se desarrolló en esa época, Objective C,también añadió características de programación orientada a objetos a C. Aunque hoy endía no es tan popular como C++, se usa para desarrollar aplicaciones Cocoa para Mac OS X.

En 1983, el Instituto Nacional Estadounidense de Estándares organizó un comité, X3j11,para establecer una especificación estándar de C. Tras un proceso largo y arduo, secompletó el estándar en 1989 y se ratificó como el "Lenguaje de Programación C" ANSI

X3.159-1989. Esta versión del lenguaje se conoce a menudo como ANSI C, o a veces comoC89 (para distinguirla de C99).

En 1990, el estándar ANSI (con algunas modificaciones menores) fue adoptado por laOrganización Internacional para la Estandarización (ISO) en el estándar ISO/IEC 9899:1990.Esta versión se conoce a veces como C90. No obstante, "C89" y "C90" se refieren enesencia al mismo lenguaje.

Uno de los objetivos del proceso de estandarización del ANSI C fue producir una extensiónal C de Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sinembargo, el comité de estandarización incluyó también muchas funcionalidades nuevas,como prototipos de función, y un preprocesador mejorado. También se cambió la sintaxisde la declaración de parámetros para hacerla semejante a la empleada habitualmente enC++:

main(argc, argv)int argc;char **argv;

Page 7: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 7/49

 

{...}

pasó a ser

int main(int argc, char *argv[]){...}

ANSI C está soportado hoy en día por casi la totalidad de los compiladores. La mayoría delcódigo C que se escribe actualmente está basado en ANSI C. Cualquier programa escritosólo en C estándar sin código que dependa de un hardware determinado funcionacorrectamente en cualquier plataforma que disponga de una implementación de Ccompatible. Sin embargo, muchos programas han sido escritos de forma que sólo puedencompilarse en una cierta plataforma, o con un compilador concreto, esto puede serdebido a diversos motivos:

y  La utilización de bibliotecas no estándar, como interfaces gráficas de usuario.y  El uso de compiladores que no cumplen las especificaciones del estándar.y  El uso de tipos de datos suponiendo que tendrán el mismo tamaño u orden de los

bits en todas las plataformas.

La macro __STDC__ puede usarse para dividir el código en secciones ANSI y K&R para elcompilador.

# if __STDC__extern int getopt(int,char * const *,const char *);# elseextern int getopt();# endif 

Algunos programadores recomiendan usar "#if __STDC__", como en el ejemplo, en lugarde "#ifdef __STDC__" porque algunos compiladores le asignan el valor cero a __STDC__para indicar que no son compatibles con ANSI.

C99

Tras el proceso de estandarización de ANSI, la especificación del lenguaje C permaneciórelativamente estable durante algún tiempo, mientras que C++ siguió evolucionando. Sinembargo, el estándar continuó bajo revisión a finales de la década de 1990, lo que llevó ala publicación del estándar ISO 9899:1999 en 1999. Este estándar se denominahabitualmente "C99". Se adoptó como estándar ANSI en marzo de 2000.

Page 8: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 8/49

 

Las nuevas características de C99 incluyen:

y  Funciones inline.y  Las variables pueden declararse en cualquier sitio (como en C++), en lugar de

poder declararse sólo tras otra declaración o al comienzo de una declaración

compuesta.y  Muchos tipos de datos, incluyendo long long int (para reducir el engorro de la

transición de 32 bits a 64 bits), un tipo de datos booleano, y un tipo complex querepresenta números complejos.

y  Arrays de longitud variable.y  Soporte para comentarios de una línea que empiecen con //, como en BCPL o en

C++, característica para la que muchos compiladores habían dado soporte por sucuenta.

y  muchas funciones nuevas, como snprintf()y  muchos headers nuevos, como stdint.h.

Una consideración importante es que hasta la publicación de este estándar, C había sidomayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un programade C hacia C++ y mantener ese código compilable en ambos lenguajes. Sin embargo, elnuevo estándar agrega algunas características que C++ no admite, como por ejemplo losinicializadores estáticos de estructuras. También define al tipo "bool" de una manera queno es exactamente la del C++.

El compilador GCC, entre muchos otros, soportan hoy en día la mayoría de las nuevascaracterísticas de C99. Sin embargo, este nuevo estándar ha tenido poca acogida entrealgunos desarrolladores de compiladores, como Microsoft y Borland, que se han centrado

en C++. Brandon Bray, de Microsoft, dijo a este respecto:"En general, hemos visto poca demanda de muchas características de C99. Algunascaracterísticas tienen más demanda que otras, y consideraremos incluirlas en versionesfuturas siempre que sean compatibles con C++."3 

Problemas y anomalí as de programación en c.

Los siguientes ejercicios deben ser resueltos en un prográma (en C/C++ ):

1.  Expresiones  entref ijas y pref ijas. Las expresiones aritméticas puedenrepresentarse de varias maneras, una de ellas, la más usual es la notaciónentrefija.

Page 9: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 9/49

 

La notación entrefija establece que en medio de dos operandos se escribe unoperador, como por ejemplos:

1.  , donde los operandos son y , y el operador es el símbolo ;

2.  Donde el paréntesis más interno establece la mayor

prioridad, de manera que primero se debe evaluar , luego

, luego y fimalmente , dando comoresultado .

3.  No hay nada que hacer, pues es un operador unario.

En las expresiones prefijas se establece que el orden de escritura debe ser, primero

el operador y luego la lista de operandos:4.  , donde los operandos son y , y el operador es el símbolo ;

5.  Lo primero que hay que hacer es tomar el primeroperador y tomar los operandos necesarios siguientes (dos si se trata de unoperador binario y uno si es un operador unario). En este caso se trata de

evaluar . Cada uno de los operandos debe ser tratadode nuevo como una expresion en prefijo, de manera que se repite lo

anterior, tomar el operador y la lista de sus operandos y tratar cada uno desus operandos como expresiones en prefijo: , luego

y finalmente y evaluar. Losparéntesis cuadrados son para ilustrar el ejemplo y no son necesarios parasu evaluación.

6.  No hay nada que hacer, pues es un operador unario.

Haga un programa en C/C++ que transforme expresiones de entrefijo a prefijo, yde prefijo a entrefijo. Los caracteres válidos son: las letras mayúsculas yminúsculas, los números enteros, los paréntesis normales, los cuatro operadores

y el operador unario .

Page 10: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 10/49

 

 

Figura: Ilustración del estacionamiento mencionado en el problema 2

2.  en cierto punto de la ciudad hay un estacionamiento como el que se muestra en lafigura 14, en donde hay lugar para 9 vehículos. haga un programa que muestre el

manejo de este estacionamiento, considerando los siguientes requisitos:1.  Los vehículos proporcionan la siguiente información: Placas (6 digitos),Estado (2-3 caracteres, p.e. SON, DF, CHI, YUC), Marca, Modelo, Año-Modelo, Nombre del propietario.

2.  Al llegar un veículo se acepta solamente si hay lugar disponible.3.  Validar todas las operaciones de la pila.4.  En cualquier momento se puede sacar algún vehículo del estacionamiento,

regresando los vehículos en el orden en que estaban.5.  Toda la corrida del programa debe hacerse hacia/desde la terminal

estándar.3.

 Haga un programa que implemente 2 pilas en 1 arreglo A[1..n] de manera queninguna pila se desborde a menos que el número de elementos en ambas pilas sea

 Archivos de encabezados.

Recomendación: organización de archivos de encabezado.

Todas las funciones en un mismo archivo de encabezado deben estar relacionadas a unamisma función general. Dentro de un archivo de encabezado, la funciones que realicentareas relacionadas deben estar agrupadas en una misma sección.

Recomendación: nombres de los archivos de encabezado.Evitar nombres de archivos privados de encabezado que coincidan con nombres dearchivos públicos de encabezado. No usar nombes absolutos para archivos deencabezado; colocarlos en su ubicación estándar o en el directorio corriente. La opción decompilación relativa a inclusión de bibliotecas ("include-path") es la mejor forma demanejar bibliotecas privadas extensas.

Page 11: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 11/49

 

Norma: archivo de encabezado en el archivo de definición de la función.

Los archivos de encabezado que declaran funciones o variables externas deben incluírseen el archivo que define la función o la variable para permitir verificación de tipos.

Recomendación: no anidar archivos de encabezado.

Los archivos de encabezado no deben anidarse. El prólogo de cada archivo de encabezadodebe describir que otros archivos de encabezado deben incluírse para que el actualarchivode encabezado funcione. En casos extremos pueden incluírse todas las sentenciasde inclusión comunes en un nuevo archivo de inclusión.

Comentarios C

Un comentario C es cualquier secuencia de caracteres contenida entre los delimitadores/* ... */. La totalidad de la secuencia, incluyendo los delimitadores /* y */ son sustituidospor un simple espacio después de la expansión de macros (algunas implementaciones de C

pueden eliminar los comentarios sin reemplazarlos por espacios).Ejemplo:

int x = 2; /* esto es un comentario que será eliminado o sustituido por un simple espaciodespués en la frase de preprocesado. Como puede verse, el comentario puede ocuparvarias líneas de texto en el código fuente.

Se recomienda utilizarlos con profusión, a veces todas las explicaciones son pocas, ya queel C++ es un lenguaje bastante críptico en algunas ocasiones, sobre todo algunassentencias muy "elegantes" y comprimidas, pero ininteligibles en una primera lectura */

Ejemplo; la expresión:

int /* declaración */ i /* contador */;

es analizada sintácticamente como estos tres tokens: int i y ;

Comentarios C++

C++ admite comentarios de una sola línea utilizando dos barras inclinadas ( // ) comoseñal de comienzo. El comentario empieza en este punto (incluyendo las señales decomienzo) y continúa hasta el próximo carácter de nueva linea.

class X { // esto es un comentario

...

};

Page 12: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 12/49

 

Comentarios 

Cuando se escriben programas es muy útil agregar comentarios que ayuden a explicar loque realiza un programa. En C++ se pueden utilizar dos tipos de comentarios al estilo C y alestilo C++.

Al estilo C como se muestra a continuación:

/* Este es un comentario al estilo C */

Los comentarios al estilo C pueden continuar por varias líneas de un mismo archivo comose muestra en el siguiente código:

/* Este es un comentario al estilo Cque puede ocupar varias líneascomo se muestra a continuación.

*/

Al estilo C++ sólo pueden ocupar una línea como en el siguiente código:

// Este es un comentario al estilo C++

=== Utilización de cout ===

En un ejemplo anterior se utilizo cout, cout es un objeto que permite escribir en laconsola, solo se utiliza con la directiva iostream

su sintaxis es la siguiente:<source lang=cpp>cout << ALGO;

Donde ALGO debe ser algo que cout sea capaz de imprimir. Más adelante se trata mássobre el. También se utilizó endl, esto permite que el texto se escriba en una nueva línea.

Nota:  cout  puede ser utilizado de esta forma porque existen las siguientes lineas decódigo. De otro modo habría un error de compilador. Este tema se trata en detalle másadelante.#include <iostream>using namespace std;

Variables y constantes 

Page 13: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 13/49

 

Una variable, como su nombre lo indica, es un determinado objeto cuyo valor puedecambiar durante el proceso de una tarea específica. Contrario a una variable, unaconstante es un determinado objeto cuyo valor no puede ser alterado durante el procesode una tarea específica. En C, C++ para declarar variables no existe una palabra especial,es decir, las variables se declarán escribiendo el tipo seguido de uno o más identificadores

o nombres de variables. Por otro lado, para declarar constantes existe la palabrareservada const, así como la directiva #def ine. A continuación se muestran ejemplos dedeclaración de variables y constantes.

Variables Constantes Constantes 

int a; const int a =100;

#define a100

float b; const float b =100;

#define b100

Notas:

A diferencia de las constantes declaradas con la palabra const los símbolos definidos con#def ine no ocupan espacio en la memoria del código ejecutable resultante.

El tipo de la variable o constante puede ser cualquiera de los listados en Tipos primitivos,o bien de un tipo definido por el usuario.

Las constantes son usadas a menudo con un doble propósito, el primero es con el fin dehacer más legible el código del programa, es decir, si se tiene (por ejemplo) la constantenumerica 3.1416 y esta representa al pi, entonces podemos hacer declaraciones talescomo:

#define pi 3.1416

En este caso podremos usar la palabra pi en cualquier parte delprograma y el compilador se encargará de cambiar dicho simbolo por 3.1416.

o bien,

const pi = 3.1416;

Page 14: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 14/49

 

En este otro caso podremos usar la palabra pi en cualquier parte del programa y elcompilador se encargará de cambiar dicho símbolo

por una referencia a la constante pi guardada en la memoria.

De momento sólo veremos los tipos fundamentales, que son: void, char, int, f loat ydouble, en C++ se incluye también el tipo bool. También existen ciertos modificadores,que permiten ajustar ligeramente ciertas propiedades de cada tipo; los modificadorespueden ser: short, long, signed y unsigned, y pueden combinarse algunos de ellos.También veremos en este capítulo los tipos enumerados, enum.

Tipo "int" o entero:

[signed|unsigned] [short|long] int <identificador>[,<identificador2>[,<identificador3>]...];[signed|unsigned] long [int] <identificador>[,<identificador2>[,<identificador3>]...];[signed|unsigned] short [int] <identificador>[,<identificador2>[,<identificador3>]...];

Las variables enteras almacenan números enteros dentro de los límites de cada uno de sustamaños. A su vez, esos tamaños dependen de la plataforma, del compilador, y delnúmero de bits que use por palabra de memoria: 8, 16, 32... No hay reglas fijas para saberel tamaño, y por lo tanto, el mayor número que podemos almacenar en cada tipo entero:short int, int o long int; depende en gran medida del compilador y del sistema operativo.Sólo podemos estar seguros de que el tamaño de un short int es menor o igual que el deun int, y éste a su vez es menor o igual que el de un long int. Veremos cómo averiguarestos valores cuando estudiemos los operadores.

A cierto nivel, podemos considerar los tipos char, short int, int y long int como tiposenteros diferentes. Pero esa diferencia consiste sólo en el tamaño del valor máximo quepueden contener, y en el tamaño que ocupan en memoria, claro.

Este tipo de variables es útil para almacenar números relativamente grandes, pero sindecimales, por ejemplo el dinero que tienes en el banco, (salvo que seas Bill Gates), o el

número de lentejas que hay en un kilo de lentejas.Tipo "long long":

[signed|unsigned] long long [int] <identificador>[,<identificador2>[,<identificador3>]...];

Page 15: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 15/49

 

Este tipo no pertenece al estandar ANSI, sin embargo, está disponible en compiladoresGNU, como el que se usa en Linux o el que usa el propio Dev-C++ (y otros entornos dedesarrollo para Windows).

Este tipo ocupa el siguiente puesto en cuanto a tamaño, después de long int. Como en los

otros casos, su tamaño no está definido, pero sí sabemos que será mayor o igual que el delong int.

Tipo "f loat" o coma f lotante:

f loat <identificador>[,<identificador2>[,<identificador3>]...];

Las variables de este tipo almacenan números en formato de coma flotante, esto es,contienen un valor de mantisa y otro de exponente, que, para entendernos, codificannúmeros con decimales.

Aunque el formato en que se almacenan estos números en un ordenador es binario,podemos ver cómo es posible almacenar números muy grandes o muy pequeñosmediante dos enteros relativamente pequeños, usando potencias en base 10. Porejemplo, tenemos para la mantisa un valor entero, m, entre -0.99 y 0.99, y para elexponente un valor, e entre -9 y 9.

Los números se interpretan como m x 10e.

Este formato nos permite almacenar números entre -0.99 x 109 y 0.99 x 109. Es decir,entre -990000000 y 99000000.

Y también números tan pequeños como 0.01 x 10-9 ó -0.01 x 10-9. Es decir, como0,00000000001 ó -0,00000000001.

Esto sólo con tres dígitos decimales, más los signos. Pero en un ordenador se usaaritmética binaria. Por ejemplo, para un tipo f loat típico de 32 bits, se usa un bit de signopara la mantisa y otro para el exponente, siete bits para el exponente y 23 para lamantisa.

Para más detalles se puede consultar el siguiente enlace: representación de los númerosen punto flotante.

Estas variables son aptas para variables de tipo real, como por ejemplo el cambio entreeuros y dólares. O para números muy grandes, como la producción mundial de trigo,contada en granos.

Page 16: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 16/49

 

Pero el fuerte de estos números no es la precisión, sino el orden de magnitud, es decir logrande o pequeño que es el número que codifica. Por ejemplo, la siguiente cadena deoperaciones no dará el resultado correcto:

float a = 12335545621232154;

a = a + 1;a = a - 12335545621232154;

Finalmente, "a" valdrá 0 y no 1, como sería de esperar.

Los formatos en coma flotante sacrifican precisión en favor de tamaño. Sin embargo elejemplo si funcionaría con números más pequeños. Esto hace que las variables de tipof loat no sean muy adecuadas para todos los casos, como veremos más adelante.

Puede que te preguntes (alguien me lo ha preguntado), qué utilidad tiene algo tanimpreciso. La respuesta es: aquella que tú, como programador, le encuentres. Te aseguroque f loat se usa muy a menudo. Por ejemplo, para trabajar con temperaturas, la precisiónes suficiente para el margen de temperaturas que normalmente manejamos y paraalmacenar al menos tres decimales. Pero hay millones de otras situaciones en queresultan muy útiles.

Tipo "bool" o Booleano:

bool <identificador>[,<identificador2>[,<identificador3>]...];

Las variables de este tipo sólo pueden tomar dos valores true (verdadero) o false (falso).

Sirven para evaluar expresiones lógicas. Este tipo de variables se puede usar paraalmacenar respuestas, por ejemplo: ¿Posees carné de conducir?. O para almacenarinformaciones que sólo pueden tomar dos valores, por ejemplo: qué mano usas paraescribir. En estos casos debemos acuñar una regla, en este ejemplo, podría ser diestro->true, zurdo->false.

bool respuesta;bool continuar;

Nota: En algunos compiladores de C++ antiguos no existe el tipo bool. Lo lógico sería nousar esos compiladores, y conseguir uno más actual. Pero si esto no es posible, se puedesimular este tipo a partir de un enumerado.

enum bool {false=0, true};

Tipo "double" o coma f lotante de doble precisión:

[long] double <identificador>[,<identificador2>[,<identificador3>]...];

Page 17: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 17/49

 

Las variables de este tipo almacenan números en formato de coma flotante, mantisa yexponente, al igual que f loat, pero usan una precisión mayor, a costa de usar másmemoria, claro. Son aptos para variables de tipo real. Usaremos estas variables cuandotrabajemos con números grandes, pero también necesitemos gran precisión. El mayorespacio para almacenar el número se usa tanto para ampliar el rango de la mantisa como

el del exponente, de modo que no sólo se gana en precisión, sino también en tamaño.Al igual que pasaba con los números enteros, no existe un tamaño predefinido para cadatipo en coma flotante. Lo que sí sabemos es que el tamaño de double es mayor o igualque el de f loat y el de long double mayor o igual que el de double.

Lo siento, pero no se me ocurre ahora ningún ejemplo en el que sea útil usar uno de estostipos.

Bueno, también me han preguntado por qué no usar siempre double o long double yolvidarnos de f loat. La respuesta es que C++ siempre ha estado orientado a la economíade recursos, tanto en cuanto al uso de memoria como al uso de procesador. Si tuproblema no requiere la precisión de un double o long double, ¿por qué derrocharrecursos? Por ejemplo, en el compilador Dev-C++ f loat requiere 4 bytes, double 8 y longdouble 12, por lo tanto, para manejar un número en formato de long double se requiereel triple de memoria y el triple o más tiempo de procesador que para manejar un f loat.

Como programadores estamos en la obligación de no desperdiciar nuestros recursos, ymucho menos los recursos de nuestros clientes, para los que crearemos nuestrosprogramas. C++ nos dan un gran control sobre estas características, es nuestraresponsabilidad aprender a usarlo como es debido.

Tipo "void" o sin tipo:

void <identificador>[,<identificador2>[,<identificador3>]...];

En realidad esta sintaxis es errónea: no se pueden declarar variables de tipo void, ya quetal cosa no tiene sentido.

void es un tipo especial que indica la ausencia de tipo. Se usa para indicar el tipo del valorde retorno en funciones que no devuelven ningún valor, y también para indicar laausencia de parámetros en funciones que no los requieren, (aunque este uso sólo esobligatorio en C, y opcional en C++), también se usará en la declaración de punterosgenéricos, aunque esto lo veremos más adelante.

Las funciones que no devuelven valores parecen una contradicción. En lenguajes comoPascal, estas funciones se llaman procedimientos. Simplemente hacen su trabajo, y norevuelven valores. Por ejemplo, una función que se encargue de borrar la pantalla, notienen nada que devolver, hace su trabajo y regresa. Lo mismo se aplica a las funciones sin

Page 18: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 18/49

 

parámetros de entrada, el mismo ejemplo de la función para borrar la pantalla norequiere ninguna entrada para poder realizar su cometido.

Tipo "enum" o enumerado:

enum [<identificador_de_enum>] {<nombre> [= <valor>], ...} <identificador>[,<identificador2>[,<identificador3>]...];enum <identificador_de_enum> {

<nombre> [= <valor>], ...} [<identificador>[,<identificador2>[,<identificador3>]...]];

Se trata de una sintaxis más elaborada que las que hemos visto hasta ahora, pero no teasustes, (si es que te ha asustado esto) cuando te acostumbres a ver este tipo de cosascomprobarás que son fáciles de comprender.

Este tipo nos permite definir conjuntos de constantes enteras, llamados datos de tipoenumerado. Las variables declaradas de este tipo sólo podrán tomar valores dentro deldominio definido en la declaración.

Vemos que hay dos sintaxis. En la primera, el identificador de tipo es opcional, y si lousamos podremos declarar más variables del tipo enumerado en otras partes delprograma:

[enum] <identificador_de_enum> <identificador>[,<identificador2>[,<identificador3>]...];

La segunda sintaxis nos permite añadir una lista de variables, también opcional.

De este modo podemos separar la definición del tipo enumerado de la declaración devariables de ese tipo:

enum orden {primero=1, segundo, tercero};...enum orden id1, id2, id3;

O podemos hacer ambas cosas en la misma sentencia: definición y declaración:

enum orden {primero=1, segundo, tercero} id1, id2, id3;

Si decidimos no usar un identificador para el enumerado sólo podremos declarar variablesen ese momento, y no en otros lugares del programa, ya que no será posiblereferenciarlo:

enum {primero=1, segundo, tercero} uno, dos;

Varios identificadores pueden tomar el mismo valor, pero cada identificador sólo puedeusarse en un tipo enumerado. Por ejemplo:

Page 19: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 19/49

 

enum tipohoras { una=1, dos, tres, cuatro, cinco,seis, siete, ocho, nueve, diez, once,doce, trece=1, catorce, quince,dieciseis, diecisiete, dieciocho,diecinueve, veinte, ventiuna,

ventidos, ventitres, venticuatro = 0};En este caso, una y trece valen 1, dos y catorce valen 2, etc. Y veinticuatro vale 0. Como seve en el ejemplo, una vez se asigna un valor a un elemento de la lista, los siguientes tomanvalores correlativos. Si no se asigna ningún valor, el primer elemento tomará el valor 0.

Los nombres de las constantes pueden utilizarse en el programa, pero no pueden serleídos ni escritos. Por ejemplo, si el programa en un momento determinado nos preguntala hora, no podremos responder doce y esperar que se almacene su valorcorrespondiente. Del mismo modo, si tenemos una variable enumerada con el valor doce y la mostramos por pantalla, se mostrará 12, no doce. Deben considerarse como"etiquetas" que sustituyen a enteros, y que hacen más comprensibles los programas.Insisto en que internamente, para el compilador, sólo son enteros, en el rango de valoresválidos definidos en cada enum.

La lista de valores entre las llaves definen lo que se denomina el "dominio" del tipoenumerado. Un dominio es un conjunto de valores posibles para un dato. Una variable deltipo enumerado no podrá tomar jamás un valor fuera del dominio.

Operadores aritméticos 

^Son usados para crear expresiones matemáticas. Existen dos operadores aritméticosunitarios, '+' y '-' que tienen la siguiente sintaxis:

+ <expresión>- <expresión>

Asignan valores positivos o negativos a la expresión a la que se aplican.

En cuanto a los operadores binarios existen varios. '+', '-', '*' y '/', tienen uncomportamiento análogo en cuanto a los operandos, ya que admiten tanto expresionesenteras, como en coma flotante. Sintaxis:

<expresión> + <expresión><expresión> - <expresión><expresión> * <expresión><expresión> / <expresión>

Page 20: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 20/49

 

Evidentemente se trata de las conocidísimas operaciones aritméticas de suma, resta,multiplicación y división, que espero que ya domines a su nivel tradicional, es decir, sobreel papel.

Otro operador binario es el de módulo '%', que devuelve el resto de la división entera del

primer operando entre el segundo. Por esta razón no puede ser aplicado a operandos encoma flotante.

<expresión> % <expresión>

Nota: Esto quizás requiera una explicación:

Veamos, por ejemplo, la expresión 17 / 7, es decir 17 dividido entre 7. Cuando aprendimosa dividir, antes de que supiéramos sacar decimales, nos enseñaron que el resultado deesta operación era 2, y el resto 3, es decir 2*7+3 = 17.

En C++, cuando las expresiones que intervienen en una de estas operaciones sean enteras,el resultado también será entero, es decir, si 17 y 7 se almacenan en variables enteras, elresultado será entero, en este caso 2.

Por otro lado si las expresiones son en punto flotante, con decimales, el resultado será enpunto flotante, es decir, 2.428571. En este caso: 7*2.428571=16.999997, o sea, que nohay resto, o es muy pequeño.

Por eso mismo, calcular el resto, usando el operador %, sólo tiene sentido si lasexpresiones implicadas son enteras, ya que en caso contrario se calcularán tantosdecimales como permita la precisión de tipo utilizado.

Siguiendo con el ejemplo, la expresión 17 % 7 dará como resultado 3, que es el resto de ladivisión entera de 17 dividido entre 7.

Por último otros dos operadores unitarios. Se trata de operadores un tanto especiales, yaque sólo pueden trabajar sobre variables, pues implican una asignación. Se trata de losoperadores '++' y '--'. El primero incrementa el valor del operando y el segundo lodecrementa, ambos en una unidad. Existen dos modalidades, dependiendo de que se useel operador en la forma de prefijo o de sufijo. Sintaxis:

<variable> ++ (post-incremento)++ <variable> (pre-incremento)

Page 21: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 21/49

 

<variable>-- (post-decremento)-- <variable> (pre-decremento)

En su forma de prefijo, el operador es aplicado antes de que se evalúe el resto de laexpresión; en la forma de sufijo, se aplica después de que se evalúe el resto de la

expresión. Veamos un ejemplo, en las siguientes expresiones "a" vale 100 y "b" vale 10:c = a + ++b;

En este primer ejemplo primero se aplica el pre-incremento, y b valdrá 11 a continuaciónse evalúa la expresión "a+b", que dará como resultado 111, y por último se asignará estevalor a c, que valdrá 111.

c = a + b++;

En este segundo ejemplo primero se avalúa la expresión "a+b", que dará como resultado110, y se asignará este valor a c, que valdrá 110. Finalmente se aplica en post-incremento,y b valdrá 11.

Los operadores unitarios sufijos (post-incremento y post-decremento) se evalúan despuésde que se han evaluado el resto de las expresiones. En el primer ejemplo primero seevalúa ++b, después a+b y finalmente c =<resultado>. En el segundo ejemplo, primero seevalúa a+b, después c = <resultado> y finalmente b++.

Es muy importante no pensar o resolver las expresiones C como ecuaciones matemáticas,NO SON EXPRESIONES MATEMATICAS. No veas estas expresiones como ecuaciones, NO 

SON ECUACIONES. Esto es algo que se tarda en comprender al principio, y que despuésaprendes y dominas hasta el punto que no te das cuenta.

Por ejemplo, piensa en esta expresión:

b = b + 1;

Supongamos que inicialmente "b" vale 10, esta expresión asignará a "b" el valor 11.Veremos el operador "=" más adelante, pero por ahora no lo confundas con una igualdadmatemática. En matemáticas la expresión anterior no tiene sentido, en programación sí lotiene.

Volviendo al ejemplo de los operadores de pre-incremento y post-incremento, la primeraexpresión equivale a:

b = b+1;c = a + b;

Page 22: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 22/49

 

La segunda expresión equivale a:

c = a + b;b = b+1;

Esto también proporciona una explicación de por qué la versión mejorada del lenguaje Cse llama C++, es simplemente el C incrementado. Y ya que estamos, el lenguaje C se llamaasí porque las personas que lo desarrollaron crearon dos prototipos de lenguajes deprogramación con anterioridad a los que llamaron B y BCPL.

Operadores lógicos 

Los operadores "&&", "||" y "!" relacionan expresiones lógicas, dando como salida a suvez nuevas expresiones lógicas. Sintaxis:

<expresión1> && <expresión2><expresión1> || <expresión2>!<expresión>

El operador "&&" equivale al "AND" o "Y"; devuelve true sólo si los dos operandos true olo que es equivalente, distintas de cero. En cualquier otro caso el resultado es false.

El operador "||" equivale al "OR" u "O inclusivo"; devuelve true si cualquiera de lasexpresiones evaluadas es true, o distinta de cero, en caso contrario devuelve false.

El operador "!" es equivalente al "NOT", o "NO", y devuelve true cuando la expresión

evaluada es false o cero, en caso contrario devuelve false.Cortocircuito

Existe una regla que en muchas ocasiones nos puede resultar útil, ya que nos puedeahorrar tiempo y comprobaciones adicionales.

Esta regla se conoce como "cortocircuito" o "shortcut ", y se aplica de forma diferente aexpresiones AND y OR.

En el caso de operaciones AND, consiste en que si la primera expresión evaluada es false,

la segunda si siquiera se evalúa, ya que el resultado será siempre false independientemente del valor del segundo operando.

En el caso de operaciones OR, si la primera expresión sea true, la segunda no se evalúa, yaque el resultado será siempre true, independientemente del valor de la segundaexpresión.

Page 23: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 23/49

 

Esto es porque en una operación && el resultado sólo puede ser true cuando los dosoperandos sean true, y en una operación || el resultado sólo puede ser false si ambosoperandos son false. En el momento en que en una expresión AND uno de los operandossea false, o que en una expresión OR uno de los operandos sea true, el valor del otrooperando es irrelevante.

Si tenemos en cuenta este comportamiento, podremos ahorrar tiempo de ejecución sicolocamos en primer lugar la expresión más fácil de calcular, o aquella cuyo valor sea másprobablemente false en el caso de una expresión AND o true, para una expresión OR.

También habrá casos en que una de las expresiones sea indeterminada cuando la otra seafalse en una expresión AND, o true en una expresión OR. En ese caso, será preferiblecolocar la expresión potencialmente indeterminada en el segundo lugar.

Tablas de verdad

Una tabla de verdad es una relación de todos los posibles valores para los operandos queintervienen en una operación, y los resultados para cada caso.

En el caso de operadores lógicos podemos mostrar fácilmente tablas de verdad, ya que eldominio para cada operando es muy reducido: true o false. Si además tenemos en cuentala regla del cortocircuito, los casos posibles se reducen todavía más.

A continuación se muestra la tabla de verdad del operador &&:

Ex

pres

ión1Ex

pres

ión2

Expresión1 &&

Expresión2

false ignorada false 

true  false  false 

true  true  true 

La tabla de verdad para el operador || es:

Expresión1 Expresión2Expresión1 ||

Expresión2

false  false  false 

Page 24: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 24/49

 

false  true  true 

true ignorada true 

La tabla de verdad para el operador ! es:

Expresión !Expresión

false  true 

true  false 

Expresiones lógicas f recuentes 

A menudo aprovechamos ciertas equivalencias entre enteros y valores lógicos paracomprobar algunos valores especiales en comparaciones usadas en condiciones o bucles.

Concretamente, me refiero a las comparaciones con cero. Así, si queremos saber si unvalor entero E, es distinto de cero, lo comparamos usando el operador !=: 0!=E.

Pero existe una correspondencia entre todos los valores enteros y los valores booleanos, yesa correspondencia es muy simple: un valor entero nulo esquivale a false, cualquier valorentero distinto de cero, equivale a true.

Teniendo esto en cuenta, la comparación anterior es inncecesaria, ya que 0!=E esequivalente a usar, sencillamente E.

La condición contraria, 0==E, es por lo tanto equivalente a lo contrario, es decir, a laexpresión !E.

Será pues, muy frecuente, que encuentres este tipo de operadores lógicos aplicados aenteros en condiciones:

if(!E) \ // Si E es cero, hacer ...if(E) \ // Si E no es cero, hacer...

Page 25: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 25/49

 

Los operadores incremento (++) y decremento (--)

En lenguaje C, tanto el operador incremento (++) como el operador decremento (--)

actúan siempre sobre un solo operando, normalmente una variable. Por tanto, sonoperadores monarios, y sirven para incrementar o decrementar en una unidad el valor dedicho operando.

E jemplo 1: Declaradas las variables:

int r = 8, s = 3; 

se pueden escribr las instrucciones de expresión:

r++;

s--;

Dichas instrucciones son equivalentes a:

r = r + 1;

s = s - 1;

Y también se pueden escribir como:

++r;

--s; 

Tras su ejecución, el aspecto de la memoria será:

Page 26: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 26/49

 

 

En estas instrucciones, ambos operadores se pueden escribir, indistintamente, antes odespués de los operandos sobre los que actúan. Pero, cuando en una expresión, ademásdel operador incremento o decremento, también aparecen otros operadores, entonces síque hay que tener en cuenta la diferencia que supone el escribirlos antes o después.

E jemplo 2: A partir de las variables:

int i = 5, j, k = 5, m; 

Si se ejecutan las instrucciones:

 j = i++;

m = ++k;

Los valores de las variables en memoria serán:

Page 27: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 27/49

 

 

Obsérvese que, los valores de j y m son diferentes. Esto es debido a que, cuando se evalúala expresión j = i++, en primer lugar, se le asigna a j el valor de i (es decir, un 5) y, acontinuación, se incrementa el valor de la variable i. Por el contrario, cuando se evalúa laexpresión m = ++k, primero, se incrementa el valor de k (de 5 pasa a ser 6) y, después,

este nuevo valor de k se le asigna a m.En resumen, cuando en una expresión el operador incremento (++) o decremento (--)precede al operando sobre el que actúa (por ejemplo ++k), antes de utilizar el valor dedicho operando para otro propósito, este se incrementa. De ser al revés, es decir, si es eloperando quien precede al operador (por ejemplo i++), el valor de dicho operando seincrementa después de ser utilizado para otro fin.

Operadores de asignación

En lenguaje C existen expresiones de asignación y, para escribirlas, se utilizan lossiguientes operadores de asignación:

Figura. Clasificación de los operadores de asignación en C.

Page 28: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 28/49

 

 De ellos, el más utilizado es el operador de asignación (=). Su funcionalidad es equiparablea la de una instrucción de asignación en psedocódigo, y su sintaxis es muy similar.

<nombre_de_la_variable> = <expresión>; 

Existen dos diferencias:

1. En vez del símbolo reservado   flecha izquierda (), se utiliza el carácter igual  (=).2. Se debe escribir un punto y coma (;) al final.

E jemplo 1: Partiendo de la constante simbólica

#def ine PI 3.141592

y de las variables

f loat area, longitud, radio;

Una instrucción de asignación puede ser:

Radio = 5.78;

Técnicamente, en lenguaje C, una asignación (=) es una operación, al igual que lo es una

suma (+) o una resta (-). En consecuencia, radio = 5.78 es una expresión de asignación, queentra dentro de la categoría de las instrucciones de expresión.

<instrucción_de_expresión>; 

Page 29: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 29/49

 

 

De la evaluación de una expresión de asignación siempre se obtiene el mismo valor que elasignado a la variable, en este caso, 5.78.

Si ahora escribimos:

area = PI * pow( radio, 2 );

longitud = 2 * PI * radio;

De la evaluación de estas instrucciones de expresión se obtienen los valores 57.046290 y 36.316804, los cuales coinciden con los valores asignados a las variables area y longitud,respectivamente.

Cuando el operador de asignación (=) se escribe precedido de un operador aritmético:suma (+), resta (-), multiplicación (*), división (/) o módulo (%), la unión de ambos seconvierte en un nuevo operador de asignación que opera de la siguiente manera:

"A la variable se le asigna el valor que se obtiene de evaluar<variable> <operador_aritmético> <expresión>."

E jemplo 2: Dada la siguiente declaración de variables:

int m = 4, n = 1; 

Page 30: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 30/49

 

 se puede escribir la instrucción de expresión

m += 3; 

que es equivalente a la instrucción

m = m + 3;

En la memoria, cambiará el valor almacenado en el espacio representado por lavariable m.

Si, a continuación, se ejecuta la instrucción

m *= n += 2;

ahora, los valores de las variables m y n son:

Primero, se evalúa la expresión n += 2 (equivalente a n = n + 2). Esto produce que a la

Page 31: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 31/49

 

variable n se le asigne un 3. En segundo lugar, se evalúa la expresión m *= 3 (equivalente am = m * 3), asignándosele a la variable m el valor 21.

Las funciones printf  y scanf , la utilizaremos para mostrar e ingresar informaciónrespectivamente.

Ejemplos de Printf  

printf("Hola Mundo");printf("Función printf, para mostrar información en pantalla");

Antes de mostrar algun ejemplo de scanf, hay que comentar tambien los especificadoresde formatos, los mismos son los que establecen el formato de entrada ( en este caso ) osalida de los argumentos especificados.

Ejemplo 

scanf("%d",&numeroEntero);scanf("%f",&numeroFlotante);scanf("%c",&letra);

En estos ejemplos lo que hacemos es asignar a numeroEntero, numeroFlotante y letra elvalor que ingresemos por teclado, no olvidar anteponer delante de cada variable el &.Losespecificadores de formato depende de la variable que le asignemos:

Para %d, se debe asignar una variable del tipo intPara %f, se debe asignar una variable del tipo floatPara %c, se debe asignar una variable del tipo char

Esto se aplica tambien con los printf, pero en estos casos no es necesario anteponer el &.

printf("El número entero es %d y el número flotante es%f",numeroEntero,numeroFlotante);printf("La letra que falta sera %c",letra);

Para el primer printf se especifican dos valores a mostrar, los mismos se muestran en elorden que le especifiquemos y separados por comas las variables.

Page 32: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 32/49

 

Tener en cuenta que cuando asignamos un valor mediante scanf, no es posible realizar losiguiente:

scanf(%c, %d, %f",&letra,&numerEntero,&numeroFlotante);

Programa Ejemplo: En el siguiente codigo, ingresamos un número y lo mostramos porpantalla.#include "stdio.h"#include "conio.h"

void main(){

float Numero; // Declaramos un flotante denominado Numero

printf("Ingrese un numero:");scanf("%d",&Numero);printf("\nEl numero ingresado es %f",Numero);getch(); // Es para que el programa se detenga./*En pantalla va a mostrar,en caso de haber tipeado 10El numero ingresado es 10.000000Es con digitos por que es un tipo de dato floatEn caso de querer mostrar menos digitos decimalesse deberia agregar al especificador de formato %f por ejemplo para que muestre 2 decimales %.2f quedando printf("El numero ingresado es %.2f",Numero);

*/}Secuencias de Escape 

Las secuencias de escape se utilizan para que el compilador interprete de diferente formala salida de la información a mostrar, por ejemplo:

\n (Salto de Linea )

\t ( Tabulador )

\b ( Backspace )

\r ( Retroceso del carro )

\a ( Suena Parlante interno de la pc )

\\ ( Muestra \ )

Page 33: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 33/49

 

\" ( Muestra " )

Diferencias printf/scanf 

En printf los argumentos son expresiones, pero en scanf los argumentos han de serdirecciones dememoria (punteros). Para obtener la dirección de una variable se ha deutilizar el operador &: &variable.En el caso de los arrays, el puntero apunta a el primerelemento del vector.La función printf devuelve un valor entero que contiene el número decaracteres escritos. En caso deerror, devuelve EOF.

La función scanf devuelve el número de campos que han sido asignados. Si ocurre un erroro se detecta elfin de fichero, se devuelve EOF.En la cadena de control de scanf se puedendistinguir tres elementos:1. Especificadores de formato.2. Caracteres con espacios enblanco.3. Caracteres sin espacios en blanco.Un espacio en blanco en la cadena de controlda lugar a que scanf() salte uno o más espacios en blanco enel flujo de entrada. Uncarácter blanco es un espacio, un tabulador o un carácter de nueva línea.Un carácter queno sea espacio en blanco lleva a scanf() a leer y eliminar el carácter asociado. Por ejemplo,%d,%d da lugar a que scanf() lea primero un entero, entonces lea y descarte la coma,yfinalmente lea otro entero. Si el carácter especificado no se encuentra, scanf() termina.

putchar y getchar

Comenzaremos con las dos funciones principales de salida y entrada de caracteres:putchar y getchar.

La función putchar escribe un único carácter en la salida estándar. Su uso en sencillo ygeneralmente está implementada como una macro en la cabecera de la bibliotecaestándar. Por ejemplo:

#include <stdio.h>

main(){

putchar('H');putchar('o');putchar('l');putchar('a');

putchar(32);

Page 34: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 34/49

 

 putchar('m');putchar('u');putchar('n');putchar('d');

putchar('o');putchar('\n');

}

El resultado es:

Hola mundo

En el código anterior putchar(32); muestra el espacio entre ambas palabras (32 es el

código ASCII del carácter espacio ' ') y putchar('\n'); imprime un salto de línea tras el texto.La función getchar devuelve el carácter que se halle en la entrada estándar. Esta funcióntiene dos particularidades. La primera es que aunque se utiliza para obtener caracteres nodevuelve un carácter, sino un entero. Esto se hace así ya que con un entero podemosrepresentar tanto el conjunto de caracteres que cabe en el tipo carácter (normalmente elconjunto ASCII de caracteres) como el carácter EOF de fin de fichero. En UNIX es habitualrepresentar los caracteres usando el código ASCII, tanto en su versión de 7 bits como ensu versión ampliada a 8 bits. Estos caracteres se suelen representar como un entero queva del 0 al 127 o 256. El carácter EOF entonces es representado con un -1. Además esto

también lo aplicaremos cuando leamos los ficheros binarios byte a byte. Un ejemplo:#include <stdio.h>

main(){

int c;

c = getchar(); /* Nótese que getchar() no devuelve nadahasta que se presiona ENTER */

putchar(c);}

Aquí se almacena en el entero c el carácter pulsado en el teclado. Posteriormente semuestra con putchar.

Page 35: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 35/49

 

 

puts y gets 

La función puts simplemente imprime una cadena de caracteres en la salida estándar (y

produce un salto de línea). Le debemos proporcionar la dirección donde encontrar lacadena de caracteres. El código:

#include <stdio.h>

main(){

puts("Bienvenido a la programación");puts(" en lenguaje C");

}

produce el resultado:

Bienvenido a la programaciónen lenguaje C

La función gets simplemente toma una cadena de caracteres de la entrada estándar (cuyaintroducción es preciso terminar con un ENTER) y la almacena en una variable string.Supongamos este código:

#include <stdio.h>

main(){

char cadena[50];

puts("Escriba un texto:");gets(cadena);puts("El texto escrito es:");puts(cadena);

}

La declaración char cadena[50]; crea una variable llamada cadena que puede almacenarhasta 50 caracteres. Este código produce, cuando escribimos con el teclado el textoBienvenido a la programación en lenguaje C, el resultado:

Escriba un texto:

Page 36: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 36/49

 

Bienvenido a la programación en lenguaje CEl texto escrito es:Bienvenido a la programación en lenguaje C

Esta función nos permite introducir frases enteras, incluyendo espacios.

Algunos detalles más; la sintaxis es:

char *get s( char *buffer); 

Si se ha almacenado algún carácter en buffer le añade un '\0' al final y devuelve unpuntero a su dirección. Si no se ha almacenado ninguno (error o carácter fin-de-fichero,CTRL+Z) devuelve un puntero NULL.

#include <stdio.h>main(){

char cadena[50];char *p;

puts("Escriba un texto:");p = gets(cadena);if (p) {

puts("El texto escrito es:"); puts(cadena);}else

puts("No se ha guardado nada.");}

Esta función es un puede ser peligrosa porque no comprueba si nos hemos pasado delespacio reservado (de 50 caracteres en este ejemplo: 49 caracteres + '\0').

Prototipo: int kbhit (void);Archivo de cabecera: conio.hExplicación: Esta función no está definida como parte de la ANSI C / C + + estándar. Seutiliza generalmente por la familia de Borland de los compiladores. Devuelve un enterodistinto de cero si la clave está en el buffer del teclado. No va a esperar a que la clave paraser presionado.

Page 37: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 37/49

 

Revisa si una tecla pulsada está disponible. Cualesquier pulsadas disponibles pueden serrecogidas con las funciones getch o getche.

La función k bhit  retorna 0 si no se ha registrado una pulsada de tecla; si hay unadisponible, entonces el valor retornado es distinto a cero.

Ejemplo:/ Se / Ejemplo de bucle hasta que se pulsa una tecla/ / Ejemplo de no trabajar con todos los compiladores# Include <conio.h># Include <iostream>

using namespace std;

int main (){

while (1){

if (kbhit ()){

break;}

}}

PROPOSICION IF - ELSE Esta proposición sirve para ejecutar ciertas sentencias de programa , si una expresiónresulta CIERTA ú otro grupo de sentencias, si aquella resulta FALSA. Su interpretaciónliteral sería : SI es CIERTA tal cosa , haga tal otra , si no lo es salteéla .

El caso más sencillo sería :

if(expresión)sentencia ;

ó

if(expresión) sentencia ;

Cuando la sentencia que sigue al IF es única, las dos formas de escritura expresadas arribason equivalentes . La sentencia sólo se ejecutará si el resultado de "expresión" es distinto

Page 38: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 38/49

 

de cero (CIERTO) , en caso contrario el programa salteará dicha sentencia , realizando lasiguiente en su flujo.

PROPOSICION  SWITCH El SWITCH es una forma sencilla de evitar largos , tediosos y confusos anidamientos de

ELSE-IF .Supongamos que estamos implementando un Menu , con varias elecciones posibles . Elesqueleto de una posible solución al problema usando if-else podría ser el siguiente :

#include <<stdio.h>>

main(){int c ;printf("\nMENU :") ;printf("\n A = ADICIONAR A LA LISTA ") ;printf("\n B = BORRAR DE LA LISTA ") ;printf("\n O = ORDENAR LA LISTA ") ;printf("\n I = IMPRIMIR LA LISTA ") ;printf("\n\nESCRIBA SU SELECCION , Y LUEGO <<ENTER>> : ") ;if( (c = getchar()) != '\n' ){if( c == 'A')printf("\nUD. SELECCIONO AGREGAR") ;

else

if( c == 'B')printf("\nUD. SELECCIONO BORRAR") ;elseif( c == 'O' )printf("\nUD. SELECCIONO ORDENAR") ;elseif( c == 'I' )printf("\nUD. SELECCIONO IMPRIMIR") ;elseprintf("\n\a\aUD. APRETO UN CARACTER ILEGAL" ) ;

}elseprintf("\n¡ UD. NO HA SELECCIONADO NADA !" ) ;

}

El SWITCH empieza con la sentencia : switch (expresión) . La expresión contenida por losparéntesis debe ser ENTERA , en nuestro caso un caracter ; luego mediante una llave abreel bloque de las sentencias de comparación . Cada una de ellas se representa por la

Page 39: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 39/49

 

palabra clave "case" seguida por el valor de comparación y terminada por dos puntos .Seguidamente se ubican las sentencias que se quieren ejecutar , en el caso que lacomparación resulte CIERTA . En el caso de resultar FALSA , se realizará la siguientecomparación , y así sucesivamente .Prestemos atención tambien a la sentencia BREAK con la que se termina cada CASE. Una

característica poco obvia del SWITCH , es que si se eliminan los BREAK del programaanterior , al resultar CIERTA una sentencia de comparación, se ejecutarán las sentenciasde ese CASE particular pero TAMBIEN la de todos los CASE por debajo del que haresultado verdadero. Quizás se aclare esto diciendo que , las sentencias propias de unCASE se ejecutarán si su comparación ú otra comparación ANTERIOR resulta CIERTA . Larazón para este poco "juicioso" comportamiento del SWITCH es que así se permite quevarias comparaciones compartan las mismas sentencias de programa , por ejemplo :

.................

case 'X' :

case 'Y' :

case 'Z' :

printf(" UD. ESCRIBIO X , Y , ó Z ") ;

break ;

..................

La forma de interrumpir la ejecución luego de haber encontrado un CASE cierto es pormedio del BREAK , el que dá por terminado el SWITCH .Al final del bloque de sentencias del SWITCH , aparece una optativa llamada DEFAULT ,que implica : si no se ha cumplido ningun CASE , ejecute lo que sigue. Es algo superfluoponer el BREAK en este caso , ya que no hay más sentencias despues del DEFAULT , sinembargo , como el orden en que aparecen las comparaciones no tiene importancia para laejecución de la instrucción, puede suceder que en futuras correcciones del programa seagregue algún nuevo CASE luego del DEFAULT , por lo que es conveniente preveerlo ,agregando el BREAK , para evitar errores de laboriosa ubicación .

Más adelante volveremos sobre otros usos del BREAK.EL BUCLE while 

El lenguaje de programación C contiene varias instrucciones condicionales y de bucle, eneste capítulo las trataremos todas ellas empezando con el bucle while. El bucle while seejecuta mientras una condición es cierta. Cuando esta condición se torna falsa, el bucletermina su operación. Veamos el siguiente ejemplo:

Page 40: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 40/49

 

 /* Este es un ejemplo del bucle while. */# include <stdio.h>int main(){

int contador;contador = 0;while (contador < 6){

printf ("El valor de contador es %d\n", contador);contador = contador + 1;

}return 0 ;

}

/ * Resultado de la ejecución del programaEl valor de contador es 0El valor de contador es 1El valor de contador es 2El valor de contador es 3El valor de contador es 4El valor de contador es 5* /

En este programa empezamos con un comentario y el punto de entrada main ( ), despuésdefinimos una variable de tipo entero a la que llamamos contador dentro del cuerpo delprograma, esta variable es inicializada a cero para después entrar en el bucle while. Lasintaxis del bucle while es justamente como se muestra en el programa. A la palabra clavewhile le sigue una expresión de algo entre paréntesis y luego una serie de enunciadosencerrados entre llaves. Tan pronto como la expresión entre paréntesis es verdaderatodos los enunciados entre las llaves se ejecutarán repetidamente. En este caso, debido aque la variable contador es incrementada en 1 cada que los enunciados entre llaves sonejecutados, eventualmente se alcanzará el valor de 6. En este punto los enunciados no seejecutarán mas porque contador ya no es menor que 6 finalizando así el bucle. El

programa continuará entonces con los enunciados que siguen a las llaves. La expresión decomparación entre paréntesis de la instrucción while la trataremos en el siguientecapítulo, antes debemos hacer algunas observaciones respecto al bucle. Primero, si lavariable contador fuera inicializada a un valor mayor de 5, los enunciados dentro de lasllaves podrían no ejecutarse por lo que es posible tener un bucle que jamás se ejecute.Segundo, si la variable no se incrementa dentro del bucle este jamás terminaría y porende el programa. Finalmente, en el caso de existir un solo enunciado por ejecutarentonces no es necesario el uso de llaves. A partir de este programa veremos el resultado

Page 41: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 41/49

 

de la ejecución del mismo en forma de comentarios y en algunas veces mostraremosimágenes del programa ejecutado al final del código. También continuaremos ignorandoel significado de los enunciados #include y return ya que se explicarán posteriormente.

EL BUCLE do-while 

Tenemos ahora una variación del bucle while en nuestro siguiente ejemplo, esteprograma es casi idéntico al ejemplo anterior excepto que el bucle inicia con la palabraclave do, seguida por una serie de enunciados compuestos entre llaves, después viene lapalabra clave while y finalmente la expresión de evaluación entre paréntesis.

/* Este es un ejemplo del bucle do-while */# include <stdio.h>

int main(){int i;

i = 0;do{

printf ( "El valor de i es ahora %d\n", i );i = i + 1;

}while (i < 5);

return 0;}

Page 42: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 42/49

 

 

Los enunciados entre llaves se ejecutan repetidamente en tanto que la expresión entreparéntesis sea verdadera. Cuando la expresión es falsa, la ejecución del bucle termina y elcontrol del programa pasa a los enunciados siguientes. Respecto al bucle do-while debemos apuntar lo siguiente. En primer lugar, debido a que la prueba verdadero-falso sehace al final del bucle, los enunciados dentro de las llaves se ejecutan al menos una vez.En segundo, si la variable i no cambia dentro del bucle entonces el programa jamásterminaría. Observe además que los bucles pueden anidarse, esto es, un bucle puedecontener dentro de sus enunciados otro bucle. El nivel de anidamiento no tiene límite yesto lo ilustraremos mas adelante.

EL BUCLE f or

/* Este es un ejemplo del bucle for */

#include <stdio.h>

int main(){int indice;

for(indice = 0 ; indice < 6 ; indice = indice + 1)printf ( "El valor de indice es %d\n", indice);return 0;

Page 43: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 43/49

 

}

/* Resultado de la ejecución:El valor de indice es 0

El valor de indice es 1El valor de indice es 2El valor de indice es 3El valor de indice es 4El valor de indice es 5*/

El bucle f or consiste de la palabra clave f or seguida de una expresión entre paréntesis.Esta expresión se compone realmente de tres campos cada uno separado por un punto ycoma. El primer campo contiene la expresión "indice = 0" y se le llama campo de

inicialización. Cualquier expresión en este campo se ejecuta antes del inicio del bucle, entérminos generales se puede decir que no existe límite en el contenido del primer campoya que es posible contener varios enunciados separados por comas sin embargo es buenapráctica de programación mantener las cosas simples. El segundo campo, que en este casocontiene "indice < 6 " es la prueba que se hace al principio de cada ciclo del bucle y puedeser cualquier expresión que pueda evaluarse a verdadero ó falso. La expresión del tercercampo se ejecuta en cada ciclo del bucle pero solo hasta que se hayan ejecutado todas lasinstrucciones contenidas dentro del cuerpo principal del bucle, en este campo, como en elprimero es posible contener varias expresiones separadas por comas.

En seguida de la expresión f or ( ) están uno o varios enunciados que conforman el cuerpoejecutable del bucle. Un enunciado compuesto es cualquier grupo de instrucciones válidasen C encerradas entre llaves.

Un bucle while es útil cuando se desconoce cuantas veces será ejecutado un bucle, entanto que la instrucción f or se usa generalmente en aquellos casos en donde debe existirun número fijo de interacciones, además, el bucle f or es conveniente porque contienetoda la información del control del bucle en un solo lugar, dentro de un paréntesis. Es desu elección utilizar uno u otro bucle y dependiendo de cómo sean utilizados cabe laposibilidad con cada uno de estos bucles de no ejecutar las instrucciones dentro delcuerpo del bucle, esto es porque la prueba se hace al principio del bucle y en la primera

interacción puede fallar, sin embargo con la instrucción do-while tenemos la seguridad deejecutar el cuerpo del bucle al menos una sola vez porque la prueba en este bucle se haceal final del ciclo.

Sentencia break.

Break .

Page 44: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 44/49

 

Se usa para romper una sentencia while, do-while, f or o switch. Si se ejecuta se sale delbucle más interno o de la sentencia switch que se esté ejecutando.

char color;

switch (color) {case 'a':

case 'A': printf("AMARILLO\n");

break;

case 'r':

case 'R': printf("ROJO\n");

case 'b':

case 'B': printf("BLANCO\n");

default: printf("OTRO\n"); }

La sentencia break se utiliza para terminar la ejecución de bucles o salir de una sentenciaswitch. Es necesaria en la sentencia switch para transferir el control fuera de la misma. Encaso de bucles anidados, el control se transfiere fuera de la sentencia más interna en la

que se encuentre, pero no fuera de las externas.Ámbito de la variable:

Respecto al ámbito de una variable, éste puede ser:

y  Local: Cuando la misma sólo es accesible desde un único procedimiento hijo, nopudiendo ser leída o modificada desde otro procedimiento hermano o desde elpropio procedimiento padre. Es posible declarar variables en bloques de condición,bucles, etc de tal modo que sólo pueda accederse a ellas en el propio bloque.

y  Global: Cuando la misma es accesible tanto desde rutinas o macros de la

aplicación, como en todos los procedimientos y funciones de la misma.Si bien es cierto, que de una forma básica, se puede definir el ámbito de las variables de laforma expuesta más arriba, existen grados de globalidad  de las mismas, pudiendo seraccesibles desde unos puntos u otros, o incluso pudiendo ser accesibles entre aplicacionesdistintas, llegando al caso de la superglobalidad . Ejemplo del ámbito de una variable en ellenguaje de programación Java.

Page 45: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 45/49

 

public class A {public Integer numeroEntero = new Integer(); /* Variable Global a todos los Métodos */

public Integer metodo() {int num = 1; // Variable Local a metodo. Puede accederse dentro de este método en

cualquier parte, pero no fuera del mismo.for (int i = 0;i<numeroEntero.intValue();i++) { // i es local al bucle for, sólo puede seraccedida dentro del mismo.

num *= i;}// i = 2; Esta línea provocaría error al no haber declarado la variable i. i fue definida

localmente al bucle for.return Integer.valueOf(num);

}

public void otroMetodo() {int num = 1; // Variable local a otroMetodo. num aquí es una variable distinta a la

variable num de metodoSystem.out.println("Variable local num: " + num);

}}

Hay que tener en cuenta que en Java el caso de las variables globales a todos los 

métodos que se encuentran en una clase, es algo peculiar, ya que estas realmente

son atributos que definen un objeto de una clase determinada, en este caso la

clase  A tiene un atributo llamado numeroEntero. El atributo es un concepto que

define a un objeto de una clase determinada, mientras que una variable sirve deapoyo a los procedimientos y no define conceptualmente objetos. 

ARRAYS Y CADENAS 

Un array es una colección de variables del mismo tipo que se referencian por un nombrecomún. A un elemento específico de un array se accede mediante un índice. En C todos losarrays constan de posiciones de memoria contiguas. La dirección más baja corresponde alprimer elemento y la más alta al último. Los arrays pueden tener una o variasdimensiones. El array más común en C es la cadena, que simplemente es un array decaracteres terminado por uno nulo.

9.1 Arrays unidimensionales 

Los arrays unidimensionales son listas de información del mismo tipo que se guardan enposiciones contiguas de memoria según el orden del índice. La forma general dedeclaración es:tipo nombre_variable [tamaño];

Page 46: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 46/49

 

Los arrays tienen que declararse implícitamente para que el compilador reserve espacioen memoria para ellos. El tipo declara el tipo de los elementos del array, el tamaño indicacuántos elementos mantendrá el array.

Para declarar un array de 10 elementos denominado p y de tipo carácter, se escribe: p y

de tipo carácter, se escribe: char p[10];En este caso hemos declarado un array que tienediez elementos, desde p[0] hasta p[9].

En C todos los arrays tienen el 0 como índice de su primer elemento.

C no comprueba los límites de los arrays. Se puede pasar cualquier extremo de un array yescribir en alguna otra variable de datos e incluso en el código del programa.

9.2 Cadenas 

El uso más común de los arrays unidimensionales es como cadenas de caracteres. En Cuna cadena se define como un array de caracteres que termina en un carácter nulo (¿\0¿).

y  Construir un Sitio Web Diseña tu Sitio Web Gratis Editor de Web Rápido Fácil yGratiswww.Wix.com/Constructor-Sitios-WebEnlaces patrocinados

Para declarar un array de caracteres es necesario un carácter más que la cadena más largaque pueda contener, para dejar sitio para el carácter nulo del final de la cadena.

Una constante de cadena es una lista de caracteres encerrada entre dobles comillas. Por

ejemplo: "hola, que tal"No es necesario añadir explícitamente el carácter nulo al final de las constantes decadena, el compilador lo hace automáticamente.

En matemáticas o en programación, una cadena de caracteres, palabra, ristra de caracteres o f rase (string en inglés) es una secuencia ordenada de longitud arbitraria(aunque finita) de elementos que pertenecen a un cierto alfabeto. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos).

En matemáticas es habitual usar las letras w ,  x , y ,... para referirnos a las cadenas. Por

ejemplo, si tenemos un alfabeto = a,b,c, una cadena podría ser x = aacbbcba.

Desde un punto de vista de la programación, si no se ponen restricciones al alfabeto, unacadena podrá estar formada por cualquier combinación finita de todo el juego caracteresdisponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los números del '0' al '9', el espacioen blanco ' ', símbolos diversos '!', '@', '%', etc). En este mismo ámbito (el de laprogramación), se utilizan normalmente como un tipo de dato predefinido, para palabras,

Page 47: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 47/49

 

frases o cualquier otra sucesión de caracteres. En este caso, se almacenan en un vector dedatos, o matriz de datos de una sola fila (array  en inglés). Las cadenas se puedenalmacenar físicamente:

y  Seguidas.y  Enlazados letra a letra.

Generalmente son guardados un carácter a continuación de otro por una cuestión deeficiencia de acceso.

Un caso especial de cadena es la que contiene cero caracteres, a esta cadena se la llamacadena vací a; en teoría de autómatas es común denotar a la misma por medio de la letragriega

En computación las strings de C son secuencia de caracteres guardados como una matrizde caracteres terminados con un carácter nulo ('\0' o ASCII 0). El nombre se refiere allenguaje de programación C y se usa para distinguir esta forma de representar una cadenaa cualquier otra.

La característica de la terminación en nulo fue creada históricamente por problemas deseguridad relacionados con la longitud de la cadena. Si no se añade el carácter nulo al finalpor alguna razón el área de memoria que sucede a la cadena será tratada también comoparte de la secuencia. Esto puede llevar a fallos o fugas de información interna delprograma a atacantes o usuarios noveles. Estos errores pueden, y deben, ser prevenidosmediante comprobaciones adecuadas de errores.

En el lenguaje de programación C++ las cadenas de C se usan conjuntamente con otrarepresentación de secuencias de caracteres. La Standard Template Library (STL) de C++dispone de un contenedor denominado std::string. Hay que tener en cuenta la diferenciaque existe entre las cadenas tradicionales de C y las cadenas de C++, mucho másavanzadas.

9.3 Arrays multidimensionales 

C permite arrays de más de una dimensión. La forma general de declaración de un arraymultidimensional es:

Tipo nombre [a] [b] [c] ¿.. [z];

Page 48: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 48/49

 

Los arrays de tres o más dimensiones no se utilizan a menudo por la cantidad de memoriaque se requiere para almacenarlos, ya que el almacenamiento requerido aumentaexponencialmente con el número de dimensiones.9.4 Inicialización de arrays C permite lainicialización de arrays en el momento de declararlos, como en cualquier variable. Laforma general es: tipo nombre [tamaño1] ¿ [tamaño n]={lista de valores};

la lista de valores es una lista de constantes separadas por comas cuyo tipo es compatiblecon el tipo especificado en la declaración del array. Por ejemplo: int i[10] =

{1,2,3,4,5,6,7,8,9,10};

Con las cadenas o arrays de caracteres se hace igual, aunque permite una inicializaciónabreviada. Estas dos sentencias producen el mismo resultado:char cad[11] = "Me gusta C";

char cad[11] = { };

Los arrays multidimensionales se inicializan del mismo modo que los unidimensionales.

Page 49: Trabajo de Lenguaje c

5/12/2018 Trabajo de Lenguaje c - slidepdf.com

http://slidepdf.com/reader/full/trabajo-de-lenguaje-c 49/49

 

Conclusión:

Las sentencias al pasar el tiempo han sido mejoradas y añadidas nuevas funciones dentrodel lenguaje c lo que da más amplitud al momento de diseñar un programa, algunas de lacondiciones que se deben cumplir o no en el programa del código netamente hablando y

existen varias herramientas y guías que explican cada una de las funciones básicas dellenguaje c como esta antes mencionado en el desarrollo de varias sentencias, líneas decódigos, funciones, etc.