[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.html>


Más información sobre la lista de distribución Cconclase