Sei sulla pagina 1di 16

Instituto Tecnolgico de Chihuahua

[Inicio] [Final] Home Index

"Arreglos y Cadenas"
P rogramacin C
Alberto Pacheco apacheco@itchihuahua.edu.mx
(2/May/2007 2:54pm)

Presentacin hecha en ExpoVision, Alberto Pacheco, Ver 1.0.55, MEXICO D.R. 2013
"Arreglos y Cadenas" por Alberto Pacheco bajo licencia Creative Commons Reconocimiento-NoComercialCompartirIgual 3.0 Unported.

Instituto Tecnolgico de Chihuahua


[Inicio] [Final]

Programacin C: "Arreglos y Cadenas"

Contenido

Atrs Sig

M a p aC o n c e p t u a l 1 .T i p o sd eD a t o sD e r i v a d o s 2 .A r r e g l o s 4 .A r r e g l o sB i d i m e n s i o n a l e s 5 .J u e g oA d i v i n ac o nA r r e g l o s 6 .C a d e n a s 7 .L i b r e r as t r i n g . h 8 .E j e m p l o sp a r aC a d e n a s 1 0 .A m b i t o( S c o p e ) 1 2 .A r r e g l o sd eC a d e n a s 1 3 .s p r i n t f :C o n v e r s i nd en m e r o sac a d e n a s Referencias

(1/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Tipos de Datos Derivados


<<

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] >>

[Ref] [CSS]

Tipos de Datos
Primitivos (TDP) : Datos que saben procesar los operadores de Lenguaje C, e.g. c h a r ,i n t ,d o u b l e . . Derivados (TDD): Se basan en los TDP, tienen muy pocos operadores

Arreglos Cadenas
Apuntadores Estructuras

