[C con Clase] DISCULPAS
Steven Davidson
srd4121 en njit.edu
Sab Ago 27 11:36:29 CEST 2011
Hola Agustín,
2011/8/27 Agustín Sánchez <agus_pehua_06 en hotmail.com>
> Buenas noches a todos, les pido disculpas por la forma en que me dirigí a
> ustedes, y es lógico que se haya mal interpretado mi intención en utilizar
> esta lista de correo para comunicarme con ustedes. Es que son tantas las
> dudas que me surgen desde el tema de Vectores y Matrices, y todos los
> trabajos posteriores al mismo tratan de ese tema como base, y cuando me
> quiero poner a resolverlo, me resulta imposible, porque carezco de los
> conocimientos de Programación de vectores y matrices en C. Les mando
> preguntitas sueltas, que, a mi entender, son las más relevantes.
>
Veamos las dudas.
> ¿Cómo declarar y trabajar con vectores y subíndices?
>
La sintaxis de la declaración de un array (o vector) es:
<tipo> <nombre> [ <expresión_constante_entera> ];
Aquí,
<tipo> es el tipo de dato de cada elemento del array,
<nombre> es el nombre del array en sí,
<expresión_constante_entera> representa la cantidad máxima de elementos en
el array.
Por ejemplo,
int enteros[500];
Acabamos de declarar y de definir un array llamado 'enteros' que consiste de
500 elementos de tipo 'int'; o sea, un array de 500 enteros.
Para usar este array y acceder a sus elementos, usamos el nombre del array,
el operador [], y una expresión entera que representa el índice con base 0
(cero), lo cual indica el primer elemento. Por ejemplo,
enteros[0] = 10;
Con esto, accedemos al primer elemento, de índice 0 (cero), del array,
'enteros', y asignamos el valor de 10 a tal elemento.
enteros[1] = enteros[0] * 3;
Ahora accedemos al segundo elemento - índice 1 - para asignar el resultado
de multiplicación del primer elemento del array, 'enteros', y el valor
literal 3. En este caso, el resultado es 30, cuyo valor se asigna a este
segundo elemento de 'enteros'.
Sugiero que eches un vistazo a estos capítulos de nuestro curso de C++. No
te preocupes, los temas son válidos para C también:
- Cap. 8: http://c.conclase.net/curso/?cap=008#inicio
- Cap. 10: http://c.conclase.net/curso/?cap=010#inicio
Hay una relación muy estrecha entre arrays y punteros, por lo que sugiero
que también eches un vistazo a este tema de punteros:
- Cap. 13: http://c.conclase.net/curso/?cap=013#inicio
- Cap. 14: http://c.conclase.net/curso/?cap=014#inicio
- Cap. 17: http://c.conclase.net/curso/?cap=017#inicio
> ¿Cómo declarar y asignar estructuras?
>
La sintaxis para la declaración es:
struct <nombre> { <declaración_o_varias_declaraciones>; };
<nombre> es el nombre de la estructura, que en ocasiones puede omitirse,
pero no lo recomiendo,
<declaración_o_varias_declaraciones> significa que hay varias declaraciones
para cada campo de la estructura; pueden ser enteros, de coma flotante,
caracteres, arrays, otras estructuras, punteros, etc..
Por ejemplo,
struct Persona
{
char szNombre[64];
char szApellidos[128];
char szDomicilio[256];
char cSexo;
};
Ahora definimos una variable de este tipo,
struct Persona una_persona;
Para usar esta estructura (la variable), usamos su nombre, como cualquier
variable. Para acceder a cada campo de la estructura, usamos un operador
especial que es el punto. Por ejemplo,
una_persona.cSexo = 'V';
Accedemos a 'cSexo' para asignar el carácter 'V' a tal campo.
Sugiero que consultes el capítulo 11 de nuestro curso de C++:
http://c.conclase.net/curso/?cap=011#inicio Me temo que sí hay diferencias
entre C y C++ en este aspecto; por ejemplo,
- C no permite funciones como miembros, pero C++ sí.
- C requiere el vocablo 'struct' al usar el nombre de la estructura,
mientras que en C++ esto es optativo. Por ejemplo,
struct Persona una_persona; // C y C++
Persona una_persona; // C++ solamente
> ¿Cuándo usar puts en vez de printf y cuando gets en vez de scanf?
>
Si vas a mostrar una cadena de caracteres, usa 'puts()', la cual agregará un
carácter de nueva línea, '\n', al final. La función 'printf()' sirve para
construir una cadena de caracteres a partir de una cadena de formato.
Lo mismo sucede con 'gets()' y 'scanf()', pero para la lectura. Eso sí, se
desaconseja el uso de 'gets()' que en su lugar se debería usar 'fgets()',
aunque se guarde el carácter de fin-de-línea en la cadena.
Espero que todo esto te aclare las dudas.
Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110827/6f517ff3/attachment-0001.html>
Más información sobre la lista de distribución Cconclase