algo1:2010-1:taller
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
algo1:2010-1:taller [2010/06/02 17:40] – francolq | algo1:2010-1:taller [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 17: | Línea 17: | ||
fac (n+1) = (n+1) * fac n | fac (n+1) = (n+1) * fac n | ||
- | len :: [a] -> Int | + | len :: [a] -> Int |
- | len [] = 0 | + | len [] = 0 |
- | len (_:xs) = 1 + length xs | + | len (_:xs) = 1 + length xs |
Vimos cómo abrir el intérprete de Haskell y cómo crear, editar y cargar archivos de definiciones. | Vimos cómo abrir el intérprete de Haskell y cómo crear, editar y cargar archivos de definiciones. | ||
Línea 514: | Línea 514: | ||
a donde: | a donde: | ||
- | * < | + | * < |
* < | * < | ||
* < | * < | ||
Línea 664: | Línea 664: | ||
===== 2 de junio de 2010 ===== | ===== 2 de junio de 2010 ===== | ||
+ | |||
+ | ==== Tipos de Datos ==== | ||
+ | |||
+ | Falta completar. Ver los siguientes enlaces, tomados de [[http:// | ||
+ | |||
+ | * **Tipos Básicos**: [[http:// | ||
+ | * **Enumeraciones**: | ||
+ | * **Estructuras**: | ||
+ | * **Definiciones de tipos**: [[http:// | ||
==== Arreglos ==== | ==== Arreglos ==== | ||
Línea 694: | Línea 703: | ||
==== TADs ==== | ==== TADs ==== | ||
- | **main.c** | + | === El TAD Pila de Enteros === |
- | #include < | + | |
- | #include " | + | |
- | + | ||
- | int main() { | + | |
- | pila p1; | + | |
- | + | ||
- | p1 = pila_vacia(); | + | |
- | p1 = push(p1, 25); | + | |
- | p1 = push(p1, 34); | + | |
- | p1 = push(p1, 1); | + | |
- | p1 = push(p1, 2); | + | |
- | + | ||
- | while (!es_vacia(p1)) { | + | |
- | printf(" | + | |
- | p1 = pop(p1); | + | |
- | } | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | + | ||
- | Se compila con | + | |
- | + | ||
- | gcc -c -Wall -ansi -pedantic main.c -o main.o | + | |
+ | **booleano.h** | ||
+ | typedef enum {False, True} booleano; | ||
**pila.h** | **pila.h** | ||
Línea 779: | Línea 767: | ||
gcc -c -Wall -ansi -pedantic pila.c -o pila.o | gcc -c -Wall -ansi -pedantic pila.c -o pila.o | ||
+ | |||
+ | |||
+ | === Usando el TAD Pila de Enteros === | ||
+ | |||
+ | **main.c** | ||
+ | #include < | ||
+ | #include " | ||
+ | | ||
+ | int main() { | ||
+ | pila p1; | ||
+ | | ||
+ | p1 = pila_vacia(); | ||
+ | p1 = push(p1, 25); | ||
+ | p1 = push(p1, 34); | ||
+ | p1 = push(p1, 1); | ||
+ | p1 = push(p1, 2); | ||
+ | | ||
+ | while (!es_vacia(p1)) { | ||
+ | printf(" | ||
+ | p1 = pop(p1); | ||
+ | } | ||
+ | | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | Se compila el módulo main.o con | ||
+ | |||
+ | gcc -c -Wall -ansi -pedantic main.c -o main.o | ||
+ | |||
+ | |||
+ | Se obtiene el ejecutable con | ||
+ | |||
+ | gcc main.o pila.o -o main | ||
+ | |||
+ | |||
+ | ===== Apéndice ===== | ||
+ | |||
+ | ==== Strings ==== | ||
+ | |||
+ | Los strings en C son simplemente arreglos de caracteres, con la única particularidad de que el final del string se marca con un caracter especial ' | ||
+ | De esta manera podemos tener en un arreglo de caracteres un string más corto que la cantidad de elementos del arreglo. | ||
+ | |||
+ | El siguiente código muestra cómo leer un string del teclado y guardarlo en un arreglo, y cómo recorrer los elementos del arreglo desde el principio hasta llegar al caracter ' | ||
+ | Obsérvese que si el arreglo tiene TAM caracteres, entonces el string debe tener a lo sumo TAM-1 caracteres porque uno | ||
+ | de los caracteres se va a usar para la marca ' | ||
+ | |||
+ | **strings.c** | ||
+ | < | ||
+ | #include < | ||
+ | |||
+ | /* TAM es el tamanio maximo del string */ | ||
+ | #define TAM 10 | ||
+ | |||
+ | int main() { | ||
+ | char str[TAM]; | ||
+ | int i; | ||
+ | |||
+ | /* Leer un string del teclado: */ | ||
+ | printf(" | ||
+ | scanf(" | ||
+ | |||
+ | /* Recorrer el string: */ | ||
+ | i = 0; | ||
+ | while (str[i] != ' | ||
+ | printf(" | ||
+ | i = i + 1; | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
algo1/2010-1/taller.1275500448.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)