(2/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig
[Ref] [CSS]

[Inicio] [Final]
<< [1]

Arreglos
[2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] >>

Arreglos: lista ordenada de datos de un mismo tipo


Una variable arreglo se declara especificando su tamao, e.g. un arreglo que contiene 10 nmeros enteros: i n tx [ 1 0 ] ; Cada elemento se consulta mediante un ndice numrico, e.g. asigna un valor al primer elemento (ndice igual a cero) del arreglo: x [ 0 ]=5 ;

Lenguaje C no soporta operadores primitivos a nivel de arreglos, i.e. asignar,


copiar, comparar, sumar, imprimir, etc., e.g. para comparar si dos arreglos son iguales debemos comparar elemento por elemento Inicializacin: un arreglo se puede inicializar mediante constantes especiales llamadas listas de inicializacin, e.g. i n tx [ 4 ]={ 2 , 4 , 6 , 8 } ; Excepcin: el tamao de un arreglo no es necesario cuando se inicializa el arreglo,

e.g.

i n tx [ ]={ 2 , 4 , 6 , 8 } ;

(3/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig
[Ref] [CSS]

[Inicio] [Final]
<< [1] [2]

Arreglos
[3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] >>

/ /a r r a y 1 . c :I m p r i m eys u m at o d o sl o se l e m e n t o sd e la r r e g l o # i n c l u d e< s t d i o . h > # d e f i n eT A M6 v o i dm a i n ( ) { i n tm [ T A M ]={7 5 ,8 0 ,7 2 ,9 1 ,8 3 ,8 7} ; i n ti ,s u m=0 ; f o r(i = 0 ;i < T A M ;i + +){ p r i n t f ( " m [ % d ] = % d \ n " , i , m [ i ] ) ; s u m+ =m [ i ] ; } p r i n t f ( " S u m=% d \ n " ,s u m ) ; }

(4/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Arreglos Bidimensionales
<< [1] [2] [3]

[4] [5] [6] [7] [8] [9] [10] [11] [12] [13] >>

[Ref] [CSS]

/ /a r r a y 2 . c :I m p r i m eys u m ad a t o st a b l a2 x 3 # i n c l u d e< s t d i o . h > # d e f i n eR O W S2 # d e f i n eC O L S3 v o i dm a i n ( ) { i n tm [ R O W S ] [ C O L S ]={{ 1 1 , 1 2 , 1 3 } ,{ 2 1 , 2 2 , 2 3 }} ; i n ti ,j ,s u m=0 ; f o r(i = 0 ;i < R O W S ;i + +){/ /C a d ar e n g l n f o r(j = 0 ;j < C O L S ;j + +){/ /C a d ac o l u m n a p r i n t f ( " m [ % d ] [ % d ] = % d \ n " , i , j , m [ i ] [ j ] ) ; s u m+ =m [ i ] [ j ] ; } } p r i n t f ( " S u m=% d \ n " ,s u m ) ; }

(5/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Juego Adivina con Arreglos


<< [1] [2] [3] [4]

[5] [6] [7] [8] [9] [10] [11] [12] [13] >>

[Ref] [CSS]

/ /a d i v _ a r r a y 2 . c :J u e g oA d i v i n ac o nA r r e g l o sB i d i m e n s i o n a l e s

# i n c l u d e" adivina.h"

s t a t i ci n tN I V [ 3 ] [ 2 ]={{ 1 5 , 1 0 0 } ,{ 1 2 , 1 0 0 0 } ,{ 1 0 , 4 0 0 0 }} ;

m a i n ( ) { i n to c u l t o ,n u m ,i ,o p c ,o p o r t ,r a n g o ; d o{/ /R e p e t i rj u e g o d o{/ /R e p e t i rL e e rN i v e l p r i n t f ( " \ n \ n A D I V I N AU NN U M E R O ! ! \ n \ n Q u n i v e ld e s e a sj u g a r ? " ) ; p r i n t f ( " \ n \ t 1 )N o v a t o \ n \ t 2 )I n t e r m e d i o \ n \ t 3 )A v a n z a d o \ n " ) ; g e t _ n u m ( o p c ) ; }w h i l e(o p c < 1| |o p c > 3) ; o p c ;/ /A r r a yi n d e x :0 2 o p o r t=N I V [ o p c ] [ 0 ] ; r a n g o=N I V [ o p c ] [ 1 ] ; p r i n t f ( " \ n \ n A D I V I N AN U M E R O1-% d " , o p o r t ) ; p r i n t f ( " \ n E N% dO P O R T U N I D A D E S \ n " , r a n g o ) ; r a n d o m i z e ( ) ; o c u l t o=1+r a n d o m ( r a n g o ) ; f o r(i = 1 ;i < = o p o r t ;i + +){/ /R e p e t i rI n t e n t o p r i n t f ( " \ n % d )" , i ) ; g e t _ n u m ( n u m ) ; i f(n u m= =o c u l t o)b r e a k ; i f(n u m>o c u l t o) p r i n t f ( " \ n A N O T AU NN U M E R Om e n o r " ) ; e l s e p r i n t f ( " \ n A N O T AU NN U M E R OM A Y O R " ) ; }/ / f o r i f(n u m= =o c u l t o) p r i n t f ( " \ n \ n F E L I C I D A D E S !G A N A S T EE N% dI N T E N T O S " , i ) ; e l s e p r i n t f ( " \ n \ n A G O T A S T EO P O R T U N I D A D E S .M IN U M E R O = % d " , o c u l t o ) ; p r i n t f ( " \ n \ n D e s e a sv o l v e raj u g a r( S I = 1 ,N O = 0 ) ? \ n " ) ; g e t _ n u m ( o p c ) ;/ /T u r b oCB U G ? ? }w h i l e(o p c) ; f i n ( ) ; }

(6/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig
[Ref] [CSS]

[Inicio] [Final]
<< [1] [2] [3] [4] [5]

Cadenas
[6] [7] [8] [9] [10] [11] [12] [13] >>

Cadena de texto: es un arreglo de characteres, e.g.


c a d e n a [ 1 2 ] ;

c h a r

Excepcin: Por comodidad, la constante tipo cadena es la nica constante TDD que soporta C, en vez de c h a rx [ ] = { ' H ' , ' i ' , ' \ 0 ' } ;se usa c h a rx [ ] = " H i " ; Fin-de-cadena (eos): El tamao del arreglo, i.e. cadena, debe considerar un espacio adicional al final del arreglo para colocar un eos, i.e. caracter ' \ 0 ' Librera Cadenas string.h: Dado que no existen operadores para arreglos y cadenas, existe la librera < s t r i n g . h >para copiar, comparar y procesar cadenas en general.

(7/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Librera string.h
<< [1] [2] [3] [4] [5] [6]

[7] [8] [9] [10] [11] [12] [13] >>

[Ref] [CSS]

Tabla 1. Algunas funciones para cadenas de la librera estndard < string.h>


F u n c i n s t r l e n ( s ) m e m s e t ( s , c , n ) s t r l w r ( s ) s t r u p r ( s ) s t r c p y ( s 1 , s 2 ) s t r d u p ( s ) s t r c a t ( s 1 , s 2 ) s t r c m p ( s 1 , s 2 ) s t r c h r ( s , c ) s t r s t r ( s 1 , s 2 ) s p r i n t f ( s , f m t , . . ) D e s c r i p c i n R e g r e s at a m a oc a d e n a , i.e. n o .c a r a c t e r e sa n t e sd e eos L l e n ac a d e n asc o nnc a r a c t e r e sc R e g r e s ac a d e n ac o n v e r t i d aam i n s c u l a s R e g r e s ac a d e n ac o n v e r t i d aaM A Y U S C U L A S C o p i ac a d e n as 1e ns 2 , e.g. s 1=s 2 R e g r e s ac o p i ac a d e n as , e.g. s 1=s C o n c a t e n ac a d e n a s e.g. s 1=s 1+s 2 R e g r e s ac e r os is 1e si g u a las 2 , p o s i t i v oon e g a t i v os is 1e sm a y o rom e n o r B u s c au nc a r a c t e rd e n t r od eu n ac a d e n a B u s c au n ac a d e n ad e n t r od eo t r ac a d e n a s t d i o . h :s i m i l a rap r i n t f ,e n v i ar e s u t a l d oac a d e n as

(8/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Ejemplos para Cadenas


<< [1] [2] [3] [4] [5] [6] [7]

[8] [9] [10] [11] [12] [13] >>

[Ref] [CSS]

/ /c a d e n a s 1 . c :I n v i e r t eu n ac a d e n a( v e r s i n# 1 ) # i n c l u d e< s t d i o . h > / /p u t c h a r v o i de j e m p l o ( ) { c h a rt e c [ 1 2 ]=" I T C H I H U A H U A " ; i n ti ; f o r( i = 1 0 ;i > = 0 ;i ) p u t c h a r ( t e c [ i ] ) ; p u t c h a r ( ' \ n ' ) ; } v o i dm a i n ( ) { e j e m p l o ( ) ; }

(9/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig
[Ref] [CSS]

[Inicio] [Final]

Cadenas
<< [1] [2] [3] [4] [5] [6] [7] [8]

[9] [10] [11] [12] [13] >>

/ /c a d e n a s 2 . c :I n v i e r t eu n ac a d e n a( v e r s i n# 2 ) # i n c l u d e< s t d i o . h > / /p u t c h a rp r i n t fp u t s # i n c l u d e< s t r i n g . h >/ /s t r l e ns t r c p ys t r l w r c h a rt e c [ 9 9 ] ,c e t [ 9 9 ] ;/ /G l o b a l e s v o i de j e m p l o ( ){ i n ti , j , k ; k=s t r l e n ( t e c ) ; f o r( i = k 1 , j = 0 ;i > = 0 ;i , j + + ) c e t [ j ]=t e c [ i ] ; c e t [ k ] = ' \ 0 ' ; } v o i dm a i n ( ){ s t r c p y ( t e c , " I T C H I H U A H U A " ) ; e j e m p l o ( ) ;/ / E n t r a d a : t e c ,S a l i d a : c e t p r i n t f ( " % s= >% s \ n " , t e c , s t r l w r ( c e t ) ) ; }

(10/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Ambito (Scope)
<< [1] [2] [3] [4] [5] [6] [7] [8] [9]

[10] [11] [12] [13] >>

[Ref] [CSS]

Contexto, Ambito, Alcance, Visibilidad o Scope: En lenguaje C, una variable "vive" dentro de un contexto o tiene cierto alcance, i.e.

scope

Variables Locales: Variables privadas locales a bloques o funciones


Se enmarca por un bloque {}, generalmente dentro de una funcin La variable se declara al inicio del bloque, se usa y se destruye al final del bloque Es posible duplicar y compartir variables en bloques anidados, pero en bloques independientes no es posible compartir variables Ejemplo: f ( )tiene dos variables yen contextos anidados.. Es vlido? Qu imprime el programa?
v o i df ( ) {/ /C o n t e x t oC 1 i n tx = 1 ,y = 2 ;/ /D a t o sL o c a l e se nC 1 {/ /C 2 i n ty = x ;/ /D a t o sC 2 p r i n t f ( " \ n y = % d " , y ) ;/ /Q u ei m p r i m e ? }/ /! C 2 p r i n t f ( " \ n y = % d " , y ) ;/ /Q u ei m p r i m e ? }/ /! C 1

(11/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Ambito (Scope)
<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

[11] [12] [13] >>

[Ref] [CSS]

Contexto Global: Variables pblicas a nivel de programa (archivo) disponibles en toda funcin
Estan fuera de todo bloque, se declaran fuera y antes que las funciones Su duracin es la del programa, desde que arranca su ejecucin hasta que ejecuta la ltima sentencia Precaucin: Cualquier sentencia de cualquier funcin puede alterar la variable, lo cual puede ocasionar problemas por errores de programacin Ejemplo: Qu imprime el sig. programa? los cambios hechos en una funcin a una
variable afectan a las dems? porqu al ltimo, la variable yno cambi?
i n tx = 1 ,y = 2 ;/ / V a r i a b l e sG l o b a l e s

v o i df ( ){ p r i n t f ( " \ n x = % d ,y = % d " , x , y ) ; x = 3 ; }

v o i dg ( ){ i n ty = 3 ; p r i n t f ( " \ n x = % d ,y = % d " , x , y ) ; }

v o i dm a i n ( ){ f ( ) ;g ( ) ; p r i n t f ( " \ n x = % d ,y = % d " , x , y ) ; }

(12/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

Arreglos de Cadenas
<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

[12] [13] >>

[Ref] [CSS]

Arreglo de cadenas: Es un arreglo bidimensional de tipo c h a r , i.e. arreglo de arreglos de caracteres


Ejemplo: Que significa 4 y 9 en n o m [ 4 ] [ 9 ] ? Imprime J u a n ? Por qu?
# i n c l u d e< s t d i o . h > # i n c l u d e< string.h> v o i dm a i n ( ){ i n ti ; c h a rn o m [ 4 ] [ 9 ]={" A n a " ," J u a n " ," M a r a " ," L u i s "} ; f o r(i = 0 ;i < 4 ;i + +) i f(s t r c m p ( n o m [ i ] , " J u a n " )! =0) p u t s ( n o m [ i ] ) ; }

(13/13)

Instituto Tecnolgico de Chihuahua

Programacin C: "Arreglos y Cadenas"


Atrs Sig

[Inicio] [Final]

sprintf: Conversin de nmeros a cadenas


<< [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]

[13] >>

[Ref] [CSS]

/ /b o l e t a . c :C a l c u l aei m p r i m ep r o m e d i od eu ng r u p o( 4a l u m / 3e x a m )

# i n c l u d e< s t d i o . h >/ /p r i n t f sprintf # i n c l u d e< string.h> / /m e m s e ts t r c a t

# d e f i n eR4/ /R o w s :N o .A l u m n o s # d e f i n eC3/ /C o l s :N o .E x a m e n e s

v o i dm a i n ( ) { i n t i ,j ,s u m ,c a l [ R ] [ C ] = { { 1 0 , 7 , 9 } , { 8 , 9 , 8 } , { 7 , 8 , 9 } , { 0 , 6 , 9 } } ; c h a rs [ 9 9 ] ,r [ R ] [ 9 9 ] = { " " , " " , " " , " " } ,n o m [ R ] [ 9 ] = { " A n a " , " G i l " , " L i s " , " F e r " } ; m e m s e t ( s , ' ' , 3 2 ) ;s [ 3 2 ] = 0 ; p r i n t f ( " \ n |N o m b r e|U 1|U 2|U 3|P r o m| \ n % s " , s ) ; f o r(i = 0 ;i < R ;i + +){ f o r(j = s u m = 0 ;j < C ;j + +){/ /R e p o r t eys u m a t o r i a s u m+ =c a l [ i ] [ j ] ;/ /S u m a t o r i ac a l i f s p r i n t f ( s , "|% 2 d " , c a l [ i ] [ j ] ) ;/ /C o n v i e r t ec a l i fac a d e n a s t r c a t ( r [ i ] , ( c a l [ i ] [ j ] ? s : "|N P " ) ) ;/ /A n e x as i g .c a l i f } p r i n t f ( " \ n |% 5 s% s|% 4 . 1 f| " , n o m [ i ] , r [ i ] , ( ( f l o a t ) s u m / C ) ) ;/ /R e p o r t ea l u m } }

Instituto Tecnolgico de Chihuahua


[Inicio] [Final]

Programacin C: "Arreglos y Cadenas"

Referencias

[Inicio] [Final]

[ A r r e g l o s ] [ CA r r a y s ] [ CL i b r a r y ] [ C R e f e r e n c e ] [ C a d e n ad e t e x t o ] [ C a d e n a s ] [ L e n g u a j e C ] [ S c o p e ] [ T D P ] [ V a r i a b l e s L o c a l e s ] [ a d i v i n a . h ] [ l e n g u a j e C ] [ l i b r e r a e s t n d a r d ] [ s p r i n t f ] [ s t r i n g . h ]

Wikipedia, "Arreglos", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / A r r a y

Wikibooks, "Programming:C arrays", 2005.


h t t p : / / e n . w i k i b o o k s . o r g / w i k i / P r o g r a m m i n g : C _ a r r a y s

Ross Richardson, "C Standard Library", 2003.


h t t p : / / w w w . i n f o s y s . u t a s . e d u . a u / i n f o / d o c u m e n t a t i o n / C / C S t d L i b . h t m l

Eric Huss, "The C Library Reference Guide", 1997.


h t t p : / / w w w . a c m . u i u c . e d u / w e b m o n k e y s / b o o k / c _ g u i d e / i n d e x . h t m l

Wikipedia, "Cadena de texto", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / C h a r a c t e r % 5 F s t r i n g % 5 F % 2 8 c o m p u t e r % 5 F s c i e n c e % 2 9

Wikipedia, "Cadenas", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / C h a r a c t e r % 5 F s t r i n g % 5 F % 2 8 c o m p u t e r % 5 F s c i e n c e % 2 9

Wikipedia, "Lenguaje C", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / C % 5 F p r o g r a m m i n g % 5 F l a n g u a g e

Wikipedia, "Scope", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / S c o p e % 5 F % 2 8 p r o g r a m m i n g % 2 9

Wikipedia, "TDP", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / P r i m i t i v e % 5 F t y p e

Wikipedia, "Variables Locales", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / L o c a l % 5 F v a r i a b l e

Alberto Pacheco, "Librera Juego Adivina", 2006.


h t t p : / / e x p o . i t c h i h u a h u a . e d u . m x / v i e w . p h p ? f = c _ 3 3 # p a g e 6

Wikipedia, "lenguaje C", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / C % 5 F p r o g r a m m i n g % 5 F l a n g u a g e

Wikipedia, "librera estndard", 2007.


h t t p : / / e n . w i k i p e d i a . o r g / w i k i / C % 5 F s t a n d a r d % 5 F l i b r a r y

About.com, "vsprintf", Linux / Unix Commands, 2005.


h t t p : / / l i n u x . a b o u t . c o m / l i b r a r y / c m d / b l c m d l 3 _ v s p r i n t f . h t m

The Open Group, "string.h library", The Single UNIX Specification, 1997.
h t t p : / / w w w . o p e n g r o u p . o r g / o n l i n e p u b s / 0 0 7 9 0 8 7 9 9 / x s h / s t r i n g . h . h t m l

Potrebbero piacerti anche