FO 2015 - Manel Guerrero

TRANSPAS

  • Tema 0 (2x2) (1x1) Presentació de l'assignatura
  • Tema 1 (2x2) (1x1) Arquitectura d'un ordinador (2h)
  • Tema 2 (2x2) (1x1) Programació bàsica (10h)
  • Tema 3 (2x2) (1x1) Tipus de dades estructurats (8h)
  • Tema 4 (2x2) (1x1) Funcions (7h)
  • Tema 5 (2x2) (1x1) Strings (3h)
  • Tema 6 (2x2) (1x1) Fitxers (3h)
  • Tema 7 (2x2) (1x1) Algorismes avançats (2h)

    APUNTS

  • programando.pdf

    CODI FONT

    Tema 1: Arquitectura d'un ordinador

    Tema 1 Hora #0
  • t1_taula_ascii.txt Taula ASCII
  • t1_taula_ascii.c Generador taula ASCII

    Tema 2: Programació bàsica

    Tema 2 Hora #01
  • t2_0_area_triangle.c Àrea d'un triangle

    Tema 2 Hora #02
  • t2_0_area_triangle_scanf.c Àrea de qualsevol triangle
  • t2_0_area_cercle.c Àrea longitut de la circumferencia

    Tema 2 Hora #03 (printf, scanf)
  • t2_0_memoria.c Com es guarden les variables a memoria. Veure les transpes sobre el tema del T1
  • t2_0_mays_to_mins.c De Mays a mins
  • t2_0_swap.c Swapping dos valors

    Tema 2 Hora #04 (if1)
  • t2_1_max_de_dos_nums.c Maxim de 2 numeros
  • t2_1_par_o_impar.c Es un mumero par o impar
  • t2_1_positivo_negativo_o_cero.c Es un numero positivo, negativo o cero.
  • t2_1_notas.c Excelente, notable, aprovado, ...
  • t2_1_max_de_tres_nums.c Maxim de 3 numeros
  • t2_1_max_de_tres_nums_v2.c
  • t2_1_max_de_tres_nums_v3.c
  • t2_1_if_mays_mins_o_dig.c Mays, mins i digits

    Tema 2 Hora #05 (if2)
  • t2_1_if_triangle.c Equilater, isosceles o escale
  • t2_1_ordenar_tres_nums.c Ordenar 3 nums

    Tema 2 Hora #06 (switch)
  • Explicar la sintaxis de switch ... case (lo necesitan para la sesión 2 de laboratorio).
  • t2_5_switch_dia.c Et diu si ja és cap de setmana
  • t2_5_switch_menu.c El programa amb menú ara amb switch
  • t2_5_switch_calc.c Programa calculadora
  • t2_5_switch_calc_new.c Otra versión del programa calculadora

    Tema2 Hora #07 (while)
  • t2_2_while_scanf_loop.c Bucles
  • t2_2_while_scanf_trap.c Petit problema amb scanf i bucles
  • t2_2_while_greates_common_divisor.c Greatest common divisor (gcd).

    Tema2 Hora #08 (do ... while)
  • t2_3_do_suma.c Suma de seq de nums acabada en zero
  • t2_3_do_menu.c Programa amb menú
  • t2_4_for_multiples_5_7.c Imprimir tots els multiples de 5 i de 7 del 1 al 50.
  • t2_4_for_multiples_5_7_v2.c
  • t2_4_for_multiples_5_7_v3.c
  • t2_4_for_multiples_5_7_v4.c

    Tema2 Hora #09 (for)
  • t2_4_for_fibonacci.c
  • t2_4_for_fibonacci_v2_define.c
  • t2_4_for_campus.c Dibuixa el Campus Nord. (i el oso).

    Tema2 Hora #10 (for)
  • t2_4_for_domino.c Dibuixa les fitxes de domino).
  • t2_4_for_taules_mul.c Imprimir les taules de multiplicar.
  • t2_4_for_calculadora.c Calculadora simple.

    Tema2 Hora #11 (for)
  • t2_4_for_min_max.c Exercici #6 de l'antic Tema2Iteratives.
  • t2_4_for_ex15_formula_max.c Exercici #15 de l'antic Tema2Iteratives.
  • t2_4_for_ex15_formula_max.png Representació gràfica de la funció
  • 3D Function Grapher
  • Repetir factorial

    Tema2 Hora #12 (for)
  • t2_6_sesion3_ej5b.c Calcul aproximat del numero e per el sumatori dels inversos del factorial de i=0 fins a n.
  • t2_6_sesion3_ej5b_v2.c
  • t2_6_sesion3_ej5b_v3.c

    Tema2 Hora Extra (for)
  • t2_7_factores_primos_v1.c
    Intro numero? 100
    100	|  2
    50	|  2
    25	|  5
    5	|  5
    1
    
  • t2_7_factores_primos_v2.c
    Intro numero? 900
    2^2 x 3^2 x 5^2
    
  • t2_7_primos_v1.c
    Hasta que numero? 100
    1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
    
  • t2_7_primos_v2.c
  • t2_7_primos_v3.c

    Tema 3: Tipus de dades estructurats

    Tema3 Hora #13 (struct)
  • t3s_puntos.c Calculo distancia entre 2 puntos 3D.
  • t3s_date.c Structs de structs.

    Tema3 Hora #13 bis (struct)
  • t3s_aniversaris_sense_structs.c
  • t3s_aniversaris_amb_structs.c
  • Extra: t2_3_do_conta_paraules.c
  • Extra: t2_3_do_conta_paraules_amb_bool.c
  • Extra: GNU C provides several language features not found in ISO standard C (like case ranges).
  • Extra: Why does #include "stdio.h" work?

    Tema3 Hora #13 tris Interludio matemático festivo
  • t9_math.c math.h
  • t9_math_con_trigo.c
  • t9_math_sin_trigo.c
  • t9_math_log_exp.c
  • t9_math_area_cercle.c Constants
  • t9_floating_point_exception.c Floating point exception


        tan(α) = a / b

    Tema3 Hora #14 (struct)
  • t3s_cercle.c Dir si un punt está dins d'un cercle.
  • t3s_rectangle.c Calculo area y perimetro de un rectangulo.
  • t3s_intervalo_de_tiempo.c Calculo tiempo entre dos horas.
  • t3s_recta.c Dir si un punt pertany a una recta.
  • Extra: t2_4_for_son_primos.c

    Tema3 Hora #15 (vectors)
  • t3v_recorregut_a_while.c Recorregut amb while (xapussa).
  • t3v_recorregut_a_do_while.c Recorregut amb do_while (molt millor).
  • t3v_cerca_a.c Cerca.
  • t3v_cerca_a_v2.c Cerca.
  • t3v_palindrom.c Dir si una paraula es palíndroma.
  • t3v_palindroms.c Contar palíndroms en una frase.
  • Extra: t3v_p4_paraules_iguals.c Dir si dos paraules són iguals (problema #4 de la col·lecció).
  • Extra: t3v_frases_iguals.c Dir si dos frases són iguals

    Tema3 Hora #16 (vectors2)
  • t3v_afegir_i_eliminar_simple.c Afegir i eliminar elements a un vector.
  • t3v_afegir_i_eliminar.c Afegir i eliminar elements amb un menu d'usuari.
  • t3v_comparar_tots.c Compara tots els elements d'un vector d'enters amb la resta d'elements i et diu quins són iguals.
  • t3v_aniversaris.c Qui celebra aniversari el mateix dia?

    Tema3 Hora #17 (vectors3)
  • t3v_leer_cadena.c Llegir i mostrar vectors de char amb for i while.
  • t3v_leer_cadena_ok.c Llegir i mostrar vectors de char tal i com s'hauria de fer.
  • t3v_producte_escalar.c Producte escalar de dos vectors.
  • t3v_invertir.c Inverteix un vector d'enters.
  • t3v_invertir_v2.c

    Tema3 Hora #18 Interludio haiku iterativo
  • t9_coseno.c Ejercicio 7 de la sessión 3 de laboratorio. Cálculo de un coseno por Serie de McLaurin
    https://es.wikipedia.org/wiki/Serie_de_Taylor
  • t9_coseno_haiku.c Coseno versión haiku
  • t9_coseno_optimo.c Coseno versión optima
  • t9_coseno_optimo2.c Coseno versión optima #2
  • t9_coseno_optimo3.c Coseno versión optima #3
  • t3v_media_pixels.c Qué fer quan podria ser tant un struct com un vector

    PUNT

    Tema3 Hora #19 (matrius)
  • t3w_suma_matrius.c Suma de matrius.
  • t3w_producte_matrius.c Producte de matrius.
  • t3w_producte_matrius_v2.c
  • t3w_producte_matrius_v3.c

  • t3w_llegir_matriu.c
  • t3w_intercanviar_fs_cs.c Intercanviar files i columnes d'una matriu sobre si mateixa.
  • Extra: t3w_imprimir_matriz.c Pasar por argumento un vector o una matriz de tamaço variable.

    Tema3 Hora #20 (algorismes bàsics de vectors)
  • t3v_sort_insertion.c Ordenació de vectors: insertion sort.
  • t3v_sort_bubble.c Ordenació de vectors: bubble sort.
  • t3v_sort_bubble_v2.c Parem si ja està ordenat. (Amb comentaris interesants sobre els nivells d'optimització del compilador i -Wmaybe-uninitialized)
  • t3v_sort_company.c Ordenació de vectors: alternativa suggerida per un company de classe (la meva versió).
  • t3v_sort_company_v2.c Ordenació de vectors: alternativa suggerida per un company de classe (la seva versió).

    Tema3 Hora #21 Algorismes bàsics de vectors y matrius 2
  • t3v_conjunts_resolt.pdf Enunciat d'intersecció de conjunts. (va ser un control).
  • t3v_conjunts.c Intersecció de conjunts.
  • t3v_conjunts_prueba.txt Petit joc de proves.

    Tema3 Hora Buffer: Algorismes bàsics de vectors y matrius 3
  • t3w_cuadrado_magico.c Problema del cuadrado magico.
  • t3w_8_reinas.pdf Enunciat problema de les 8 reines. (va ser un control).
  • t3w_8_reinas.c Problema de les 8 reines.
  • t3w_8_reinas_v2.c Problema de les 8 reines (versio mes llegible).
  • t3w_8_reinas_v3.c Problema de les 8 reines (versio improvisada en clase).

    Tema 4a: Funcions amb pas per valor

    Tema4 Hora #22 (funcions)
  • t4_max.c Max.
  • t4_factorial.c Factorial. Problema #2.
  • t4_factorial_recursiu.c Factorial recursiu.
  • t4_potencia.c Potencia. Problema #3.


    Tema4 Hora #23 (funcions)
  • Explicar: Bloc d'activació de subrutina (de funció).
  • t4_e_power_x.c #4 i tercera part #5.

    Tema4 Hora #24 (funcions)
  • t4_sin_cos.c exp, sin i cos (e^x, sinus i cosinus) calculat amb series numèricas.
  • t4_p6.c Problema #6.
  • t4_canvi_base.c Canvi de base.
  • t4_canvi_base_v2.c Versió on no cal invertir els digits del número resultant.
  • t4_comparar_horas.c Que hora esta mas cerca de la media noche. (Structs como argumento y retorno de una funcion).

    Com estructurar un projecte de programació en varis fitxers *.c



    Tema4 Hora #25
  • PRJ0_RECTANGULO.tgz Un exemple de joguina de projecte de programació.

    Tema 4b: Funcions amb pas per referència

    Tema4 Hora #26 (punters i pas de variables per referència)
  • t4_swap1.c Intercanviar el valor de 2 variables.
  • t4_swap2.c Intercanviar el valor de 2 variables dins una funció. No va.
  • t4_swap3.c Intercanviar el valor de 2 elements d'un vector dins una funció. Si que va.
  • t4_swap4.c Intercanviar el valor de 2 elements d'un struct dins una funció. Tampoc va.
  • t4_swap5.c Intercanviar el valor de 2 variables dins una funció ben fet. Pas de paràmetres per referència.

    Tema4 Hora #27 (funcions amb pas de variables per referència)
  • t4_factorial_pref.c Factorial amb pas de variables per referència.
  • t4_divisio_pref.c Divisió entera que retorna quocient i residu amb pas de variables per referència.
  • t4_coordenades.c Pas per referència combinat amb structs.

    Tema4 Hora #28
  • t4_rectangle.c Pas per referència combinat amb structs de structs.

    Tema4 Hora #29
  • t4_p14.c Exercici 14.
  • t4_imprimir_matriz.c Funcions per imprimir vectors i matrius de qualsevol mida.

    Tema4 Hora #30 [buffer]
  • t4_pa7.c Problema addicional #7.

    Tema4 Hora #31 [buffer]
  • t4_pa4.c Problema addicional #4.
  • t4_pa6.c Problema addicional #6.

    Tema4 Hora #32 [buffer]
  • t4_eliminar_varios_de_vector.c Eliminar los numeros negativos de un vector de enteros.
  • t4_eliminar_varios_de_vector_v2.c Eficientemente

    Tema 5: Strings

    Tema5 Hora #33
  • t5_strings_hola.c
  • t5_strings_nom_cognom.c
  • t5_strings_compara.c
  • t5_strings_ordenats.c

    Tema5 Hora #34
  • t5_strings_anagrams.c
  • t5_strings_examen_primavera_15_16.c Versió alternativa de anagrams.
  • t5_strings_nom_cognom_2.c

    Tema5 Hora #35
  • man 3 printf
  • man 3 scanf
  • t5_scanf_corchete.c
  • t5_scanf_corchete_2.c

    Tema 6: Fitxers

    Tema6 Hora #36 (read and write)
  • t6_file_in.txt Fitxer amb paraules
  • t6_files.c Programa que compta paraules d'un fitxer i ho grava en un altre fitxer.

    Tema6 Hora Buffer (append and mini CSV)
  • t6_append_log.c Programa que afegeix entrades al final d'un fitxer (append).
  • t6_el_elegido.c Programa que escull un alumne a l'atzar d'un fitxer amb un llistat d'alumnes.
  • t6_g00.csv CSV d'un llistat d'alumnes.

    Tema6 Hora Buffer (CSV)
  • sacramento_crime_January_2006.csv (En vim he fet :%s/\r/\r/g per eliminar ^M)
  • sacramento_crime_January_2006.png Visualitzacio grafica de les dades del CSV.
  • Map of Sacramento Neighborhoods and Police Beats Districtes i beats.
  • Web d'on he tret el csv i png
  • t6_crime.c Programa que processa el fitxer CSV.

    Tema 7: Algorismes avançats

    Tema7 Hora Buffer
  • t7_puzzle.c Programa del puzzle.
  • t7_puzzle.txt Posició inicial del puzzle.
  • t7_puzzle_b.c Programa del puzzle més elegant, on es passa per arguments una condició.
  • t7_operar_fraccions.c Programa d'operar amb fraccions.
  • t7_operar_fraccions_DDD.png Screenshot del DDD amb 2/4 + -6/-7 * 1/2.

    RECOMENDACIONES DE COMPILACION

  • Para ver casi todos los warnings (por ejemplo algunos -Wmaybe-uninitialized no se detectan en este nivel de optimizaciones de compilador) y generar un executable optimizado:
    gcc -o foo foo.c -O2 -Wall
  • Para generar un ejecutable que se pueda debugar viendo todos los warnings:
    gcc -o foo foo.c -g -Og -Wall
  • Compilar con el nivel de optimización por defecto no muestra todos los tipos de warnings (por ejemplo -Wmaybe-uninitialized no se detecta):
    gcc -o foo foo.c -g -Wall
  • Ver los siguientes ejemplos para más detalles:

    C LINKS

  • The C Library Reference Guide
  • C Language Keywords
  • Wikipedia: C standard library
  • The C Standard Library Reference
  • Trampa: Recorda de compilar amb el "-lm" quan usis math.h ("gcc -o foo foo.c -lm")
  • Infinity, and NaN (not a number) in IEEE 754 floating point numbers.

    BOOKS

  • C Programming Language

    TIPS AND TRICKS

  • Depuradores_para_C.pdf Como utilizar el Nemiver y el DDD.
  • Trucos_Nemiver_Mario_New.pdf Como utilizar el Nemiver.
  • El package libc6-dev pone en /usr/include/ todos los .h del sistema (stdio.h, string.h, ...).

    AUTOINDENTAR CON VIM

    echo -e ":1\nVG=:wq\n" | vim fle.c
    No os preocupeis si os dice:
    Vim: Warning: Input is not from a terminal



    Esta es la nueva página de FO. La antigua está en: FO 2012-2014


    MANEL's WEBPAGE