Herramientas de usuario

Herramientas del sitio


start

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
start [2012/07/28 12:53] – [Clase 1: Lenguaje C, E/S Estándar] lmateustart [2014/11/15 08:44] (actual) – [Servidor Multi-cliente con select] lmateu
Línea 1: Línea 1:
 ====== CC3301 - Programación de Software de Sistemas ====== ====== CC3301 - Programación de Software de Sistemas ======
  
-Programa de curso:+Estos son los apuntes de José Piquer.  Además se encuentran disponibles en youtube 
 +[[http://www.youtube.com/watch?v=maJkL9kpoek&feature=c4-overview-vl&list=PLC4BC3AFA8B75D08B|videos de las 23 clases]] de 
 +José Piquer. Hay un índice del contenido en los comentarios para las clases 2, 3, 4 y 5.  El que vea 
 +los siguientes videos sin el índice agregue un comentario con el contenido por favor.  Observen que el botón que aparece en la esquina de arriba a la izquierda en el video permite seleccionar el número de la clase que desean ver. 
 +Pero cuidado, la enumeración de las clases de esta página no corresponde uno a uno a la enumeración de los 23 videos, 
 +ni siquiera el orden. 
 + 
 +En los apuntes de [[temario|Luis Mateu]] se explican los mismos conceptos de esta página pero con más detalle.
  
-[[http://www.dcc.uchile.cl/docs/2010/CC3301_2009-2-ADD_2010.pdf]] 
 ===== Clase 1: Lenguaje C, E/S Estándar ===== ===== Clase 1: Lenguaje C, E/S Estándar =====
  
-=== Historia === +Ver contenido extendido en [[introduccion|Introducción]].
- +
-  * En los 50's nace el primer lenguaje de programación: Fortran (//Formula Translator//).  La idea era poder escribir fórmulas cómodamente sin tener que escribir en lenguaje ensamblador.  No hay while: se usa goto. +
-  * En los 60's surge el primer lenguaje con programación estructurada: Algol.  Posee while e if con else. De este lenguaje se derivan 2 variantes, Pascal y C. +
-  * En los 70's aparece Pascal (de Niklaus Wirth).  Busca la robustez en la programación.  Es un lenguaje minimalista. +
-  * También en los 70's aparece C (de Brian Kernighan).  La sintaxis es distinta de Algol y Pascal.  Busca dar el poder del assembler en un lenguaje de alto nivel.  No es robusto.  Es minimalista. +
-  * En los 80's Bjarne Stroustrup le agrega clases a C, creando C++.  Tampoco es robusto y es complejo. +
-  * En los 90's James Gosling concibe Java.  Es complejo pero **robusto**. +
- +
-=== Comparación entre C y Java === +
- +
-== Programación orientada a objetos == +
- +
-  * C no es un lenguaje orientado a objetos: no posee clases. +
-  * En C se definen los tipos compuestos mediante la declaración **struct**.  Ahí no se pueden incluir métodos. +
-  * La abstracción que describe como se procesan los datos es la función mientras que en Java es la clase. +
- +
-== Tipos primitivos == +
- +
-  * Usan casi los mismos tipos primitivos: char, short, int, long, float, double. +
-  * Pero en C, char es en realidad un entero de 1 bytes, mientras que en Java ocupa 2 bytes y solo almacena caracteres. +
-  * En C se puede agregar el atributo unsigned a los enteros. +
- +
-== Strings == +
- +
-  * C no posee el tipo String.  Los strings se representan mediante punteros a caracteres y terminados con '\0'.+
  
 Ejemplo estudiado: [[http://www.dcc.uchile.cl/jpiquer/Docencia/cc31a/copy.c|copy.c]] Ejemplo estudiado: [[http://www.dcc.uchile.cl/jpiquer/Docencia/cc31a/copy.c|copy.c]]
Línea 38: Línea 19:
 #include <stdio.h> #include <stdio.h>
  
-/*+/* 
  * Copia la entrada en su salida sin modificaciones  * Copia la entrada en su salida sin modificaciones
  */  */
Línea 52: Línea 33:
 } }
 </code> </code>
- 
  
 Pueden probar compilando este programa: Pueden probar compilando este programa:
Línea 72: Línea 52:
 </code> </code>
  
-Entonces los archivos out, out2 y out3 todos son iguales.+
  
 ====== Clase 2: Lenguaje C y tipos básicos ====== ====== Clase 2: Lenguaje C y tipos básicos ======
  
 +Ver contenido extendido en [[tipos|tipos]] y [[variables|variables]].
 ===== Enteros ===== ===== Enteros =====
 char: 8 bits, 1 byte char: 8 bits, 1 byte
Línea 94: Línea 75:
 ===== Punteros ===== ===== Punteros =====
  
 +Ver contenido extendido en [[punteros|punteros]] y [[strings|strings]].
 ==== Strings ==== ==== Strings ====
  
Línea 3149: Línea 3131:
 Atendemos todos los clientes en el mismo ciclo, usando select: Atendemos todos los clientes en el mismo ciclo, usando select:
 <code C> <code C>
 +#define _BSD_SOURCE 1
 +
 #include <stdio.h> #include <stdio.h>
 #include <stdlib.h> #include <stdlib.h>
Línea 3237: Línea 3221:
    }    }
 } }
 +</code>
 +
 +Se necesita definir la macro _BSD_SOURCE al inicio del programa para hacer válido el uso de la función getdtablesize().  El encabezado de esta función está incluido en unistd.h, pero solo cuando se define la macro _BSD_SOURCE.  Eso se indica en la documentación de getdtablesize:
 +
 +<code>
 +  % man 3 getdtablesize
 +  NAME
 +       getdtablesize - get descriptor table size
 +
 +  SYNOPSIS
 +       #include <unistd.h>
 +
 +       int getdtablesize(void);
 +
 +     Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
 +
 +       getdtablesize():
 +           Since glibc 2.12:
 +               _BSD_SOURCE ||
 +                   !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
 </code> </code>
  
start.1343490832.txt.gz · Última modificación: 2012/07/28 12:53 por lmateu