Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Program kontrolujący poprawność wprowadzanych danych



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Pascal, Delphi, ...
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Matii
Gość





PostWysłany: Pon Kwi 16, 2018 8:47 am  OP    Temat postu: Program kontrolujący poprawność wprowadzanych danych Odpowiedz z cytatem Pisownia

Witajcie

Postanowiłem napisać krótki programik zawierający procedurę kontrolującą wprowadzania danych. Sam nie wiem czy dobrze go napisałem. To też prosiłbym o uwagi i sugestie.

Ps. Założyłem, że mogą być wprowadzane wyłącznie litery oraz cyfry.

Kod:
program wprowadz;
uses Crt;
var
   znak: char;
procedure Kontrolujaca;
begin
     ClrScr;
     repeat
           znak := readkey;
           write(znak:2)
     until not (ord(znak) in [48..57,65..90,97..122])
end;
begin
     Kontrolujaca
end.
Powrót do góry
Matii
Gość





PostWysłany: Wto Kwi 17, 2018 12:17 pm  OP(?)    Temat postu: Poprawiona wersja programu Odpowiedz z cytatem Pisownia

Kod:
program Wprowadz;
uses Crt;
var
   znak: char;
procedure Kontrolujaca(a: char);
begin
     repeat
           a := readkey;
           if ord(a) in [48..57,65..90,97..122] then
             write(a:2)
     until not (ord(a) in [48..57,65..90,97..122])
end;
begin
     {ClrScr;}
     Kontrolujaca(znak)
end.
Powrót do góry
lethern



Dołączył: 09 Paź 2007
Posty: 1115

PostWysłany: Sro Kwi 18, 2018 5:55 pm      Temat postu: Odpowiedz z cytatem Pisownia

wszystko fajnie, ale na siłę mogę się do paru rzeczy przyczepić (może to wydają się drobnostki w drobnym programie, ale w dużych programach stają się dużym problemem)

nazwy - nazwy procedur najlepiej gdyby coś mówimy, inaczej są mało przydatne. Nie widzę znaczącej różnicy między nazwą funkcji "kontrolująca" i "xfy55", wybieranie dobrych nazw jest trudne, ale warto próbować. Wyobraź sobie, że jesteś inżynierem i mówisz teraz do kolegi po fachu (ale który nie widział kodu) "mamy błąd w procedurze o nazwie kontrolująca z pliku wprowadz", czy spodziewasz się że ta osoba domyśli się co procedura robi? Ten sam problem będziesz miał, gdy sam sięgniesz do swojego kodu za kilka miesięcy albo lat, nie będziesz wiedział co się dzieje - pomagają w tym dobre nazwy i komentarze

Teoretycznie można tę procedurę podzielić na pół i wydzielić funkcję, która sprawdza czy znak jest z tego przedziału. Można ją nazwać "sprawdź"... albo dłuzej ale i lepiej "CzyZnakAlfanumeryczny"

dalej, podobnie można zrobić ze znakami ascii - może teraz pamiętasz, że 97-122 odpowiada 'a'-'z', ale skoro nie piszemy w asemblerze, tylko w Pascalu, żeby program był czytelny, to po co używać numerów znaków, jeśli można użyć czytelnych znaków - zakładam że to zadziała, program się kompiluje, ale go nie testowałem

nie ma potrzeby wyrzucać zmiennej "znak" ze środka procedury na zewnątrz - skoro jest używana wyłącznie w środku, niech tam będzie tworzona - w dużym kodzie porzadek staje się na miarę złota

formatowanie kodu - dobrze się czyta kod, jeśli ilość wcięć w kodzie jest poprawna (wcięcia są równe)

jakiś przykładowy zmieniony kod
Kod:
program Wprowadz;
uses Crt;

procedure PisanieAlfanumeryczne();
var znak: char;
begin
     repeat
          znak:= readkey;
          if znak in ['0'..'9','A'..'Z','a'..'z'] then
             write(znak:2)
     until not (znak in ['0'..'9','A'..'Z','a'..'z'])
end;

begin
     PisanieAlfanumeryczne()
end.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
samolot



Dołączył: 26 Sty 2006
Posty: 8259
Skąd: Toruń

PostWysłany: Sro Kwi 18, 2018 9:28 pm      Temat postu: Odpowiedz z cytatem Pisownia

Całkowicie się zgadzam z przedmówcą, co do zasad pisania kodu, zwłaszcza, jeśli się jednocześnie pisze różne programy.
No właśnie. Miałem skasować drugi kod kolegi Matii myśląc, że jest identyczny z pierwszym. Ponieważ jednak się nieznacznie różni od pierwszego, to tego nie robię, ale mam propozycję by ktoś objaśnił, dlaczego jest ta różnica między kodami i co z niej wynika, albo co ma wynikać?. Taki komentarz dla osób nie znających Pascala, ale nie tylko.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Pascal, Delphi, ... Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.11907 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |