[ Pobierz całość w formacie PDF ]
.Funkcja główna wykonuje nast¹pujÄ…ce czynnoÅ›ci:" uaktywnia wÅ‚asnÄ… obsÅ‚ug¹ bÅ‚¹dów ERROR_SSCANF," sprawdza argumenty wywoÅ‚ania funkcji posÅ‚ugujÄ…c si¹ funkcjÄ… CHECK_ARGUMENT_TYPE.W przypadku bÅ‚¹dnych argumentów wypisywany jestzbiorczy komunikat o bÅ‚¹dach (zmienna msg_all), po czym dziaÅ‚anie funkcjizostaje przerwane," sprawdza, czy argument format wskazuje na czytanie formatowane czy naczytanie swobodne," w przypadku czytania formatowanego:" rozbija argument input_string na poszczególne dane, wykorzystujÄ…cfunkcj¹ READ_LISP_DATA," rozbija argument format na poszczególne typy zmiennych i nazwyzmiennych, wykorzystujÄ…c funkcj¹ CHECK_ARGUMENT_FORMAT," sprawdza, czy lista typów zmiennych i lista nazw zmiennych sÄ… tej samejdÅ‚ugoÅ›ci.JeÅ›li nie, wypisywany jest komunikat o bÅ‚¹dzie po czym dziaÅ‚a-nie funkcji zostaje przerwane," jeÅ›li powyższy warunek jest speÅ‚niony, nast¹puje podstawienie pododpowiednie zmienne ich wartoÅ›ci po ich uprzednim przeformatowaniuna podany typ," w przypadku czytania swobodnego:" rozbija argument input_string na poszczególne dane, wykorzystujÄ…cfunkcj¹ READ_LISP_DATA," podstawia list¹ rozbitych argumentów pod zmiennÄ… przekazanÄ… w argu-mencie output_list," powraca do standardowej obsÅ‚ugi bÅ‚¹dów.Poniższy program pokazuje sposób wykorzystania funkcji SSCANF do odbioru zbiorudanych zapisanego w pliku $FILE_08.DAT. 743 BvupMJTQ! !q3bluzd{oz!lv3t;*************************************************PROG_124;Wykorzystanie funkcji SSCANF z biblioteki SCANF1.LLB.;Odbior zbioru danych dla MES zapisanego w pliku$FILE_08.DAT;;=================================================;(defun ZMIENNE_GLOBALNE ()(progn;----------(setqglob_lista_wezlow (list)glob_lista_elementow (list);glob_punkt_ld '(0 0 0)glob_punkt_pg '(12 9 0);glob_appname "ACPAFEC_V_1_50";glob_h_tekstu 0.20glob_h_tekstu_0 0.20glob_delta_tekstu 0.20glob_wielkosc_punktu 0.20glob_wielkosc_punktu_0 0.20;glob_typ_elementu 34000glob_grupa_elementu 1glob_material_elementu 1);setq(regapp glob_appname) ;rejestracja aplikacji;----------(princ);----------);progn);ZMIENNE_GLOBALNE;;=================================================;(defun ODBIERZ_ZBIOR_DANYCH (nazwa_zbioru / plik)(progn;----------(setq plik (open nazwa_zbioru "r"))(command "_ucs" "_World")(CZYTAJ_ZBIOR_DANYCH); (OBSZAR_MODELU); (GRANICE glob_punkt_ld glob_punkt_pg); (ODBIERZ_WEZLY); (ODBIERZ_ELEMENTY)(if plik(progn(close plik));progn);if;----------(princ) 26/!Pct vhb!qmjl x!ufltupxzdi!x!BvupMJTQjf 744;----------);progn);ODBIERZ_ZBIOR_DANYCH;;=================================================;Wczytanie zbioru danych DAT.;Utworzenie odpowiednich list.;(defun CZYTAJ_ZBIOR_DANYCH ( / jeszcze1 linia)(progn;----------(princ "\nRozpoczecie czytania zbioru danych.")(setq jeszcze1 T)(while jeszcze1(progn(setq linia (read-line plik))(setq linia1 (substr linia 1 5))(cond((= linia "NODES")(CZYTAJ_MODUL_NODES))((= linia "ELEMENTS")(CZYTAJ_MODUL_ELEMENTS))((or (= linia "END.OF.DATA")(= linia nil))(setq jeszcze1 nil)(close plik)(setq plik nil)));cond);progn);while jeszcze1(princ "\nZakonczenie czytania zbioru danych.");----------(princ));progn);CZYTAJ_ZBIOR_DANYCH;;=================================================;Czytanie modulu NODES;(defun CZYTAJ_MODUL_NODES( / jeszcze2 linia numerwsp_x wsp_y wsp_z wsp_wz opis_wezla)(progn;----------(princ "\nCzytanie wezlow.")(setq glob_lista_wezlow (list))(setq jeszcze2 T);----------(while jeszcze2(progn(setq linia (read-line plik))(cond((= linia "C END.OF.NODES")(setq jeszcze2 nil));((/= linia "C END.OF.NODES")(if (or(= (substr linia 1 1) "C")(= (substr linia 1 4) "NODE") 745 BvupMJTQ! !q3bluzd{oz!lv3t);or(progn(princ) ;nie rob nic);progn(progn ;else(SSCANFlinia"%d %f %f %f &numer &wsp_x &wsp_y &wsp_z""");SSCANF(if (= wsp_z nil)(progn(setq wsp_z 0.0));progn);if(setqwsp_wz (list wsp_x wsp_y wsp_z)opis_wezla (list numer wsp_wz)glob_lista_wezlow(append glob_lista_wezlow (listopis_wezla)));setq);progn);if));cond);progn);while jeszcze2;----------(princ "\rCzytanie wezlow.");----------(princ);----------);progn);CZYTAJ_MODUL_NODES;;=================================================;Czytanie modulu ELEMENTS;(defun CZYTAJ_MODUL_ELEMENTS( / jeszcze2 linia numer grupa typ materialw1 w2 w3 w4 topologia opis_elementu)(progn;----------(princ "\nCzytanie elementow.")(setq glob_lista_elementow (list))(setq jeszcze2 T);----------(while jeszcze2(progn(setq linia (read-line plik))(cond((= linia "C END.OF.ELEMENTS")(setq jeszcze2 nil))((/= linia "C END.OF.ELEMENTS") 26/!Pct vhb!qmjl x!ufltupxzdi!x!BvupMJTQjf 746(if (or(= (substr linia 1 1) "C")(= (substr linia 1 6) "NUMBER"));or(progn(princ) ;nie rob nic);progn(progn ;else;----------(SSCANFlinia(strcat"%d %d %d %d %d %d %d %d ""&numer &grupa &typ &material &w1 &w2&w3 &w4");strcat"");SSCANF;----------(setq topologia (list))(setq topologia (append topologia (listw1)))(setq topologia (append topologia (listw2)))(if (/= w3 nil)(progn(setq topologia (append topologia (listw3))));progn);if(if (/= w4 nil)(progn(setq topologia (append topologia (listw4))));progn);if;----------(setqopis_elementu (append(list numer)(list grupa)(list typ)(list material)topologia);appendglob_lista_elementow(append glob_lista_elementow (listopis_elementu)));setq;----------);progn);if));cond);progn 747 BvupMJTQ! !q3bluzd{oz!lv3t);while jeszcze2;----------(princ "\rCzytanie elementow.");----------(princ);----------);progn);CZYTAJ_MODUL_ELEMENTS;;=================================================;Funkcja testujaca.;(defun C:TEST ()(progn;----------; (RYSUNEK_PROTOTYPOWY)(ZMIENNE_GLOBALNE)(ODBIERZ_ZBIOR_DANYCH "$file_08.dat");----------(princ);----------);progn);C:TEST;;=================================================(load "scanf1.llb")(princ "\nProgram zaladowany.")(princ "Komenda TEST uruchamia testowanie.")(princ);=================================================;*************************************************KONIECWykonanie powyższego programu b¹dzie nast¹pujÄ…ce:Command: (load "prog_124")µ!µ!µ!µ!Program zaladowany.Komenda TEST uruchamia testowanie.Command: testµ!µ!µ!µ!Rozpoczecie czytania zbioru danych.Czytanie wezlow.Czytanie elementow.Zakonczenie czytania zbioru danych.Command:Po wczytaniu zbioru danych możesz przejrzeć globalne listy w¹złów i elementówpodstawione pod zmienne glob_lista_wezlow i glob_lista_elementow [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • higrostat.htw.pl
  •