Poner Palabras Reves

Páginas: 5 (1236 palabras) Publicado: 19 de febrero de 2013
Institut Almatà

1r de DAM – M3 – UF2 – T1

Laboratori: M3 – UF2 – T1 Annex. Exemple de disseny descendent en C.

Programa: ComptarParaulesAcabadesTS.c Descripció: Demana un text i compta les paraules que acaben en “ts”. Objectiu: Exemple de programa en C que ens servirà de codi base per entendre l’ús dels subprogrames (accions i funcions) i el paradigma del disseny descendent.

Materiald’APM

Pàgina 1 de 6

//Afegir llibreries #include #include //Definir constants i/o macros #define MAX_TEXT 25 #define MAX_PAR (MAX_TEXT/2)+1 #define MISSATGE_ENTRADA_TEXT "Introdueix un text (MAX 25 caracters): " #define MISSATGE_NUM_PAR_TS "\nHi ha %d paraules acabades en ts\n" //Definir nous tipus de dades typedef enum{fals,cert} boolea; //Definir variables globals //Declarac accions ifuncions void inicialitzacions(char[], int *, int *); void obtenirText(char []); void escriureMissatge(char []); void escriureMissatgeMesEnter(char[], int); void obtenirPrimer(char [], int *); void tractar(char[], int *, int *); void obtenirSeguent(char[], int *); void obtenirParaula(char [], int *, char []); boolea esParaulaAcabadaTS(char []); boolea finalText(char[], int); //Programar lafunció principal main() int main() { //Declarar variables char text[MAX_TEXT]; int index, comptador; //cos del programa inicialitzacions(text, &index, &comptador); escriureMissatge(MISSATGE_ENTRADA_TEXT); obtenirText(text); obtenirPrimer(text, &index); while(!finalText(text,index)){ tractar(text,&index, &comptador); obtenirSeguent(text,&index); } escriureMissatgeMesEnter(MISSATGE_NUM_PAR_TS,comptador);return 0; } //Definir o implementar accions i/o funcions void inicialitzacions(char text[], int *index, int *comptador){ text[0]='\0'; *index=0; *comptador=0; }

void obtenirText(char text[]){ scanf("%25[^\n]",text);while(getchar()!='\n'); } void escriureMissatge(char miss[]){ printf(miss); } void escriureMissatgeMesEnter(char miss[],int comptador){ printf(miss,comptador); } voidobtenirPrimer(char text[], int *index){ while(text[*index]==' '){ (*index)++; } } boolea finalText(char text[], int index){ boolea esFinal=(text[index]=='\0')?cert:fals; return esFinal; } void tractar(char text[], int *index, int *comptador){ char tmp[MAX_PAR]; obtenirParaula(text,index,tmp); if(esParaulaAcabadaTS(tmp)) (*comptador)++; } void obtenirParaula(char text[],int *index,char tmp[]){ int index2=0;while(text[*index]!=' ' && text[*index]!='\0'){ tmp[index2]= text[*index]; index2++; (*index)++; } tmp[index2]='\0'; } boolea esParaulaAcabadaTS(char par[]){ int index=0; boolea trobat=fals; while(par[index]!='\0') index++; index--; if(index>=1){ if(par[index]=='s' && par[index-1]=='t') trobat=cert; } return trobat; } void obtenirSeguent(char text[], int *index){ obtenirPrimer(text,index); } Institut Almatà

1r de DAM – M3 – UF2 – T1

Anàlisi del codi. El disseny descendent parteix d’una solució abstracta i fent successius refinaments permet arribar a una solució programàtica sense abstracció, escrita directament en el llenguatge de programació, en el nostre cas en llenguatge C. En els successius refinaments s’obtenen solucions amb nivells d’abstracció cada cop menors. Analitzemaquest disseny descendent en el nostre exemple:
inicialitzacions(text, &index, &comptador); escriureMissatge(MISSATGE_ENTRADA_TEXT); obtenirText(text); obtenirPrimer(text, &index); Paràmetres while(!finalText(text,index)){ actuals tractar(text,&index, &comptador); obtenirSeguent(text,&index); } escriureMissatgeMesEnter(MISSATGE_NUM_PAR_TS,comptador);

Primer nivell d’abstracció

voidtractar(char text[], Paràmetres int *index, formals int *comptador){ char tmp[MAX_PAR]; obtenirParaula(text,index,tmp); if(esParaulaAcabadaTS(tmp)) (*comptador)++; }

Segon nivell d’abstracció

Darrer nivell sense abstracció

void obtenirParaula(char text[],int *index,char tmp[]){ int index2=0; while(text[*index]!=' ' && text[*index]!='\0'){ tmp[index2]= text[*index]; index2++; (*index)++; }...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Dos De Estas Palabras Debes Manejarlas Al Revés Y Al Derecho
  • No Se Que Poner
  • no se que poner
  • No Se Que Poner
  • No se que poner
  • Yo no se que poner
  • nose que poner
  • No se que poner

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS