برنامه نویسی به زبان ارلنگ

ارلنگ زبان برنامه نویسی تابعی و همروند است

برنامه نویسی به زبان ارلنگ

ارلنگ زبان برنامه نویسی تابعی و همروند است

برنامه نویسی به زبان ارلنگ

در این وبلاگ مطالب مربوط به ارلنگ و الیکسیر منتشر خواهد شد

  • ۰
  • ۰

در این مثال باید برنامه ئی بنویسیم که گذرواژه کاربر رو بررسی کند و بتواند گذرواژه های ساده، خیلی ساده، قوی و خیلی قوی را شناسایی کند. تعاریف بشرح زیر است:

گذرواژه‌ی خیلی ضعیف: متشکل از عدد است و طولی زیر 8 کارکتر دارد

گذرواژه‌ی ضعیف: متشکل از حروف است و طولی زیر 8 کارکتر دارد

گذرواژه‌ی قوی: متشکل از عدد و حروف است و طولی بیش از 8 کارکتر دارد

گذارواژه‌ی خیلی قوی: متشکل از عدد، حروف و کارکترهای ویژه نظیر !@#$%^&* است

کد برنامه بشرح زیر است:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
%%@author Mahdi Hosseini Moghaddam <m.hoseini.m@gmail.com>
%%@doc Exercise 25 from "Exercises for programmers" Book
%%@reference from <a href="http://erlang.blog.ir">مثال هایی در ارلنگ</a>,
%% 2018
%%@copyright 2018 by Mahdi Hosseini Moghaddam
%%@version 0.1
-module(ex25).
-export([main/0]).
-compile([debug_info]).
-define(VERY_WEEK, {"^[0-9]{0,8}$","Very Week"}).
-define(WEEK,{"^[a-zA-Z]{0,8}$","Week"}).
-define(STRONG,{"((?=.+[0-9])(?=.+[A-Za-z])){8,}","Strong"}).
-define(VERY_STRONG,{"(?=.+[0-9])(?=.+[A-Za-z])(?=.*[!@#\$%\^&*]).{8,}","Very Strong"}).

main() ->
	try run()
	catch
		error:_Error -> io:format(
			"Please Enter only Numeric type~n");
		throw:negativeNumber -> io:format(
			"Please Enter only non-zero positive number~n")
	end.

run() ->
	{ok,Q} = readItems(),
	case passwordValidator(Q) of 
		{ok, Msg} ->
			io:fwrite("The password ~s is ~s ~n", [Q,Msg]);
		nomatch ->
			io:fwrite("No Macth ~n")
	end.
get_validation() ->
	[?VERY_STRONG, ?STRONG, ?WEEK, ?VERY_WEEK].

	passwordValidator(Str) ->
	passwordValidator(Str,get_validation()).
	
%@ this function Validates Password
passwordValidator(_Str, [] ) ->
	nomatch;
passwordValidator(Str,[{Re, Msg}|T]) ->
	case re:run(Str,Re) of
		{match, _Captured} -> {ok,Msg} ;
		nomatch -> 
		passwordValidator(Str, T)
	end.


%@doc This function reads the user input the returns the result
readItems() ->
	{ok,[P]} = io:fread(
		"Enter the password ","~s"),
	{ok,P}.

من برای بررسی سختی گذرواژه از عبارات با قاعده (Regular Expression) استفاده کردم. ماژول re ارلنگ این کار را برای من می‌کند. قسمت سخت این مثال محاسبه عبارت باقاعده برای هر سختی هست. با استفاده از ماکرو تعریف آنها را در خط 10 تا 13 مشخص کردم. 

  • ۹۷/۰۳/۱۲
  • مهدی حسینی مقدم

آموزش ارلنگ

ارلنگ

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی