Programación
La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.
La primera programadora de computadoras conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer aCharles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso, aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora.
Este proceso está aplicado a todos los métodos científicos que actualmente se practican.
tipos de lenguajes de programación
HISTORIA
Los lenguajes de programación cierran el abismo entre las computadoras, que sólo trabajan con números binarios, y los humanos, que preferimos utilizar palabras y otros sistemas de numeración.
Mediante los programas se indica a la computadora qué tarea debe realizar y como efectuarla, pero para ello es preciso introducir estas ordenes en un lenguaje que el sistema pueda entender. En principio, el ordenador sólo entiende las instrucciones en código máquina, es decir, el específico de la computadora. Sin embargo, a partir de éstos se elaboran los llamados lenguajes de alto y bajo nivel.
LENGUAJES DE PROGRAMACIÓN: Los lenguajes de programación son lenguajes especiales que ayudan al usuario a comunicarse con la computadora.
LENGUAJES DE BAJO NIVEL:
Es un lenguaje de programación bien cercano al lenguaje de máquina.
Utilizan códigos muy cercanos a los de la máquina, lo que hace posible la elaboración de programas muy potentes y rápidos, pero son de difícil aprendizaje. Es
el que proporciona poca o ninguna abstracción del microprocesador de
un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina.
En general se utiliza este tipo de lenguaje para
programar controladores (drivers).
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina.
La palabra "bajo" no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el hardware.
La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas:
Mayor adaptación al equipo.
Imposibilidad de escribir código independiente de la máquina.
Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle.
Ventajas
En general se utiliza este tipo de lenguaje para programar controladores (drivers).
Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Pero también tiene importantes inconvenientes:
Mayor dificultad en la programación y en la comprensión de los programas.
El programador debe conocer más de un centenar de instrucciones.
Es necesario conocer en detalle la arquitectura de la máquina.
Características
Está orientado a la máquina.
La palabra "bajo" no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el hardware.
La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas:
Mayor adaptación al equipo.
Imposibilidad de escribir código independiente de la máquina.
Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle.
Ventajas

