Trabajo de Algoritmica
Trabajo de Algoritmica
Trabajo de Algoritmica
PNF de Informática
Lenguaje C
Profesor: Integrantes:
2
INTRODUCCIÓN:
3
1- HISTORIA DEL LENGUAJE C:
A finales de los años 60 en la empresa AT&T se comenzó a trabajar en un nuevo
lenguaje de programación, exactamente en los Laboratorios Bell. Los primeros pasos
se dieron en el año 1969, pero el concepto del lenguaje C se fue extendiendo y el
momento de mayor plenitud, cuando de verdad se asentaron las bases, se produjo
en 1972. Fue entonces cuando se decidió que de forma definitiva este lenguaje de
programación tendría el nombre por el cual lo conocemos, en referencia a que se
inspiraba en el lenguaje B y tenía sentido que se siguiera con el uso del alfabeto.
Poco más tarde, también en los Laboratorios Bell, Dennis Ritchie se pone a trabajar
en el diseño de un nuevo lenguaje de programación basado en el lenguaje B de Ken
Thompson y al que aportó tipos y estructuras de datos que consiguiesen clarificar la
programación y obtener un lenguaje mucho más eficiente, así nació el lenguaje de
programación C. Ritchie diseñó, desde 1970 a 1972 junto a Brian Kernighan, un
lenguaje que permitía realizar una programación estructurada en la que se podían
economizar las expresiones a usar y con el que los desarrolladores podrían contar
con un buen conjunto de operadores y tipos de datos para programar tanto en alto
como en bajo nivel de manera simultánea. En 1978 Kernighan y Ritchie publican la
descripción del lenguaje C en el libro The C Programming Language, un libro de
cabecera que describe todas las posibilidades de este nuevo lenguaje que y que aún
se utiliza como manual de referencia. El lenguaje C se hizo muy popular en los años
80 puesto que comenzó a desplazar a BASIC, los compiladores se hicieron muy
populares y, además, de empezarse a usar en los IBM PC. En paralelo, Bjarne
Stroustrup (que también trabajaba en los Laboratorios Bell) desarrolla C++,
complementando C con clases y funciones virtuales, tipos genéricos y expresiones
de ADA y un motor de objetos que permitía combinar la programación imperativa
de C con la programación orientada a objetos. A mediados de los ochenta ya había
en el mercado numerosos compiladores C, y muchas aplicaciones habían sido
rescritas a él para aprovechar sus ventajas. Durante este periodo fabricantes
introducen mejoras en el lenguaje, las cuales son recogidas por un comité de
estandarización ANSI y establecen las especificaciones de lo que se conoce hoy en
día como 'ANSI C'.
2. DEFINICIÓN LENGUAJE C:
C es un lenguaje de programación de propósito general que ofrece economía
sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores.
No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no
está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente,
con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco
tiempo, un programador puede utilizar la totalidad del lenguaje. C trabaja con tipos
de datos que son directamente tratables por el hardware de la mayoría de
4
computadoras actuales, como son los caracteres, números y direcciones. Estos tipos
de datos pueden ser manipulados por las operaciones aritméticas que proporcionan
las computadoras. No proporciona mecanismos para tratar tipos de datos que no
sean los básicos, debiendo ser el programador el que los desarrolle Esto permite que
el código generado sea muy eficiente y de ahí el éxito que ha tenido como lenguaje
de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de
datos que no sea el estático y no proporciona mecanismos de entrada ni salida
6
5. SENTENCIAS EN LENGUAJE C:
Una sentencia es cualquier expresión en C que se espera que tenga alguna
consecuencia. Pueden ser asignaciones, operaciones, llamadas a funciones o
combinaciones de ellas.
Toda sentencia termina con un ";". Una sentencia simple consiste en una expresión
acabada en un punto y coma (;).7.1 Etiquetas de sentencia
Sirven para etiquetar una sentencia de forma que el control del programa pueda ser
transferido a ella. Se separan de la sentencia por dos puntos ":".
La sintaxis es:etiqueta: sentencia;
Por ejemplo, etiq100: x++;.7.2 Sentencias compuestas
Es un conjunto de sentencia simples que se encierran entre los símbolos "{" y "}"
para formar un bloque de código. Pueden aparecer en cualquier sitio en el que podría
aparecer una sentencia simple. Pueden contener declaraciones de nuevos objetos
(el alcance de la declaración afecta al bloque).
Sentencias de selección
Existen dos tipos, if y switch. Además, el operador "?" es una alternativa para if en
ciertas situaciones. if y switch. Además, el operador "?" es una alternativa para if en
ciertas situaciones.
IF
La forma general es:
if
(expresion) sentencia;
else sentencia;
Donde sentencia puede ser una sentencia simple, un bloque de sentencias o nada
(en el caso de sentencias vacías). La cláusula else es opcional. Si la expresión del if
es cierta (cualquier valor que no sea 0), se ejecuta la sentencia o el bloque de
sentencias que constituye el objetivo del if; en cualquier otro caso se ejecuta la
sentencia o bloque de sentencias que constituye el objetivo del else, si existe.
Siempre se ejecuta el código asociado al if o al else, nunca ambos.
SWITCH
7
Es una sentencia de selección múltiple, que compara sucesivamente el valor de una
expresión con una lista de constantes enteras o de caracteres. Cuando se encuentra
una16-correspondencia, se ejecutan las sentencias asociadas con la constante.
Sentencias de iteración
También denominadas bucles. Permiten realizar un conjunto de instrucciones hasta
que se alcance una cierta condición (que puede estar predefinida como en el bucle
for; o no haber final predeterminado, como en los bucles while y do-while). FOR
El formato general es:for (inicialización; condición; incremento) sentencia; La
inicialización normalmente es una sentencia de asignación que se utiliza para iniciar
la variable de control del bucle.
Estas tres secciones principales deben ser separadas por punto y coma (";"). El bulce
for continua ejecutándose mientras que la condición sea cierta. Una vez que la
condición es falsa, la ejecución del programa sigue por la sentencia siguiente al for.
Sentencias de salto
C tiene cuatro sentencias que llevan a cabo un salto incondicional (además de goto,
pero su uso no está bien visto por sus programadores): return, break, exit() y
continue. goto, pero su uso no está bien visto por sus programadores): return,
break, exit() y continue.
6. DECLARACIÓN DE VARIABLES:
Conociendo ya los tipos de variables básicas y cómo nombrarlas, veamos ahora
cómo declararlas. La declaración de variables en C debe hacerse al principio del
programa. Veremos ahora una forma básica que nos permita empezar a trabajar y,
de paso, crear nuestro primer programa.
Usaremos para ello el tipo de variable int (entero). La sintaxis que usaremos será:
int [Nombre de variable]
Para facilitar la corrección y claridad de nuestros programas el lugar donde
realizaremos la declaración de variables, al menos de momento, será después de la
línea int main(), que constituye el inicio del código ejecutivo de nuestro programa.
Crea un nuevo proyecto, denomínalo proyectoCurso2 y accede al código. Si no
recuerdas cómo hacer esto, lee las explicaciones que hemos dado anteriormente.
Una vez en la ventana de código, dentro del int main() {…} escribe:
int numeroDePlantas;
8
Has declarado la variable numeroDePlantas como tipo entero. También podrías
asignarle un valor inicial a la variable en la misma línea que la declaras, de esta
manera
int numeroDePlantas = 15;
a´) int i;
a) int i, j, k; int j;
int k;
d) int i=0, j=4, k=76; d´) int i=0; int j=4; int k=76;
Las opciones a), b), c), d) dan lugar a un mismo resultado. Se declaran tres variables
de tipo entero denominadas i, j, k. Las opciones a´- d´), escritas de forma extendida,
también son válidas y con el mismo resultado. Nosotros nos decantamos por no usar
declaraciones donde en una misma línea aparezcan variables de un tipo de forma
abreviada porque pensamos que resulta menos claro a la hora de leer un programa.
Aunque hay ocasiones en las que puede resultar razonable usar declaraciones
9
abreviadas, por ejemplo si se trata de variables que todas ellas son contadores para
bucles.
Ten en cuenta que la declaración int i, j, k; declara tres variables de tipo entero.
Una expresión como float i; int j; long k; es válida, aunque consideramos preferible
no declarar distintos tipos de variables en una misma línea sino hacerlo en líneas
separadas.
7. OPERADORES EN LENGUAJE C:
Los operadores son símbolos que indican cómo se deben manipular los operandos.
Los operadores junto con los operandos forman una expresión, que es una fórmula
que define el cálculo de un valor. Los operandos pueden ser constantes, variables o
llamadas a funciones, siempre que éstas devuelvan algún valor. El compilador evalúa
los operadores, algunos de izquierda a derecha, otros de derecha a izquierda,
siguiendo un orden de precedencia. Este orden se puede alterar utilizando paréntesis
para forzar al compilador a evaluar primero las partes que se deseen.
Operadores de asignación
La operación más importante en cualquier lenguaje de programación es la
asignación:
DdF C Descripción
← = Asignación
DdF C Descripción
+ + Suma, adición
- - Resta, sutracción
. * Multiplicación, producto
10
Div / Cociente división entera
/ / División
Operadores relacionales
DdF C Descripción
= == Igual
≠ != Diferente
Operadores lógicos
Los operandos son considerados falsos (valor 0) ó ciertos (valor distinto de 0). El
resultado siempre es 0 ó 1.
DdF C Descripción
DdF C Descripción
11
OrBB | Or bit a bit
12
gcc hola.c -o hola
Con lo cual, el nombre del archivo creado será hola. Este archivo no tiene extensión
ya que es la forma usual de llamar a los archivos ejecutables en los entornos UNIX
y GNU/Linux, sin embargo funcionaría de la misma forma si se llamara hola.exe.
Para ejecutarlo, haremos los mismo que en el caso anterior:
./hola
Hola mundo
Existen otros parámetros que podemos especificar al compilador en la línea de
comandos, dependiendo del tipo de programa, y en función de la complejidad del
mismo. Por ejemplo, podemos agregar las siguientes opciones:
gcc hola.c -o hola -Wall -pedantic
La opción -Wall nos mostrará todos los avisos que produzca el compilador, no
solamente los errores. Los avisos nos indican dónde y/o porqué podría surgir algún
error en nuestro programa.
La opción -pedantic nos aporta más información sobre los errores y los avisos
mostrados por GCC.
13
\\ Imprime la diagonal invertida. Una sola diagonal sería interpretada como un
carácter de escape.
\” Imprime la doble comilla. Sin la diagonal invertida, se interpretaría como un inicio
o un fin de una cadena.
10. Librerias en Lenguaje C:
Ø assert.h Contiene una macro para el diagnóstico dentro de los programas.
Ø ctype.h Contiene varias funciones para comprobación de tipos y transformación
de caracteres.
Ø errno.h Contiene varias macros usadas para informar de errores.
Ø limits.h Contienen varias macros que definen constantes para el tamaño de tipo
enteros.
Ø float.h Contienen varias macros que definen constantes para el tamaño de tipo
flotante.
Ø locale.h Contienen varias macros, funciones y tipos para unidades locales, como
unidad monetaria, tiempo, dígitos, etc.
Ø math.h Contiene una macro y varias funciones matemáticas.
Ø setjmp.h Contienen declaraciones que proporcionan una forma de evitar la
secuencia normal de llamada y regreso de funciones.
Ø signal.h Contiene un tipo, dos funciones y varias macros para manejar
condiciones excepcionales que aparecen durante la ejecución, tal como una señal
de interrupción de una fuente externa o un error en la ejecución.
Ø stdarg.h Contiene un tipo y tres macros que proporcionan recursos para recorrer
una lista de argumentos de función de tamaño y tipo desconocido.
Ø stddef.h Contiene varios tipos y macros que también están definidas en otras
librerías, como size_t.
Ø stdio.h Contiene tipos, macros y funciones para la realización de tareas de E/S.
Ø stdlib.h Contiene tipos, macros y funciones para la conversión numérica,
generación de números aleatorios, búsquedas y ordenación, gestión de memoria y
tareas similares.
Ø string.h Contiene tipos, macros y funciones para la manipulación de cadenas de
caracteres.
14
Ø time.h Contiene tipos, macros y funciones para la la manipulación de información
sobre fechas y horas.
15
Para representar este tipo de dato se antepone la palabra reservada char al
identificador de la variable.
Char identificador = ‘valor’;
Una constante tipo char se representa como un solo carácter encerrado entre
comillas simples.
Por ejemplo: char letra, letra2;
char letra=’a’;
Tipo cadena de caracteres: una cadena de caracteres es un número de
caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores
determinados, que en el lenguaje C son las comillas dobles.
Para definir variables de tipo cadena, estas se definen como vectores de caracteres,
esto es, anteponiendo la palabra reservada char al identificador de la variable, y
después entre corchetes la longitud máxima de cadena.
Char identificador[cantidad] = “ mensaje ”;
Por ejemplo: char cadena[20];
char cadena[20] = “Hola mundo”;
char cadena[] = “HOLA”;
16
C sustituye los valores \n, 3.141592 y 54 cuando se encuentra las constantes
simbólicas
NUEVALINEA, PI y VALOR. Las líneas anteriores no son sentencias y, por ello, no
terminan en punto y coma. printf ("El valor es %dNUEVALINEA",V ALOR) ; Escribe
en pantalla la constante VALOR. Realmente, el compilador lo que hace es sustituir
en el programa todas las ocurrencias de VALOR por 54, antes de analizar
sintácticamente el programa fuente
Constantes enumeradas
Las constantes enumeradas permiten crear listas de elementos afines. Un ejemplo
típico es una constante enumerada de lista de colores, que se puede declarar como:
enum Colores {Rojo, Naranja, Amarillo, Verde, Azul,violeta};
Cuando se procesa esta sentencia, el compilador asigna un valor que comienza en
O a cada elemento enumerado; así, Ro j o equivale a O, Naranja es 1, etc. El
compilador enumera los identificadores por usted. Después de declarar un tipo de
dato enumerado, se pueden crear variables de ese tipo, como con cualquier otro
tipo de datos. Así, por ejemplo, se puede definir una variable de tipo enum colores.
enum Colores Colorfavorito = Verde;
Constantes declaradas const y volatile
El calificador const permite dar nombres simbólicos a constantes a modo de otros
lenguajes, como Pascal. El formato general para crear una constante es:
CONST tipo nombre = valor;
Si se omite tipo, C utiliza i n t (entero por defecto)
const int Meses=12; / * Meses es constante simbólica de Valor 12*
const char CARACTER='@';
const int OCTALz0233;
const char CADENA [ ] ="Curso de C" ;
17
Asignan valores positivos o negativos a la expresión a la que se aplican.
En cuanto a los operadores binarios existen varios. ‘+’, ‘-‘, ‘*’ y ‘/’, tienen un
comportamiento análogo en cuanto a los operandos, ya que admiten tanto
expresiones enteras, como en coma flotante. Sintaxis:
Variable + Variable
Variable – Variable
Variable * Variable
Variable / Variable
Evidentemente se trata de las conocidísimas operaciones aritméticas de suma, resta,
multiplicación y división, que espero que ya domines a su nivel tradicional, es decir,
sobre el papel.
Otro operador binario es el de módulo ‘%’, que devuelve el resto de la división entera
del primer operando entre el segundo. Por esta razón no puede ser aplicado a
operadores en coma flotante.
Variable % Variable
18
De ellos, el más utilizado es el operador de asignación (=). Su funcionalidad es
equiparable a la de una instrucción de asignación en psedocódigo, y su sintaxis es
muy similar.
<nombre_de_la_variable> = <expresión>;
Existen dos diferencias:
1. En vez del símbolo reservado flecha izquierda (←), se utiliza el carácter igual (=).
2. Se debe escribir un punto y coma (;) al final.
#define PI 3.141592
y de las variables
float area, longitud, radio;
una instrucción de asignación puede ser:
radio = 5.78;
Si ahora escribimos:
area = PI * pow( radio, 2 );
longitud = 2 * PI * radio;
19
Cuando el operador de asignación (=) se escribe precedido de un operador
aritmético: suma (+), resta (-), multiplicación (*), división (/) o módulo (%), la unión
de ambos se convierte en un nuevo operador de asignación que opera de la siguiente
manera:
"A la variable se le asigna el valor que se obtiene de evaluar
<variable> <operador_aritmético> <expresión>."
20
CONCLUSIÓN:
A pesar de que C fue creado cerca de 1970, su estudio perdura alrededor de todo
el mundo; lo que no debe sorprender, ya que este lenguaje presenta bastantes
características en relación con sus defectos. Entre sus principales beneficios se
encuentran: programación estructurada, economía de las expresiones, abundancia
en operadores y tipos de datos, codificación en alto y bajo nivel simultáneamente,
reemplaza ventajosamente la programación en ensamblador o con lenguajes de bajo
nivel en general, utilización natural de las funciones primitivas del sistema, no está
orientado a ninguna área en especial, producción de código objeto altamente
optimizado, facilidad de aprendizaje, etc.
21
BIBLIOGRAFIA:
https://www.ecured.cu/Historia_del_Lenguaje_C
http://www2.caminos.upm.es/Departamentos/matematicas/Fdistancia/PIE/lenguaj
ec/pasos_a_seguir.pdf
http://platea.pntic.mec.es/vgonzale/cyr_0204/cyr_01/control/lengua_C/variables.ht
m
https://www.cdrconsultores.com.ve/blog/variables-and-datatypes.html
http://lsi.vc.ehu.es/asignaturas/FdIc/labs/a1/htm/oper.html
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap2/cap26.htm
http://programandoenc.over-blog.es/article-29441001.html
https://es.wikipedia.org/wiki/Biblioteca_est%C3%A1ndar_de_C
http://www.juntadeandalucia.es/averroes/centros-
tic/14005663/helvia/aula/archivos/repositorio/0/164/html/lenguajec/unidad9.htm
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Compilar_un_programa
http://www.carlospes.com/curso_de_lenguaje_c/01_09_01_03_secuencias_de_esc
ape.php
http://lsi.vc.ehu.es/asignaturas/FdIc/labs/a1/htm/asig.html
22