Diferència entre revisions de la pàgina «Fonaments de gestió de fitxers, estructures i gestió dinàmica de memòria»
Salta a la navegació
Salta a la cerca
m (→Unions) |
|||
(Hi ha 40 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
= Cadenes de caràcters = | = Cadenes de caràcters = | ||
− | == Gestió de cadenes | + | == Gestió de cadenes a Python == |
""" | """ | ||
'''gestioCadenes.py''' | '''gestioCadenes.py''' | ||
Línia 6: | Línia 6: | ||
szA = "Una frase amb paraules" | szA = "Una frase amb paraules" | ||
print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) | print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) | ||
− | szB = '''szA[:3] # | + | szB = '''szA[:3] # Retorna els tres primer caràcters''' |
print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | ||
− | szB = '''szA[3:] # | + | szB = '''szA[3:] # Retorna a partir del tercer caràcter''' |
print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | ||
− | szB = '''szA[4:9] # | + | szB = '''szA[4:9] # Retorna a partir del quart caràcter els cinc caràcters següents''' |
print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | ||
− | szB = '''szA[:-3] # | + | szB = '''szA[:-3] # Retorna tots els caràcters excepte els tres últims''' |
print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | ||
− | szB = '''szA[-8:] # | + | szB = '''szA[-8:] # Retorna els darrers 8 caràcters''' |
print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | ||
− | == Comptar caràcters | + | |
+ | == Comptar caràcters a Python == | ||
""" | """ | ||
'''compta.py''' | '''compta.py''' | ||
Línia 22: | Línia 23: | ||
szA = "Una frase amb paraules" | szA = "Una frase amb paraules" | ||
print ("szA: \"%s\" té %d caràcters"%(szA,'''len'''(szA))) | print ("szA: \"%s\" té %d caràcters"%(szA,'''len'''(szA))) | ||
− | == Comptar caràcters | + | == Comptar caràcters a C == |
/* | /* | ||
'''compta.c''' | '''compta.c''' | ||
Línia 30: | Línia 31: | ||
int main(){ | int main(){ | ||
− | char szA[]="Una frase amb paraules" | + | char szA[]="Una frase amb paraules"; |
− | printf("szA: \"%s\" té %d caràcters\n",szA, | + | printf("szA: \"%s\" té %d caràcters\n",szA,'''strlen'''(szA)); |
return 0; | return 0; | ||
} | } | ||
− | == Copiar cadenes | + | == Copiar cadenes a Python == |
""" | """ | ||
'''copia01.py''' | '''copia01.py''' | ||
Línia 46: | Línia 47: | ||
print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) | ||
− | == Copiar cadenes | + | == Copiar cadenes a C == |
/* | /* | ||
'''copia01.c''' | '''copia01.c''' | ||
Línia 57: | Línia 58: | ||
char szA[]="Una frase amb paraules",szB[99]; | char szA[]="Una frase amb paraules",szB[99]; | ||
− | printf("szA: \"%s\" té %d caràcters\n",szA, | + | printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); |
− | '''strcpy'''(szB,szA);// szB = szA; | + | '''strcpy'''(szB,szA);// Això no ho puc fer en C: szB = szA; |
− | printf("szB: \"%s\" té %d caràcters\n",szB, | + | printf("szB: \"%s\" té %d caràcters\n",szB,strlen(szB)); |
return 0; | return 0; | ||
Línia 74: | Línia 75: | ||
char szA[]="Una frase amb paraules",szB[99]; | char szA[]="Una frase amb paraules",szB[99]; | ||
− | printf("szA: \"%s\" té %d caràcters\n",szA, | + | printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); |
// strcpy(szB,szA);// szB = szA; | // strcpy(szB,szA);// szB = szA; | ||
− | printf("szB: \"%s\" te %d caràcters\n",szB, | + | printf("szB: \"%s\" te %d caràcters\n",szB,strlen('''strncpy'''(szB,szA,5))); |
return 0; | return 0; | ||
Línia 91: | Línia 92: | ||
char szA[]="Una frase amb paraules",szB[99]; | char szA[]="Una frase amb paraules",szB[99]; | ||
− | printf("szA: \"%s\" té %d caràcters\n",szA, | + | printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); |
'''strcpy'''(szB,&szA[0]);// '''strcpy'''(szB,szA); | '''strcpy'''(szB,&szA[0]);// '''strcpy'''(szB,szA); | ||
− | printf("szB: \"%s\" te %d caràcters\n",&szB[14], | + | printf("szB: \"%s\" te %d caràcters\n",&szB[14],strlen(&szB[14])); |
strcpy(szB,&szA[4]); | strcpy(szB,&szA[4]); | ||
− | printf("szB: \"%s\" te %d caràcters\n",szB, | + | printf("szB: \"%s\" te %d caràcters\n",szB,strlen(szB)); |
return 0; | return 0; | ||
} | } | ||
− | == Concatenació de cadenes | + | == Concatenació de cadenes a Python == |
""" | """ | ||
'''concatenacio.py''' | '''concatenacio.py''' | ||
Línia 110: | Línia 111: | ||
print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) | print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) | ||
− | == Concatenació de cadenes | + | == Concatenació de cadenes a C == |
/* | /* | ||
'''concatenacio.c''' | '''concatenacio.c''' | ||
Línia 126: | Línia 127: | ||
return 0; | return 0; | ||
} | } | ||
− | == Comparació de cadenes | + | == Comparació de cadenes a C == |
/* | /* | ||
'''comparacioCadenes.c''' | '''comparacioCadenes.c''' | ||
Línia 150: | Línia 151: | ||
return 0; | return 0; | ||
} | } | ||
+ | == Mètodes de cadenes a Python == | ||
+ | [[Mètodes de cadenes a Python]] | ||
= Pas d'arguments pel terminal = | = Pas d'arguments pel terminal = | ||
− | == Pas d'arguments pel terminal | + | == Pas d'arguments pel terminal a C == |
// '''argc01.c''' | // '''argc01.c''' | ||
#include <stdio.h> | #include <stdio.h> | ||
Línia 166: | Línia 169: | ||
return 0; | return 0; | ||
} | } | ||
− | == Pas d'arguments pel terminal | + | == Pas d'arguments pel terminal a Python== |
# '''arg01.py''' | # '''arg01.py''' | ||
import '''sys''' | import '''sys''' | ||
− | if len(sys.argv) == 2: | + | if '''len'''(sys.argv) == 2: |
print("L'argument es: \"%s\""%('''sys.argv'''[1])) | print("L'argument es: \"%s\""%('''sys.argv'''[1])) | ||
+ | sys.exit(0) # Equivalent a '''return 0''' en C | ||
else: | else: | ||
print("No hi ha un argument") | print("No hi ha un argument") | ||
+ | sys.exit(1) # Equivalent a '''return 1''' en C | ||
+ | |||
= Fitxers = | = Fitxers = | ||
− | == Saber si un arxiu existeix | + | == Saber si un arxiu existeix a C == |
// '''fitxerExisteix.c''' | // '''fitxerExisteix.c''' | ||
#include <stdio.h> | #include <stdio.h> | ||
Línia 201: | Línia 207: | ||
} | } | ||
− | == Saber si un arxiu existeix | + | == Saber si un arxiu existeix a Python == |
+ | [https://www.w3schools.com/python/python_file_handling.asp Python File Open] a w3schools.com | ||
# '''fitxerExisteix.py''' | # '''fitxerExisteix.py''' | ||
import sys | import sys | ||
Línia 217: | Línia 224: | ||
print("L'arxiu %s no existeix"%nomFitxer) | print("L'arxiu %s no existeix"%nomFitxer) | ||
− | == | + | == Lectura i escriptura d'arxius a C == |
− | // ''' | + | === putc() i getc() === |
+ | // m8p01.c - Creació, escriptura i lectura d'un arxiu - | ||
+ | // http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/d97m8p1.htm | ||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | |||
+ | int main(){ | ||
+ | '''FILE''' *f; | ||
+ | char car; | ||
+ | |||
+ | //procés d'escriptura | ||
+ | system("clear"); | ||
+ | if((f='''fopen'''("arxiu.txt","w"))==NULL){ | ||
+ | printf("Error al intentar obrir l'arxiu\n"); | ||
+ | return; | ||
+ | } | ||
+ | printf("Introduïu un text (Premeu ''return'' per acabar): "); | ||
+ | while ((car=getchar())!='\n') '''putc'''(car,f); | ||
+ | fclose(f); | ||
+ | |||
+ | //procés de lectura | ||
+ | printf("Lectura de l'arxiu\n"); | ||
+ | if((f='''fopen'''("arxiu.txt",'''"r"'''))==NULL){ | ||
+ | printf("Error a l'intentar obrir l'arxiu\n"); | ||
+ | return 1; | ||
+ | } | ||
+ | while((car='''getc'''(f))!=EOF) putchar(car); | ||
+ | putchar('\n'); | ||
+ | '''fclose'''(f); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | === fread() === | ||
+ | // '''fitxerLlegintTotAlhora.c''' | ||
#include <stdio.h> | #include <stdio.h> | ||
#include <string.h> | #include <string.h> | ||
Línia 247: | Línia 288: | ||
} | } | ||
− | == Llegir arxius línia a línia | + | === fputs() i fgets() === |
− | # '''fitxerLlegintLiniaPerlinia.py''' | + | // m8p02.cc - Lectura i escriptura amb fgets() i fputs() - |
+ | // http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/d97m8p2.htm | ||
+ | #include <stdio.h> | ||
+ | #include <string.h> | ||
+ | |||
+ | int main(){ | ||
+ | '''FILE *'''apuntador; | ||
+ | char cadena[80]; | ||
+ | |||
+ | if (( apuntador = '''fopen'''("fitxers.txt","w"))==NULL){ | ||
+ | puts("\nNo puc crear l'arxiu fitxers.txt"); | ||
+ | return 1; | ||
+ | }else{ | ||
+ | printf("Introduïu text de vàries línies.\n"); | ||
+ | printf("Una línia en blanc per acabar.\n"); | ||
+ | while (strlen('''fgets'''(cadena,80,stdin))!=1){ // '''stdin''' és l'''arxiu'' de l'entrada (teclat al terminal) | ||
+ | '''fputs'''(cadena,apuntador); | ||
+ | // fputs("\n",apuntador); | ||
+ | } | ||
+ | fclose(apuntador); | ||
+ | } | ||
+ | |||
+ | // lectura | ||
+ | if (( apuntador = '''fopen'''("fitxers.txt","r"))==NULL){ | ||
+ | puts("\nNo puc llegir l'arxiu: fitxers.txt"); | ||
+ | return 1; | ||
+ | }else{ | ||
+ | while ('''fgets'''(cadena,80,apuntador) != NULL) // Lectura línia a línia | ||
+ | printf("%s",cadena); | ||
+ | '''fclose'''(apuntador); | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | === fprintf() i fscanf() === | ||
+ | // m8p03.c - Lectura i escriptura amb fprintf() i fscanf() - | ||
+ | // http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/d97m8p3.htm | ||
+ | #include <stdio.h> | ||
+ | |||
+ | int main(){ | ||
+ | '''FILE *'''f; | ||
+ | int codi; | ||
+ | char nom[20]; | ||
+ | char cognom[20]; | ||
+ | float nota; | ||
+ | |||
+ | f = '''fopen'''("prova.txt","w"); | ||
+ | printf("\n Introduïu les dades."); | ||
+ | printf("\n Escriviu 0 al codi per finalitzar\n"); | ||
+ | if (f!=NULL){ | ||
+ | do{ | ||
+ | printf("\nIntroduïu el codi: "); | ||
+ | scanf(" %d",&codi); if(codi==0) break; | ||
+ | printf("Introduïu el nom: "); | ||
+ | scanf(" %s",nom); | ||
+ | printf("Introduïu el cognom: "); | ||
+ | scanf(" %s", cognom); | ||
+ | printf("Introduïu la nota: "); | ||
+ | scanf(" %f",¬a); | ||
+ | '''fprintf'''(f, "%d %s %s %f\n",codi, nom, cognom, nota); | ||
+ | }while (1); | ||
+ | '''fclose'''(f); | ||
+ | } | ||
+ | |||
+ | /* lectura */ | ||
+ | printf("\n\n************** Lectura ************* \n\n"); | ||
+ | if ( (f = '''fopen'''("prova.txt","r")) != NULL ){ | ||
+ | while ('''fscanf'''(f, "%d %s %s %f",&codi, nom,cognom, ¬a) != EOF){ | ||
+ | printf("%d %s %s %f\n",codi, nom, cognom, nota); | ||
+ | } | ||
+ | '''fclose'''(f); | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | == Lectura i escriptura d'arxius a Python == | ||
+ | [https://www.w3schools.com/python/python_file_open.asp Python File Open] a w3schools.com | ||
+ | |||
+ | [https://www.w3schools.com/python/python_file_write.asp Python File Write] a w3schools.com | ||
+ | |||
+ | [https://www.w3schools.com/python/python_file_remove.asp Python Delete File] a w3schools.com | ||
+ | === Llegir arxius línia a línia === | ||
+ | # fitxerLlegintLiniaPerlinia.py | ||
+ | import sys | ||
+ | |||
+ | if len(sys.argv) == 2: | ||
+ | nomFitxer = sys.argv[1] | ||
+ | else: | ||
+ | nomFitxer = input("Nom arxiu: ") | ||
+ | try: | ||
+ | f = '''open'''(nomFitxer) | ||
+ | print("%s existeix"%nomFitxer) | ||
+ | print("El contingut de l'arxiu és: ") | ||
+ | nL = 1 | ||
+ | while True: | ||
+ | szLinia = f.'''readline()''' | ||
+ | if szLinia == "": | ||
+ | break | ||
+ | print("%d) %s"%(nL, szLinia),end = "") | ||
+ | nL += 1 | ||
+ | f.'''close()''' | ||
+ | except: | ||
+ | print("%s no existeix"%nomFitxer) | ||
+ | <!-- # '''fitxerLlegintLiniaPerlinia.py''' | ||
import sys | import sys | ||
Línia 273: | Línia 419: | ||
f.'''close()''' | f.'''close()''' | ||
'''except:''' | '''except:''' | ||
− | print("%s no existeix"%nomFitxer) | + | print("%s no existeix"%nomFitxer)--> |
− | = Estructures | + | === Afegint contingut a un arxiu === |
+ | f = '''open'''("demofile2.txt", '''"a"''') | ||
+ | f.'''write'''("Afegint contingut!\n") | ||
+ | f.'''close()''' | ||
+ | |||
+ | # obrint i llegint l'arxiu després d'afegir contingut | ||
+ | f = '''open'''("demofile2.txt", '''"r"''') | ||
+ | print(f.'''read'''()) | ||
+ | === Sobreescrivint contingut a un arxiu === | ||
+ | f = '''open'''("demofile3.txt", '''"w"''') | ||
+ | f.'''write'''("Ups! He esborrat el contingut!") | ||
+ | f.'''close'''() | ||
+ | |||
+ | # obrint i llegint l'arxiu després de sobreescriure'l | ||
+ | f = '''open'''("demofile3.txt", '''"r"''') | ||
+ | print(f.'''read'''()) | ||
+ | |||
+ | = Estructures a C = | ||
/* | /* | ||
'''st03.c''' | '''st03.c''' | ||
Línia 314: | Línia 477: | ||
return 0; | return 0; | ||
} | } | ||
− | = Diccionaris | + | = Diccionaris a Python = |
[https://www.w3schools.com/python/python_dictionaries.asp Diccionaris al w3schools] | [https://www.w3schools.com/python/python_dictionaries.asp Diccionaris al w3schools] | ||
""" | """ | ||
Línia 330: | Línia 493: | ||
print(alumne) | print(alumne) | ||
− | = Unions = | + | = Unions a C = |
[http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7te.htm Comparativa entre estructures i unions al d97] | [http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7te.htm Comparativa entre estructures i unions al d97] | ||
/* | /* | ||
Línia 365: | Línia 528: | ||
} | } | ||
− | = Enumeració = | + | = Enumeració a C = |
/* | /* | ||
'''enum01.c''' | '''enum01.c''' | ||
Línia 392: | Línia 555: | ||
return 0; | return 0; | ||
} | } | ||
− | = Introducció a les classes | + | = Introducció a les classes a Python = |
[https://www.w3schools.com/python/python_classes.asp Classes de Python al w3schools] | [https://www.w3schools.com/python/python_classes.asp Classes de Python al w3schools] | ||
== Creació d'una classe == | == Creació d'una classe == | ||
# classe00.py | # classe00.py | ||
− | class LaMevaClasse: | + | '''class''' LaMevaClasse: |
x = 5 | x = 5 | ||
print(LaMevaClasse) | print(LaMevaClasse) | ||
== Creació d'un objecte == | == Creació d'un objecte == | ||
− | # classe01.py | + | # classe01.py |
− | class LaMevaClasse: | + | '''class''' LaMevaClasse: |
x = 5 | x = 5 | ||
p1 = LaMevaClasse() | p1 = LaMevaClasse() | ||
print(p1.x) | print(p1.x) | ||
+ | |||
== Mètode __init__() == | == Mètode __init__() == | ||
# classe02.py | # classe02.py | ||
− | class Person: | + | '''class''' Person: |
− | def __init__(self, name, age): | + | def '''__init__'''(self, name, age): |
self.name = name | self.name = name | ||
self.age = age | self.age = age | ||
Línia 420: | Línia 584: | ||
== Mètode __str__() == | == Mètode __str__() == | ||
# classe03.py | # classe03.py | ||
− | class Person: | + | '''class''' Person: |
− | def __init__(self, name, age): | + | def '''__init__'''(self, name, age): |
self.name = name | self.name = name | ||
self.age = age | self.age = age | ||
− | def __str__(self): | + | def '''__str__'''(self): |
return "%s(%s)"%(self.name,self.age) | return "%s(%s)"%(self.name,self.age) | ||
Línia 433: | Línia 597: | ||
== Mètodes personalitzats == | == Mètodes personalitzats == | ||
# classe04.py | # classe04.py | ||
− | class Person: | + | '''class''' Person: |
def __init__(self, name, age): | def __init__(self, name, age): | ||
self.name = name | self.name = name | ||
self.age = age | self.age = age | ||
− | def myfunc(self): | + | def '''myfunc'''(self): |
print("Hello my name is " + self.name) | print("Hello my name is " + self.name) | ||
p1 = Person("John", 36) | p1 = Person("John", 36) | ||
p1.myfunc() | p1.myfunc() | ||
+ | |||
+ | = Assignació dinàmica de memòria a C = | ||
+ | a = (double*)'''calloc'''(n*n, sizeof(double)); | ||
+ | a = (double*)'''malloc'''(n*n*sizeof(double)); | ||
+ | '''free'''(a); | ||
+ | |||
+ | a = '''new''' double[n*n]; | ||
+ | '''delete'''(a); | ||
+ | |||
+ | a = (int*)malloc(sizeof(int)); | ||
+ | a = (int*)'''realloc'''(a,(n+2)*sizeof(int)); |
Revisió de 10:21, 9 ago 2024
Contingut
- 1 Cadenes de caràcters
- 2 Pas d'arguments pel terminal
- 3 Fitxers
- 4 Estructures a C
- 5 Diccionaris a Python
- 6 Unions a C
- 7 Enumeració a C
- 8 Introducció a les classes a Python
- 9 Assignació dinàmica de memòria a C
Cadenes de caràcters[modifica]
Gestió de cadenes a Python[modifica]
""" gestioCadenes.py """ szA = "Una frase amb paraules" print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) szB = szA[:3] # Retorna els tres primer caràcters print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[3:] # Retorna a partir del tercer caràcter print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[4:9] # Retorna a partir del quart caràcter els cinc caràcters següents print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[:-3] # Retorna tots els caràcters excepte els tres últims print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[-8:] # Retorna els darrers 8 caràcters print ("szB: \"%s\" té %d caràcters"%(szB,len(szB)))
Comptar caràcters a Python[modifica]
""" compta.py """ szA = "Una frase amb paraules" print ("szA: \"%s\" té %d caràcters"%(szA,len(szA)))
Comptar caràcters a C[modifica]
/* compta.c */ #include <stdio.h> #include <string.h> int main(){ char szA[]="Una frase amb paraules"; printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); return 0; }
Copiar cadenes a Python[modifica]
""" copia01.py """ szA = "Una frase amb paraules" print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) szB = szA # A Python es poden copiar cadenes amb un =. Cosa que no és possible en C print ("szB: \"%s\" té %d caràcters"%(szB,len(szB)))
Copiar cadenes a C[modifica]
/* copia01.c Còpia de cadenes */ #include <stdio.h> #include <string.h> int main(){ char szA[]="Una frase amb paraules",szB[99]; printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); strcpy(szB,szA);// Això no ho puc fer en C: szB = szA; printf("szB: \"%s\" té %d caràcters\n",szB,strlen(szB)); return 0; }
/* copia02.c Còpia d'uns quants caràcters */ #include <stdio.h> #include <string.h> int main(){ char szA[]="Una frase amb paraules",szB[99]; printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); // strcpy(szB,szA);// szB = szA; printf("szB: \"%s\" te %d caràcters\n",szB,strlen(strncpy(szB,szA,5))); return 0; }
/* copia03.c Còpia a partir de certa posició */ #include <stdio.h> #include <string.h> int main(){ char szA[]="Una frase amb paraules",szB[99]; printf("szA: \"%s\" té %d caràcters\n",szA,strlen(szA)); strcpy(szB,&szA[0]);// strcpy(szB,szA); printf("szB: \"%s\" te %d caràcters\n",&szB[14],strlen(&szB[14])); strcpy(szB,&szA[4]); printf("szB: \"%s\" te %d caràcters\n",szB,strlen(szB)); return 0; }
Concatenació de cadenes a Python[modifica]
""" concatenacio.py """ szA = "Una frase amb paraules" print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) szB = " i aquí continua" szA = szA + szB # El mateix que szA += szB . El signe + concatena en Python print ("szA: \"%s\" té %d caràcters"%(szA,len(szA)))
Concatenació de cadenes a C[modifica]
/* concatenacio.c */ #include <stdio.h> #include <string.h> int main(){ char szA[99]="Una frase amb paraules",szB[] = " i aqui continua"; printf("szA: \"%s\" té %d caràcters\n",szA,(int)strlen(szA)); // strcat(szA,szB); // Concatena szB després de szA printf("szA: \"%s\" té %d caràcters\n",szA,(int)strlen(strcat(szA,szB))); return 0; }
Comparació de cadenes a C[modifica]
/* comparacioCadenes.c */ #include <stdio.h> #include <string.h> int main(){ char szA[99]="frase",szB[] = "frase",szC[] = "Una altra frase"; if (!strcmp(szA,szB)){ // si strcmp() retorna 0 són cadenes iguals printf("\"%s\" és igual a \"%s\"\n",szA,szB); }else{ printf("\"%s\" no és igual a \"%s\"\n",szA,szB); } strcpy(szA,szC); if (!strcmp(szA,szB)){ printf("\"%s\" és igual a \"%s\"\n",szA,szB); }else{ printf("\"%s\" no és igual a \"%s\"\n",szA,szB); } return 0; }
Mètodes de cadenes a Python[modifica]
Pas d'arguments pel terminal[modifica]
Pas d'arguments pel terminal a C[modifica]
// argc01.c #include <stdio.h> int main(int argc,char*argv[]){ if (argc == 2){ printf("L'argument es: \"%s\"\n",argv[1]); }else{ printf("No hi ha un argument \n"); } return 0; }
Pas d'arguments pel terminal a Python[modifica]
# arg01.py import sys if len(sys.argv) == 2: print("L'argument es: \"%s\""%(sys.argv[1])) sys.exit(0) # Equivalent a return 0 en C else: print("No hi ha un argument") sys.exit(1) # Equivalent a return 1 en C
Fitxers[modifica]
Saber si un arxiu existeix a C[modifica]
// fitxerExisteix.c #include <stdio.h> #include <string.h> #define N 99 int main(int argc,char*argv[]){ FILE *f; char szA[N]; if (argc == 2){ strcpy(szA,argv[1]); }else{ printf("Nom del fitxer: "); scanf("%s", szA); } if(f = fopen(szA,"r")){ printf("%s existeix \n", szA); fclose(f); }else{ printf("%s no existeix \n", szA); } return 0; }
Saber si un arxiu existeix a Python[modifica]
Python File Open a w3schools.com
# fitxerExisteix.py import sys nomFitxer = "" if len(sys.argv) == 2: nomFitxer = sys.argv[1] else: nomFitxer = input("Nom del fitxer: ") try: f = open(nomFitxer) print("L'arxiu %s existeix"%nomFitxer) f.close() except: print("L'arxiu %s no existeix"%nomFitxer)
Lectura i escriptura d'arxius a C[modifica]
putc() i getc()[modifica]
// m8p01.c - Creació, escriptura i lectura d'un arxiu - // http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/d97m8p1.htm #include <stdio.h> #include <stdlib.h> int main(){ FILE *f; char car; //procés d'escriptura system("clear"); if((f=fopen("arxiu.txt","w"))==NULL){ printf("Error al intentar obrir l'arxiu\n"); return; } printf("Introduïu un text (Premeu return per acabar): "); while ((car=getchar())!='\n') putc(car,f); fclose(f); //procés de lectura printf("Lectura de l'arxiu\n"); if((f=fopen("arxiu.txt","r"))==NULL){ printf("Error a l'intentar obrir l'arxiu\n"); return 1; } while((car=getc(f))!=EOF) putchar(car); putchar('\n'); fclose(f); return 0; }
fread()[modifica]
// fitxerLlegintTotAlhora.c #include <stdio.h> #include <string.h> #define N 99 int main(int argc, char* argv[]){ FILE *f; char szFitxer[N], ch, szContingut[999]; if (argc == 2){ strcpy(szFitxer, argv[1]); } else{ printf("Nom fitxer: "); scanf("%s", szFitxer); } f = fopen(szFitxer, "r"); if(f){ //si f es NULL (0) vol dir que el arxiu no s'ha pogut obrir printf("L'arxiu %s existeix\n", szFitxer); printf("El contingut de l'arxiu és: \n"); fread(szContingut, 1, 999, f); printf("%s", szContingut); fclose(f); } else{ printf("L'arxiu %s no existeix\n", szFitxer); } return 0; }
fputs() i fgets()[modifica]
// m8p02.cc - Lectura i escriptura amb fgets() i fputs() - // http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/d97m8p2.htm #include <stdio.h> #include <string.h> int main(){ FILE *apuntador; char cadena[80]; if (( apuntador = fopen("fitxers.txt","w"))==NULL){ puts("\nNo puc crear l'arxiu fitxers.txt"); return 1; }else{ printf("Introduïu text de vàries línies.\n"); printf("Una línia en blanc per acabar.\n"); while (strlen(fgets(cadena,80,stdin))!=1){ // stdin és l'arxiu de l'entrada (teclat al terminal) fputs(cadena,apuntador); // fputs("\n",apuntador); } fclose(apuntador); } // lectura if (( apuntador = fopen("fitxers.txt","r"))==NULL){ puts("\nNo puc llegir l'arxiu: fitxers.txt"); return 1; }else{ while (fgets(cadena,80,apuntador) != NULL) // Lectura línia a línia printf("%s",cadena); fclose(apuntador); } return 0; }
fprintf() i fscanf()[modifica]
// m8p03.c - Lectura i escriptura amb fprintf() i fscanf() - // http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m8/d97m8p3.htm #include <stdio.h> int main(){ FILE *f; int codi; char nom[20]; char cognom[20]; float nota; f = fopen("prova.txt","w"); printf("\n Introduïu les dades."); printf("\n Escriviu 0 al codi per finalitzar\n"); if (f!=NULL){ do{ printf("\nIntroduïu el codi: "); scanf(" %d",&codi); if(codi==0) break; printf("Introduïu el nom: "); scanf(" %s",nom); printf("Introduïu el cognom: "); scanf(" %s", cognom); printf("Introduïu la nota: "); scanf(" %f",¬a); fprintf(f, "%d %s %s %f\n",codi, nom, cognom, nota); }while (1); fclose(f); } /* lectura */ printf("\n\n************** Lectura ************* \n\n"); if ( (f = fopen("prova.txt","r")) != NULL ){ while (fscanf(f, "%d %s %s %f",&codi, nom,cognom, ¬a) != EOF){ printf("%d %s %s %f\n",codi, nom, cognom, nota); } fclose(f); } return 0; }
Lectura i escriptura d'arxius a Python[modifica]
Python File Open a w3schools.com
Python File Write a w3schools.com
Python Delete File a w3schools.com
Llegir arxius línia a línia[modifica]
# fitxerLlegintLiniaPerlinia.py import sys if len(sys.argv) == 2: nomFitxer = sys.argv[1] else: nomFitxer = input("Nom arxiu: ") try: f = open(nomFitxer) print("%s existeix"%nomFitxer) print("El contingut de l'arxiu és: ") nL = 1 while True: szLinia = f.readline() if szLinia == "": break print("%d) %s"%(nL, szLinia),end = "") nL += 1 f.close() except: print("%s no existeix"%nomFitxer)
Afegint contingut a un arxiu[modifica]
f = open("demofile2.txt", "a") f.write("Afegint contingut!\n") f.close() # obrint i llegint l'arxiu després d'afegir contingut f = open("demofile2.txt", "r") print(f.read())
Sobreescrivint contingut a un arxiu[modifica]
f = open("demofile3.txt", "w") f.write("Ups! He esborrat el contingut!") f.close() # obrint i llegint l'arxiu després de sobreescriure'l f = open("demofile3.txt", "r") print(f.read())
Estructures a C[modifica]
/* st03.c */ #include <stdio.h> struct treballador{ char nom[50]; char cognom1[30]; char cognom2[30]; int edat; }; void vPresentaTreballador(struct treballador stT, const char *szQui){ printf("%s: %s %s %s te %d anys\n",szQui,stT.nom,stT.cognom1,stT.cognom2,stT.edat); } void vAugmentaUnAny(struct treballador *pStT){ (*pStT).edat += 1; } void vAugmentaUnAny2(struct treballador *pStT){ //(*pStT).edat += 1; pStT->edat += 1; } int main(){ struct treballador *pT,enginyer, administratiu = {"Eric","Alvarez","Cuerva",18}, auxiliar; vPresentaTreballador(administratiu,"Administratiu"); pT = &administratiu; vPresentaTreballador(*pT,"Apuntador a administratiu"); vAugmentaUnAny(pT); //Pas per referència de l'estructura vPresentaTreballador(*pT,"1) Apuntador a administratiu amb un any incrementat"); vAugmentaUnAny2(pT); //Pas per referència de l'estructura vPresentaTreballador(*pT,"2) Apuntador a administratiu amb un any incrementat"); return 0; }
Diccionaris a Python[modifica]
""" diccionari.py """ alumne = { "nom": "Eric", "cognom1": "Alvarez", "cognom2": "Cuerva", "edat": 18 } print(alumne) alumne["edat"] += 1 print(alumne)
Unions a C[modifica]
Comparativa entre estructures i unions al d97
/* unions.c http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7p7.htm */ #include <stdio.h> struct notes { int mat, fis, inf,qui, fil ; }; union alumne { struct notes N; int nota[5]; }; int main(){ int ct; union alumne joan; joan.N.mat=10; joan.N.fis=9; joan.N.inf=7; joan.N.qui=9; joan.N.fil=10; printf("\nmat\tfis\tinf\tqui\tfil\n"); for(ct=0;ct<5;ct++){ printf("%d\t",joan.nota[ct]); } return 0; }
Enumeració a C[modifica]
/* enum01.c */ #include <stdio.h> enum dia {dilluns, dimarts, dimecres = 7, dijous, divendres, dissabte, diumenge}; int main(){ enum dia avui; avui = divendres; if (avui == divendres){ printf("És divendres\n"); }else{ printf("No és divendres\n"); } printf("avui: %d\n",(int)avui); avui = diumenge; if (avui == divendres){ printf("És divendres\n"); }else{ printf("No és divendres\n"); } return 0; }
Introducció a les classes a Python[modifica]
Classes de Python al w3schools
Creació d'una classe[modifica]
# classe00.py class LaMevaClasse: x = 5 print(LaMevaClasse)
Creació d'un objecte[modifica]
# classe01.py class LaMevaClasse: x = 5 p1 = LaMevaClasse() print(p1.x)
Mètode __init__()[modifica]
# classe02.py class Person: def __init__(self, name, age): self.name = name self.age = age p1 = Person("John", 36) print(p1.name) print(p1.age)
Mètode __str__()[modifica]
# classe03.py class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return "%s(%s)"%(self.name,self.age) p1 = Person("John", 36) print(p1)
Mètodes personalitzats[modifica]
# classe04.py class Person: def __init__(self, name, age): self.name = name self.age = age def myfunc(self): print("Hello my name is " + self.name) p1 = Person("John", 36) p1.myfunc()
Assignació dinàmica de memòria a C[modifica]
a = (double*)calloc(n*n, sizeof(double)); a = (double*)malloc(n*n*sizeof(double)); free(a);
a = new double[n*n]; delete(a);
a = (int*)malloc(sizeof(int)); a = (int*)realloc(a,(n+2)*sizeof(int));