Beruflich Dokumente
Kultur Dokumente
Tener en cuenta que algunos lenguajes que nacieron en los aos 60 han perdido vigencia
y ya no se usan, mientras que otros se han ido modernizando y continan usndose ms
o menos ampliamente, como es el caso de Cobol.
C es un lenguaje de gran importancia histrica, antecedente de algunos de los lenguajes
ms utilizados hoy en da (C++, Java), y que an hoy sigue utilizndose y teniendo
demanda laboral.
El lenguaje C fue desarrollado en la dcada de los 70 y constituye un lenguaje muy
robusto usado como ncleo del sistema operativo Unix. C no admite la orientacin a
objetos y muchas veces se alude a l como un lenguaje poco amigable desde el punto de
vista de que algunos aspectos de su sintaxis, elementos de programacin que emplea
(manejo directo de memoria) y otras cuestiones hacen que sea un lenguaje difcil de
aprender en su totalidad. C++ fue una evolucin de C desarrollada en los aos 80.
Introdujo el diseo orientado a objetos, pero manteniendo la compatibilidad con C. Esto
supona que C++ permitiera tanto el uso de la programacin estructurada tradicional
como la programacin orientada a objetos. Adems C++ mantuvo ciertas caractersticas
de C que hicieron que la evolucin fuera parcial.
Como paso final en esta evolucin estara Java, un lenguaje que evoluciona a partir de C
y C++, pero que elimina diversos aspectos de estos lenguajes y se constituye en un
lenguaje definitivamente orientado a objetos, un lenguaje completamente nuevo. Java es
un lenguaje popular y de amplio uso.
Programacin estructurada, es la tcnica en la cual la estructura de un programa es
posible mediante tres esctructuras de control:
a.
b.
c.
Como podemos imaginar, este programa no hace nada, pero contiene la parte ms
importante de cualquier programa C y adems, es el ms pequeo que se puede escribir
y que se compila correctamente. En l se define la funcin main, que es la que ejecuta el
sistema operativo al llamar a un programa C. El nombre de una funcin C siempre va
seguida de parntesis, tanto si tiene argumentos como si no. La definicin de la funcin
est formada por un bloque de sentencias, que esta encerrado entre llaves {}.
Un programa algo ms complicado, pero que hace algo, es el siguiente:
#include <stdio.h>
main()
{
/* Este es mi primer programa en C*/
printf("Bienvenido a la programacin en lenguaje C\n");
return 0;
}
Encabezamiento
main( )
{
}
f1( )
{
}
variables locales
sentencias
variables locales
sentencias
...
...
...
fn( )
{
variables locales
sentencias
compilar:
cc prog
cc modulo1, modulo2
enlazar:
ejecutar:
prog
estndar C99 se agregan: los valores lgicos (verdadero o falso) y los nmeros
complejos.
Estos tipos de datos son parte del lenguaje, y por ello se los considera primitivos. Ms
adelante veremos que con el uso de estructuras y uniones es posible crear tipos
compuestos de datos a partir de estos tipos primitivos.
Enteros
Los enteros son el tipo de dato ms primitivo en C. Se usan para representar nmeros
enteros. Pero siempre se pueden encontrar otras aplicaciones para los nmeros enteros.
En general se pueden usar para representar cualquier variable discreta.
Los tipos de datos enteros son: short, int, long y long long, cada uno representando
un nmero entero de un tamao o capacidad determinado. Segn el compilador y la
plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte
hasta 8 bytes en memoria (para ms detalles busca en la referencia).
Adems, el lenguaje C hace la distincin de si el entero es con signo (signed) o sin signo
(unsigned). En caso de que no se declare si es con signo o sin signo, se toma con signo.
Algunos ejemplos de declaraciones de enteros:
int a;
unsigned int a;
signed long a;
signed long long a = 10000000;
Todos los nmeros son representados en memoria mediante una cadena de bits. En el
caso de los nmeros con signo, el bit ms significativo es el que se usa para
representar el signo. La representacin de los nmeros negativos se realiza mediante el
complemento a dos, que es una tcnica que permite operar con los nmeros negativos
de forma lgica.
A modo de ejemplo, la representacin en memoria del nmero -8 en una variable de 2
bytes, entera, con signo, sera la siguiente:
1111111111111000
Flotantes
Se denomina flotantes a los tipos de datos que representan a los nmeros reales, ya que
utilizan un sistema de representacin basado en la tcnica de coma flotante, que permite
operar con nmeros reales de diversas magnitudes, mediante un nmero decimal llamado
mantisa y un exponente que indica el orden de magnitud.
El tipo de dato flotante en lenguaje C slo tiene dos tamaos: el float y el double, que
son 4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar
nmeros decimales, como para representar nmeros enteros con un orden de magnitud
muy grande.
La forma de declarar una variable flotante es escribiendo en una lnea uno de los tipos de
datos flotantes y a continuacin el nombre de la variable y tal vez algn valor que se les
quiera dar.
Algunos ejemplos:
float a;
double a = 1e23;
double a = 3.1416;
float a = 4e-9;
double a = -78;
Hay que tener en cuenta que aunque los valores flotantes son ms convenientes para
algunas aplicaciones, hay casos en los que se prefieren los enteros. Esto se debe a que
los nmeros flotantes no necesariamente tienen soporte de hardware, en particular en las
plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar
los enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como 23.45.
Para el caso de los flotantes de 4 bytes, se utiliza 1 bit para el signo, 7 bits para el
exponente y 24 bits para el valor del nmero. El procedimiento para almacenar un nmero
en una variable flotante es el siguiente:
1. Se convierte a binario la parte entera.
2. Se coloca el signo en el bit ms significativo de la misma manera que en los
enteros (1 para el - y 0 para el +).
3. Se mueve la coma (en la representacin binaria de la parte entera) hasta que est
a la derecha del primer uno y ste se descarta (el uno ms significativo). El valor
del exponente ser el nmero de posiciones que se movi la coma. El exponente
usa la representacin de un entero con complemento a dos.
4. Se convierte en binario la parte decimal del nmero. Esto usando el peso de los
bits. el bit decimal ms significativo vale 1/2, el siguiente vale 1/4, el otro 1/8, el
otro 1/16 y as hasta completar lo que falta para los 23bits del valor.
5. Se concatena todo y ese es el valor flotante representado en memoria.
Caracteres
Los caracteres se representan utilizando el tipo char, que tiene slo 1 byte de tamao.
Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del
sistema. El tipo char es tambin un tipo entero, ya que puede tomar valores de 0 a 255.
Por lo tanto tambin puede ser signed o unsigned.
En cuanto a la forma de declarar variables de tipo char es la misma forma que con los
otros tipos.
char a;
char a = 's';
unsigned char a = 48;
Como puedes ver, se le puede asignar un nmero a una variable char, ya que se trata de
un tipo entero. En muchas situaciones se utiliza el tipo char para almacenar nmeros
pequeos, ya que ocupa en memoria slamente un byte.
Es importante notar que con la llegada de la codificacin UTF-8, los caracteres de los
diversos idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo que el tipo char ya no alcanza
para la representacin de todos los caracteres posibles. Por ello, el estndar C99
introduce el tipo wchar que puede ocupar ms de 1 byte, segn sea necesario para la
codificacin utilizada por el sistema.
declara tres variables (a, b y c) de tipo int , y tiene exactamente el mismo significado que
si hubiramos escrito:
int a;
int b;
int c;
Inicializacin de variables
Cuando declaramos una variable local, su valor es indeterminado por defecto. Pero usted
podra querer que una variable almacene un valor en concreto al momento de su
declaracin. Para hacer esto, usted tiene que anexar un signo igual seguido por el valor
deseado en la declaracin de la variable:
type identifier = initial_value ;
Por ejemplo, si queremos declarar una variable entera int llamada a que contenga el valor
0 al momento en el cual es declarada, podramos escribir:
int a = 0;
Adicionalmente a esta forma de inicializacin de variables (conocida como c-like), C++ ha
aadido una nueva manera de inicializar una variable: encerrando el valor inicial entre
parntesis ():
type identifier (initial_value) ;
por ejemplo:
int a (0);
Ambas formas son validas y equivalentes en C++.
Constantes: Literales.
Una constante es cualquier expresin que tenga un valor arreglado. Estos pueden ser
divididos en nmeros Enteros, nmeros Punto-Flotante, Cadenas y smbolos.
Nmeros Enteros
1776
707
-273
Estas son constantes numricas que identifican nmeros enteros decimales. Note que
para expresar una constante numricas no necesitamos escribir comillas (") ni otro
smbolo especial. No hay duda de que es una constante dondequiera que se escriba 1776
en un programa, nos estaremos refiriendo a el valor 1776.
En adicin a los nmeros decimales (esos que ya todos nosotros conocemos) C++
permite el uso de constantes literales de nmeros octales (base 8) y nmeros
hexadecimales (base 16). Si queremos expresar un nmero octal debemos precederlo
con un smbolo 0 (caracter cero). Y para expresar un nmero hexadecimal tenemos que
precederlo con los smbolos 0x (cero, x). Por ejemplo, las siguientes constantes literales
son todas equivalentes entre si:
75 // decimal 0113 // octal 0x4b // hexadecimal
Todas representan el mismo numero: 75 (setenta y cinco ) expresado como un nmero
base 10, octal y hexdecimal, respectivamente.
Nmeros Punto Flotante
Estos expresan nmeros con decimales y/o exponentes. Estos pueden incluir un punto
decimal, un smbolo e (que expresa "por 10 a la n-esima potencia", donde n es el
siguiente valor entero) o ambos.
3.14159 // 3.14159 6.02e23 // 6.02 x 1023 1.6e-19 // 1.6 x 10-19 3.0 // 3.0
estos son cuatro nmeros vlidos con decimales expresados en C++. El primer nmero es
PI, el segundo es el numero de Avogadro, el tercero es la carga elctrica de un electrn
(un nmero extremadamente pequeo) -todos ellos aproximados- y el ltimo es el nmero
3 expresado como un literal numrico en punto flotante.
Constantes declaradas (const)
Con el prefijo const usted puede declarar constantes con un tipo especifico exactamente
igual a como hara con una variable:
const int width = 100;
const char tab = '\t';
const zip = 12440;
En caso de que el tipo no sea especificado (como en el ultimo ejemplo) el compilador
asume que es de tipo int.
Operadores Aritmticos
Operador
Nombre
Descripcin
Sentido
Suma
De izquierda a derecha
Resta
De izquierda a derecha
Divisin
De izquierda a derecha
Producto
De izquierda a derecha
Resto
De izquierda a derecha
Operadores Lgicos
Operador
Nombre
Descripcin
Sentido
No lgico
De izquierda a derecha
&&
Y lgico
De izquierda a derecha
||
lgico
De izquierda a derecha
Operadores Relacionales
Operador
Nombre
Descripcin
Sentido
==
Igual a
De izquierda a
derecha
!=
Diferente
de
De izquierda a
derecha
>
Mayor que
De izquierda a
derecha
>=
Mayor o
igual que
De izquierda a
derecha
<
Menor que
De izquierda a
derecha
<=
Menor o
igual que
De izquierda a
derecha
Ejemplos:
Post-Incremento
#include <stdio.h>
void main(){
int a,b;
a=10;
b=a++; //A la variable b se le asigna el
valor de a; luego el valor
//de la variable a se incrementa
en 1
}
Pre-Incremento
#include <stdio.h>
void main()
{
int a,b;
a=10;
b=++a; //El valor de a es incrementado
en 1 y luego este valor es asignado a
//la variable b
}
Codificacin
Una vez que hemos resuelto el problema podemos pasar a codificar la solucin,
creando un archivo o un conjunto de archivos que contengan el cdigo fuente.
Para ello se necesita un programa editor que permita escribir y guardar nuestro
programa. En las prcticas se va a utilizar el editor que proporciona el entorno de
desarrollo Codelite, pero vale cualquier editor que utilice el conjunto de caracteres
que admite un compilador de C. Durante la codificacin es muy habitual incorporar
cdigo disponible en bibliotecas software, que puede haber sido desarrollado por
el propio programador o por terceros. La reutilizacin es un aspecto fundamental
del desarrollo software. Los lenguajes de programacin establecen mecanismos
para importar y utilizar dichas libreras aunque no estn disponibles los archivos
con su cdigo fuente.
Es importante, aunque no necesario para que un programa funcione, seguir unas
buenas prcticas de programacin a la hora de escribir el cdigo. Las primeras
buenas prcticas que debe aprender son:
Utilizar nombres significativos para variables y funciones, evitando nombres que
no ayuden a entender el propsito de una variable o funcin. Hilando ms fino, se
recomienda utilizar sustantivos para los nombres de variables y verbos para las
funciones.
Documentar adecuadamente el cdigo. No se trata de documentar hasta la
ltima declaracin de variable, pero s aquellos detalles que ayudan a entender
por qu se ha escrito ese cdigo. La documentacin es esencial para entender o
modificar cdigo fuente.