Autor Tema: Proyecto de Curso (Comentarios): Programación en C (2013, por Argentinator)

0 Usuarios y 1 Visitante están viendo este tema.

21 Febrero, 2013, 02:11 am
Respuesta #180

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Después de varios días sin actividad, agregué un post que tan sólo hace un pequeño testeo de cómo funcionan los números complejos en nuestra implementación local.

_____________

Hice una corrección en un post ya antiguo, en que desarrollé la teoría de los caracteres y las strings.

Allí decía ingenuamente que las constantes de caracter eran de tipo char.

En realidad esto no es exacto.

Lo corregí con esta otra frase:

El tipo de datos que se usa en C para representar caracteres es char.
(Sin embargo, el tipo de datos de una constante de caracter no es char, sino int).

Esta es una sutileza que en principio no se entiende mucho a cuento de qué viene.
La cuestión será analizada cuando abordemos el estudio profundo de los caracteres en C, que es muy complejo.

Además, sí es cierto que las strings son de tipo char[] o char*.
O sea que con eso no hay nada que aclarar ni corregir.

____________________

Por último, escribí un par de posts totalmente descontextualizados, en que no vemos nada del lenguaje C, sino sólo anécdotas de la vida, y consejos espirituales para programadores del siglo 21.


21 Febrero, 2013, 11:19 am
Respuesta #181

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 11,319
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino


Por último, escribí un par de posts totalmente descontextualizados, en que no vemos nada del lenguaje C, sino sólo anécdotas de la vida, y consejos espirituales para programadores del siglo 21.



 Ya lo estuve leyendo, cómo iba a dejar de hacerlo :)
 Por mi parte no tengo prisa en que que arreglen el bug ése del float, si necesito hacer algún programa para mis cosas siempre va a ser muy sencillo y, siendo así, puedo utilizar otros lenguajes menos profesionales que el C++. Pero está muy bien que te hayas "peleado" con esos sabios informáticos para que lo arreglen, porque los estudiantes de informática, e incluso los que ya son informáticos, seguro que sacan provecho de ello y evitan muchos dolores de cabeza.

 Un saludo y gracias.

21 Febrero, 2013, 02:36 pm
Respuesta #182

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Es que este curso no de es de C++, sino del viejo y decrépito C "pelado" sin el "++".

No voy a enseñar Programación Orientada a Objetos, nada de C++.

Un saludo

08 Septiembre, 2013, 11:49 pm
Respuesta #183

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Hola gente.

Desde el último comentario hecho aquí, he agregado lentamente los siguientes posts a las notas de "Dictado":

* ¿Cómo lograr que todo funcione? Partes I y II: Son unas estupideces que conté acerca de cómo veo la programación hoy en día. Una actividad no sólo tecnológica, computacional, sino también social, comunitaria. Para que un programa funcione bien, a veces necesitamos de otras personas...

* Pare de sufrir: Alternativas a la consola, Parte II: En esta ocasión lo que hago es instarles a reemplazar la consola estándar de Windows por otra que se consigue en Internet: ConEmu. Hay dos razones básicas por las cuales hago esto: (i) La consola ConEmu tiene al menos las mismas características que CMD, pero tiene una visualización más clara y agradable, además de poderse configurar con facilidad. (ii) ¡En la consola ConEmu se puede poner una imagen de fondo, que además se actualiza automáticamente!  ;D

Esto de tener una imagen de fondo que se actualiza al mismo tiempo que la imagen misma... nos será muy útil para futuros proyectos de programación gráfica. Es decir, vamos a poder realizar programación gráfica en C, sin necesidad de aprender o instalar librerías ajenas a las librerías que el estándar especifica de entrada.

(Aunque, eso sí, habrá que aprender un poco de formatos de imagen, al menos el más sencillo de todos: BMP, mapas de bits).

* Caracteres en Lenguaje C, Partes I, II, III, IV y V.

