Sie sind auf Seite 1von 58

INSTITUTO TECNOLGICO SUPERIOR DE CALKIN

EN EL ESTADO DE CAMPECHE
INGENIERA EN SISTEMAS COMPUTACIONALES
ALGORITMOS Y LENGUAJES DE PROGRAMACIN
3. CONOCIMIENTOS DE PROGRAMACIN Y UN LENGUAJE ESTRUCTURADO
ISC. YAQUELINE PECH HUH
PRESENTACIN
Este material contiene los objetivos que se deben lograr al finalizar la unidad, el mtodo
de evaluacin del aprendizaje y el contenido. En un mundo cambiante de tecnologa como se tiene el
da de hoy se hace necesario evaluar y estudiar parte de esa tecnologa. Las computadoras, el
hardware, el software, las grandes mquinas que invaden nuestro mundo requieren de un estudio.
gualmente contiene los temas relacionados con los lenguajes de programacin.
Bsicamente se presenta la estructura para conocer de donde surge la tecnologa que se esta
usando. La informacin en este tema a cambiando a pasos agigantados aun cuando los lenguajes de
programacin son menos cambiantes.
NDICE DE CONTENIDO
1. PORTADA
2. PRESENTACN
3. OBJETVOS GENERALES
4. UNDAD TEMTCA
3. Conocimiento de programacin y un lenguaje estructurado
3.1ntroduccin a la programacin
3.1.1 Definicin de programa.
3.1.2 Definicin de programacin
3.1.3 Definicin de lenguaje de programacin
3.2 ntroduccin y orgenes del lenguaje.
3.2.1 Tipos de programacin
Caractersticas del lenguaje C
3.3 Estructura Bsica de un programa
3.3.1 Estructura de un programa.
3.4 Datos
3.4.1 Tipos de datos
3.4.2 dentificadores
3.4.3 Almacenamiento, direccionamiento y representacin en memoria
3.4.4 Proposicin de Asignacin
3.5 Operadores, operandos y expresiones
3.5.1 Prioridad de operaciones
3.5.2 Evaluacin de expresiones
3.6 Proceso de creacin de un ejecutable
3.6.1 Creacin de un ejecutable
5. EVALUACN
OBJETIVOS GENERALES
El alumno:
dentificar los conceptos bsicos de los lenguajes de programacin
Conocer los diferentes tipos de programacin
Utilizar los algoritmos como herramienta en la construccin de programas
Crear un programa ejecutable e identificara su uso comn.
3.1. Introduccin ! Pro"r#cin
INSTR$CCIONES ESPEC%ICAS
Lea cuidadosamente y subraya los conceptos bsicos.
dentifica las caractersticas de los lenguajes de programacin
Evala cada uno de los tipos de programacin.
O&'(ti)o E*+(c,-ico.
Al finalizar la lectura el alumno conocer los diferentes tipos de programacin.
3.1.1 D(-inicin d( +ro"r#
Un conjunto de rdenes para un ordenador. Un programa puede estar formado por apenas unas
pocas rdenes (por ejemplo, uno que sume dos nmeros) o por varios miles de rdenes (como un
programa de gestin completo para una empresa). Cuando se trata de un programa ya terminado que
se compra, se suele hablar de una Aplicacin nformtica. Los programas se deben escribir en un
cierto lenguaje de programacin. Los lenguajes de programacin que se acercan ms al lenguaje
humano que al del ordenador reciben el nombre de "lenguajes de alto nivel" (como Pascal); los que
se acercan ms al ordenador
3.1./ D(-inicin d( +ro"r#cin
Programacin es el acto de crear un programa de computadora, un conjunto concreto de
instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de
programacin, aunque tambin se pueda escribir directamente en lenguaje de mquina, con cierta
dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes
distintos.
La programacin estructurada es una teoria de programacin que consiste en construir
programas de facil comprension.
La programacin estructurada es especialmente util, cuando se necesitan realizar
correciones o modificaciones despues de haber concluido un programa o aplicacion. Al haberse
utilizado la programacin estructurada, es mucho ms sencillo entender la codificacion del programa,
que se habra hecho en diferentes secciones.
La programacin estructurada se basa en una metodologi de desarrollo de programas
llamda refinamiento sucesivos: Se plantea una operacion como un todo y se divide en segmentos
ms sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se
procede a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado
adecuadamente la programacin estructurada, esta integracion debe ser sencilla y no presentar
problemas al integrar la misma , y de presentar algun problema, sera rapidamente detectable para su
correccion.
La representacion grafica de la programacin estructurada se realiza a traves de
diagramas de flujo o flow chart, el cual representa el programa con sus entradas, procesos y salidas.
La programacin estructurada propone segregar los procesos en estructuras lo ms
simple posibles, las cuales se conocen como secuencia, seleccion e interaccion. Ellas estan
disponibles en todos los lenguajes modernos de programacin imperativa en forma de sentencias.
Combinando esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de
facil entendimiento.
3.1.3 D(-inicin d( L(n"u'( d( +ro"r#cin
C es un lenguaje de programacin de propsito general que ofrece economa sintctica,
control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy
alto nivel y ms bien un lenguaje pequeo, sencillo y no est especializado en ningn tipo de
aplicacin. Esto lo hace un lenguaje potente, con un campo de aplicacin ilimitado y sobre todo, se
aprende rpidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.
Este lenguaje ha sido estrechamente ligado al sistema operativo UNX, puesto que fueron
desarrollados conjuntamente. Sin embargo, este lenguaje no est ligado a ningn sistema operativo ni
a ninguna mquina concreta. Se le suele llamar lenguaje de programacin de sistemas debido a su
utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar
cualquier tipo de aplicacin.
La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en
1970 para el primer sistema UNX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que
el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en
coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de
punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para
un DEC PDP-11 y escribi el propio sistema operativo en ntroducc!" al lenguaje C (2).
La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en
1970 para el primer sistema UNX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que
el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en
coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de
punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para
un DEC PDP-11 y escribi el propio sistema operativo en C.
C trabaja con tipos de datos que son directamente tratables por el hardware de la mayora de
computadoras actuales, como son los caracteres, nmeros y direcciones. Estos tipos de datos
pueden ser manipulados por las operaciones aritmticas que proporcionan las computadoras. No
proporciona mecanismos para tratar tipos de datos que no sean los bsicos, debiendo ser el
programador el que los desarrolle. Esto permite que el cdigo 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 esttico y no proporciona mecanismos de entrada ni salida.
Ello permite que el lenguaje sea reducido y los compiladores de fcil implementacin en distintos
sistemas. Por contra, estas carencias se compensan mediante la inclusin de funciones de librera
para realizar todas estas tareas, que normalmente dependen del sistema operativo.
Originariamente, el manual de referencia del lenguaje para el gran pblico fue el libro de Kernighan y
Ritchie, escrito en 1977. Es un libro que explica y justifica totalmente el desarrollo de aplicaciones en
C, aunque en l se utilizaban construcciones, en la definicin de funciones, que podan provocar
confusin y errores de programacin que no eran detectados por el compilador. Como los tiempos
cambian y las necesidades tambin, en 1983 ANS establece el comit X3J11 para que desarrolle
una definicin moderna y comprensible del C. El estndar est basado en el manual de referencia
original de 1972 y se desarrolla con el mismo espritu de sus creadores originales. La primera versin
de estndar se public en 1988 y actualmente todos los compiladores utilizan la nueva definicin. Una
aportacin muy importante de ANS consiste en la definicin de un conjunto de libreras que
acompaan al compilador y de las funciones contenidas en ellas. Muchas de las operaciones
comunes con el sistema operativo se realizan a travs de estas funciones. Una coleccin de ficheros
de encabezamiento, headers, en los que se definen los tipos de datos y funciones incluidas en cada
librera. Los programas que utilizan estas bibliotecas para interactuar con el sistema operativo
obtendrn un comportamiento equivalente en otro sistema.
EVALUACIN DE APRENDIZAJE
E* un !(n"u'( d( +ro"r#cin d( +ro+*ito "(n(r! 0u( o-r(c( (cono#, *int1ctic2 contro! d( -!u'o 3
(*tructur* *(nci!!* 3 un &u(n con'unto d( o+(rdor(*
4 C
&4 C++
c4 Pascal
d4 Cobol
(4 Visual Basic
No (* un !(n"u'( d( #u3 !to ni)(! 3 #1* &i(n un !(n"u'( +(0u(5o2 *(nci!!o 3 no (*t1 (*+(ci!i6do
(n nin"7n ti+o d( +!iccin.
4
C
&4 C++
c4 Pascal
d4 Cobol
(4 Visual Basic
L &*( d(! C +ro)i(n( d(! 8888888888 (*crito +or 9rtin Ric:rd*
4
BCPL
&4 CDDL
c4 DFGL
d4 OPOP
(4 JOLL
Cu1! (* ! +rinci+! di-(r(nci (ntr( (! !(n"u'( P*c! 3 (! !(n"u'( C;
4
En que no es un programa principal. El C est formado por subrutinas
&4 Sus variables
c4 Sus sentencias
d4 En que es un lenguaje mas poderoso que el Pascal
(4 Todas las anteriores
E! +ri#(r co#+i!dor d( C -u( di*(5do +or <..
4
Denis Ritchie
&4 Denis Quaid
c4 Denis Rodman
d4 Denis Farina
(4 Denis Hooper
BIBLIOGRA%IA
www.ctisa.com/diccionario.htm
es.wikipedia.org/wiki/Programaci%C3%B3n
3./ Introduccin 3 or,"(n(* d(! !(n"u'(
INSTR$CCIONES ESPECI%ICAS
Lea cuidadosamente el siguiente texto
Subraya segn tu criterio los conceptos ms importantes.
dentifica los tipos de programacin
O&'(ti)o E*+(c,-ico.
Al finalizar la lectura el alumno evaluar cada uno de los tipos de lenguajes de programacin
3./.1 Ti+o* d( +ro"r#cin
Pro"r#cin Ori(ntd O&'(to*
La programacin Orientada a objetos (POO) es una forma especial de programar, ms cercana a
como expresaramos las cosas en la vida real que otros tipos de programacin.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros
programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos rpidamente
para aclarar conceptos y dar una pequea base que permita soltarnos un poco con este tipo de
programacin.
9oti)cin
Durante aos, los programadores se han dedicado a construir aplicaciones muy parecidas que
resolvan una y otra vez los mismos problemas. Para conseguir que los esfuerzos de los
programadores puedan ser utilizados por otras personas se cre la POO. Que es una serie de
normas de realizar las cosas de manera que otras personas puedan utilizarlas y adelantar su trabajo,
de manera que consigamos que el cdigo se pueda reutilizar.
La POO no es difcil, pero es una manera especial de pensar, a veces subjetiva de quien la programa,
de manera que la forma de hacer las cosas puede ser diferente segn el programador. Aunque
podamos hacer los programas de formas distintas, no todas ellas son correctas, lo difcil no es
programar orientado a objetos sino programar bien. Programar bien es importante porque as nos
podemos aprovechar de todas las ventajas de la POO.
C#o *( +i(n* (n o&'(to*
Pensar en trminos de objetos es muy parecido a cmo lo haramos en la vida real. Por ejemplo
vamos a pensar en un coche para tratar de modelizarlo en un esquema de POO. Diramos que el
coche es el elemento principal que tiene una serie de caractersticas, como podran ser el color, el
modelo o la marca. Adems tiene una serie de funcionalidades asociadas, como pueden ser ponerse
en marcha, parar o aparcar.
Pues en un esquema POO el coche sera el objeto, las propiedades seran las caractersticas como el
color o el modelo y los mtodos seran las funcionalidades asociadas como ponerse en marcha o
parar.
Por poner otro ejemplo vamos a ver cmo modelizaramos en un esquema POO una fraccin, es
decir, esa estructura matemtica que tiene un numerador y un denominador que divide al numerador,
por ejemplo 3/2.
La fraccin ser el objeto y tendr dos propiedades, el numerador y el denominador. Luego podra
tener varios mtodos como simplificarse, sumarse con otra fraccin o nmero, restarse con otra
fraccin, etc.
Estos objetos se podrn utilizar en los programas, por ejemplo en un programa de matemticas hars
uso de objetos fraccin y en un programa que gestione un taller de coches utilizars objetos coche.
Los programas Orientados a objetos utilizan muchos objetos para realizar las acciones que se desean
realizar y ellos mismos tambin son objetos. Es decir, el taller de coches ser un objeto que utilizar
objetos coche, herramienta, mecnico, recambios, etc.
Pro"r#cin E*tructurd
La programacin estructurada es una teoria de programacin que consiste en construir programas de
facil comprension.
La programacin estructurada es especialmente util, cuando se necesitan realizar correciones o
modificaciones despues de haber concluido un programa o aplicacion. Al haberse utilizado la
programacin estructurada, es mucho ms sencillo entender la codificacion del programa, que se
habra hecho en diferentes secciones.
La programacin estructurada se basa en una metodologi de desarrollo de programas llamda
refinamiento sucesivos: Se plantea una operacion como un todo y se divide en segmentos ms
sencillos o de menor complejidad. Una vez terminado todos los segmentos del programa, se procede
a unificar las aplicaciones realizadas por el pool de programadores. Si se ha utilizado adecuadamente
la programacin estructurada, esta integracion debe ser sencilla y no presentar problemas al integrar
la misma , y de presentar algun problema, sera rapidamente detectable para su correccion.
La representacion grafica de la programacin estructurada se realiza a traves de diagramas de flujo o
flow chart, el cual representa el programa con sus entradas, procesos y salidas.
La programacin estructurada propone segregar los procesos en estructuras lo ms simple
posibles, las cuales se conocen como secuencia, seleccion e interaccion. Ellas estan disponibles en
todos los lenguajes modernos de programacin imperativa en forma de sentencias. Combinando
esquemas sencillos se pueden llegar a construir sistemas amplios y complejos pero de facil
entendimiento.
Pro"r#cin Lin(!
En programacin lineal se habla de trminos tales como restricciones, que vienen a ser la
manipulacin del tamao de funciones que se encuentran sujetas a ciertas limitaciones.
Podemos decir que la programacin lineal es el conjunto de tcnicas matemticas que intentan
resolver la maximizacin o minimizacinde una funcin objetivo, funcin lineal de varias variables,
sujeta a ciertas restricciones, expresadas por inecuaciones lineales.
En problemas de programacin lineal intervienen:
La funcin f(x,y) = ax + by + c conocida tambin como funcin objetivo (a la cual deberemos
optimizar). Aqu x e y son las variables de decisin, mientras que a, b y c son constantes.
Las restricciones que deben ser inecuaciones lineales, donde su nmero depende del problemaen
que trabajemos. Tambin ver que el carcter de desigualdad viene impuesto por las limitaciones, que
son: inferiores a ... ( menores: < o ); como mnimo de ... (mayores: > o ) . Maximizando o
minimizando, las desigualdades pueden darse en cualquiera de los dos sentidos.
Valores de x e y que verifican todas y cada una de las restricciones, lo que se conoce como conjunto
o regin factible.
La solucin ptima del problema ser un par de valores (x0, y0) del conjunto factible que haga que
f(x,y) tome el valor mximo o mnimo.
Se utilizan las siglas PPL para indicar problema de programacin lineal.
3././ Crct(r,*tic d(! !(n"u'( C
El lenguaje C es uno de los ms rpidos y potentes que hay hoy en dia. Algunos dicen
que est desfasado (ja,ja) y que el futuro es Java. No se si tendr futuro pero est claro que presente
si tiene. No hay ms que decir que el sistema operativo Linux est desarrollado en C en su prctica
totalidad. As que creo que no slo no perdemos nada aprendiendolo sino que ganamos mucho. Para
empezar nos servir como base para aprender C++ e introducirnos en el mundo de la programacin
Windows. Si optamos por Linux existe una biblioteca llamada gtk (o librera, como prefieras) que
permite desarrollas aplicaciones estilo windows con C.
No debemos confundir C con C++, que no son lo mismo. Se podra decir que C++ es una extensin
de C. Para empezar en C++ conviene tener una slida base de C.
Existen otros lenguajes como Visual Basic que son muy sencillos de aprender y de utilizar. Nos dan
casi todo hecho. Pero cuando queremos hacer algo complicado o que sea rpido debemos recurrir a
otros lenguajes (c++, delphi,...).
P(cu!iridd(* d( C
Una de las cosas importantes de C que debes recordar es que es Case Sensitive (sensible a las
maysculas o algo as). Es decir que para C no es lo mismo escribir Printf que printf.
Conviene indicar tambin que las instrucciones se separan por ";".
Co#+i!dor(* d( C
Un compilador es un programa que convierte nuestro cdigo fuente en un programa ejecutable (Me
imagino que la mayora ya lo sabes, pero ms vale asegurar). El ordenador trabaja con 0 y 1. Si
escribiramos un programa en el lenguaje del ordenador nos volveramos locos. Para eso estn
lenguajes como el C. Nos permiten escribir un programa de manera que sea fcil entenderlo por una
persona. Luego es el compilador el que se encarga de convertirlo al complicado idioma de un
ordenador.
En la practica a la hora de crear un programa nosotros escribimos el cdigo fuente, en nuestro caso
en C, que normalmente ser un fichero de texto normal y corriente que contiene las instrucciones de
nuestro programa. Luego se lo pasamos al compilador y este se encarga de convertirlo en un
programa.
Siguiendo la filosofa de mi pgina los compiladores que usaremos sern gratutos. Yo recomiendo
usar el DJGPP para MS-Dos y el GNU C para Linux. Ambos son compiladores de lnea de comando
as que necesitaremos tambin un editor para crear nuestros programas.
La solucin ms simple en MS-Dos puede ser usar el edit, en windows el notepad. Pero no son ms
que editores sin ninguna otra funcionalidad. Otra posibilidad es un entorno de desarrollo llamado
RHDE, un programa muy til que automatiza muchas de las tareas del programador (del estilo del
Turbo C y Turbo Pascal). Si queremos una herramienta muy avanzada podemos usar Emacs, que es
un editor muy potente, aunque para algunos puede parecer muy complicado (valientes y a por ello).
Estos dos programas estn disponibles tanto en Linux como en MS-Dos.
E! +ri#(r +ro"r#. Hola Mundo
En un alarde de originalidad vamos a hacer nuestro primer programa: hola mundo. Nadie puede llegar
muy lejos en el mundo de la programacin sin haber empezado su carrera con este original y
funcional programa. All va:
#include <stdio.h>
int main()
{
/* Aqu va el cuerpo del programa */
printf( "Hola mundo\n" ); /* Esto imprime hola mundo en pantalla */
return 0;
}
Comprobado con DJGPP
Qu fcil eh? Este programa lo nico que hace es sacar por pantalla el mensaje:
Hola mundo
Vamos ahora a comentar el programa lnea por lnea (Esto no va a ser ms que una primera
aproximacin).
#include <stdio.h>
#include es lo que se llama una directiva. Sirve para indicar al compilador que incluya otro archivo.
Cuando en compilador se encuentra con esta directiva la sustituye por el archivo indicado. En este
caso es el archivo stdio.h que es donde est definida la funcin printf, que veremos luego.
int main()
Es la funcin principal del programa. Todos los programas de C deben tener una funcin llamada
main. Es la que primero se ejecuta. El int (entero) que tiene al principio significa que cuando la
funcin main acabe devolver un nmero entero. Este valor se suele usar para saber cmo ha
terminado el prorama. Normalmente este valor ser 0 si todo ha ido bien, o un valor distinto si se ha
producido algn error (pero esto lo decidimos nosotros, ya lo veremos). De esta forma si nuestro
programa se ejecuta desde otro el programa 'padre' sabe como ha finalizado, si ha habido errores o
no.
Se puede usar la definicin 'void main()', que no necesita devolver ningn valor, pero se recomienda
la forma con 'int' que es ms correcta. A lo largo de este curso vers muchos ejemplos que uso 'void
main' y falta el return 0; del final, el cdigo funciona correctamente pero puede dar un 'warning' al
compilar. En estos momentos estoy intentando corregir esto, pido perdn por las molestias.
{
Son las llaves que indican el comienzo de una funcin, en este caso la funcin main.
/* Aqu va el cuerpo del programa */
Esto es un comentario, no se ejecuta. Sirve para describir el programa. Conviene acostumbrarse a
comentar los programas. Un comentario puede ocupar ms de una lnea. Por ejemplo el comentario:
/* Este es un comentario
que ocupa dos filas */
es perfectamente vlido.
printf( "Hola mundo\n" );
Aqu es donde por fin el programa hace algo que podemos ver al ejecutarlo. La funcin printf muestra
un mensaje por la pantalla. Al final del mensaje "Hola mundo" aparece el smbolo '\n'; este hace que
despus de imprimir el mensaje se pase a la lnea siguiente.
Fjate en el ";" del final. Es la forma que se usa en C para separar una instruccin de otra. Se pueden
poner varias en la misma lnea siempre que se separen por el punto y coma.
return 0;
Como he indicado antes el programa al finalizar develve un valor entero. Como en este programa no
se pueden producir errores (nunca digas nunca jams) la salida siempre ser 0. La forma de hacer
que el programa devuelva un 0 es usando return. Esta lnea significa 'finaliza la funcin main haz que
devuelva un 0.
}
...y cerramos llaves con lo que termina el programa. Todos los programas finalizan cuando se llega al
final de la funcin main.
=C#o *( :c(;
Primero debemos crear el cdigo fuente del programa. Para nuestro primer programa el cdigo fuente
es el del listado anterior. Arranca tu compilador de C, sea cual sea. Crea un nuevo fichero y copia el
cdigo anterior. Llmalo por ejemplo primero.c.
Ahora, tenemos que compilar el programa para crear el ejecutable. Si tu compilador es de windows, o
con mens busca una opcin llamada "compile", o make, build o algo as.
Si estamos usando DJGPP (ver informacin sobre instalacin y uso de DJGPP): tenemos que
llamarlo desde la lnea de comando:
gcc -c primero.c -o primero.exe
Si usamos Rhide basta con hacer CTRL-F9.
Not dicion! *o&r( !o* co#(ntrio*
Los comentarios se pueden poner casi en cualquier parte. Excepto en medio de una instruccin. Por
ejemplo lo siguiente no es vlido:
pri/* Esto es un comentario */ntf( "Hola mundo" ); GARRAFAL
No podemos cortar a printf por en medio, tendramos un error al compilar. Lo siguiente no dara error
(al menos usando DJGPP), pero es una fea costumbre:
printf( /* Esto es un comentario */ "Hola mundo" );
Y por ltimo tenemos:
printf( "Hola/* Esto es un comentario */ mundo" );
Que no dara error, pero al ejecutar tendramos:
Hola /* Esto es un comentario */ mundo
porque /* sto es un comentario */ queda dentro de las comillas y C lo interpreta como texto, no como
un comentario.
=>u? *&(#o* :c(r;
Pues la verdad es que todava no hemos aprendido mucho. Lo nico que podemos hacer es compilar
nuestros programas. Pero paciencia, en seguida avanzaremos.
E'(rcicio*
Busca los errores en este programa:
int main()
{
/* Aqu va el cuerpo del programa */
Printf( "Hola mundo\n" );
return 0;
}
Solucin:
Si lo compilamos posiblemente obtendremos un error que nos indicar que no hemos definido la
funcin 'Printf'. Esto es porque no hemos includo la dichosa directiva '#include <stdio.h>'. (En
algunos compiladores no es necesario incluir esta directiva, pero es una buena costumbre hacerlo).
Si lo corregimos y volvemos a compilar obtendremos un nuevo error. Otra vez nos dice que
desconoce 'Printf'. Esta vez el problema es el de las maysculas que hemos indicado antes. Lo
correcto es poner 'printf' con minsculas. Parece una tontera, pero seguro que nos da ms de un
problema.
EVAL$ACIN DE APRENDI@AJE
E! *o-tAr( d( 888888888 (* 0u(! (n (! cu! uti!i6#o* !(n"u'(* d( +ro"r#cin +r r(!i6r ci(rt
+!iccin.
4 Desarrollo
&4 Comunicacin
c4 Aplicacin
d4 Contenido
(4 Arcaico
E! *!to d( !,n( *( +u(d( introducir tnto (n.
4 En un *cn- co#o (n un +rint-
&4 En un scanf
c4 En un printf
d4 En un main
(4 En ninguno de los anteriores
E* un !(n"u'( +ot(nt(2 con un c#+o d( +!iccin i!i#itdo
4
C
&4 C++
c4 Pascal
d4 Cobol
(4 Visual Basic
Son do* +!&r* r(*(r)d* d(! !(n"uc( C
4 scanf y printf
&4 switch y writeln
c4 getche y readln
d4 printf Y readln
(4 while y readln
$n crct(r,*tic d(! !(n"u'( C (* .
4
Todo se escribe en minsculas
&4 Todo se escribe en maysculas
c4 Se escribe como tu quieras, ahi esta lo mejor
d4 No hay otra diferencia
(4 Todas las anteriores
BIBLIOGRA%IA
http://lenguajes-de-programacion.com/programacion-estructurada.shtml
3.3 E*tructur B1*ic d( un +ro"r#
INSTR$CCIONES ESPEC%ICAS
Lea cuidadosamente el siguiente texto.
Subraya los conceptos importantes.
dentifica La estrutura bsica de un programa en C


O&'(ti)o E*+(c,-ico.
Al finalizar la lectura el alumno Realizar programas siguiendo la estructura bsica de todo
programa.
3.3.1 E*tructur d( un +ro"r#.
E*tructur &1*ic d( un +ro"r# (n C
La mejor forma de aprender un lenguaje es programando con l. El programa ms sencillo que se
puede escribir en C es el siguiente:
main( )
{
}
Como nos podemos imaginar, este programa no hace nada, pero contiene la parte ms importante de
cualquier programa C y adems, es el ms pequeo que se puede escribir y que se compile
correctamente. En el se define la funcin main, que es la que ejecuta el sistema operativo al llamar a
un programa C. El nombre de una funcin C siempre va seguida de parntesis, tanto si tiene
argumentos como si no. La definicin de la funcin est formada por un bloque de sentencias, que
esta encerrado entre llaves {}.
Un programa algo ms complicado es el siguiente:
#include <stdio.h>
main( )
{
printf("Hola amigos!\n");
}
Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera lnea indica que se tengan
en cuenta las funciones y tipos definidos en la librera stdio (standard input/output). Estas definiciones
se encuentran en el fichero header stdio.h. Ahora, en la funcin main se incluye una nica sentencia
que llama a la funcin printf. Esta toma como argumento una cadena de caracteres, que se imprimen
van encerradas entre dobles comillas " ". El smbolo \n indica un cambio de lnea.
Hay un grupo de smbolos, que son tratados como caracteres individuales, que especifican algunos
caracteres especiales del cdigo ASC. Los ms importantes son:
B Alerta
B& Espacio atrs
B- Salto de pgina
Bn Salto de lnea
Br Retorno de carro
Bt Tabulacin horizontal
B) Tabulacin vertical
BB Barra invertida
BC Comilla simple
BD Comillas dobles
BOOO Visualiza un carcter cuyo cdigo ASC es OOO en octal
BEFFF Visualiza un carcter cuyo cdigo ASC es HHH en hexadecimal
Un programa C puede estar formado por diferentes mdulos o fuentes. Es conveniente mantener las
fuentes de un tamao no muy grande, para que la compilacin sea rpida. Tambin, al dividirse un
programa en partes, puede facilitar la legibilidad del programa y su estructuracin. Los diferentes
fuentes son compilados de forma separada, nicamente los fuentes que han sido modificados desde
la ltima compilacin, y despus combinados con las libreras necesarias para formar el programa en
su versin ejecutable.
EVAL$ACIN DE APRENDI@AJE
=Cu1! (* ! *(nt(nci d( contro! d( (*c+( 0u( *( u* +r (! *!to d( !,n(;
4
\n
&4 \d
c4 \e
d4 \t
(4 \a
E! o+(rdor G2 (* un o+(rdor (n L(n"u'( C d( ti+o.
4 Lgico
&4 Aritmtico
c4 Lgico y aritmtico
d4 Todos los anteriores
(4 Ninguno de los anteriores
E! o+(rdor HH 0ui(r( d(cir (n L(n"u'( C !o *i"ui(nt(
4 !
&4 Otro
c4 Diferente
d4 Distinto
(4 Nada
L *(nt(nci CII 3 IIC *on di-(r(nt(* (n (! L(n"u'( C +or 0u(.
4 La primera hace una accin e incrementa " la segunda incrementa " luego hace la acccin
&4 Decrementan las variables
c4 ncrementan en uno la constante
d4 Decrementan en uno la constante
(4 Suman dos variables
= >u( -uncin r(!i6 (n (! +rint- (*t *(nt(nci JK23 -;
4 Reali#a en formato de salida $ lugares para % decimales& ' punto " ' entero
&4 Realiza en formato de salida 5 lugares para 2 decimales, 1 punto y 2 entero
c4 Realiza en formato de salida 5 lugares para 1 decimales, 1 punto y 3 entero
d4 Realiza en formato de salida 5 lugares para 4 decimales, 1 punto y 1 entero
(4 Realiza en formato de salida 5 lugares para 5 decimales, 1 punto y 1 entero
BIBLIOGRA%IA
http://lenguajes-de-programacion.com/programacion-estructurada.shtml
3.L Dto*
INSTR$CCIONES ESPECI%ICAS
Lea cuidadosamente el siguiente texto.
nvestiga los conceptos no explicados para ampliar el tema.
Subraya los Conceptos importantes
O&'(ti)o E*+(c,-ico.
Al finalizar la lectura el alumno conocer los tipos de datos que se usan en el lenguaje C.
3.L.1 Ti+o* d( dto*.
Cuando usamos un programa es muy importante manejar datos. En C podemos
almacenar los datos en variables. El contenido de las variables se puede ver o cambiar en cualquier
momento. Estas variables pueden ser de distintos tipos dependiendo del tipo de dato que queramos
meter. No es lo mismo guardar un nombre que un nmero. Hay que recordar tambin que la memoria
del ordenador es limitada, as que cuando guardamos un dato, debemos usar slo la memoria
necesaria. Por ejemplo si queremos almacenar el nmero 400 usaremos una variable tipo int (la
estudiamos ms abajo) que ocupa slo 16 bits, y no una de tipo !on" que ocupa 32 bits. Si tenemos
un ordenador con 32Mb de Ram parece una tontera ponernos a ahorrar bits (1Mb=1024Kb,
1Kb=1024bytes, 1byte=8bits), pero si tenemos un programa que maneja muchos datos puede no ser
una cantidad despreciable. Adems ahorrar memoria es una buena costumbre.
A las variables no se les puede dar cualquier nombre. No se pueden poner ms que letras de la 'a' a
la 'z' (la no vale), nmeros y el smbolo '_'. No se pueden poner signos de admiracin, ni de
interrogacin... El nombre de una variable puede contener nmeros, pero su primer carcter no puede
serlo.
Ejemplos de nombres vlidos:
camiones
numero
buffer
a1
j10hola29
num_alumnos
Ejemplos de nombres no vlidos:
1abc
nombre?
num/alumnos
Tampoco valen como nombres de variable las palabras reservadas que usa el compilador. Por
ejemplo: for, main, #o, $%i!e.
Por ltimo es interesante sealar que el C distingue entre maysculas y minsculas. Por lo tanto:
Nombre
nombre
NOMBRE
ser&an tres variab!es #istintas.
E! ti+o Int
En una variable de este tipo se almacenan nmeros enteros (sin decimales). El rango de valores que
admite es -32767 a 32767. Cuando definimos una variable lo que estamos haciendo es decirle al
compilador que nos reserve una zona de la memoria para almacenar datos de tipo int. Para guardarla
necesitaremos 16 bits de la memoria del ordenador (2
16
=32767). Para poder usar una variable
primero hay que declararla (definirla). Hay que decirle al compilador que queremos crear una variable
y hay que indicarle de qu tipo. Por ejemplo:
int numero;
Esto hace que declaremos una variable llamada numero que va a contener un nmero entero.
Pero dnde se declaran las variables?
Tenemos dos posibilidades, una es declararla como global y otra como local. Por ahora vamos a decir
que global es aquella variable que se declara fuera de la funcin main y local la que se declara
dentro:
La diferencia prctica es que las variables globales se pueden usar en cualquier procedimiento. Las
variables locales slo pueden usarse en el procedimiento en el que se declaran. Como por ahora slo
tenemos el procedimiento (o funcin, o rutina, o subrutina, como prefieras) main esto no debe
preocuparnos mucho por ahora. Cuando estudiemos cmo hacer un programa con ms funciones
aparte de main volveremos sobre el tema. Sin embargo debes saber que es buena costumbre usar
variables locales que globales. Ya veremos por qu.
Podemos declarar ms de una variable en una sola lnea:
int x, y;
Mostrar variables por pantalla
Vamos a ir u poco ms all con la funcin printf. Supongamos que queremos mostrar el contenido de
la variable x por pantalla:
printf( "%i", x );
Suponiendo que x valga 10 (x=10) en la pantalla tendramos:
10
Empieza a complicarse un poco no? Vamos poco a poco. Recuerdas el smbolo "\" que usbamos
para sacar ciertos caracteres? Bueno, pues el uso del "%" es parecido. "%i" no se muestra por
pantalla, se sustituye por el valor de la variable que va detrs de las comillas. ( %i, de integer=entero
en ingls).
Para ver el contenido de dos variables, por ejemplo x e y, podemos hacer:
printf( "%i ", x );
printf( "%i", y );
resultado (suponiendo x=10, y=20):
10 20
Pero hay otra forma mejor:
printf( "%i %i", x, y );
... y as podemos poner el nmero de variables que queramos. Obtenemos el mismo resultado con
menos trabajo. No olvidemos que por cada variable hay que poner un %i dentro de las comillas.
Tambin podemos mezclar texto con enteros:
printf( "El valor de x es %i, que bien!\n", x );
que quedar como:
El valor de x es 10, que bien!
Como vemos %i al imprimir se sustituye por el valor de la variable.
Asignar valores a variables de tipo int
La asignacin de valores es tan sencilla como:
x = 10;
Tambin se puede dar un valor inicial a la variable cuando se define:
int x = 15;
Tambin se pueden inicializar varias variables en una sola lnea:
int x = 15, y = 20;
Hay que tener cuidado con lo siguiente:
int x, y = 20;
Podramos pensar que x e y son igual a 20, pero no es as. La variable x est sin valor inicial y la
variable 'y' tiene el valor 20.
Veamos un ejemplo para resumir todo:
#include <stdio.h>
void main()
{
int x = 10;
prinft( "El valor inicial de x es %i\n", x );
x = 50;
printf( "Ahora el valor es %i\n", x );
}
Cuya salida ser:
El valor inicial de x es 10
Ahora el valor es 50
mportante! Si imprimimos una variable a la que no hemos dado ningn valor no obtendremos ningn
error al compilar pero la variable tendr un valor cualquiera. Prueba el ejemplo anterior quitando
int x = 10;
E! ti+o C:r
Las variables de tipo char sirven para almacenar caracteres. Los caracteres se almacenan en
realidad como nmeros del 0 al 255. Los 128 primeros (0 a 127) son el ASC estndar. El resto es el
ASC extendido y depende del idioma y del ordenador. Consulta la tabla ASC en el anexo.
Para declarar una variable de tipo char hacemos:
char letra;
En una variable char *!o +od(#o* !#c(nr *o!o un !(tr, no podemos almacenar ni frases ni
palabras. Eso lo veremos ms adelante (strings, cadenas). Para almacenar un dato en una variable
char tenemos dos posibilidades:
letra = 'A';
o
letra = 65;
En ambos casos se almacena la letra 'A' en la variable. Esto es as porque el cdigo ASC de la letra
'A' es el 65.
Para imprimir un char usamos el smbolo %c (c de character=caracter en ingls):
letra = 'A';
printf( "La letra es: %c.", letra );
resultado:
La letra es A.
Tambin podemos imprimir el valor ASC de la variable usando %i en vez de %c:
letra = 'A';
printf( "El nmero ASC de la letra %c es: %i.", letra, letra );
resultado:
El cdigo ASC de la letra A es 65.
Como vemos la nica diferencia para obtener uno u otro es el modificador (%c %i) que usemos.
Las variables tipo char se pueden usar (y de hecho se usan mucho) para almacenar enteros. Si
necesitamos un nmero pequeo (entre -127 y 127) podemos usar una variable char (8bits) en vez de
una int (16bits), con el consiguiente ahorro de memoria.
Todo lo dems dicho para los datos de tipo
int
se aplica tambin a los de tipo
char
.
Una curiosidad:
letra = 'A';
printf( "La letra es: %c y su valor ASC es: %i\n", letra, letra );
letra = letra + 1;
printf( "Ahora es: %c y su valor ASC es: %i\n", letra, letra );
En este ejemplo !etra comienza con el valor 'A', que es el cdigo ASC 65. Al sumarle 1 pasa a tener
el valor 66, que equivale a la letra 'B' (cdigo ASC 66). La salida de este ejemplo sera:
La letra es A y su valor ASC es 65
Ahora es B y su valor ASC es 66
E! #odi-icdor $n*i"n(d
Este modificador (que significa sin si"no) modifica el rango de valores que puede contener una
variable. Slo admite valores positivos. Si hacemos:
unsigned char variable;
Esta variable en vez de tener un rango de -128 a 128 pasa a tener un rango de 0 a 255.
E! ti+o %!ot
En este tipo de variable podemos almacenar nmeros decimales, no slo enteros como en los
anteriores. El rango de posibles valores es del 3,4E-38 al 3,4E38.
Declaracin de una variable de tipo float:
float numero;
Para imprimir valores tipo float Usamos %f.
float num=4060.80;
printf( "El valor de num es : %f", num );
Resultado:
El valor de num es: 4060.80
Si queremos escribirlo en notacin exponencial usamos %e:
float num = 4060.80;
printf( "El valor de num es: %e", num );
Que da como resultado:
El valor de num es: 4.06080e003
E! ti+o Dou&!(
En las variables tipo double se almacenan nmeros reales del 1,7E-307 al 1,7E308. Se declaran
como #oub!e:
double numero;
Para imprimir se usan los mismos modificadores que en float.
C#o c!cu!r (! #1Ei#o )!or 0u( d#it( un ti+o d( dto*
Lo primero que tenemos que conocer es el tamao en bytes de ese tipo de dato. Vamos a ver un
ejemplo con el tipo NT. Hagamos el siguiente programa:
#include <stdio.h>
void main()
{
int num1;
printf( "El tipo int ocupa %i bytes\n", sizeof(int) );
}
Comprobado con DJGPP
En mi ordenador el resultado es:
El tipo int ocupa 4 bytes.
Como sabemos 1byte = 8bits. Por lo tanto el tipo int ocupa 4*8=32 bits.
Ahora para calcular el mximo nmero debemos elevar 2 al nmero de bits obtenido. En nuestro
ejemplo: 2^32=4.294.967.296. Es decir en un int se podra almacenar un nmero entre 0 y
4.294.967.296.
Sin embargo esto slo es cierto si usamos un tipo unsigned (sin signo, se hace aadiendo la palabra
unsigned antes de int). Para los tipos normales tenemos que almacenar nmeros positivos y
negativos. As que de los 4.294.967.296 posibles nmeros la mitad sern positivos y la mitad
negativos. Por lo tanto tenemos que dividir el nmero anterior entre 2 = 2.147.483.648. Como el 0 se
considera positivo el rango de nmeros posibles que se pueden almacenar en un int sera:
-2.147.483.648 a 2.147.483.647.
Resumen:
1) Obtenemos el nmero de bytes.
2) Multiplicamos por ocho (ya lo tenemos en bits).
3) Elevamos 2 al nmero de bits.
4) Dividimos entre 2.
O)(r-!oA. >u? +* cundo no* *!t#o* (! rn"o
El overf!o$ es lo que se produce cuando intentamos almacenar en una variable un nmero mayor del
mximo permitido. El comportamiento es distinto para variablesde nmeros enteros y para variables
de nmeros en coma flotante.
Con n7#(ro* (nt(ro*
En mi ordenador y usando DJGPP bajo Dos el tamao del tipo int es de 4bytes(4*8=32bits). El
nmero mximo que se puede almacenar en una variable tipo int es por tanto 2.147.483.647 (ver
apartado anterior). Si nos pasamos de este nmero el que se guardar ser el siguiente pero
empezando desde el otro extremo, es decir, el -2.147.483.648. El compilador seguramente nos dar
un aviso (warning) de que nos hemos pasado.
#include <stdio.h>
void main()
{
int num1;
num1 = 2147483648;
printf( "El valor de num1 es: %i\n", num1 );
}
Comprobado con DJGPP
El resultado que obtenemos es:
El valor de num1 es: -2147483648
Comprueba si quieres que con el nmero anterior (2.147.483.647) no pasa nada.
Con n7#(ro* (n co# -!otnt(
El comportamiento con nmeros en coma flotante es distinto. Dependiendo del ordenador si nos
pasamos del rango al ejecutar un programa se puede producir un error y detenerse la ejecucin.
Con estos nmeros tambin existe otro error que es el und(r-!oA. Este error se produce cuando
almacenamos un nmero demasiado pequeo (3,4E-38 en float).
R(*u#(n d( !o* ti+o* d( dto* (n C
Esto es algo orientativo, depende del sistema.
Ti+o Dto* !#c(ndo*
NM d(
Bit*
V!or(* +o*i&!(* NRn"o4
Rn"o u*ndo
un*i"n(d
char Caracteres 8 -128 a 128 0 a 255
int enteros 16 -32.767 a 32.767 0 a 65.535
long enteros largos 32
-2.147.483.647 a
2.147.483.647
0 a 4.294.967.295
float Nums. reales (coma flotante) 32 3,4E-38 a 3,4E38
double
Nums. reales (coma flotante
doble)
64 1,7E-307 a 1,7E308
Esto no siempre es cierto, depende del ordenador y del compilador. Para saber en nuestro caso qu
tamao tienen nuestros tipos de datos debemos hacer lo siguiente. Ejemplo para int:
#include <stdio.h>
void main()
{
printf( "Tamao (en bits) de int = %i\n", sizeof( int )*8 );
}
Ya veremos ms tarde lo que significa sizeof. Por ahora basta con saber que nos dice cual es el
tamao de una variable o un tipo de dato.
E'(rcicio*
E'(rcicio 1. Busque los errores:
#include <stdio.h>
void main()
{
int nmero;
nmero = 2;
}
So!ucin. Los nombres de variables no pueden llevar acentos, luego al compilar nmero dar error.
#include <stdio.h>
void main()
{
int numero;
numero = 2;
printf( "El valor es %i" Numero );
}
3.L./ Id(nti-icdor(*
Son los nombres elegidos para las variables, constantes, funciones, clases y similares. El primer
carcter debe ser una letra o un subrayado. El resto del nombre puede contener dgitos. Los
identificadores que comienzan con dos subrayados estn reservados para uso interno del compilador
C++.
3.L.3 A!#c(n#i(nto2 Dir(ccion#i(nto 3
r(+r(*(ntcin (n #(#ori.
La configuracin de los platos de discos, cabezales y brazos de acceso hacen posible posicionar el
cabezal sobre cualquier parte de cualquier superficie de cualquier plato en el dispositivo de
almacenamiento. Sin embargo, esto no es suficiente; para utilizar esta capacidad de almacenamiento,
debemos tener algn mtodo de dar direcciones a partes uniformes del almacenamiento disponible.
Hay un aspecto final requerido de este proceso. Considere todas las pistas en los muchos cilindros
presentes en un dispositivo tpico de almacenamiento masivo. Puesto que las pistas tienen dimetros
variados, sus circunferencias tambin varan. Por lo tanto, si el almacenamiento fue resuelto
solamente a nivel de pistas, cada pista tendr diferentes cantidades de datos - pista #0 (estando
cerca del centro del plato) puede almacenar 10,827 bytes, mientras que la pista #1,258 (cerca del
borde externo del plato) puede almacenar 15,382 bytes.
La solucin es dividir cada pista en mltiples sectores o b!o'ues segmentos de un tamao consistente
(a menudo 512 bytes) de almacenamiento. El resultado es que cada pista contiene un nmero fijo de
sectores.
Un efecto secundario es que cada sector contiene espacio inutilizado - el espacio entre sectores. A
pesar del nmero constante de sectores en cada pista, la cantidad de espacio inutilizado vara -
relativamente poco espacio inutilizado en las pistas internas y una cantidad mucho mayor de espacio
en las pistas ms externas. En cualquier caso, este espacio inutilizado se desperdicia, pues all no se
puede almacenar datos.
Sin embargo, la ventaja que supera este espacio desperdiciado es que ahora es posible direccionar
efectivamente el almacenamiento en un dispositivo de almacenamiento masivo. De hecho, hay dos
mtodos de direccionamiento - el direccionamiento basado en la geometra y el direccionamiento
basado en bloques.
3.L.K Pro+o*icin d( *i"ncin
Lo mismo que en otros lenguajes de programacin, en C se tienen los operadores aritmticos ms
usuales (+ suma, - resta, * multiplicacin, / divisin y % mdulo).
El operador de asignacin es =, por ejemplo: i=4; ch='y';
ncremento ++ y decremento -- unario. Los cuales son ms eficientes que las respectivas
asignaciones. Por ejemplo: x++ es ms rpido que x=x+1.
Los operadores ++ y -- pueden ser prefijos o postfijos. Cuando son prefijos, el valor es calculado
antes de que la expresin sea evaluada, y cuando es postfijo el valor es calculado despus que la
expresin es evaluada.
En el siguiente ejemplo, ++z es prefijo y -- es postfijo:
int x,y,z;
main()
{
x=( ( ++z ) - ( y-- ) ) % 100;
}
Que es equivalente a:
int x,y,z;
main()
{
z++;
x = ( z-y ) % 100;
y--;
}
El operador % (mdulo o residuo) solamente trabaja con enteros, aunque existe una funcin para
flotantes (15.1 fmod() ) de la biblioteca matemtica.
El operador divisin / es para divisin entera y flotantes. Por lo tanto hay que tener cuidado. El
resultado de x = 3 / 2; es uno, an si x es declarado como float. La regla es: si ambos argumentos en
una divisin son enteros, entoces el resultado es entero. Si se desea obtener la divisin con la
fraccin, entonces escribirlo como: x = 3.0 / 2; o x = 3 / 2.0 y an mejor x = 3.0 / 2.0.
Por otra parte, existe una forma ms corta para expresar clculos en C. Por ejemplo, si se tienen
expresiones como: i = i + 3; o x = x * (y + 2);
Por lo que podemos reescribir las expresiones anteriores como: i += 3; y x *= y + 2;
respectivamente.
O+(rdor(* d( Co#+rcin
El operador para probar la igualdad es ==, por lo que se deber tener cuidado de no escribir
accidentalmente slo =, ya que:
if ( i = j ) ...
Es una sentencia legal de C (sintcticamente hablando aunque el compilador avisa cuando se
emplea), la cual copia el valor de ``j'' en ``i'', lo cual ser interpretado como VERDADERO, si j es
diferente de cero.
Diferente es !=, otros operadores son: < menor que, > mayor que, <= menor que o igual a y >=
(mayor que o igual a).
O+(rdor(* !"ico*
Los operadores lgicos son usualmente usados con sentencias condicionales o relacionales, los
operadores bscios lgicos son:
&& Y lgico, || O lgico y ! negacin.
EVAL$ACIN DE APRENDI@AJE
E! +ri#(r crct(r d( un )ri&!( ti(n( 0u( *(r un *i"no cu!0ui(r +(ro nunc un.
4 n(mero
&4 Guin Bajo
c4 "
d4 ( )
(4 ;
E* (! ti+o d( )ri&!( 0u( *( d(c!r -u(r d( !* O P (n (! !(n"u'( C
4 )lobales
&4 Locales
c4 Creadas por el usuario
d4 Creadas por el compilador
(4 Todas las anteriores
Cu1! (* ! -uncin 0u( *( uti!i6 (n C +r !((r (n #(#ori;
4 scanf
&4 scanfloo
c4 readln
d4 write
(4 writeln
En un )ri&!( c:r *o!o +od(#o* !#c(nr un.
4 Letra
&4 Constante
c4 Nmero
d4 Variable
(4 Nada
E'(#+!o d( d(-inicin d( con*tnt(
4 *define P+ %.','-
&4 #defineP 3.1416
c4 #define P3.1416
d4 #include P 3.1416
(4 #define P3.1416
BIBLIOGRA%IA
http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf
3.K O+(rdor(*2 o+(rndo* 3 (E+r(*ion(*
INSTR$CCIONES ESPECI%ICAS
Lea cuidadosamente el siguiente texto.
nvestiga los conceptos no explicados para ampliar el tema.
Subraya los Conceptos importantes
O&'(ti)o E*+(c,-ico.
Al finalizar la lectura el alumno utilizar los operadores para la resolucin de problemas.
3.K.1 Prioridd d( o+(rcion(*
Es necesario ser cuidadosos con el significado de expresiones tales como a + b * c, dependiendo
de lo que se desee hacer
(a + b) * c
o
a + (b * c)
Todos los operadores tienen una prioridad, los operadores de mayor prioridad son evaluados antes
que los que tienen menor prioridad. Los operadores que tienen la misma prioridad son evaluados de
izquierda a derecha, por lo que:
a - b - c
es evaluado como
(a - b) - c
Prioridad .perador/es0
Ms alta ( ) [ ] ->
! ~ ++ -- - (tipo) * & sizeof
* / %
+ -
<< >>
< <= > >=
== !=
&
^
|
&&
||
?
= += -= *= /=
Ms baja ,
De acuerdo a lo anterior, la siguiente expresin:
a < 10 && 2 * b < c
Es interpretada como:
(a < 10) && ( (2 * b) < c )
y
a =
b =
10 / 5
+ 2;
como
a =
( b =
( 10 / 5 )
+ 2 );
3.K./ E)!ucin d( EE+r(*ion(*
X = A / B - C + D * E - A * C
EXPRESN
Operandos Operadores Delimitadores
5 operandos A,B,C,D,E
Pueden ser cualquier variable o constante vlida del lenguaje
Los valores de las variables deben ser coherentes con las operaciones que se realicen con
ellas
6 operadores /,-,+,*,-,*
Describen las operaciones que se realizan entre las variables
Pueden ser aritmticos, lgicos, relacionales
X = A / B - C + D * E - A * C
Orden en el que se deben realizar las operaciones
Cada lenguaje debe definir exactamente dicho orden
Si A = 4, B = C = 2, D = E = 3 =>
X = ( ( 4 / 2 ) - 2 ) + ( 3 * 3 ) - ( 4 * 2 )
= 0 + 9 - 8
= 1
X = ( 4 / (2 - 2 + 3 ) ) * ( 3 - 4 ) * 2
= ( 4 / 3 ) * ( -1 ) * 2
= -2.66666666
El orden en el que se deben realizar las operaciones se especifica mediante: +rioridd(* o
+r?nt(*i*
El lenguaje define prioridades para los operadores
El programador puede cambiar las prioridades mediante ( )
A igual prioridad, evaluacin de izquierda a derecha
Ejemplo:
A / B * C
( A / B ) * C (1)
A / ( B * C ) (2)
Prioridad de / == prioridad de *
Si A = B = C = 2
(1) = 2
(2) = 0.5
En C++ se evalua segn (1)
Ejemplo
X = A / B - C + D * E - A * C se evaluar en C++
X = ( ( (A / B) - C ) + ( D * E ) ) - ( A * C )
Utilizada para que los compiladores puedan traducir expresiones
Si ( es una expresin con operadores y operandos, la forma habitual de escritura se conoce como
Qin-iER porque los operadores van entre (in) los operandos ( los operadores unarios preceden sus
operandos).
La forma Q+o*t-iER consiste en colocar cada operador inmediatamente despus de los operandos
Ventajas:
No son necesarios los parntesis
La prioridad de los operadores no es relevante
La expresin se puede evaluar realizando un recorrido de izquierda a derecha, apilando los
operandos y evaluando los operadores utilizando los operandos adecuados extrados de la pila y
apilando el resultado intermedio para repetir el proceso.
Este mtodo es ms simple que los necesarios cuando se trabaja con la notacin "infix
EVAL$ACIN DE APRENDI@AJE
Pu(d( (*tr -or#d +or cu!0ui(r co#&incin d( d,"ito* d(! S ! T2 t(ni(ndo 0u( *(r (! +ri#(ro un S.
4 constante entera octal
&4 constante entera decimal
c4 constante entera Hexadecimal
d4 constante entera parcial
(4 constante local
E! )!or #1Ei#o d( un con*tnt( (nt(r )r, d( un co#+utdor otr +(ro (n ! #3or, (*
4 %12-2
&4 45554
c4 32323
d4 23232
(4 21221
$n *(cu(nci d( (*c+( *i(#+r( co#i(n6 +or
4 3
&4 %
c4 #
d4 /
(4 (
E* un id(nti-icdor 0u( *( uti!i6 +r r(+r(*(ntr ci(rto ti+o d( in-or#cin d(ntro d(! +ro"r#
4 4ariable
&4 constante
c4 expresin
d4 valor
(4 definicin
D(&( co#(n6r +or SE o SU. D(*+u?* +u(d( +r(c(r cu!0ui(r co#&incin d( d,"ito* d(! S ! V 3
!(tr* d( ! ! -.
4 constante entera he5adecimal
&4 constante entera decimal
c4 constante entera octal
d4 constante entera parcial
(4 constante local
BIBLIOGRA%IA
http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf
3.W Proc(*o d( cr(cin d( un ('(cut&!(
INSTR$CCIONES ESPECI%ICAS
Lea cuidadosamente el siguiente texto.
nvestiga los conceptos no explicados para ampliar el tema.
Subraya los Conceptos importantes
O&'(ti)o E*+(c,-ico.
Al finalizar la lectura el alumno crear programas con extensin . exe
3.W.1 Cr(cin d( un ('(cut&!(
Se puede crear un archivo que contenga el programa completo, como en los ejemplos que se tienen
ms adelante. Se puede usar cualquier editor de textos ordinario con el que se este familiarizado. Un
editor disponible en la mayora de los sistemas UNX es vi, y en Linux se puede usar pico.
Por convencin el nombre del archivo debe terminar con ``.c'' por e(emp!o) mipro"rama.c
pro"prueba.c. El contenido del archivo deber obedecer la sintaxis de C.
Co#+i!cin
Existen muchos compiladores de C. El cc es el compilador estndar de Sun. El compilador GNU de C
es gcc, el cual es bastante popular y esta disponible en varias plataformas.
Existen tambin compiladores equivalentes de C++ los cuales usualmente son nombrados como CC.
Por ejemplo, Sun provee CC y GNU GCC. El compilador de GNU es tambin denotado como g++.
Existen otros compiladores menos comunes de C y C++. En general todos los compiladores
mencionados operan esencialmente de la misma forma y comparten muchas opciones comunes en la
lnea de opciones. Ms adelante se listan y se dan ejemplos de opciones comunes de los
compiladores. Sin embargo, la mejor referencia de cada compilador es a travs de las pginas en
lnea, del manual del sistema. Por ejemplo: man gcc.
Para compilar el programa usaremos el comando gcc. El comando deber ser seguido por el nombre
del programa en C que se quiere compilar. Un determinado nmero de opciones del compilador
pueden ser indicadas tambin. Por el momento no haremos uso de estas opciones todava, se irn
comentando algunas ms esenciales.
Por lo tanto, el comando bsico de compilacin es:
gcc programa.c
donde pro"rama.c es el nombre del archivo.
Si hay errores obvios en el programa (tales como palabras mal escritas, caracteres no tecleados u
omisiones de punto y coma), el compilador se detendr y los reportar.
Podra haber desde luego errores lgicos que el compilador no podr detectar. En el caso que esta
fuera la situacin se le estar indicando a la computadora que haga las operaciones incorrectas.
Cuando el compilador ha terminado con xito, la versin compilada, o el ejecutable, es dejado en un
archivo llamado a.out, o si la opcin *o es usada con el compilador, el nombre despus de *o es el
nombre del programa compilado.
Se recomienda y es ms conveniente usar la opcin *o con el nombre del archivo ejecutable como se
muestra a continuacin:
gcc -o programa programa.c
el cual pone el programa compilado en el archivo del programa sealado, en ste caso en pro"rama,
en vez del archivo a.out.
E'(cucin d(! +ro"r#
El siguiente estado es correr el programa ejecutable. Para correr un ejecutable en UNX, simplemente
se escribe el nombre del archivo que lo contiene, en este caso pro"rama (o a.out).
Con lo anterior, se ejecuta el programa, mostrando algn resultado en la pantalla. En ste estado,
podra haber errores en tiempo de ejecucin (run*time errors), tales como divisin por cero, o bien,
podran hacerse evidentes al ver que el programa no produce la salida correcta.
Si lo anterior sucede, entonces se debe regresar a editar el archivo del programa, recompilarlo, y
ejecutarlo nuevamente.
Esta parte del proceso de compilacin ser cubierta con ms detalle en el captulo 12 referente al
preprocesador. Sin embargo, se da alguna informacin bsica para algunos programas de C.
El preprocesador acepta el cdigo fuente como entrada y es responsable de:
quitar los comentarios
interpretar las #irectivas #e! preprocesa#or las cuales inician con #.
Por ejemplo:
#include -- incluye el contenido del archivo nombrado. Estos son usualmente llamados
archivos de cabecera (%ea#er). Por ejemplo:
#include <math.h> -- Archivo de la biblioteca estndar de matemticas.
#include <stdio.h> -- Archivo de la biblioteca estndar de Entrada/Salida.
#define -- define un nombre simblico o constante. Sustitucin de macros.
#define TAM_MAX_ARREGLO 100
Co#+i!dor d( C
El compilador de C traduce el cdigo fuente en cdigo de ensamblador. El cdigo fuente es recibido
del preprocesador.
En*#&!dor
El ensamblador crea el cdigo fuentei o los archivos objeto. En los sistemas con UNX se podrn ver
los archivos con el sufijo .o.
Li"dor
Si algn archivo fuente hace referencia a funciones de una biblioteca o de funciones que estn
definidas en otros archivos fuentes, el !i"a#or combina estas funciones (con main()) para crear un
archivo ejecutable. Las referencias a variables externas en esta tapa son resueltas.
EVAL$ACIN DE APRENDI@AJE
En C :3 tr(* ti+o* d( *(nt(nci* !* cu!(* *on<..
4
de expresin, de control y compuestas.
&4 de expresin, de control y complejas
c4 de expresin, de control y raras
d4 de expresin, raras y complejas
(4 de expresin, de control y de error
S( uti!i6n +r r(!i6r &uc!(* o r#i-iccion(*
4
sentencia control
&4 sentencia de compuestal
c4 sentencia de afirmacin
d4 sentencia de compleja
(4 sentencia de expresin
Fc(n r(-(r(nci ! r(!cin (ntr( uno* )!or(* 3 otro*
4
operadores relacionales
&4 operadores sumarios
c4 operadores aritmticos
d4 operadores de expresin
(4 operadores de lgica
S( r(-i(r( ! -or# (n 0u( (** r(!cion(* +u(d(n con(ctr*( (ntr( *i.
4
operadores lgicos
&4 operadores sumarios
c4 operadores aritmticos
d4 operadores de expresin
(4 operadores de lgica
E*t1 -or#d +or )ri* *(nt(nci* indi)idu!(* (nc(rrd* (ntr( !!)(*
4
sentencia compuesta
&4 sentencia de control
c4 sentencia de afirmacin
d4 sentencia de compleja
(4 sentencia de expresin
BIBLIOGRA%IA
http://dac.escet.urjc.es/docencia/ETC-Superior/teoria-cuat1/HojaEj5.pdf
EVAL$ACIN DE APRENDI@AJE
1.X E*t( ti+o d( *o-tAr( (* (#+!(do +or (! u*urio +r *i#+!i-icr *u )id 3 *( +r (*cri&ir un
t(Eto o +r #n('r "rnd(* )o!7#(n(* d( dto*.
4 6oft7are de aplicacin
&4 Software de desarrollo
c4 Software de comunicacin
d4 Software de aplicacin y desarrollo
(4 Software
/.X E*t( ti+o d( *o-tAr( (* (! #1* *o!icitdo* +or ! #3or, d( !o* u*urio*.
4 68 de aplicacin
&4 SW de desarrollo
c4 SW de comunicacin
d4 SW de contabilidad
(4 SW de proposito
3.X Id(nti-ic cu!(* *on !o* ti+o* d( !(n"u'(* d( +ro"r#cin 0u( (Ei*t(n Nd( cu(rdo *u
+ro+*ito4
4 )eneral " Espec9fico
&4 Sheware y kernel
c4 Compiladores e intrpretes
d4 General y real
(4 Jerrquico y Arborescente
L.X 9?todo d( +ro"r#cin 0u( ti(n( co#o +rinci+! crct(r,*tic ! "(n(rcin d( un cdi"o
4 Programacin estrucuturada
&4 Programacin de Venn
c4 Programacin de Wells
d4 Programacin Modular
(4 programacin
K.X Accin con*i*t(nt( (n ! (!&orcin o #nt(ni#i(nto d( +ro"r#* in-or#1tico*
4 Programacin
&4 Programacin estructurada
c4 Programacin modulada
d4 Programacin de Venn
(4 Programacion de Wells
W.X Id(nti-ic ! +!&r 0u( *( (#+!( +r r(!i6r ! !(ctur d( !o* di)(r*o* id(nti-icdor(* 0u( *(
#n('n (n (! !"orit#o.
4 Leer
&4 Escribir
c4 Hacer
d4 Mientras
(4 For
T.X Id(nti-ic ! +!&r 0u( *( (#+!( +r i#+ri#ir !o* r(*u!tdo* o #(n*'(* d( un +roc(*o 0u( *(
:3 r(!i6do.
4 Escribir
&4 Leer
c4 Mientras
d4 Hacer
(4 For
Y.X E* ! r(+r(*(ntcin "r1-ic d( ! *o!ucin d( un +ro&!(#.
4 Diagrama de :lu;o.
&4 Algoritmo
c4 Pseudocdigo
d4 Ciclo
(4 Anlisis
V.X Id(nti-ic cu!(* *on !* +!&r* con !* 0u( d(&( inicir 3 t(r#inr un +*(udocdi"o
4 +nicio<fin
&4 Repetir/mientras
c4 For/while
d4 Hacer/mientras
(4 Leer/escribir
1S.X $n !"orit#o d(&( (*tr d(-inido. SI *( *i"u( do* )(c(* *( d(&( o&t(n(r (! #i*#o r(*u!tdo.(*t (*
! crct(r,*tic....
4 Claro
&4 Preciso
c4 Finito
d4 Formal
(4 Normal

Das könnte Ihnen auch gefallen