Tem a 3 :Program ación en C :C onceptos B ásicos 3.1 - O rígenes delC :ElestándarAN SI.Portabilidad 3.2 - Identificadores y palabras reservadas 3.3 - Tipos de datos 3.4 - C onstantes 3.5 - Variables 3.6 - Expresiones 3.7 - O peradores Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 1 Tem a 3 :Program ación en C :C onceptos B ásicos 3.8 - Sentencias 3.9 - C om entarios 3.10 - Program ación elem entalen C 3.10.1-Estructura de un program a 3.10.2-Archivos de cabecera 3.10.3-Entrada y salida de datos 3.10.4-Sentencias de controlde program a Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 2 3.1 - O rígenes delC :Elestándar A N SI.Portabilidad 1978 “The C Program m ing Language”, Brian Kernighan y D ennis R itchie D écada 80’Expansión rápida delC ,gracias a que se diseñaron com piladores e intérpretes para m ultitud de plataform as Aparecen versiones distintas -> poca portabilidad Instituto Am ericano de Estándares (AN SI)propone unas norm as m ínim as que deben cum plirlos com piladores e intérpretes. Ventajas dellenguaje C : Ö Lenguaje de propósito general.U tilpara diseñarsistem as operativos hasta softw are de gestión. Ö Favorece la program ación estructurada y eldiseño m odular Ö Perm ite program artanto a bajo nivelcom o a alto nivel Ö R epertorio de instrucciones pequeño.Su potencia se am plía con las funciones de biblioteca y las propias delusuario Ö Portabilidad.Program a utilizable en varias plataform as. Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 3 3.2 - Identificadores y palabras reservadas Identificador:nom bre con elque elU SU AR IO designa un dato u objeto – Secuencia de caracteres.Siem pre com ienza porletra o “_” – ElestándarAN SIreconoce hasta 31 caracteres en los identificadores Palabra reservada :definidas porellenguaje (estándarAN SI).En ocasiones elcom piladorañade alguna palabra propia. auto double int struct break else long sw itch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static w hile Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 4 3.3 - Tipos de datos 5 tipos : int char float entero 2 bytes de m em oria carácter 1 byte double com a flotante 2 palabras doble precisión (2xfloat) void vacío no ocupa m em oria » void función()...D eclara que una función no devuelve ningún valor » double función(void )...La función no tiene argum entos » void *puntero ...Elpuntero señala a objeto de tipo no especificado “ com a flotante 1 palabra “ m antisa (real),exponente (entero): m an 10 Exp Tem a 3 :Program ación en C .C onceptos básicos “ Fundam entos de Program ación 5 M odificadores de Tipo T IPO B its R AN G O char 8 ASC II unsigned char 8 0 .. 255 signed char 8 -128 .. 127 int 16 -32768 .. 32767 unsigned int 16 0 .. 65535 signed int 16 -32768 .. 32767 short int 8 -128 .. 127 unsigned short int 8 0 .. 255 signed short int 8 -128 .. 127 long int 32 -2147483648 .. 2147483649 signed long int 32 -2147483648 .. 2147483649 unsigned long int 32 0 .. 4294967296 float 32 6 dígitos precisión aprox. double 64 12 dígitos precisión aprox. 128 24 dígitos precisión aprox. long double Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 6 C onversiones de Tipo En operaciones donde aparecen dos o m ás tipos de datos diferentes,los de m enorrango se igualan altipo de m ayorrango En operaciones de asignación “Y=X “,la variable origen X se convierte al tipo de la variable destino Y.En ocasiones se produce pérdida de inform ación: T IPO D ES T IN O T IPO O R IG EN signed char char char short int char int char long int short int int short int long int 2 4 bits m as significativos int long int 1 6 bits m as significativos int float Parte fraccionaria, com o m ínim o float double Precisión, resultado redondeado double long double Tem a 3 :Program ación en C .C onceptos básicos PÉR D ID A D E IN FO R M A C IÓ N D estino negativo si valor > 1 2 7 S igno 8 bits m as significativos 2 4 bits m as significativos 8 bits m as significativos Precisión, resultado redondeado Fundam entos de Program ación 7 3.4 -C onstantes C O N STAN TE :dato que no varia durante la ejecución delprogram a 3 tipos :C arácter/C adena de caracteres /N um éricas Ö C AR ÁC TER – x = ‘A’ ... C om illas SIM PLES – x = 65 (código ASC II65 es ‘A’) Ö C AD EN A D E C AR AC TER ES – y = “PEPE” ... C om illas D O BLES Equivale a un AR R AY de caractéres ... P E P E \0 SEC U EN C IAS D E ESC APE :caracteres ASC IIno im prim ibles que realizan determ inadas acciones. A S C II S ecuencia C arácter A S C II S ec u e n cia C arácter 0 \O nulo 12 \f F ro m fe ed 7 \a sonido B ELL 13 \r R eto rn o d e c a rro 8 \b B ackspace 34 \” C o m illas ( “ ) 9 \t tab.horizontal 39 \’ C o m illas ( ‘ ) 10 \n nueva linea 63 \? In terro g a ció n ( ? ) 11 \v tab.vertical 92 \\ B ac ksla sh ( \ ) Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 8 3.4 -C onstantes (cont) Ö N U M ÉR IC AS – 2 tipos :Enteras y C om a Flotante – 3 Sistem as de num eración : • D ecim al(base 10) • O ctal(base 8)com ienzan por‘O ’.Ej:O 73 • H exadecim al(base 16)com ienzan por‘O X’.Ej:O X1E – Se utilizan unos caracteres para m odificarelTipo : • U ,u -unsigned int: 564U • L ,l -long int: 453234L • U L ,ul-unsigned long int: 6734U L – N úm eros en com a flotante :elcarácter‘e’,‘E’separa la m antisa del exponente. Ej -564E31 Sino se indica lo contrario,se consideran núm ero en D oble Precisión (double) Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 9 3.5 -Variables Identificadorcon capacidad de cam biarsu valordurante la ejecución del program a Elnom bre de la variable com ienza con letra m inúscula y no adm ite ‘_’ Ö D EC LAR AC IÓ N :la sentencia de declaración crea la variable alprincipio delprogram a. – Form ato : tipo identificador [,identificador]...; int radio,diám etro; – Ejem plo : char letra; Ö IN IC IALIZAC IÓ N :Asignar un valoriniciala la variable – Form ato : tipo identificador = constante; int sem estre=6; – Ejem plo : int cuatrim estre=4,trim estre=3; int m es,year=12; la variable m es no está inicalizada.C onviene separarlas variables inicializadas de las que no lo están. Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 10 3.6 -Expresiones Secuencia de datos sim ples,operandos (constantes,variables..)unidos en su caso,porm edio de uno o varios operadores. 14 ,-12>b ,3+7 ,a*(b+7/d)/8-c)... – Ejem plo : Elvalorde la expresión se obtiene realizando la operación necesaria 3.7 -O peradores Sím bolo que indica una operación o transform ación de uno o varios operandos 4 tipo de operadores : – O peradorde ASIG N AC IÓ N – O peradores AR ITM ÉTIC O S – O peradores R ELAC IO N ALES – O peradores LÓ G IC O S Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 11 3.7 -O perandos (cont) Ö O PER AD O R D E ASIG N AC IÓ N = Asigna elvalorfinalde una expresión a un identificador identificador= expresión ; Adm ite asignaciones m últiples identificador1 = identificador2 = ...= expresión ; Ö O PER AD O R ES AR ITM ÉTIC O S :Binarios /U narios – O peradores BIN AR IO S (2 operandos) + (sum a)-(resta)* (m ult)/(div)% (m ódulo,resto división) % solo aplicable división entre enteros C on operandos de distinto tipo,elde m enorrango se convierte al tipo de m ayorrango (antes de la operación).R esultado tipo de m ayorrango Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 12 3.7 -O perandos (cont) Ö O PER AD O R ES AR ITM ÉTIC O S :Binarios /U narios – O peradores U N AR IO S (1 operando): ++ (m enos unario)cam bia elsigno deloperando.Ej:-3 (increm ento +1).Ej: y=5*++x equivale y=5*(x+1) y=5*x++ equivale y=(5*x)+1 -- (decrem ento -1).Ej:y=5*--x equivale Y=5*(x-1) sizeof (tam año de)calcula eltam año (bytes)de un objeto Ej:intx ;y=sizeofx ...y tom a elvalor1 z=sizeof1000 ...z tom a elvalor2 Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 13 3.7 -O perandos (cont) Ö O PER AD O R ES R ELAC IO N ALES < <= > >= ==(igualque) !=(distinto de) D evuelve un valorC IER TO (internam ente núm ero distinto de 0) o FALSO (internam ente núm ero 0) Ö O PER AD O R ES LÓ G IC O S && (and) ||(or) !(not) D evuelve un valorC IER TO (1 ó !=0)o FALSO (0) O P ER A D O R PR EC ED EN C IA D E O PER AD O R ES (),[] -,+ + , ! , sizeof S e evalúan d e d erecha a izquierda * ,/,% + < ,- < = > = = , != > = && || ?: = ,+ = ,-= ,* = ,/= ,% = Tem a 3 :Program ación en C .C onceptos básicos S e evalúan d e d erecha a izquierda Fundam entos de Program ación 14 3.8 -Sentencias “instrucción com pleta para que elordenadorrealice una acción “ Pueden serde tres tipos : Ö Sentencias SIM PLES : N orm alm ente variable + asignación + expresión.Ej:x=3 ;++x ; Siem pre acaban en ; Ö Sentencias C O M PU ESTAS :conjunto de sentencias encerradas entre llaves { }.N unca acaban en ; Ö Sentencias de C O N TR O L :deciden elflujo de ejecución – SELEC C IÓ N /ITER AC IÓ N /BIFU R C AC IÓ N IN C O N D IC IO N AL 3.9 -C om entarios Texto aclaratorio encerrado entre /*(texto)*/ Ignorado porelcom pilador. Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 15 Tem a 3 :Program ación en C :C onceptos B ásicos 3.10 -Program ación elem entalen C 3.10.1 -Estructura de un program a escrito en C 3.10.2 -Archivos de cabecera 3.10.3 -Entrada y salida de datos 3.10.4 -Sentencias de controlde program a Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 16 3.10.1 -Estructura de un program a en C /* C O M EN TAR IO S */ Inform a alcom piladorde los archivos externos que va a #IN C LU D Es utilizarelprogram a #D EFIN Es TYPED EFs D EC LAR AC IÓ N de variables globales FU N C IO N ES m ain() { (cuerpo delprogram a) } Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 17 3.10.2 -A rchivos de cabecera Archivos que utiliza elcom piladorpara reconocerlas constantes y funciones externas que va a utilizarelprogram a. Se definen : Ö N om bre y valorde las C O N STAN TES Ö N om bre,parám etros que necesita y tipo de resultado que devuelven las FU N C IÓ N ES Sintaxis : – #include <nom breArchivoC abecera.h> Archivo de cabecera de la librería estándarsum inistrada porel com pilador.Los m ás utilizados son : stdio.h ..Funciones de entrada/salida de los ficheros estándar y de m anejo de archivos m ath.h ..Funciones m atem áticas (trigonom ét,potencias,..) stdlib.h ..Funciones de caráctergeneral – #include “c:\..path..\nom breArchivoC abecera.h” Archivo de cabecera definido porelprogram ador Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 18 3.10.3 -Entrada y salida de datos Funciones que perm iten introducirdatos desde elTEC LAD O y m ostrar inform ación en la PAN TALLA delordenador: Ö intgetchar() librería stdio.h – Lectura delsiguiente carácterdeldispositivo estándarde entrada de datos (teclado) – D evuelve elcarácterleído en form a de entero Ö intputchar(intc) librería stdio.h – Escribe en eldispositivo estándarde salida (m onitor)elcarácter alm acenado en la variable entera “c” – D evuelve elcarácterescrito. #include <stdio.h> m ain() { charc; c=getchar(); putcha(c); Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 19 } 3.10.3 -Entrada y salida de datos Ö intscanf(char *form ato,listaVariables) librería stdio.h – Lectura de diferentes tipos de datos desde teclado – char*form ato ..Indica eltipo de variable y form ato de lectura • C adena de caracteres donde elcódigo de tipo está precedido del sím bolo % : c C arácter d e f g h i o s u x Entero decim al C om a flotante con exponente C om a flotante C om a flotante (e ó f) Entero corto Entero decim al,octaló hexadecim al Entero octal C adena de caracteres Entero decim alsin signo Entero hexadecim al • (opcional)N úm ero entre % y elcódigo de tipo ..indica elnúm ero m áxim o de caracteres que acepta delteclado para esa variable (incluyendo puntos decim ales,”e”de float,etc) – listaVariables ..Variables a leerprecedidas porelsím bolo & • Los separadores de los datos podrán serespacios o “\n”(enter) Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 20 3.10.3 -Entrada y salida de datos Ö intscanf(char *form ato,listaVariables) Ö -EJEM PLO S intcoste; floatinteres; chartipo; scanf(“% d% f% c”,&coste,&interes,&tipo); entrada "23 45.3 pepe[enter]" >> coste=23,interes=45.3,tipo='p' entrada "43[enter]1.1[enter]julio[enter]" >> coste=43,interes=1.1,tipo='j' scanf(“% 2d% 4f% c”,&coste,&interes,&tipo); entrada "123 12.345 k" >> coste=12,interes=12.3,tipo='k' scanf(“% 3d@ hola% 5e% c”,&coste,&interes,&tipo); entrada "1234@ hola45e321 g" >> coste=123,interes=45e32,tipo='g' entrada "1234 45e321 g" >> error Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 21 3.10.3 -Entrada y salida de datos Ö intprintf(char *form ato,listaVariables) librería stdio.h – M uestra en pantalla listaVariables con un form ato determ inado – char*form ato ..Tipo de cada variable y form ato visualización • Se pueden incluircadenas de texto y secuencias de escape • Elcódigo de tipo está precedido delsím bolo % y coinciden con los enum erados en la función scanf(excepto tipo h) • Sieltipo no coincide con elde la variable,se visualizará en el form ato nuevo sin m odificarla variable. • Se puede especificarelnúm ero de caracteres a representar. – listaVariables ..Variables a visualizar(N O están precedidas de & ) EJEM PLO S :sidefinim os ...floatx=6.123 se visualiza printf("R esultado :% d",x) printf("R esultado :% 3d",x) " printf("R esultado :% 3.1f",x) " printf("R esultado :% 3.1f",(int)x) " Tem a 3 :Program ación en C .C onceptos básicos R esultado : R esultado : R esultado : R esultado : XX XX 6.1 6.0 Fundam entos de Program ación 22 3.10.4 -Sentencias de controlde program a Ö SELEC C IÓ N SIM PLE : if (expresión) sentencia1; else sentencia2; Siexpresión=cierta<>0 se ejecuta la sentencia 1,en caso contrario 2 Sideseam os que sentencia1 ó sentencia2 contenga m as de una sentencia,deberem os encerrarlas entre llaves { } Ejem plo : if (n!=0) { printf("Introduce tu edad :"); scanf("% d",edad)); } else printf("ER R O R :\" n \" no puede sercero\n"); O bservarque sideseo escribirun m ensaje utilizando las com illas ("n"),debo colocarlas com o secuencias de escape para distinguirlas de las com illas que delim itan eltexto. Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 23 3.10.4 -Sentencias de controlde program a ÖSELEC C IÓ N M Ú LTIPLE sw itch (expresion) { case kVALO R 1: sentencias-1 [break;] case kVALO R 2: sentencias-2 [break;] [default: sentencias-N ] } #include <stdio.h> void m ain() { intx,y,n; scanf("% d% d",& x,& y); sw itch (n= unsigned int(x/y)) { case 0: printf("Elresultado es nulo"); break; case 1: printf("Elresultado es la unidad"); break; default: printf("Elresultado es > unidad"); } } Según elvalor de una "expresión" ,se ejecuta un conjunto de sentencias Si"expresión" no tom a ningún valor contem plado,se ejecutan las sentencias-N (por defecto) "break" efectúa una salida incondicionalde la estructura de control Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 24 Ejem plo :Sentencia SW ITC H #include <stdio.h> void m ain() { intcodigo; char color,talla; printf("\nEscribe elcodigo delarticulo (nnnct): "); scanf("% 3d% c% c",& codigo,& color,& talla); printf("\nA rticulo N um ero % d",codigo); printf("\nC olor :"); sw itch (color) { case 'A ': printf("A ZU L"); break; case 'R ': printf("R O JO "); break; default: printf("N O C O D IFIC A D O "); } Tem a 3 :Program ación en C .C onceptos básicos printf("\nTalla :"); sw itch (talla) { case 'P': printf("PEQ U EN A "); break; case 'G ': printf("G R A N D E"); break; case 'X': printf("EXTR A G R A N D E"); break; default: printf("N O C odificado"); } } Fundam entos de Program ación 25 3.10.4 -Sentencias de controlde program a Ö R EPETIC IÓ N C O N C O N D IC IÓ N IN IC IAL w hile (expresión) { sentencias } Ö R EPETIC IÓ N C O N C O N D IC IÓ N FIN AL do { sentencias } w hile (expresión) Tem a 3 :Program ación en C .C onceptos básicos #include <stdio.h> void m ain() { char c=' '; w hile (c != '\n') { c=getchar(); putchar(c); } } #include <stdio.h> void m ain() { char c=' '; do { c=getchar(); putchar(c); } w hile (c != '\n'); } Fundam entos de Program ación 26 3.10.4 -Sentencias de controlde program a Ö R EPETIC IÓ N C O N C O N TAD O R for (inicial;expresión ;cuenta ) { sentencias } #include <stdio.h> void m ain() { intdato,veces,j; printf("\nR ealizar para elentero :"); scanf("% d",& dato ); for (j=1 ;j<=dato ;j++) for (veces=0 ;veces<j;veces++) printf("% d",j); printf("\n"); } Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 27 3.10.4 -Sentencias de controlde program a Ö R U PTU R A: break; Perm ite salida incondicionaldelbucle m ás interno en que se encuentre (term inarbucle o sw itch) Ö C O N TIN U AR : continue; Se em plea para saltarse elresto de la pasada actual delbucle.Elbucle no term ina,sólo no se ejecutan las instrucciones a continuación en él saltando a la siguiente pasada. Ö SALTO IN C O N D IC IO N AL: goto etiqueta; Salta de form a incondicionala la instrucción asociada con la etiqueta. Ejem plo: if(x<0) goto etiqueta; else ..... etiqueta:printf(“Bla bla y bla”); Ö O PER AD O R C O N D IC IO N AL: expresion1 ? expresion2 :expresion3; Siexpresion1 es cierta,se evalúa expresion2 adquiriendo este valorla expresión condicional.Sies falsa (0)se evalúa expresion3 adquiriendo ese valorla expresión condicional. Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 28 EJEM PLO S. Identificadores : z juan84 program a_1 9 5hojas program a’1 tierraVerde O LE! M ío _vale VO LTAJE kw *hora no-vale C onstantes: enteras decim ales. 127 -23 9999 1,00 9.0 1 2 3 093 enteras octales. 07 0 07745 125 082 01.11 05,0 enteras hexadecim ales. 0x3 0xf 0xaFd18 0xeg 0xA.00 0fbbb com a flotante. 0. 1.0 8.43 6E-3 -2E-2 0.32e14 4.3e2 2 2,9223 9e3.3 5e 11 Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 29 EJEM PLO S.(C O N T.) C onstantes: C arácter. ‘a’ ‘H ’ ‘\n’ ‘‘ “A” ‘ab’ C adena de caracteres. “vale” “N om bre\nApellidos” “ 1 “ “#200 Euros#” “C :\\D O S\\*.*” “\”elm ejor\”” ‘no vale’ “tam poco vale’ Sim bólicas. #define R AD IO 3.1 #define PI 3,1416 #define N O M BR E “Pepe” Variables: shortinta,b; floatx = 10e-3,y = 1.0; Tem a 3 :Program ación en C .C onceptos básicos charfincadena = ‘\0’; Fundam entos de Program ación 30 EJEM PLO S.(C O N T.) Expresiones: Asignación. y = 3; c = “N om bre”; x = y = 8.0; O peradores aritm éticos. Inta=1,b=4,y; floatx=3.0; y=a+b; y vale 5 y=a+b*3; y vale 15 y=(a+b)*10; y vale 50 y=b% a; y vale 0 y=b% x; operando ilegal y=--b; y vale 3,b vale 3 y=b--; y vale 4,b vale 3 C onversión de tipos. (float)a/2 resultado 0.5 y=b% (int)x; y vale 1 Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 31 EJEM PLO S.(C O N T.) O peradores relacionales. a<b verdadero a==b falso a!=b verdadero a<=b verdadero a<=3 verdadero a<a% b falso a<“Juan” errorcom pilación portipos incom patibles O peradores lógicos a<b&&a<=b verdadero a==b ||a<=2 verdadero (a<b) falso a<b && a<a% b falso 1 ||a<b && a<b% b verdadero Sentencias: Sim ples. y=b*a; printf(“Pepe M ero”); C om puesta. { a++; printf(“Pepe M ero); } Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 32 Tabla de caracteres A SC IIestándar 0 1 2 3 4 5 6 7 8 9 10 11 12 0 nul nl dc4 rs ( 2 < F P Z d n x 1 soh vt nak us ) 3 = G Q [ e o y 2 stx np syn sp * 4 > H R \ f p z Tem a 3 :Program ación en C .C onceptos básicos 3 etx cr etb ! + 5 ? I S ] g q { 4 eot so can “ , 6 @ J T ^ h r | 5 enq si em # 7 A K U _ i s } 6 ack dle sub $ . 8 B L V ` j t ~ 7 bel dc1 esc % / 9 C M W a k u del 8 bs dc2 fs & 0 : D N X b l v 9 ht dc3 gs ‘ 1 ; E O Y c m w Fundam entos de Program ación 33 EJEM PLO :C onvierte m ayúsculas <> m inúsculas #include <stdio.h> void m ain() { charc=''; w hile (c!='\n') { c=getchar(); if(c>='A'&& c<='Z') putchar(c+32); else if(c>='a'&& c<='z') putchar(c-32); else putchar(c); } } Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 34 EJEM PLO :C alcular elm ínim o de tres núm eros enteros. #include <stdio.h> m ain() { inta,b,c; printf(“\nIntroduce tres núm eros “); scanf(“% d % d % d”,&a,&b,&c); printf(“\nElm enornúm ero es:“); if(a<b && a<c) printf(“A = % d”,a); else if(b<a && b<c) printf(“B = % d”,b); else printf(“C = % d”,c); } Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 35 EJEM PLO :C áculo delfactorialde N . #include <stdio.h> m ain() { intdato,n,resultado=1; printf(“D esea calcularelfactorialde:“); scanf(“% d”,&dato); n=dato; w hile (n>0) { resultado= resultado*n; n=n-1; } printf(“\n\nEl% d!= % d”,dato,resultado); } Tem a 3 :Program ación en C .C onceptos básicos Fundam entos de Program ación 36