He abodardo allí el complicadísimo y durísimo tema de los caracteres.

Es un asunto tedioso de estudiar, difícil de comprender, y extenuante de explicar.

He intentado ser lo más preciso posible, procurando no cometer errores de ninguna índole en la exposición. Sin embargo, los recovecos de este tema son tantos, que lo más probable es que algo se me haya escapado.

** En la parte I hago una brevísima recorrida histórica sobre los conjuntos de caracteres y sus métodos de codificación. El recorrido no está completo, y he dejado cabos sueltos (por ahora) respecto a Unicode. Esto lo completaré en otro momento, pero lo que sigue puede "sobrevivir" sin ello. Para una exposición más detallada sobre la historia de los caracteres en computación, he estado escribiendo un artículo separado en la revista del foro (que también adolece por el momento de no tener la parte de Unicode):

Codificación de caracteres

** En la parte II introduzco de lleno toda una discusión técnica acerca de cuáles y cuántos son los caracteres que el estándar C admite. Se separa de entrada entre el "lugar" donde los programas compilan y el "lugar" donde ejecutan. En cada "lugar" puede haber distintos juegos de caracteres, o con codificaciones distintas.

La intención de analizar en detalle ese tema es, principalmente, comprender cuáles son los caracteres admitidos cuando estamos escribiendo un programa en C que se supone "válido" sintácticamente. ¿Podemos usar caracteres especiales, de otros idiomas, de Unicode, de otros juegos de caracteres exóticos, o que funcionan con algún método multibyte?

El estándar C habla de todo eso con detalle, y luego esos detalles se vuelven importantes si pretendemos conocer los límites del lenguaje, los caracteres que podemos usar, y el significado que tienen.

Una lección importante de este tema es que los caracteres que escribimos como cadenas de caracteres en nuestro programa, puede que no luzcan igual, o que no tengan la misma codificación cuando llevemos nuestro programa fuente de un sistema a otro, o cuando lo compilemos para ejecutarse en sistemas distintos al nuestro.

En todo caso, aprendemos de esto que si aparecen resultados extraños en la visualización de caracteres, es que "algo de todo este asunto" está involucrado ahí.

Prestando la debida atención, varios problemas relacionados a los caracteres en nuestros programas se pueden ir solucionando.

** En la parte III nos preocupamos por un tema más concreto: las constantes de caracter, constantes de caracter ancho, constantes de cadena y constantes de cadena de caracteres anchos.

Allí aprendemos sin lugar a dudas que el tipo de datos de una constante de caracter es un int (en el caso de caracteres "normales") o bien wchar_t (en el caso de caracteres "anchos").

Esto parece contradecir el sentido común, porque creeríamos que lo más "lógico" es que las constantes de caracter tengan tipo char.
Esto no es así, sin embargo, se puede asegurar que el numerito que codifica el código de un caracter en C será un valor "en el rango de valores" del tipo char.

Esto abre la puerta a la posibilidad de que haya caracteres con códigos ¡negativos!
Pero también el estándar C se previene a tiempo, y decide que los caracteres fundamentales del lenguaje (que llama básicos) siempre tienen un código positivo.

** En la parte IV sólo hago un resumen relajado de las cosas discutidas en las partes I, II y III.

** En la parte V se estudia el modo en que actúan los caracteres de control que el estándar C adopta, cuando se los envía a la pantalla (saltos de línea, tabulaciones, retrocesos, etc.). Para ello se usa una terminología algo técnica, y pongo como ejemplos mi propio sistema, a ver qué es lo que pasa ahí.

Lo importante de esta parte V es llegar a entender que en realidad tenemos muy poco control de lo que pasa cuando enviamos información a la consola desde un programa en C.
Podemos estar seguros de pocas convenciones y detalles, siempre y cuando se den determinadas condiciones.
Pero en general tenemos que estar preparados para entender lo que el programa que elegimos como "consola" se supone que hace cuando se le solicita enviar o recibir información.



