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 (→Fitxers) |
m |
||
Línia 2: | Línia 2: | ||
== Gestió de cadenes en Python == | == Gestió de cadenes en Python == | ||
""" | """ | ||
− | gestioCadenes.py | + | '''gestioCadenes.py''' |
""" | """ | ||
szA = "Una frase amb paraules" | szA = "Una frase amb paraules" | ||
Línia 18: | Línia 18: | ||
== Comptar caràcters en Python == | == Comptar caràcters en Python == | ||
""" | """ | ||
− | compta.py | + | '''compta.py''' |
""" | """ | ||
szA = "Una frase amb paraules" | szA = "Una frase amb paraules" | ||
Línia 24: | Línia 24: | ||
== Comptar caràcters en C == | == Comptar caràcters en C == | ||
/* | /* | ||
− | compta.c | + | '''compta.c''' |
*/ | */ | ||
#include <stdio.h> | #include <stdio.h> | ||
Línia 39: | Línia 39: | ||
== Copiar cadenes en Python == | == Copiar cadenes en Python == | ||
""" | """ | ||
− | copia01.py | + | '''copia01.py''' |
""" | """ | ||
szA = "Una frase amb paraules" | szA = "Una frase amb paraules" | ||
Línia 102: | Línia 102: | ||
== Concatenació de cadenes en Python == | == Concatenació de cadenes en Python == | ||
""" | """ | ||
− | concatenacio.py | + | '''concatenacio.py''' |
""" | """ | ||
szA = "Una frase amb paraules" | szA = "Una frase amb paraules" | ||
Línia 112: | Línia 112: | ||
== Concatenació de cadenes en C == | == Concatenació de cadenes en C == | ||
/* | /* | ||
− | concatenacio.c | + | '''concatenacio.c''' |
*/ | */ | ||
#include <stdio.h> | #include <stdio.h> | ||
Línia 128: | Línia 128: | ||
== Comparació de cadenes en C == | == Comparació de cadenes en C == | ||
/* | /* | ||
− | comparacioCadenes.c | + | '''comparacioCadenes.c''' |
*/ | */ | ||
#include <stdio.h> | #include <stdio.h> | ||
Línia 153: | Línia 153: | ||
= Pas d'arguments pel terminal = | = Pas d'arguments pel terminal = | ||
== Pas d'arguments pel terminal en C == | == Pas d'arguments pel terminal en C == | ||
− | // argc01.c | + | // '''argc01.c''' |
#include <stdio.h> | #include <stdio.h> | ||
Línia 167: | Línia 167: | ||
} | } | ||
== Pas d'arguments pel terminal en Python== | == Pas d'arguments pel terminal en Python== | ||
− | # arg01.py | + | # '''arg01.py''' |
import '''sys''' | import '''sys''' | ||
Línia 176: | Línia 176: | ||
= Fitxers = | = Fitxers = | ||
== Saber si un arxiu existeix en C == | == Saber si un arxiu existeix en C == | ||
− | // fitxerExisteix.c | + | // '''fitxerExisteix.c''' |
#include <stdio.h> | #include <stdio.h> | ||
#include <string.h> | #include <string.h> | ||
Línia 202: | Línia 202: | ||
== Saber si un arxiu existeix en Python == | == Saber si un arxiu existeix en Python == | ||
− | # fitxerExisteix.py | + | # '''fitxerExisteix.py''' |
import sys | import sys | ||
Línia 218: | Línia 218: | ||
== Llegir arxius línia a línia en C == | == Llegir arxius línia a línia en C == | ||
− | // fitxerLlegintLiniaPerlinia.c | + | // '''fitxerLlegintLiniaPerlinia.c''' |
#include <stdio.h> | #include <stdio.h> | ||
#include <string.h> | #include <string.h> | ||
Línia 248: | Línia 248: | ||
== Llegir arxius línia a línia en Python == | == Llegir arxius línia a línia en Python == | ||
− | # fitxerLlegintLiniaPerlinia.py | + | # '''fitxerLlegintLiniaPerlinia.py''' |
import sys | import sys | ||
Línia 277: | Línia 277: | ||
= Estructures = | = Estructures = | ||
/* | /* | ||
− | st03.c | + | '''st03.c''' |
*/ | */ | ||
#include <stdio.h> | #include <stdio.h> | ||
Línia 317: | Línia 317: | ||
[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] | ||
/* | /* | ||
+ | '''unions.c''' | ||
http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7p7.htm | http://www.xtec.cat/formaciotic/ateneu_historic/materials/td97/d97m7/d97m7p7.htm | ||
*/ | */ | ||
Línia 350: | Línia 351: | ||
= Enumeració = | = Enumeració = | ||
/* | /* | ||
− | enum01.c | + | '''enum01.c''' |
*/ | */ | ||
#include <stdio.h> | #include <stdio.h> |
Revisió del 14:31, 2 maig 2023
Contingut
Cadenes de caràcters
Gestió de cadenes en Python
""" gestioCadenes.py """ szA = "Una frase amb paraules" print ("szA: \"%s\" té %d caràcters"%(szA,len(szA))) szB = szA[:3] # Agafa els tres primer caràcters print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[3:] # Agafa a partir del tercer caràcter print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[4:9] # Agafa 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] # Agafa tots els caràcters excepte els tres últims print ("szB: \"%s\" té %d caràcters"%(szB,len(szB))) szB = szA[-8:] # Agafa els darrers 8 caràcters print ("szB: \"%s\" té %d caràcters"%(szB,len(szB)))
Comptar caràcters en Python
""" compta.py """ szA = "Una frase amb paraules" print ("szA: \"%s\" té %d caràcters"%(szA,len(szA)))
Comptar caràcters en C
/* compta.c */ #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,(int)strlen(szA)); return 0; }
Copiar cadenes en Python
""" 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 en C
/* 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,(int)strlen(szA)); strcpy(szB,szA);// szB = szA; printf("szB: \"%s\" té %d caràcters\n",szB,(int)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,(int)strlen(szA)); // strcpy(szB,szA);// szB = szA; printf("szB: \"%s\" te %d caràcters\n",szB,(int)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,(int)strlen(szA)); strcpy(szB,&szA[0]);// strcpy(szB,szA); printf("szB: \"%s\" te %d caràcters\n",&szB[14],(int)strlen(&szB[14])); strcpy(szB,&szA[4]); printf("szB: \"%s\" te %d caràcters\n",szB,(int)strlen(szB)); return 0; }
Concatenació de cadenes en Python
""" 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 en C
/* 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 en C
/* 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; }
Pas d'arguments pel terminal
Pas d'arguments pel terminal en C
// 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 en Python
# arg01.py import sys if len(sys.argv) == 2: print("L'argument es: \"%s\""%(sys.argv[1])) else: print("No hi ha un argument")
Fitxers
Saber si un arxiu existeix en C
// 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 en Python
# 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)
Llegir arxius línia a línia en C
// fitxerLlegintLiniaPerlinia.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; }
Llegir arxius línia a línia en Python
# 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: ") szContingut = f.read() nL = 1 szLinia = "" for c in szContingut: #print("%d) %s"%(nL, linia)) #nL+=1 if c != "\n": szLinia += c else: print("%d) %s"%(nL, szLinia)) nL+=1 szLinia = "" f.close() except: print("%s no existeix"%nomFitxer)
Estructures
/* 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; }
Unions
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ó
/* 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; }