En general se utiliza este tipo de lenguaje para programar controladores (drivers).
Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Pero también tiene importantes inconvenientes:
Mayor dificultad en la programación y en la comprensión de los programas.
El programador debe conocer más de un centenar de instrucciones.
Es necesario conocer en detalle la arquitectura de la máquina.
Características
Está orientado a la máquina.
Ventajas
Mayor adaptación al equipo.
Inconvenientes
Imposibilidad de escribir código independiente
de la máquina.
Mayor dificultad en la programación y en la
comprensión de los programas.
El programador debe conocer más de un centenar de
instrucciones.
Es necesario conocer en detalle la arquitectura de
la máquina.
Características
Se trabaja a nivel de instrucciones, es decir, su
programación es al más fino detalle.
Está orientado a la máquina.
Lenguajes de bajo nivel
Código máquina
Ensamblador
LENGUAJES DE ALTO NIVEL:
Es un lenguaje que se asemeja más al lenguaje humano que a un lenguaje de máquina o ensamblador. Es más fácil escribir programas en este lenguaje, pero luego deben ser traducidos por compiladores o intérpretes para que la computadora los entienda.
Por el contrario, son de uso mucho más fácil, ya que en ellos un solo comando o instrucción puede equivaler a millares es código máquina. El programador escribe su programa en alguno de estos lenguajes mediante secuencias de instrucciones. Antes de ejecutar el programa la computadora lo traduce a código máquina de una sola vez (lenguajes compiladores) o interpretándolo instrucción por instrucción (lenguajes intérpretes).
Ejemplos de lenguajes de alto nivel: Pascal, Cobol, Basic, Fortran, C++ Un Programa de computadora, es una colección de instrucciones que, al ser ejecutadas por el CPU de una máquina, llevan a cabo una tarea ó función específica. Este conjunto de instrucciones que forman los programas son almacenados en archivos denomina dos archivos ejecutables puesto que, al teclear su nombre (o hacer clic sobre el icono que los identifica) logras que la computadora los cargue y corra, o ejecute las instrucciones del archivo.
El contenido de un archivo ejecutable no puede ser entendido por el usuario, ya que no está hecho para que la gente lo lea, sino para que la computadora sea quien lo lea.
Los archivos de programas ejecutables contienen el código máquina, que el CPU identifica como sus instrucciones. Son lo que conocemos como Programas Objeto. Dado que sería muy difícil que los programadores crearan programas directamente en código de máquina, usan lenguajes más fáciles de leer, escribir y entender para la gente.
El programador teclea instrucciones en un editor, que es un programa parecido a un simple procesador de palabras, estas instrucciones son almacenadas en archivos denominados programas fuentes (código fuente). Si los programadores necesitan hacer cambios al programa posteriormente vuelven a correr el editor y cargan el programa fuente para modificarlo.
El proceso de conversión de programas fuente a programas objeto se realiza mediante un programa denominado compilador. El compilador toma un programa fuente y lo traduce a programa objeto y almacena este último en otro archivo.
Nivel se caracterizan por expresar los
algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de
a la capacidad ejecutora de las máquinas.
En los primeros lenguajes de alto nivel la limitación
era que se orientaban a un área específica y sus instrucciones requerían de una
sintaxis predefinida. Se clasifican como lenguajes procedimentales.
Otra limitación de los lenguajes de alto nivel es que
se requiere de ciertos conocimientos de programación para realizar las
secuencias de instrucciones lógicas.
Los lenguajes de muy alto nivel se crearon para que el
usuario común pudiese solucionar tal problema de procesamiento de datos de
una manera más fácil y rápida.
Por esta razón, a finales de los años 1950 surgió un nuevo tipo de
lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un poco en las
ventajas. Estos lenguajes se llaman "de tercera generación" o
"de alto nivel", en contraposición a los "de bajo nivel" o
"de nivel próximo a la máquina".
La programación en un lenguaje de
alto nivel tiene ciertas ventajas:
Genera un código más
sencillo y comprensible.
Inconvenientes
Reducción de velocidad al
ceder el trabajo de
bajo nivel a la máquina.
Objetivos
Lograr independencia de
la máquina, pudiendo utilizar un mismo programa en
diferentes equipos con la única condición de disponer de un programa traductor
o compilador, que lo suministra el fabricante, para obtener el programa
ejecutable en lenguaje binario de la máquina que se trate. Además, no se
necesita conocer el hardware específico
de dicha máquina.
Aproximarse al lenguaje natural, para que el programa
se pueda escribir y leer de una forma más sencilla, eliminando muchas de las
posibilidades de cometer errores que se daban en el lenguaje máquina,
ya que se utilizan palabras (en inglés)
en lugar de cadenas de símbolos sin
ningún significado aparente.
Incluir rutinas de uso frecuente como son las de
entrada/salida, funciones matemáticas,
manejo de tablas, etc., que figuran en una especie de librería del lenguaje, de
tal manera que se pueden utilizar siempre que se quieran sin necesidad de
programarlas cada vez.
Lenguajes
de alto nivel
ADA
ALGOL
BASIC
Clipper
Cobol
C++
FORTH
Fortran
Haskell
Informix 4gl
Java
Lexico (con códigos en castellano o
sinónimos en otros idiomas)
Lisp
Logo
Modula
PASCAL
Prolog
RPG
Visual Basic
CAPITULO I
"MARCO INTRODUCTORIO"
Marco Conceptual
Se muy bien, que usted, querido lector; está muy
ansioso por comenzar a programar, pero considero que es importante; conocer un
poco del lenguaje C,
tanto de sus orígenes como de sus ventajas, pero no se preocupen, seré breve en
esta introducción teórica.
Además que es importante conocer o recordar algunos conceptos que, son
importantes al momento de programar.
·
Componentes de Una Computadora
Hemos definido una, computadora como
una máquina que recibe datos y
ordenes, que al ejecutarlas produce cierta información; dicha información se
presenta en un "idioma" codificado; por que ha de saberse que
las computadoras no
entienden nuestro idioma, o cualquier otro en el mundo. Dicho
"idioma" está compuesto únicamente por dos elementos los
ceros y los unos. Mejor conocido como código Binario, con
el cual se representan los datos, que arroja la computadora.
En una forma más general, y creo que más sencilla, una
computadora se comprende por dos grandes grupo:
El Hardware y
el Software.
Hardware
El Hardware de un computador es
un conjunto de elementos físicos, que la componen.
Veámoslo gráficamente:
Podríamos entrar en detalle de cada una de las partes
descritas anteriormente, pero ese, no es el objetivo de
estas insignificantes páginas; sino que esto es una mera introducción teórica,
por ello sólo daré una breve explicación.
En la Unidad Central de Proceso (o CPU,
por sus siglas en ingles –Central Proccessing Unit-) se contiene la Unidad
de Control, que
su función es
organizar y clasificar las instrucciones recibidas; mientras que la Unidad
Aritmética y Lógica, Se encarga de ejecutar dichas
instrucciones. Los Buses, son los mecanismos de interconexión
en el CPU.
La memoria Principal, Es
el lugar donde se cargan todas las instrucciones, programas,
etc que se están ejecutando.
Software
Debemos entender el software como la parte lógica
de la computadora...
¿un poco difícil de comprender, verdad?; es decir, que el software, es lo que
dota a los componentes físicos de poder realizar
tareas determinadas. Ejemplo, para poder utilizar una computadora, esta debe
tener instalado un sistemas operativo.
Para poder imprimir algún trabajo,
aparte de poseer un impresor, en la computadora, debo tener un software que me
permita imprimir dicha acción (generalmente
las impresoras traen
un cd,
son su respectivo software de instalación).
Aburrido?...
Es necesario, que empiece con tanta palabrería; por
que es necesario, para el lector tener en claro estos conceptos.
Ahora vamos a hablar de algo un poco más interesante,
como lo es el lenguaje de
programación
Un lenguaje de Programación Es
un conjuntos de
palabras, reglas, con las cuales se le indica a la computadora las funciones que
debe realizar. Un lenguaje de programación puede
ser:
1.
Lenguajes Máquinas:
se trata de lenguaje cuyas instrucciones son directamente comprendidas por el
ordenador o computador en el que se ejecuta el programa.
2.
Lenguaje de Bajo Nivel: este tipo de lenguajes, al
igual que sucede con los lenguajes máquinas, existe una gran dependencia con el
equipo en el que se va a ejecutar. No obstante son algo más fáciles de
escribir, quedando ubicados por tanto, según su grado de complejidad; en un
nivel intermedio entre el lenguaje máquina y el de alto nivel.
3.
Lenguaje de Alto Nivel: Disponen de una sintaxis en
lenguaje más natural, y un amplio conjunto de funciones internas, que ayudan al
programador en distintas situaciones, así como un número determinado de
utilidades y asistentes que ahorran tiempo y
trabajo al programador. Dentro de estos lenguajes tenemos: Visual Foxpro, Visual Basic.
NET.
Programa:
Es un conjunto de instrucciones que se le dan a la
computadora, para que ésta realice una determinada tarea.
Lenguaje C
C++ no nació como un lenguaje orientado a objetos puro. Más bien se trataba de añadirle "objetos" al clásico C de K&R, ya que el nuevo paradigma de programación "con objetos", se mostraba como un paso adelante en el arte de la programación. De hecho, aunque C++ introduce nuevas palabras clave y operadores para manejo de clases, algunas de sus extensiones tienen aplicación fuera del contexto de programación con objetos (fuera del ámbito de las clases). Esta es también la causa de que C++, junto con las magníficas cualidades del C, arrastre algunas de sus deficiencias. Sigue siendo permisivo (aunque menos) "intentando hacer algo razonable con lo que se haya escrito", solo que a veces, sin que nos demos cuenta, se pasa de listo. Por supuesto, con ambos lenguajes resulta cierto el viejo aforismo informático: "Un programa no hace lo que queremos que haga, sino lo que le hemos dicho que haga". En el caso del C++ quizás tendríamos que añadir: "Mas lo que él decide por su cuenta"... :-)
Cuando se trata de programas sencillos, que no requieren necesariamente de las características "++" de la POO, surge inmediatamente la cuestión si será mejor hacerlo en C o en C++, Cual es mas rápido? Cual proporciona un código más compacto? Según dicen los expertos, con los actuales compiladores el resultado está en tablas. Las diferencias se mantienen en un margen de ± 5% y por lo general los resultados se encuentran a la par. Sin embargo, en cuanto se trata de escribir programas algo más complicados que mostrar el consabido "Hola mundo", las diferencias de productividad son notables, con una indiscutible ventaja a favor del C++.
El lenguaje C, fue diseñado por Dennies Ritchie en 1970, en los laboratorios Bell de Estados Unidos.
Este lenguaje presenta varias características, entre las cuales están:
- Lenguaje de programación de propósitos generales
- Permite la Programación Estructurada
- Abundancia de Operadores y Tipos de Datos
- No está asociado a ningún sistema operativo ni a ninguna máquina
- Popular y Eficaz
- Permite el desarrollo de Sistemas Operativos y programas de aplicación
- Portabilidad
- Existen las librerías en las bibliotecas
- tiene sólo 32 palabras reservadas
*bibliotecas: es el archivo que contiene código objeto de una colección de rutinas o funciones que realizan tareas determinadas y se pueden utilizar en los programas.
*Enlazador: Programa que convierte las funciones de la biblioteca estándar de C, con el código que ha traducido el compilador .
Este lenguaje presenta varias características, entre
las cuales están:
1.
Lenguaje de programación de propósitos generales
2.
Permite la Programación Estructurada
3.
Abundancia de Operadores y Tipos de Datos
4.
No está asociado a ningún sistema operativo
ni a ninguna máquina
5.
Popular y Eficaz
6.
Permite el desarrollo de
Sistemas Operativos y programas de aplicación
7.
Portabilidad
8.
Existen las librerías en las bibliotecas
9.
tiene sólo 32 palabras reservadas
*bibliotecas:
es el archivo que
contiene código objeto
de una colección de rutinas o funciones que realizan tareas determinadas y se
pueden utilizar en los programas.
*Enlazador: Programa que convierte las funciones de
la biblioteca estándar
de C, con el código que ha traducido el compilador .
Estructura de Un
programa en C
Ya estamos apunto de entrar a lo más interesante, a la
programación en sí; pero es necesario, primero; mencionar algunos de los
errores típicos al programar, para que el lector sepa como identificarlos y así
los pueda corregir.
1.
ERROR DE SINTAXIS: Estos
errores son producidos, cuando se hace mal uso de las reglas del lenguaje de
programación, y se violan las normas de
sintaxis, de ese lenguaje (en nuestro caso C); estos errores son fáciles de
detectar por que generalmente es el compilador, que los identifica (Y
hasta muestra la
línea donde se encuentra dicho error, pero eso depende de la versión del
compilador que estemos usando). En este curso he usado Turbo C, en su versión 2
y 3.
2.
ERRORES DE EJECUCIÓN: Estos
errores se producen , cuando le indicamos a la computadora, realizar una
determinada acción, y esta la comprende, pero no puede ejecutarla. Por ejemplo,
indicarle a la computadora una división entre cero, sumar dos variables a
las cuales no se les ha signado valor alguno,
etc.
3.
ERRORES DE LÓGICA: Muchas
veces, cuando estamos programando, el compilador no nos indica errores de
sintaxis, ni de lógica; pero el resultado de nuestro programa, esta fuera del
rango esperado, esto es producto de
un error de lógica en el código de nuestro programa. Este tipo de errores son
muy difíciles de identificar y por supuesto de corregir, ya que generalmente
hay que revisar línea por línea de nuestro programa. Ejemplo: El sueldo
negativo de un empleado, etc.
La estructura de
un programa en C, consta de algunas partes esenciales: las cuales son uno o más
módulos llamadas funciones, siendo main() la primera función que es llamada
cuando empieza la ejecución del programa .
Cada función debe contener :
>Directivas de pre-procesador (instrucciones
que se le dan al compilador
#include antes de compilar)
#define
ejemplo:
#include <stdio.h>
Lo que se le esta indicando, es que de las librerías,
"Incluya" en nuestro programa la directiva stdio.h, la cual contiene
las funciones de entrada y salida de datos (standar input output, en inglés).
Si necesitamos las funciones matemáticas,
debemos especificarlo con la declaratoria:
#include <math.h>
Si necesitamos las funciones de cadenas:
#inlcude <stlib.h>
Es necesario aclarar que esto se hace al inicio del
programa, y las declaratorias deben llevar el símbolo de numeral (#) seguido de
la sentencia "include", y entre signos de
mayor y menor que (<>) el nombre de la directiva.
>Declaraciones Globales
pueden ser:
*Prototipos de Funciones: También llamadas
declaraciones de funciones, lo cual se tratará más adelante
*Declaraciones de Variables
cabe destacar, que esto se hace seguido de los
#include y los #define.
>Función Principal main()
Esta es la función principal de nuestro programa, su
cuerpo, por ello NUNCA debe faltar, ya que en ella van contenidas todas las
instrucciones de nuestro programa.
main()
{
declaraciones locales /*Comentarios
*/
sentencias
}
la función main() va al inicio, luego abrimos llaves y
dentro de ellas van las declaraciones de variables, las sentencias de lectura,
cálculos, asignaciones e impresiones, y con la última llave ( } ), le indicamos
el final del programa.
Ejemplo 1.1
Programa que a partir del radio,
calcula el área de un circulo
#include <stdio.h>
#include <conio.h>
main()
{
float radio, area;
printf("Radio=\n");
scanf("%f", &radio);
area=3.14159*radio*radio;
printf("El Area es %f\n\n", area);
getch();
return 0;
}
Explicación:
Le indicamos al compilador, que usaremos las bibliotecas
<stdio.h> y <conio.h>, ¿por qué <conio.h>?, por que esta
biblioteca, contiene las funciones getche(), getch(), etc, y de una de ellas
hacemos uso en este pequeño ejemplo.
Luego, le indicamos a nuestro programa el incio de
nuestro programa (función main() ).
Declaramos, como valores reales,
las variables radio y area (de esto se hablará más adelante). Luego, con la
instrucción printf(), mostramos en pantalla el mensaje (Radio=) y scanf se
encarga de leer el valor digitado por el usuario. Posteriormente area, es igual
al la multiplicación de pi (3.14159), el radio al cuadrado. Se muestra en
pantalla ese resultado, luego el programa espera que se presiones cualquier tecla
(getch() ) y no retorna ningún valor (return 0).
¿Por qué programación estructurada?
Si el lector recuerda, en el capítulo anterior, se
hablaba de las características del lenguaje C, y en una de ellas se decía que,
el Lenguaje de Programación C, permite la programación estructurada. Esto
implica que, haremos uso de una técnica llamada Lógica Estructurada, y
esto no es más ni menos que una de las técnicas básicas
y fundamentales de la programación estructurada, su objetivo es diseñar soluciones"correctas"
y confiables a los problemas, ignorando al principio consideraciones de eficiencia como
la minimización del uso de memoria y el tiempo de su respuesta.
Lo que significa que, haremos uso de esa técnica para
crear programas correctos; esta es una técnica que ayuda al programador (un
tanto a la fuerza),
a ser ordenado, al momento de programar.
Los frutos de ésta técnica se reflejan cuando,
queremos darle mantenimiento al
programa, es más fácil hacerlo ya que hemos programado de una manera lógica
y ordenada. Al igual que al momento de corregir errores de sintaxis y
lógica, esta técnica nos facilita el trabajo.
Ahora iniciemos, de una vez por todas, lo que el
lector está esperando:
- como su nombre lo indica, estos son los nombres, con los que identificamos las variables, constantes, funciones, vectores, etc, de nuestro programa. Para ello debemos tener presente algunas reglas:>pueden tener de 1 hasta un máximo de 31 caracteres>Debe de iniciar con una letra o subrayadoEjemplo:(Correctos)c2_c2( Incorrectos)2c2 c>No es lo mismo una minúscula que una mayúscula, ya que c distingue de entre ellas. Ejemplo: BETA ¹ Beta ¹ beta ¹ BeTa>No son válidos los identificadores de palabras reservadas. En un inicio hablamos que c posee 32 palabras reservadas, entre ellas están:float char whileint else returnEstas palabras no pueden ser utilizadas para identificar variables, constantes, funciones etc
- identificadores:En todo programa que estemos diseñando en C (o en cualquier otro lenguaje de programación); es necesario insertar ciertos comentarios en el código, para que en posteriores modificaciones y cuando se realice el mantenimiento, podamos recordar cosas importantes ya que, en los comentarios, podemos incluir aspectos importantes del programas, explicaciones del funcionamiento de las sentencias, etc.El formato de los comentarios en C, es el siguiente:/*este es un comentario en C *//*Podemos colocar mucha información importantede nuestro Programa */
- ComentariosPermite que, el pre-procesador, incluya funciones proporcionadas por el fabricante, a nuestro programa. Ejemplo:#include <stdio.h> /* le decimos al compilador que incluya la libreríastdio.h */
- La Directiva #includepermite definir constantes simbólicas. Pero hasta ahora ha sido poco lo que hemos hablado acerca de las constantes, es por ello que en aprovechando, este especio; dedicaré unas cuantas líneas para aclarar ello.Las variables pueden cambiar de valor, durante la ejecución del programa, por eso es que se llaman variables. Y las constantes como su nombre lo indica, son valores que permanecen constantes durante toda la ejecución del programa, un ejemplo de ello, es el valor de p (pi) que equivale a 3.14159....En C existen diferentes tipos de variables, entre ellas tenemos:1. Constates Numéricas:Son valores numéricos, enteros o de reales (de punto flotante). Se permiten también constantes octales y hexadecimales.2. Constantes Simbólicas:las constantes simbólicas tiene un nombre (identificador), y en esto se parecen las variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecución del programa. En C, se pueden definir mediante el preprocesador.(Tomado del Manual "Aprenda Lenguaje ANSI C como si estuviera en Primero" Escuela superior de Ingenieros Industriales. Universidad de Navarra. Febrero de 1998).Ejemplo:#define N 100#define PI 3.1416#define B 45Esta directiva (#define) va, inmediatamente después de los #include. Se escribe la directiva, se deja un espacio y se escribe el identificador de la constante, otro espacio y su valor.
- la directiva #define/ ! % ^ & * () - + {} [] \ ; : <> ¿ .
- Signos de Puntuación y de SeparaciónAl momento de programar en C, esta es una regla de oro, y la causa por la cual nuestro programa puede darnos muchos errores de sintaxis, cuando se omite, al final de cada sentencia un punto y coma (;). Ya que con ello le indicamos al compilador que ha finalizado una sentencia.NOTA: el lector no debe confundirse, las directivas: #include, #define. Main(), no llevan punto y coma, por que no son sentencias.Recordemos el ejemplo 1.1, y vea que al final de cada sentencia lleva su correspondiente punto y coma:#include <stdio.h>#include <conio.h>main(){float radio, area;printf("Radio=\n");scanf("%f", &radio);area=3.14159*radio*radio;printf("El Area es %f\n\n", area);getch();return 0;}
- Todas las Instrucciones o sentencias del programa terminan con un punto y coma (;)Esta consideración toma mayor auge, cuando veamos las instrucciones anidadas en condiciones, ciclos, etc.Ejemplo:{...printf("Hola\n\b");...}
- Todo Bloque de Instrucciones debe ir entre llaves
- En una línea se pueden escribir más de una instrucción separada por un punto y coma
Esto es posibles, por que con el punto y coma, le estamos indicando al compilador el fin de una sentencia o instrucción.
Ejemplo:
b = c + d; d = 2*k;
Tipos de Datos en C
Un tipo de dato, se define como un conjunto de valores que puede tener una variables, junto con ciertas operaciones que se pueden realizar con ellas.
*TIPOS DE DATOS PREDEFINIDOS
TABLA CON LOS TIPOS DE DATOS PREDEFINIDOS EN C
| |||
>ENTEROS: numeros completos y sus negativos
| |||
Palabra reservada:
|
Ejemplo
|
Tamaño (byte)
|
Rango de valores
|
int
|
-850
|
2
|
-32767 a 32767
|
VARIANTES DE ENTEROS
| |||
short int
|
-10
|
1
|
-128 a 127
|
unsigned int
|
45689
|
2
|
0 a 65535
|
long int
|
588458
|
4
|
-2147483648 a 2147483647
|
unsigned long
|
20000
|
4
|
0 a 4294967295
|
>REALES: números con decimales o punto flotante
| |||
Palabra reservada:
|
Ejemplo
|
Tamaño (byte)
|
Rango de valores
|
float
|
85
|
4
|
3.4x10-38 a 3.4x1038
|
VARIANTES DE LOS REALES
| |||
double
|
0.0058
|
8
|
1.7x10-308 a 1.7x10308
|
long double
|
1.00E-07
|
10
|
3.4x10-4932 a 1.1x104932
|
Palabra reservada:
|
Ejemplo
|
Tamaño (byte)
|
Rango de valores
|
char
|
'O'
|
1
|
0 ......255
|
TABLA 2.1
NOTA: El tipo de dato string y bolean NO existen en C. Sin embargo más adelante veremos una forma de cómo hacer uso de las cadenas de texto.
Declaración de Variables
Una Variable, como su nombre lo indica, es capaz de almacenar diferentes valores durante la ejecución del programa, su valor varía. Es un lugar en la memoria el cual, posee un nombre (identificador), y un valor asociado.
La declaración de variables en C, se hace en minúsculas.
Formato:
Tipo_de_dato nombre_de_la_variable;
Ejemplos:
*Declare una variable de tipo entero y otra de tipo real, una con el nombre de "x" y otra con el identificador "y":
int x;
float y;
*Declare una variable de tipo entero llamada moon, e inicialícela con un valor de 20
int x = 20;
*Declare una variable de tipo real, llamada Pi, e inicialícela con una valor de 3.1415
float pi=3.1415;
*Declare una variable de tipo caracrter y asígnele el valor de "M"
char car = ’M’;
*Declare una variable llamada nombre, que contenga su nombre:
char nombre[7]="Manuel";
Explicación:
En el apartado anterior, se explicó, que C, no tiene el tipo de dato llamado string, o mejor conocido como cadenas de texto, pero nosotros podemos hacer uso de ellas, por medio de un arreglo, (de lo cual hablaremos con más detalle, posteriormente); pero para declarar este tipo de datos colocamos el tipo de datos, es decir la palabra reservada char luego el nombre, e inmediatamente abrimos, entre corchetes, va el número de letras, que contendrá dicha variable. Es muy importante que al momento de declarar el tamaño, sea un número mayor, al verdadero número de letras; por ejemplo, la palabra "Manuel", solo tiene 6 letras, pero debemos declararlo para 7 letras ¿Por qué?.
Veámoslo gráficamente, en la memoria, C crea un variable llammada nombre y esta posee la palabra Manuel, así:
en realidad, hay 7 espacios, pero la cuanta llega hasta 6, por que c, toma la primera posición como la posición cero, y para indicar el final de la cadena lo hace con un espacio en blanco.
Declaración de Constantes
Las constantes, como su nombre lo indica, son valores que se mantiene invariables durante la ejecución del programa.
Su formato es el siguiente:
const tipo_de_dato nombre= valor;
donde const, es una palabra reservada, para indicarle al compilador que se esta declarando una constante.
Ejemplo:
const int dia=7;
const float pi=3.14159;
const char caracter= ‘m’;
const char fecha[]="25 de diciembre";
Caso Especial Constantes Simbólicas
Las constantes simbólicas, se declaran mediante la directiva #define, como se explicó anteriormente. Funcionan de la siguiente manera, cuando C, encuentra el símbolo que representa a la constante, lo sustituye por su respectivo valor.
Ejemplo:
#define N 150
#define PI 3.1416
#define P 50
NOTA: El lector debe comprender algunas diferencias fundamentales entre la declaratoria const y #define; la primera, va dentro del programa, es decir, dentro de la función main() o alguna función definida por el usuario, mientras que #define va en el encabezado, después de los #include, por eso estas no llevan al final el punto y coma (;).
Entrada y Salida Por Consola
Entrada y Salida por consola: se refiere a las operaciones que se producen en el teclado y en la pantalla de la computadora. En C no hay palabras claves para realizar las acciones de Entrada/Salida, estas se hacen mediante el uso de las funciones de la biblioteca estándar (stadio.h).
Para utilizar las funciones de E / S debemos incluir en el programa el archivo de cabecera stdio.h, mediante la declaratoria:
#include <stdio.h>
Las Funciones de E / S más simples son getchar() que lee un carácter del teclado, espera un retorno de carro (¿ ), es decir un enter y el eco aparece. Es decir la tecla presionada.
*putchar(): Imprime un carácter en la pantalla, en la posición actual del cursor.
Algunas variaciones:
*getche(): Aparece el Eco
*getch(): No aparece el eco
estas instrucciones se encuentran en la biblioteca conio.h
Veamos un ejemplo:
Programa que espera que se presiona una tecla, la muestra en pantalla, y además muestra el carácter siguiente:
Ejemplo 2.1:
#include <stdio.h>
#include <conio.h>
main()
{
char car;
clrscr(); /*Se encarga de borrar la pantalla por eso se llama claer screen*/
car=getchar();
putchar(car+1);
getch();
return 0;
}
Ejemplo 2.2:
#include <stdio.h>
#include <conio.h>
main()
{
char x; /*Declaramos x como caracter*/
printf("Para Finalizar Presione cualquier Tecla:");
x= getchar();/*Captura y muestra el caracter presionado*/
getch();/*Espera a que se presione cualquier otra tecla para finalizar*/
return 0;
}
Entrada / Salida de Cadenas
Una Cadena, es una frase, compuesta por varias palabras. En C, podemos hacer uso de las cadenas, mediante, la sentencia:
*gets(): Lee una cadena de carácter introducido por el teclado. Se puede introducir caracteres hasta que se de un retorno de carro, (enter); el cual no es parte de la cadena; en su lugar se coloca un terminador nulo \0.
*puts(): Imprime en pantalla, el argumento guardado en la variable que se manda a impresión.
Ejemplo 2.3
Diseñe un programa en C, que lea su nombre; lo salude y mande a impresión su nombre, usando gets e y puts
#include <stdio.h>
#include <conio.h>
main()
{
char nombre[40];
puts("digite su nombre:");
gets(nombre);
puts("BIENVENIDO:");
puts(nombre);
getch();
return 0;
}
NOTA: No haré mucho énfasis en estas instrucciones, ya que más adelante, veremos las instrucciones scanf() y printf(), que son mucho más completas.
Entrada / Salida Por Consola con Formato
Las funciones gets, puts, getch, etc; son utilizadas, en una forma un poco rudimentaria, sin embargo; C posee otra serie de funciones, que son más completas, las cuales nos permiten leer e imprimir (en pantalla), datos con un formato determinado, el cual ha sido definido por el programador.
Salida Hacia Pantalla [printf()]
Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor de alguna variable, o constante, o una combinación de las anteriores. Su formato es el siguiente:
Printf("cadena de control", nombre_de_variables);
En donde:
Cadena de control: contiene códigos de formato que se asocian con los tipos de datos contenidos en las variables.
Código
|
Formato
|
%d
|
Un entero
|
%i
|
Un entero
|
%c
|
Una caracter
|
%s
|
Una cadena
|
%f
|
Un real
|
%ld
|
Entero largo
|
%u
|
Decimal sin signo
|
%lf
|
Doble posición
|
%h
|
Entero corto
|
%o
|
Octal
|
%x
|
Hexadecimal
|
%e
|
Notación Científica
|
%p
|
Puntero
|
%%
|
Imprime Porcentaje
|
TABLA 2.2
Ejemplo:
Int suma=10;
Printf("La suma es %d", suma);
Explicación:
Declaramos primero la variable como entero, con un valor de 10, luego la función printf, el mensaje va entre comillas dobles, luego en el lugar que queremos que aparezca el valor, colocamos el formato de la variable, cerramos comillas, luego una coma y el nombre de la variable. Es importante recalcar, que en la posición que coloquemos el formato es donde aparecerá el valor de la variable en este caso, 10.
Ejemplo:
Char nombre[7]="Manuel";
printf("%s es en creador de este manual", nombre);
NOTA: el número de argumentos que tendrá la función printf() es indefinido, por lo que se puede transmitir cuantos datos sean necesarios.
Ejemplo:
Int x=12, y=15;
char z=’D’;
float v=10.2563;
printf("Estos son números %d %d %f; y esta es una letra %c", x,y,v,z);
También podemos hacer algunos arreglos, al formato de salida, por ejemplo, si deseamos imprimir un número real justificado a la izquierda podemos colocar:
printf("%-f", z);
para justificar colocarle signo: %+f
%20f >> Longitud numérica del campo
%.2f >>Imprime el valor con sólo dos decimales
Secuencias de Escapes
Indica que debe ejecutar algo extraordinario.
Carácter de Escape
|
Explicación
|
\n
|
Simula un Enter. Se utiliza para dejar una línea de por medio
|
\t
|
Tabulador horizontal. Mueve el cursor al próximo tabulador
|
\v
|
Tabulador vertical.
|
\a
|
Hace sonar la alarma del sistema
|
\\
|
Imprime un carácter de diagonal invertida
|
\?
|
Imprime el carácter del signo de interrogación
|
\"
|
Imprime una doble comilla
|
TABLA 2.3
Ejemplos:
1) printf("Manuel \n Antonio \n Ortez\n\n);
2) int x=15;
printf("El Valor de la variable es %d\n\n", x);
3) float x=8.5689, pi=3.1416;
printf("El valor de x es %.2f\t\n",x);
printf("\t Y el valor de pi es %.2f\n\n", pi);
Entrada Desde Teclado
Se realiza mediante la función scanf(), su formato es:
scanf("Cadena de control", Dirección y nombre de la variable);
Ejemplo 2.4
Diseñe un programa que guarde y muestre la nota del examen final de 3 alumnos
#include <stdio.h>
#include <conio.h>
main()
{
float n1, n2, n3;
char nom1[10], nom2[10], nom3[10];
printf("Introduzca el Nombre del Primer alumno:\n");
scanf("%s", nom1);
printf("Introduzca la nota de este alumno:\n");
scanf("%f", &n1);
printf("Digite el nombre del segundo alumno:\n");
scanf("%s", nom2);
printf("Su nota es:\n");
scanf("%f", &n2);
printf("Finalmente el ultimo alumno es:\n");
scanf("%s", nom3);
printf("Y su nota es:\n");
scanf("%f", &n3);
getch();
return 0;
}
Explicación:
Primero, iniciamos con las directivas del preprocesador:
#include <stdio.h>
#include <conio.h>
Con la cual le indicamos al compilador, que de su librería añada a nuestro programa las funciones estándar de entrada y salida; así como las entradas y salidas por consola (stadio.h y conio.h, respectivamente).
Luego declaramos la variables, que contendrán las notas como reales (o de punto flotante:
float n1, n2, n3;
Ya que, las notas pueden ser deciamales, por ejemplo 9.6, 8.5; etc.
Luego declaramos las variables, que contendrán las notas, caba aclarar que al momento de las declaraciones las podemos hacer en el orden que deseemos, pueden ser primeros los tipo char y luego los float, o viceversa, pero teniendo el cuidado que las variables que contendrán las nombres lleven la longitud máxima entre corchetes, para nuestro caso, 10. ( [10] ).
Posteriormente, mostramos en pantalla, un mensaje con el cual le indicamos al usuario que introduzca los datos respectivos:
printf("Introduzca el Nombre del Primer alumno:\n");
A continuación, va la función scanf, primero y entre comillas el tipo de dato que va a leer:
scanf("%s", nom1);
como puede notarse, va a leer la cadena de texto que contendrá la variable nom1. cabe aclarar, que cuando se van a leer cadenas de texto, no es necesario colocar la dirección (&), lo cual no sucede con los otros tipos de datos:
scanf("%f", &n1);
Después de haber leído los datos, espera a que se presiones cualquier tecla para finalizar la ejecución del programa.
Ejemplo 2.5
Programa que imprime dos veces, la cadena de texto que se ha introducido:
#include <stdio.h>
#include <conio.h>
main()
{
char cadena[15];
printf("Digite la cadena:\n\n");
scanf("%s", cadena);
printf("\n\t LA CADENA ES LA SIGUIENTE:\n\n");
printf("***********************************************\n");
printf("%s\n", cadena);
printf("%s\n", cadena);
printf("***********************************************\n");
getch();
return 0;
}
Sintaxis de Algunos
Elementos de Un Programa en C
a.
como su nombre lo indica, estos son los nombres, con
los que identificamos las variables, constantes, funciones, vectores,
etc, de nuestro programa. Para ello debemos tener presente algunas reglas:
>pueden
tener de 1 hasta un máximo de 31 caracteres
>Debe
de iniciar con una letra o subrayado
Ejemplo:
(Correctos)
c2
_c2
(
Incorrectos)
2c
2 c
>No
es lo mismo una minúscula que una mayúscula, ya que c distingue de entre ellas.
Ejemplo: BETA ¹ Beta ¹ beta ¹ BeTa
>No
son válidos los identificadores de palabras reservadas. En un inicio hablamos
que c posee 32 palabras reservadas, entre ellas están:
float
char while
int
else return
Estas
palabras no pueden ser utilizadas para identificar variables, constantes,
funciones etc
b.
identificadores:
En
todo programa que estemos diseñando en C (o en cualquier otro lenguaje de
programación); es necesario insertar ciertos comentarios en el código, para que
en posteriores modificaciones y cuando se realice el mantenimiento, podamos
recordar cosas importantes ya que, en los comentarios, podemos incluir aspectos
importantes del programas, explicaciones del funcionamiento de las sentencias,
etc.
El
formato de los comentarios en C, es el siguiente:
/*este
es un comentario en C */
/*Podemos
colocar mucha información importante
de
nuestro Programa */
c.
Comentarios
Permite
que, el pre-procesador, incluya funciones proporcionadas por el fabricante, a
nuestro programa. Ejemplo:
#include
<stdio.h> /* le decimos al compilador que incluya la librería
stdio.h
*/
d.
La Directiva #include
permite
definir constantes simbólicas. Pero hasta ahora ha sido poco lo que hemos
hablado acerca de las constantes, es por ello que en aprovechando, este
especio; dedicaré unas cuantas líneas para aclarar ello.
Las
variables pueden cambiar de valor, durante la ejecución del programa, por eso
es que se llaman variables. Y las constantes como su nombre lo
indica, son valores que permanecen constantes durante toda la ejecución del
programa, un ejemplo de ello, es el valor de p (pi) que equivale a 3.14159....
En
C existen diferentes tipos de variables, entre ellas tenemos:
1.
Constates Numéricas:
Son
valores numéricos, enteros o de reales (de punto flotante). Se permiten también
constantes octales y hexadecimales.
2.
Constantes Simbólicas:
las
constantes simbólicas tiene un nombre (identificador), y en esto se parecen las
variables. Sin embargo, no pueden cambiar de valor a lo largo de la ejecución
del programa. En C, se pueden definir mediante el preprocesador.
(Tomado
del Manual "Aprenda Lenguaje ANSI C como si estuviera en
Primero" Escuela superior
de Ingenieros Industriales. Universidad de Navarra. Febrero de 1998).
Ejemplo:
#define
N 100
#define
PI 3.1416
#define
B 45
Esta
directiva (#define) va, inmediatamente después de los #include. Se escribe la
directiva, se deja un espacio y se escribe el identificador de la constante,
otro espacio y su valor.
e.
la directiva #define
/ !
% ^ & * () - + {} [] \ ; : <> ¿ .
f.
Signos de Puntuación y de
Separación
Al
momento de programar en C, esta es una regla de oro, y
la causa por la cual nuestro programa puede darnos muchos errores de sintaxis,
cuando se omite, al final de cada sentencia un punto y coma (;). Ya que con
ello le indicamos al compilador que ha finalizado una sentencia.
NOTA:
el lector no debe confundirse, las directivas: #include, #define. Main(), no
llevan punto y coma, por que no son sentencias.
Recordemos
el ejemplo 1.1, y vea que al final de cada sentencia lleva su correspondiente
punto y coma:
#include
<stdio.h>
#include
<conio.h>
main()
{
float
radio, area;
printf("Radio=\n");
scanf("%f",
&radio);
area=3.14159*radio*radio;
printf("El
Area es %f\n\n", area);
getch();
return
0;
}
g.
Todas las Instrucciones o
sentencias del programa terminan con un punto y coma (;)
Esta
consideración toma mayor auge, cuando veamos las instrucciones anidadas en
condiciones, ciclos, etc.
Ejemplo:
{
...
printf("Hola\n\b");
...
}
h.
Todo Bloque de Instrucciones debe
ir entre llaves
i.
En una línea se pueden escribir
más de una instrucción separada por un punto y coma
Esto es posibles, por que con el punto y coma, le
estamos indicando al compilador el fin de una sentencia o instrucción.
Ejemplo:
b = c + d; d = 2*k;
ESTRUCTURAS DE CONTROL
El C++, como todo lenguaje de programación basado en la algorítmica, posee una serie de
estructuras de control para gobernar el flujo de los programas. Aquí estudiaremos las
estructuras de control de la misma manera que las vimos en el bloque anterior, es decir,
separando entre estructuras condicionales o de selección, de repetición y de salto.
Antes de comenzar debemos recordar que la evaluación de una condición producirá como
resultado un cero si es falsa y un número cualquiera distinto de cero si es cierta, este hecho es
importante a la hora de leer los programas, ya que una operación matemática, por ejemplo, es
una condición válida en una estructura de control.
Estructuras de selección
Dentro de las estructuras de selección encontramos dos modelos en el C++, las de condición
simple (sentencias if else) y las de condición múltiple (switch). A continuación estudiaremos
ambos tipos de sentencias.
La sentencia if
Se emplea para elegir en función de una condición. Su sintaxis es:
if (expresión)
sentencia 1
else
sentencia 2
Los paréntesis de la expresión a evaluar son obligatorios, la sentencia 1 puede ser una sola
instrucción (que no necesita ir entre llaves) o un bloque de instrucciones (entre llaves pero sin
punto y coma después de cerrar). El else es opcional, cuando aparece determina las acciones a
tomar si la expresión es falsa.
El único problema que puede surgir con estas sentencias es el anidamiento de if y else: Cada
else se empareja con el if más cercano:25
if (expr1)
if (expr2)
acción 1
else // este else corresponde al if de expr 2
acción 2
else // este corresponde al if de expr1
acción 3
Para diferenciar bien unas expresiones de otras (el anidamiento), es recomendable tabular
correctamente y hacer buen uso de las llaves:
if (expr1) {
if (expr2)
acción 1
} // Notar que la llave no lleva punto y coma después, si lo pusiéramos
// habríamos terminado la sentencia y el else se quedaría suelto
else // Este else corresponde al if de expr1
acción 3
Por último indicaremos que cuando anidamos else - if se suele escribir:
if (e1)
a1
else if (e2)
a2
else if (e3)
a3
…
else
an
de esta manera evitamos el exceso de tabulación.
La sentencia switch
Esta sentencia nos permite seleccionar en función de condiciones múltiples. Su sintaxis es:
switch (expresión) {
case valor_1: sentencia 11;
sentencia 12;
…
sentencia 1n;
break;
case valor_2: sentencia 21;
sentencia 22;
…
sentencia 2m;
break;
…
default: sentencia d1;
sentencia d2;
…
sentencia dp
}
El paréntesis en la expresión es obligatorio. El funcionamiento es el siguiente, si al evaluar la
expresión se obtiene uno de los valores indicados por case valor_i se ejecutan todas las
sentencias que encontremos hasta llegar a un break (o al cierre de las llaves). Si no se verifica
ningún case pasamos a las sentencias default, si existe (default es opcional) y si no existe no
hacemos nada.
Indicaremos que si queremos hacer lo mismo para distintos valores podemos escribir los case
seguidos sin poner break en ninguno de ellos y se ejecutará lo mismo para todos ellos.
Ejemplo:
void main() {
int i;26
cin >> i;
switch (i) {
case 0:
case 2:
case 4:
case 6:
case 8:
cout << " El número " << i << " es par\n";
break;
case 1:
case 3:
case 5:
case 7:
case 9:
cout << " El número " << i << " es impar\n";
break;
default:
cout << " El número " << i << " no está reconocido\n";
}
}
Estructuras de repetición
Dentro de las estructuras de repetición diferenciábamos 3 tipos: con condición inicial, con
condición final y con contador.
La sentencia do-while
Es una estructura de repetición con condición final. Su sintaxis es:
do
sentencia
while (expresión);
El funcionamiento es simple, entramos en el do y ejecutamos la sentencia, evaluamos la
expresión y si es cierta volvemos al do, si es falsa salimos.
La sentencia while
Es una estructura de repetición con condición inicial. Su sintaxis es:
while (expresión)
sentencia
El funcionamiento es simple evaluamos la expresión y si es cierta ejecutamos la sentencia y
volvemos a evaluar, si es falsa salimos.