Me llevó muchos meses superar esta etapa de los caracteres.
A tal punto que tuve que desviarme escribiendo un artículo aparte sobre el tema, en la revista del foro.

Pero ahora que ya terminé (salvo posibles detalles adicionales que algún día quizás agregue),
puedo al fin seguir con las cuestiones mismas de programación.



Si se fijan, he seguido un plan algo aburrido, pero con una intención determinada:

* Definir primero las cuestiones más básicas del lenguaje, a saber: las constantes literales.

Las constantes literales son de 3 tipos: aritméticas (enteras y de punto flotante), de caracter (que son de nuevo números enteros), y de cadena (éstas son arrays de caracteres).

Terminé de especificar en detalle ese "asuntito" que parecía tan simple.

En el interín, estudiamos también los tipos de datos aritméticos asociados a esas constantes, y con qué reglas esas constantes promocionan de un tipo a otro.

Para lo que sigue, planeo explicar los tipos de datos predefinidos en C, primero los básicos, y luego los estructurados. Junto con esto más o menos iría el tema de "evaluar expresiones en C", y en particular los "casts" (u operadores de promoción).

Este tema puede estudiarse... ¡sin declaraciones de variables!
Quiero postergar eso para después...

Cuando estudiemos las declaraciones de variables, previamente necesitaremos las reglas para definir identificadores, y en particular es allí cuando cobran relevancia las palabras reservadas del lenguaje (que están prohibidas para usos definidos por el usuario).

Por supuesto, es importante luego explicar en profundidad el tema de las funciones.

Y finalmente vendrá el tema de las librerías estándar... y las no estándar.

Saludos.

16 Septiembre, 2013, 07:44 am
Respuesta #184

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Estuve podando el curso.

Quité varios posts en los que había intentado reemplazar la consola por salidas a HTML y cosas por el estilo.
En realidad moví todo eso a un hilo aparte en la sección de "Temas de Computación", por si a alguien le interesa usar algo de ahí: http://rinconmatematico.com/foros/index.php?topic=70244.0

También moví el tema de la configuración de la consola de Windows a un hilo aparte: http://rinconmatematico.com/foros/index.php?topic=70251.0

En lugar de todo esto, he preferido acomodar como "Tema número 10" el de la instalación del programa ConEmu (Console Emulator), y debajo dejé unas indicaciones sencillas para obtener acentos y eñes de español en la consola.

Esta consola ConEmu es básicamente lo que estaba buscando hacía tiempo, para reemplazar la consola corriente CMD de Windows.
Así que no le veo sentido a dejar colgado todo lo demás.

_________

También estoy introduciendo un cambio estético, para no espantar lectores con los terribles colores chillones que hacen arder la vista.

Además los colores y formatos que ahora he elegido tienen un significado concreto,
porque inventé un lenguaje de "marcado" para escribir posts en el foro.

Como ustedes saben, el foro no permite definir nombres de estilos de HTML, ni nada similar.
Así que me las arreglé para crear un minilenguaje de estilos adaptado a las necesidades del foro.

Dicho minilenguaje está programado en C, y es un interesante ejercicio (a la vez que fácil), y permite a un usuario crear sus propias reglas de formatos o reemplazos.

Para esto estuve investigando qué es lo más conveniente para mostrar información por Internet.
Descubrí algunas cosas interesantes:

* El tipo de letra que menos cansa a la vista es la que usa el foro por defecto: Verdana.
* Los colores que menos rechazo producen a la vista son colores tipo "pastel", y mejor si son oscuros (verdes, azules, marrones y grises).
* Los colores pálidos pueden llegar a atiborrar la visión, porque en realidad están "iluminados" (igual los voy a usar, pero con tonos suaves).
* El tipo de fuente Arial es desagradable para leer en un texto completo, pero no resulta desagradable en términos resaltados breves.

____________

