Ostatnio pisałem o możliwości tworzenia własnych funkcji. Dzisiaj chciałbym pokazać jak można praktycznie wykorzystać taką wiedzę.

Nie wiem czy zdajecie sobie sprawę, ale każdy numer PESEL jest zakodowanym symbolem jednoznacznie identyfikującym określoną osobę i można wg wzoru sprawdzić jego poprawność.

Na wstępie stwórzmy sobie funkcję, która będzie przyjmowała numer PESEL i sprawdźmy, czy posiada on 11 znaków:

Kolejnym krokiem, jeśli mamy 11 znaków jest oddzielenie każdego z osobna. Wykorzystamy więc funkcję wbudowaną Mid, która wycina nam fragmenty z napisu:

Teraz znaki od 1 do 10 mnożymy odpowiedni razy 1, 3, 7, 9, 1, 3, 7, 9, 1 i 3

Teraz sumujemy wszystkie liczby otrzymane z mnożenia znaków od 1 do 10. Wyciągamy resztę z dzielenia przez 10, a na koniec od 10 odejmujemy uzyskaną liczbę. Trzeba pamiętać, że jeśli otrzymamy po tych operacjach 10, należy wziąć pod uwagę 0.

Ostatnim krokiem jest sprawdzenie, czy wynik jest równy cyfrze kontrolnej, czyli tej, która znajduje się w z11. Tutaj jedna, bardzo ważna uwaga: funkcja Mid zwraca nam zmienną typu String, natomiast zmienna wynik będzie typu Integer, ponieważ jest wynikiem działań matematycznych na liczbach całkowitych. Musimy zatem zamienić typ jednej z nich, aby obie miały ten sam.

cyfraKontrolna = Int(z11)

Teraz można porównać ze sobą wyniki i sprawdzić, czy PESEL jest poprawny:

Całą funkcję z przykładowymi numerami PESEL znajdziecie w pliku dołączonym do wpisu.