- Marco
introductorio - Lenguaje de
Programación Estructurado C - Operadores, Expresiones y
Estructuras - Ciclos
- Funciones
en C - Estructuras
de Datos
El Presente documento ha sido elaborado con la
finalidad, de proveer a los estudiantes, de un recurso
ágil y fácil de comprender por aquellos que inician
su estudio en la programación del lenguaje
C.
¿Por qué decidí escribir este
manual?
Sencillo, cuando en la universidad
empezamos a estudiar C, nos pidieron que, si podíamos,
compráramos un libro texto para
apoyar las clases, o buscáramos un manual en la Internet… yo opté
por la segunda opción, ya que como todos sabrán los
libros de
programación son muy caros (al menos aquí en El
Salvador), pero me encontré con dos grandes problemas:
- Los Manuales que
bajaba estaban incompletos, es decir; las explicaciones, los
ejemplos y la información en general era muy pobre, por
no decir escasa. - si al dado caso, encontraba algún manual que
estuviera completo, tenía muchos errores, en sus
ejemplo(errores de sintaxis, de ejecución y hasta de
lógica) o en la explicación que se
daba. Lo cual al yo cometer esos ejemplos, mis profesores me lo
hacían saber.
Por esas razones decidí escribir mi propio
manual, para evitar que, otros estudiantes les suceda lo mismo
que a mí, y así les evitaré gastos en
impresiones innecesarios.
Cabe recalcar que, no soy un experto programador…
todavía sigo estudiando, pero quiero colaborar de una
manera desinteresada, a la formación de las
personas.
Espero que, este pequeño manual les sirva de
mucho y sobre todo, le saquen mucho provecho.
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.
- Computadora
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:
- Lenguajes Máquinas: se trata de lenguaje cuyas
instrucciones son directamente comprendidas por el ordenador o
computador en el que se ejecuta el programa. - 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. - 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
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 .
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.
- 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. - 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. - 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 %fnn", 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).
Ejercicios
Defina los siguientes conceptos:
- Programa:_____________________________________________________________________________
- CPU:___________________________________________________________________________________
- Software:_________________________________________________________________________________
- Memoria
Principal:__________________________________________________________________________________ - Lenguaje de
Programación:______________________________________________________________________________
Indique que tipo de error (Error de sintaxis, error de
ejecución o error lógico), en cada uno de los
siguientes enunciados
- Utilizar una variable antes de asignarle un
valor:____________________ - asignarle un valor real a una variable declarada como
entero:______ - al cometer este error, los resultados arrojados por
el programa no son los que se
esperaban:______________________________________________ - Un programa no puede ser ejecutado por el computador,
mientras tenga este tipo de
errores:__________________________________________ - estos errores no son detectados por el compilador, ni
tampoco son errores de
ejecución:_______________________________________________
Mencione y Explique, la estructura general de un
programa en C:
Capitulo II: " Lenguaje de Programación
Estructurado C"
¿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:
Sintaxis de Algunos Elementos de Un
Programa en C
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)
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- 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 */
- 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íastdio.h */
- 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. - 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 %fnn", 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("Holanb");
…
}
- 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 | |||
>ENTEROS: numeros completos y | |||
Palabra reservada: | Ejemplo | Tamaño (byte) | Rango de |
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 |
unsigned long | 20000 | 4 | 0 a 4294967295 |
>REALES: números con | |||
Palabra reservada: | Ejemplo | Tamaño (byte) | Rango de |
float | 85 | 4 | 3.4×10-38 a |
VARIANTES DE LOS | |||
double | 0.0058 | 8 | 1.7×10-308 a |
long double | 1.00E-07 | 10 | 3.4×10-4932 a |
Palabra reservada: | Ejemplo | Tamaño (byte) | Rango de |
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 .
*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 |
t | Tabulador horizontal. Mueve el cursor al |
v | Tabulador vertical. |
a | Hace sonar la alarma del sistema |
\ | Imprime un carácter de diagonal |
? | Imprime el carácter del signo de |
" | Imprime una doble comilla |
TABLA 2.3
Ejemplos:
1) printf("Manuel n Antonio n Orteznn);
2) int x=15;
printf("El Valor de la variable es %dnn",
x);
3) float x=8.5689, pi=3.1416;
printf("El valor de x es %.2ftn",x);
printf("t Y el valor de pi es %.2fnn",
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:nn");
scanf("%s", cadena);
printf("nt LA CADENA ES LA
SIGUIENTE:nn");
printf("***********************************************n");
printf("%sn", cadena);
printf("%sn", cadena);
printf("***********************************************n");
getch();
return 0;
}
Es importante, que el lector, intente correr, en su
máquina estos ejemplos, para que comprenda con mayor
facilidad.
NOTA: Cuando la entrada, es una cadena de
carácter, no es necesario el operador direccional (&).
El nombre de la cadena contiene la dirección.
Ejemplo:
scanf(), finaliza la captación de la cadena al
encontrar un espacio en blanco o fin de línea.
Ejemplo:
char cadena[15];
printf("Digite la cadena:nn");
scanf("%s", cadena);
Casos Especiales
*JUEGO DE
INSPECCIÓN: Define Un conjunto de caracteres que puede
leerse utilizando scanf().
Así:
%[ABC]s: A, B y C son los únicos
caracteres que puede leer al encontrar uno diferente, finaliza
con un valor nulo.
%[ A-Z ]s: También pueden ser
rangos de carácter en este caso sólo acepta
mayúsculas.
*JUEGO INVERSO: Aquí se declaran que caracteres
NO puede tomar, la función scanf(), se utiliza el
circunflejo (^), que acepta cualquiera menos…
Ejemplo:
%[^n]s: Acepta cualquier carácter
menos un salto de línea.
%[^0-9]s: Acepta cualquier carácter
menos del 0 al 9.
Ejemplo:
Scanf("%[0-9]s", &edad);
Cuestionario
- Mencione y Explique que es la lógica
estructurada:_______________________________________________________ - Para que sirven las funciones getch() y
putchar():_________________________________________________________ - Menciones las diferencias fundamentales entre las
funciones de entrada y salida por consola, con las funciones de
entrada y salida por consola con
formato:_________________________________________________________________________________________ - Escriba algunas restricciones que deben cumplir los
Identificadores:___________________________________________________________________________________ - ¿Cuál es la siferencia entre el tipo de
dato %c, y el tipo de dato
%s?:___________________________________________________________________________________________ - Para que sirve la directiva
<stdio.h>:_________________________________________________________________ - ¿Y la directiva
<conio.h>?_________________________________________________________________________ - ¿Para que sirve a declaratoria
#define?:____________________________________________________________ - Para que sirve el punto y coma (;) en
C:_____________________________________________________________ - En C, no existe el tipo de dato string; sin embargo,
podemos hacer uso de las cadenas de texto, ¿Por
qué?.
Explique:___________________________________________________________________________________
Ejercicios:
- Haciendo uso de las funciones gets y puts,
diseñe un programa en C, que se lea el nombre del
usuario y lo muestre en pantalla junto con un
saludo. - Diseñe un programa en C, que lea y muestre en
pantalla el valor de tres variables de tipo Entero. - Diseñe un programa que muestre, los diferentes
tipos de datos, usados en C. Primero, debe indicársele
al usuario que introduzca un valor, de un tipo dado; luego y
después de haber introducido valores en todas las
variables, debe imprimirse el contenido de ellas, junto con un
mensaje que indique, el tipo de dato:
4. Diseñe un programa, en el cual se
introduzcan el nombre y el peso y de un alumno, y luego la
muestre en pantalla. El Nombre debe incluir el apellido, y en
el campo del peso, solo deben incluir valores
numéricos.
5. Diseñe un programe en C, en el cual
después de haber introducido, una tabla de
multiplicación cualquiera, imprima ésta en
forma de tabla:
2×2=4
2×3=6
2×4=8
. .
.
2×10=20
6. Realice el ejercicio 2.5, tal como se muestra,
luego ejecútalo, nuevamente, pero quitándole al
código las sentencias: getch() y return 0.
¿Qué observas? Realiza tus propias conclusiones
de ello y de la importancia de estas dos funciones.
Capitulo III "Operadores, Expresiones y Estructuras"
Hasta ahora, prácticamente hemos visto, como el
protocolo
esencial, para realizar un programa en C; y algunas funciones
muy importantes, como son las funciones de lectura e
impresión (scanf y printf, respectivamente).
Ahora veremos, otros aspectos fundamentales, como lo
son los operadores, que pueden ser: lógicos,
matemáticos, relacionales, etc. Las expresiones, y las
estructuras: de secuenciación, de selección y de
iteración.
Operadores
Un operador, es un símbolo que indica al
compilador que se lleve a cabo ciertas manipulaciones
matemáticas o lógicas.
Operadores Aritméticos
Operador | Propósito |
+ | Suma |
– | Resta |
* | Multiplicación |
/ | División |
% | Resto de la división entera |
TABLA 3.1
Todos estos operadores se pueden aplicar a constantes,
variables y expresiones. El resultado es el que se obtiene de
aplicar la operación correspondiente entre los dos
operandos. (Tomado de "Aprenda Lenguaje ANSII C, como si
estuviera en primero". Pag. 25).
Los operandos sobre los que actúan los operadores
aritméticos deben ser valores Numéricos, es
decir datos enteros, punto flotante o de carácter (Int,
float y char, respectivamente).
Una aclaración especial, merece el operador "%",
que indica el resto de la división entera. Veámoslo
con un ejemplo:
Si dividimos 30/3, su cociente es 10, y su residuo es 0.
Si dividimos 25/3, su cociente es 8, y tiene un residuo de 1.
Entonces de lo que se encarga, este operador, es de devolvernos
el valor del residuo de una división. Cabe aclarar que los
datos deben de ser tipo entero, y su sintaxis es la
siguiente:
25%3
NOTA: Este Operador, NO puede aplicarse a los datos de
tipo float.
Una Expresión, Es un conjunto de variable,
constantes y otras expresiones más sencillas, relacionadas
por algún tipo de operador. De las cuales hablaremos con
más detalle, posteriormente.
Operadores de Relaciónales, Lógicos y
Unarios
Estos Operadores, los podemos dividir, en varios tipos,
entre los cuales están:
- OPERADORES UNARIOS: C, incluye una clase de
operadores que actúan sobre un solo operador para
producir un nuevo valor. Por eso el nombre de unarios, por que
para poder funcionar solo necesitan de un operador.
Operador | Propósito |
– | Menos Unario: Es el signo menos que va delante |
++ | Operador Incremento: Hace que la variable, |
— | Operador Decremento: Hace que su variable, |
TABLE 3.2
Ejemplo:
Int i=1, x=5;
Printf("%d", ++i);
Printf("%d", – -i);
Estos operadores, el incremento y el decremento, pueden
utilizarse de dos maneras, eso depende del orden de
aparición de los mismos:
-Si el operador precede al operando el valor del
operando se modifica antes de ser utilizado.
-Si el operador aparece después del operando,
este se modifica después de ser utilizado.
Ejemplo 3.1:
Utilizando los operadores Unarios:
#include <stdio.h>
#include <conio.h>
main()
{
int x=5;
printf("tPRIMERO OBSERVAREMOS EL RESULTADO DE
++Xnn");
printf("%dn", ++x);
printf("%dn", ++x);
printf("%dn", ++x);
printf("tAHORA OBSERVAREMOS EL RESULTADO DE
–Xnn");
printf("%dn", –x);
printf("%dn", –x);
printf("%dn", –x);
printf("tEL RESULTADO DE X++ ES:nn");
printf("%dn", x++);
printf("%dn", x++);
printf("tY EL DE X– ES:nn");
printf("%dn", x–);
printf("%dn", x–);
getch();
return 0;
}
- OPERADORES RELACIONALES O DE
COMPARACIÓN:
Operador | Significado |
< | Menor que |
<= | Menor o igual que |
> | Mayor que |
>= | Mayor o igual que |
== | Igual que (Para las comparaciones) |
! | No igual a |
TABLA 3.3
Estos Operadores se encuentran dentro del mismo grupo de
procedencia, que es menor que la de los Operadores Unarios y
aritméticos.
La Asociatividad de éstos es de izquierda a
derecha. Cabe mencionar la diferencia entre los operadores = y
==, el primero (=), se utiliza para asignaciones de valores,
mientras que el otro (==), se usa para comparaciones. Ejemplo: Si
x>5, entonces x==6.
3. OPERADORES LÓGICOS: Estos son los que nos
permiten unir varias comparaciones: 10>5 y 6==6. Los
operadores lógicos son: AND (&&), OR (||),
NOT(!).
Operador && (AND, en castellano Y):
Devuelve un 1 si se cumplen dos condiciones.
printf( "Resultado: %i", (10==10 && 5>2
);
Operador || (OR, en castellano O): Devuelve un 1 si se
cumple una de las dos condiciones.
Operador ! (NOT, negación): Si la
condición se cumple NOT hace que no se cumpla y
viceversa.
Ver el capítulo Sentencias, sección Notas
sobre las condiciones para más información. (Tomado
de "Curso de C" por Gorka Urrutia).
Operadores de Asignación
Los Operadores de Asignación, como su nombre lo
indica, se encargan de atribuirle, asignarle, confinarle, etc a
una variable, el resultado de una expresión o el valor de
otra variable.
Se utilizan en forma de expresiones de asignación
en los que se asigna en el valor de una expresión a un
identificador. El operador de asignación más
utilizado es "=" y su formato es:
identificador =
expresión;
Donde el identificador representa por lo general una
variable y una constante, una variable o una expresión
más compleja.
Si los dos operandos de la expresión de
asignación son de tipo de datos diferentes el valor de la
expresión de la derecha se convertirá
automáticamente al tipo de identificador de la izquierda
de ésta forma la expresión de asignación
será del mismo tipo de datos.
Ejemplo:
*Un valor en coma flotante puede ser truncado, se asigna
a un identificador entero.
*Un valor de doble precisión puede ser redondeado
si se asigna a un identificador de coma flotante.
En C, están permitidas las asignaciones
múltiples, así:
Identificador1 = identificador2 =
identificador3…..=
identificadorn=expresión
C, posee además los siguientes operadores de
asignación:
Operador | Explicación |
+= | Expresión1+=expresión2. Equivale |
-= | i-=1. equivale a: i=i-1 |
*= | J*=2. Equivale a: j=j*2 |
/= | K/=m, equivale a: k=k/m |
%= | P%n. Equivale a: p=p%n |
TABLA 3.4
Los Operadores de asignación tiene menos
procedencia que el resto de los operadores y tienen asociatividad
de izquierda a derecha.
Ejemplo 3.2
Programa que calcula el valor de la expresión
X^2+X+1
#include <stdio.h>
#include <conio.h>
main()
{
float x, y, z;
clrscr();
printf("tPROGRAMA QUE CALCULA EL VALOR DE LA ECUACION
X^2+X+1nn");
printf("Introduzaca el valor de x:n");
scanf("%f", &x);
y=x*x;
z=y+x+1;
printf("**************************************n");
printf("**El valor de la expresi¢n es: %.2f**n",
z);
printf("**************************************n");
getch();
return 0;
}
Jerarquía de Operadores
Categoría del Operador | Operador |
1. Operadores Unarios | -, ++, –, ! |
2.Operadores Aritméticos:
| *, /, % +,- |
3. Operadores Relacionales | <, <=, >, >= |
4. Operadores de Igualdad | ==, ! = |
5. Operadores Lógicos | && (Y Lógico), || (NO |
6. Operadores de Asignación | =, +=, -=, *=, /?, %=, |
TABLA 3.5
REGLAS DE JERARQUÍA:
- Se ejecuta primero el operador de más alta
jerarquía - Operadores que tienen igual jerarquía se
evalúan de izquierda a derecha - si existen expresiones encerradas entre
paréntesis, estas se evalúan primero. - si existen paréntesis anidados se
evalúan primero los paréntesis más
internos.
EXPRESIONES
(Tomado de "Aprenda ANSII C como si estuviera en
Primero", Universidad de Navarra. 1998).
Ya han aparecido algunos ejemplos del lenguaje C en las
secciones precedentes. Una Expresión es una
combinación de variables y/o constantes, y operadores. La
expresión es equivalente al resultado que proporciona al
aplicar sus operadores a sus operandos. Por ejemplo 1 + 5 es una
expresión formada por dos operandos (1 y 5)y el operador
(el +); esta expresión es equivalente al valor 6, por lo
cual quiere decir que allí donde esta expresión
aparece en el programa, en el momento de la ejecución es
evaluada y sustituida por su resultado. Una expresión
puede estar formada por otras expresiones más sencillas, y
puede contener paréntesis de varios niveles agrupando
distintos términos. En C, existen diferentes tipos de
expresiones. El cual depende del tipo de operadores que se
estén utilizando. Por ejemplo: Expresiones lógicas,
aritméticas, etc
Se debe hacer hincapié en que, si existen algunas
expresiones encerradas entre paréntesis, estas se
evalúan primero. Ejemplo:
9*(8+5)
primero sumamos 8+5, cuyo resultado es 13, y este lo
multiplicamos por nueve, con lo que la expresión anterior,
da cómo resultado: 117.
Si existen expresiones en paréntesis anidadas, es
decir, que uno se encuentra dentro de otros paréntesis, se
evalúan los más internos. Ejemplo:
2*((20/(12-2))+5)
se evalúa la operación 12-2, que da como
resultado 10, luego se divide 20, entre el resultado anterior, es
decir 10. el resultado es 2, y a este número se le suma 5,
obteniendo 7. ahora se multiplica por dos, para determinar
así que la expresión anterior es igual a
14.
Página siguiente |