Imagino que estarán aburridos de tanta información técnica.
Pero bueno, son detalles que no se encuentran en otros sitios, y menos en castellano.

Tengo un par de temas aburridos que tratar aún: reglas para formar identificadores, y operadores.

Tras esto creo que será posible, además de deseable, ir colgando programas, y entonces estudiar en paralelo la teoría del lenguaje junto con las aplicaciones.

(Estoy cambiando de planes de nuevo, sorry).

05 Octubre, 2013, 10:19 am
Respuesta #185

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Uffff.

Bueno, terminé de postear los siguientes temas:

* Caracteres en C (muchos e intrincados posts).
* Identificadores en C (que requieren la discusión previa sobre caracteres), y también la lista de palabras clave del lenguaje.
* Instalación de compiladores alternativos: Pelles C, PCC.
* Discusión técnica de objetos (en memoria RAM), valores y tipos de datos en C.
* Tipos de datos básicos, y declaración de objetos (variables) de esos tipos.
* Una seguidilla de posts sobre los operadores en C (aplicados más que nada a los tipos básicos, que son los que conocemos por ahora).
* Estructuras de control (if, switch, while, do while, for, goto, continue, break, return, y la función exit()).

Con todo esto ya es posible hacer programas de verdad, que resuelvan problemas básicos de aritmética, incluyendo números complejos.

A partir de aquí se admiten sugerencias de problemas a resolver.
Iré procurando agregar diversos ejercicios.

Saludos.

06 Octubre, 2013, 12:15 pm
Respuesta #186

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
La primer lista de ejercicios del curso... ¡en la sección 49!

O sea que hubieron 48 secciones de teoría previa.

Y eso que no está todavía la teoría con toda la formalidad que me gustaría...

Otra cosa: Ninguno de los ejercicios es fácil, aunque tampoco difícil.

19 Octubre, 2013, 05:02 am
Respuesta #187

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Actualizada la instalación del compilador PCC, en el post #41.

http://rinconmatematico.com/foros/index.php?topic=64835.msg279680#msg279680

Se dice por ahí que hay gente planteándose reemplazar GCC por PCC en proyectos importantes como Linux.

Al parecer es más eficiente, entre otras cosas.

Vaya uno a saber...

Yo se los dí para que nos acostumbremos a trabajar desde Línea de comandos, y sacar así algunos programas rápidos, sin tanto editor de por medio.

Saludos

21 Octubre, 2013, 09:26 am
Respuesta #188

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,738
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Estoy abrumado.

El C es un lenguaje muy complejo.

Es complejo porque es sofisticado, y conlleva soporte para muchos dialectos que se han practicado durante su historia hasta hoy.

Por otra parte, entender las sutilezas del lenguaje lleva a una comprensión interesante de lo que significa un lenguaje serio. No creo que haya un lenguaje parecido en lo referido a rigor técnico.

Lo que me abruma es que C prometía ser un lenguaje más o menos sencillo.
Pero no lo es, si es que uno quiere hacer programas sólidos.


05 Junio, 2019, 08:17 am
Respuesta #189

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,381
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola

No sirve de nada que copie un programa de ese video de Youtube, porque el programa que tiene errores es el tuyo.

Por eso tengo que ver tu programa.

Además, aunque el programa del video es corto, no lo pienso copiar a mano, porque encima lo va cambiando durante todo el video, y tengo que comerme toda la explicación hasta ver qué diablos es lo que hace.

No voy a mirar videos...

Bueno, hombre, no te pongas así  :laugh:  :laugh: Decía sólo la primera parte hasta que ejecuta; lo he mirado y remirado, repasado puntos y comas, etc., pero introduzco el número y ahí se queda, el condicional que le sigue no corre. Pero da igual, ya lo repaso más veces, a ver...

Me puse celoso, me andás engañando con el tipo ese de youtube.  :'(

¡Oh no! Ya somos dos :-\ :-\.

Saludos :laugh: