به نام خدا فاطمه عباسی نژاد TCL

Slides:



Advertisements
Similar presentations
فاکتورهای مهم در ایجاد یک مقاله علمی
Advertisements

طبقه بندی تعاریف سیستم های تصمیم یار
Decision Tree.
فایل پردازی در C File based Programming in C. انواع فایل متنی –سرعت بالا –حجم کمتر –امکان دسترسی تصادفی –حفظ امنیت داده ها دودویی (باینری) –امکان باز.
PHP Hypertext per processor کار می کند؟ PHP چگونه
1 Network Address Translation (NAT). 2 Private Network شبکه خصوصی شبکه ای است که بطور مستقیم به اینترنت متصل نیست در یک شبکه خصوصی آدرس های IP به دلخواه.
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 14 Structures.
COMP519: Web Programming Autumn 2007 Perl Tutorial: The very beginning A basic Perl Program The first line Comments and statements Simple printing Running.
Database Laboratory: Session #4 Akram Shokri. DB-Lab 2 Lab Activity You must already created all tables You have to have inserted proper data in tables.
به نام خدا برنامه سازی سمت سرور (php)
موضوع: دبير مربوطه: آموزشگاه : اجرا : عبارتهای جبری خانم مقصودی
مظفر بگ محمدی دانشگاه ایلام Generics. کدهای عمومی 2 یکی از اهداف OOP ایجاد قابلیت نوشتن برنامه های عمومی با قابلیت استفاده ی مجدد است. کدهای چندریخت تا.
Data Types Modifiers Base data type Size Sign signed int 2 B unsigned float 4 B short double 8 B long char 1 B.
آشنايي با سيستم اعداد.
به نام خدا.
[c.
آزمایشگاه پایگاه داده ها ایجاد جدول در پایگاه داده در SQL Server
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
مکان یابی در شبکه های حسگر بیسیم
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
تمرین هفتم بسم الله الرحمن الرحیم درس یادگیری ماشین محمدعلی کیوان راد
هیدروگراف(Hydrograph) تهیه : دکتر محمد مهدی احمدی
معرفی پرتال سازمانی درسا مرکز فناوری اطلاعات و ارتباطات
ویژگی های DHCP جلوگیری از Conflict سرعت بخشیدن به کارها مدیریت متمرکز
جلسه اول 12/7/1388 مدرس: دکتر خالدیان
دانشکده مهندسی کامپیوتر
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
آشنایی مقدماتی با نرم افزار Endnote X4
Address: Times New Roman, size 34
آزمایشگاه پایگاه داده ها قیود در جداول یک پایگاه داده در SQL Server
چگونه بفهمیم آیا ژورنالی ISI است؟ ایمپکت فاکتور دارد یا خیر؟
آموزش مقدمات MATLAB سیگنال ها و سیستم ها دانشگاه صنعتی شریف پائیز 86
به نام خدا.
فصل دوم جبر بول.
بررسی قطبش در لیزر های کاواک عمودی گسیل سطحی(vcsel)
SSO Single Sign-on Systems
فصل دوم – آشنایی با زبان .NET Visual C#
آشنایی با پایگاه داده mysql
خودآموز آسان ویکی‌پدیای فارسی
Strain gauge Omid Kooshki Mohammad Parhizkar Yaghoobi
کوئیز از جلسه قبل) کارخانه ای در حال خرید قطعه‌ای برای یکی از ماشین‌آلات خود می باشد اگر نرخ بهره 10% برای محاسبات فرض شود، دو مدل از قطعه ماشین در دسترس.
مدارهای منطقی فصل سوم - خصوصیات توابع سويیچی
آشنایی مقدماتی با نرم افزار Endnote X4
جزوه درس طراحی سیستمهای شی گرا
ASP.NET فرناز شریعت.
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
Bucket sort اكرم منوچهري زهرا منوچهري
نرم‌افزاری برای مدیریت منابع
راهنمای استفاده از ابزار Mailings در Ms Word
پشته و صف پیوندی Give qualifications of instructors: DAP
تدريس يار: ميثم نظرياني
آشنایی مقدماتی با نرم افزار Endnote X4
بسم الله الرحمن الرحیم هرس درخت تصمیم Dr.vahidipour Zahra bayat
آشنایی مقدماتی با نرم افزار Endnote
جستجوی منابع الکترونیک
سمینار SharePoint رانندگی در بزرگراه پرتال ها
فصل ششم مدارهای ترتیبی.
فرشاد آقابزرگی هوش تجاری
ابزارهای جستجوی پایان نامه
سخت افزارهای امنیتی Hardware Security تهیه و ارایه : یونس جوان.
به نام یکتای دانا فصل اول: متدها و قواعد.
فصل 8 –Process and Deployment
عملیات با رشته‌ها موسوی ندوشنی ویراست 1389 دانشگاه صنعت آب و برق.
برنامه ریزی خطی پیشرفته (21715( Advanced Linear Programming Lecture 7
kbkjlj/m/lkiubljj'pl;
پشته و صف پیوندی Give qualifications of instructors: DAP
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
آشنایی با فرایند داده کاوی در نرم افزار R گروه داده کاوی دایکه داود دوروش تابستان 6139.
سد خونی- مغزی. تکنولوژی نمایش فاژی و کاربرد آن  مقدمه و تاریخچه  نمایش فاژی در تولید آنتی بادی مونوکونال.
Presentation transcript:

به نام خدا فاطمه عباسی نژاد TCL

تاریخچه زبان Tcl (مخفف Tool Command Language - زبان کنترل ابزار) حاصل تحقیقات John Ousterhout روی ابزارهای رایانه­ ای طراحی مدارهای الکتریکی در دانشگاه برکلی است. در این تحقیقات، Ousterhout و دانشجویانش مجبور بودند برای هریک از این ابزارها یک زبان کنترل جداگانه طراحی کنند، اما به دلیل توجه بیشتر به خود ابزار (و نه زبان)، ابزارها عموماً دارای زبان­های کنترل ضعیفی بودند. در پاییز سال ۱۹۸۷، در آزمایشگاه شرکت DEC، این ایده به ذهن Ousterhout رسید که یک زبان فرمان قابل جاسازی(Emdeddable Command Language) طراحی کند. یک زبان مفسری (Interpreted) خوب که بتواند به عنوان یک بسته کتابخانه‌ای در برنامه ­های گوناگون استفاده شود. هدف این بود که مفسر زبان مجموعه‌ای از امکانات اولیه را (مانند متغیرها و ساختارهای کنترلی) فراهم آورد و هر یک از ابزارهای استفاده کننده از آن بتوانند ویژگی­های مورد نظر خود را به آن اضافه کنند. Ousterhout در سال ۱۹۸۸ پس از بازگشت از آزمایشگاه DEC، کار بر روی Tcl را شروع کرد و نخستین نسخه آن را در یک متن پرداز (Text Editor) گرافیکی به کار گرفت. در ابتدا این کار فقط جنبه تحقیقاتی داشت و Ousterhout گمان نمی­کرد دیگران هم به استقاده از آن علاقه‌مند باشند.

فلسفه زبان نیاز به امکان جاسازی (Embeddability) قابلیت ویژه زبان Tcl است و به گفته Ousterhout باعث می­شود که اهداف زیر برای زبان در نظر گرفته شود: ۱.زبان باید گسترش پذیر(extensible) باشد: افزودن امکانات جدید به زبان توسط سایر افراد باید به آسانی امکان پذیر باشد و امکانات اضافه شده باید چنان باشند که انگار جزئی از خود زبان هستند(طبیعی باشند، نه این که با استفاده از اعمال پیچیده­ای به مقصود برسند).

۲.زبان باید ساده و عمومی باشد، تا بتواند به آسانی با برنامه­های گوناگون کار کند و امکاناتی را که این برنامه­ها می­توانند به زبان اضافه کنند محدود نکند. ۳.زبان باید امکانات خوبی برای ادغام داشته باشد، زیرا امکانات مهم­تر زبان آن­هایی است که توسط برنامه استفاده کننده به زبان افزوده شده است و کار اصلی زبان ادغام (integration) و پیوند دادن آن­ها با یکدیگر است.

نوآوری ها مهم­ترین نوآوری­های Tcl عبارتند از قابلیت جاسازی و آسانی تولید واسط کاربر گرافیکی. با ایجاد قابلیت جاسازی، مشکل بسیاری از افرادی که نیاز به یک زبان دارند، اما نمی­خواهند یک زبان کامل را از ابتدا طراحی کنند حل شده است. به دلیل آسانی جاسازی Tcl در سایر برنامه­ ها، استفاده از آن در اوایل دهه ۹۰ به سرعت رشد کرد. قابلیت دیگر Tcl، مجموعه ابزار Tk است که به عنوان گسترشی بر Tcl تولید شد و امکان ایجاد واسط کاربر گرافیکی با استفاده از ادغام مؤلفه(component)ها را به وسیله Tcl فراهم آورد. این قابلیت نیز به امکان استفاده از Tcl برای تولید برنامه­های بزرگ­تر و با واسط کاربر مناسب افزود و در کسترش استفاده از آن سهم به سزایی داشت.

کاربردها برخی از کاربردهای Tcl به شرح زیر است[۱]: کاربردهای وب : از آن­جا که Tcl یک زبان رشته-محور است برای برنامه­های وبی مفید است. از نمونه برنامه­های وبی استفاده کننده از Tcl می­توان به AOLserver و TclHttpd اشاره کرد. به علاوه کتابخانه­ های CGI برای Tcl موجود است که امکان استفاده از آن به عنوان یک زبان برنامه­ نویسی وب را فراهم می­کند. برنامه­های با واسط کاربر گرافیکی (GUI Desktop Applications): ابزار Tk برای ایجاد برنامه­های گرافیکی بسیار قدرتمند است. به علاوه این ابزار چند-سکویی (چندسکویی) است و بر روی [[لینوکس|Windows, [[Linux و Mac OS X قابل استفاده و اجراست. آزمایش و خودکارسازی : Tcl خود دارای یک چارچوب تست به نام tcltest است. به علاوه شرکت­هایی مانند Oracle, Sybase و Cisco میلیون­ها خط کد Tcl برای تست محصولات خود دارند.

برنامه­های با واسط کاربر گرافیکی (GUI Desktop Applications): ابزار Tk برای ایجاد برنامه­های گرافیکی بسیار قدرتمند است. به علاوه این ابزار چند-سکویی (چندسکویی) است و بر روی [[لینوکس|Windows, [[Linux و Mac OS X قابل استفاده و اجراست. آزمایش و خودکارسازی : Tcl خود دارای یک چارچوب تست به نام tcltest است. به علاوه شرکت­هایی مانند Oracle, Sybase و Cisco میلیون­ها خط کد Tcl برای تست محصولات خود دارند.

پایگاه­های داده: Tcl دارای گسترش­هایی برای کار با پایگاه­های داده گوناگون مانند MySQL, Sybase, PostgreSQL, Oracle و Berkeley DB می­باشد. هم­چنین بسته­های wrapper ای وجود دارند که یک واسط واحد برای چند نوع پایگاه داده فراهم می­کنند. توسعه نهفته (Embedded Development) : استفاده از Tcl به علت قابلیت ادغام بالای آن، هم در محصولات سخت­افزاری مانند محصولات Cisco و هم در محصولات نرم­ افزاری مانند نرم­ افزارهای طراحی به کمک رایانه (CAD) و خودکارسازی طراحی الکترونیکی (EDA) رایج است. ابزار شبیه سازی Modelsim یکی از ابزارهایی است که با زبان Tcl کار می­کند.

بررسی زبان شناختی(ساختار و نحو زبان) برنامه­های Tcl تشکیل شده­ اند از دستورهایی که با semicolon یا با رفتن به خط جدید (newline) از هم جدا شده­ اند. هر دستور از تعدادی کلمه تشکیل شده­ است که با فاصله از هم جدا شده اند. همهٔ دستورات Tcl مقدار برمی­گردانند. اگر برگرداندن مقدار برای دستوری معنا نداشته باشد، یک رشته ی تهی برمی گرداند.

متغیرها در Tcl نیازی به تعریف متغیر نیست. هر متغیری در اولین دفعه استفاده آن، تعریف می­شود. هم­چنین متغیرها در Tcl دارای نوع نیستند. هر متغیری می‌تواند هر مقداری بگیرد[۱]. البته می­توان با استفاده از دستور variable اقدام به تعریف متغیر در یک فضای نام (علوم رایانه) کرد. با استفاده از دستور set می‌توان مقادیر را در متغیرها ذخیره و از آنها بازیابی نمود. برای ذخیره : set x ۳۲ </souce> برای خواندن مقدار : <source lang="tcl"> set x

برای استفاده از مقادیر یک متغیر از روش «جایگذاری متغیر» به شکل زیر استفاده می شود: expr $x+۳ این دستور مقدار x+۳ را برمی­گرداند. هنگامی که یک علامت دلار در عبارت ظاهر می­شود، Tcl حروف و اعداد پس از آن را به عنوان نام متغیر تعبیر می‌کند و مقدار آن متغیر را به جای نام آن می گذارد.

جایگذاری متغیر را می­توان برای همه کلمه­های یک دستور Tcl، مستقل از این که آن کلمه یک نام دستور و یا یک آرگومان است، به کار برد. مثلاً عبارات زیر معادل عبارات قبلی است : set a expr set x ۳۲ $a $x+۳

ساختارهای کنترلی Tcl مجموعه کاملی از دستورات کنترلی شامل دستورات اجرای شرطی، دستورات حلقه و دستورات زیربرنامه ای را دارد. دستورهای کنترلی Tcl دستورهایی عادی هستند که به عنوان آرگومان، اسکریپت­های Tcl می گیرند.به عنوان مثال دستور proc که برای تعریف زیربرنامه به کار می رود، سه آرگومان می­گیرد : نام زیربرنامه، لیست نام پارامترهای آن، و بدنه زیربرنامه که یک اسکریپت Tcl است:

proc power {base p} { set result 1 while {$p> ۰} { set result [expr $result * $base] set p [expr $p - ۱] } return $result

مشابها دستور while که در بالا مشاهده می­شود، یک دستور Tcl است که دو آرگومان می­گیرد : یک عبارت که همان عبارت شرط است و یک بدنه که یک اسکریپت Tcl است. از این زیربرنامه می­توان به شکل زیر استفاده کرد : power 2 6 power ۱٫۱۵ ۵

دستورها و عبارت‌ها همه ی امکانات اساسی Tcl به وسیله دستورها نمایش داده می­ شوند.حتی عبارات نیز به وسیله اجرای دستورات و به عنوان خروجی آن ها محاسبه می شوند. قالب معمول دستورهای Tcl به شکل زیر است : command arg1 arg2 arg۳ …...

دستورهای Tcl به سه دسته تقسیم می­شوند : ۱.دستورهای توکار (built-in commands) : این دستورهای به وسیله مفسر Tcl فراهم می­شوند و در همه برنامه­های Tcl قابل استفاده اند. دستورهای proc,while,set و return که در مثال های بالا آمده اند نمونه هایی از این دستورات هستند.

۲.دستورهایی که به وسیله امکان گسترش (Extension mechanism) زبانTcl به آن اضافه میشوند. می توان به وسیله توابعی که کتابخانه Tcl فراهم می­کند، نام یک دستور و زیربرنامه اجرا کننده­ ی آن (به زبان C و ++C) را به مفسر Tcl اطلاع داد. پس از این کار هر کجا که آن نام در اسکریپت Tcl ظاهر شود، مفسر همان تابع معرفی شده (به زبان C) را برای اجرای دستور فراخوانی می کند. دستورات توکار Tcl نیز به همین روش پیاده سازی شده اند. ۳.زیربرنامه های تعریف شده به وسیله دستور proc: به طور کلی از extension برای پیاده­ سازی دستورهای سطح پایین و از proc برای پیاده سازی دستورهای سطح بالا که نوشتن آن ها به Tcl آسان­تر است استفاده می شود.

دستور expr با آرگومان های خود به شکل عبارت ریاضی برخورد می کند دستور expr با آرگومان های خود به شکل عبارت ریاضی برخورد می کند.این دستور با عبارات ریاضی، شامل اعداد صحیح، اعشاری و مقادیر منطقی (boolean) سر و کار دارد. قواعد حاکم بر عبارات expr همان است که بر عبارات در زبانC حاکم است[۲]. به علاوه دستور expr برخی توابع اولیه ریاضی را نیز پشتیبانی می کند. به عنوان مثال : set len [expr [string length foobar ] ] که مقدار طول رشته foobar را (که برابر با۶ است) محاسبه می‌کند و : set pi [expr {۲*asin(۱٫۰)}] که مقدار عدد pi را محاسبه می کند.

زبان Tcl مقادیر درون علامت نقل قول ( ” ” ) را ارزیابی و به جای عبارات درون آن مقادیر لازم را قرار می دهد. به قراردادن یک عبارت در آکولاد ( { } ) می توان از این کار جلوگیری کرد : set name Ali ”My name is $name” {“My name is $name”} دستور دوم مقدار My name is Ali را برمی‌گرداند در حالی که دستور سوم مقدار My name is $name را برمی گرداند.

رشته ها رشته ها واحد اساسی داده در Tcl هستند و به همین دلیل است که دستورات زیادی برای کار با آن­ها وجود دارد. دستور string مجموعه­ ای است از عملیات قابل انجام بر روی رشته­ها. نمونه­ ای از این عمل را در مثال بالا در بحث عبارت­ها مشاهده می­کنیم. اولین آرگومان این دستور نام عملی است که باید انجام گیرد. برخی از اعمال مجاز عبارتند از : bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, tolower, totitle, toupper, trim, trimleft, trimright, wordend, wordstart

Tcl امکاناتی را برای کار با اندیس ها در رشته ها فراهم می کند Tcl امکاناتی را برای کار با اندیس ها در رشته ها فراهم می کند. کاراکترها در رشته از ۰ شمرده می شوند. به عنوان مثال دستور زیر کاراکترهای سوم تا آخر رشته با نام name را برمی گرداند. مثلاً اگر name حاوی مقدار ahmadi باشد: string range $name 3 end مقدار adi را برمی گرداند.

برخی از اندیس­های قابل استفاده در این دستورات عبارتند از: first, last, wordstart, wordend

توضیحات (Comments) در زبان Tcl از علامت # برای مشخص کردن توضیحات برنامه استفاده می شود. هر توضیح یک خط را اشغال میکند. برای توضیحات چند خطی میتوان از قراردادن \ در پایان هر یک از خطوط استفاده کرد. در زیر مثال هایی از توضیحات Tcl مشاهده می شود. # This is a simpel line of comment #This is a line of comment \ and here is the rest of the line above

لیست‌ها یکی از قابلیت ها در زبان Tcl، امکان کار با لیست هاست. برخی از دستورهای کار با لیست ها عبارتند از : list, lindex, llength, lrange, lappend, linsert, lsearch, lreplace

لیست­ها در Tcl دارای دو کاربرد عمده هستند: ۱.استفاده در دستور کنترلی foreach 2.ساخت پویای اجزای یک دستور Tcl برای اجرای آن در آینده به وسیله دستور eval البته لیست ها وسیله مناسبی برای ساخت داده ساختارهای پیچیده در Tcl نیستند و برای چنین کاری استفاده از آرایه ها مناسب تر است . یک نمونه از کاربرد دستورهای لیست در Tcl در زیر آمده است:

%set c {Bob Carol} Bob Carol ٪ set c۲ [list Ted Alice] Ted Alice ٪ set Party۱ [list $c۱ $c۲] {Bob Carol} {Ted Alice} ٪ set Party۲ [concat $c۱ $c۲] Bob Carol Ted Alice ٪ linsert $Party1 1 Richard {Bob Carol} Richard {Ted Alice} ٪

آرایه‌ها آرایه یک متغیر Tcl با اندیس های رشته ای است. می توان به اندیس به چشم کلید و به آرایه به دید مجموعه ای از عناصر که به وسیله کیلد قابل شناسایی هستند نگریست. از این نظر، می توان گفت آرایه­های Tcl مانند Hashها در زبان Perl هستند. قابلیت انعطاف آرایه­ها آن‌ها را به ابزاری مهم برای برنامه نویسی در Tcl تبدیل می‌کند. یکی از استفاده های مهم آرایه ها در Tcl ایجاد داده ساختارهای پیچیده است که در زبان هایی مثل C و Pascal به وسیله مفاهیمی مانند struct و record تعریف می شوند.

در زیر نمونه­ای از کاربرد آرایه­ها در Tcl دیده میشود: ٪ set People(friend) Tom Tom ٪ set People(spouse) Marcia Marcia ٪ set People(boss) Jack Jack ٪ array names People friend boss spouse ٪ set Person $People(friend) ٪ array get People friend Tom boss Jack spouse Marcia ٪ set People(friend) \ [concat $People(friend) Bob] Tom Bob ٪

سایر امکانات از جمله سایر امکاناتی که زبان Tcl فراهم می­کند می­توان به موارد زیر اشاره کرد: عبارات منظم (Regular Expressions) کتابخانه­ها و بسته­های(Packages) اسکریپتی انعکاس (Reflection) و اشکال­زدایی محدوده-نام‌ها (Namespaces) ترجمه (Internationalization) برنامه سازی رویداد-محور(Event-driven Programming) برنامه­سازی با سوکت ها

نمونه برنامه­های کامل Tcl در زیر نمونه­هایی از برنامه­های کامل Tcl آورده شده است. نمونه اول یک اسکریپت کنترلی برای برنامه شبیه­سازی Modelsim است و دستورهای افزوده شده به Tcl توسط برنامه Modelsim در آن به خوبی مشهود است:

یک برنامه ping ساده که در محیط لینوکس اجرا می شود: #!/usr/local/bin/wish -f # Ping example #۱ frame .buttons -borderwidth 10 pack .buttons -side top -fill x button .buttons.quit -text Quit -command exit button .buttons.ping -text Ping -command Ping pack .buttons.quit .buttons.ping -side right frame .f ; pack .f -side top label .f.l -text Host: entry .f.host -width ۲۰ -relief sunken pack .f.l .f.host -side left text .log -width ۶۰ -height ۱۰ -bd ۲ -relief raised pack .log -side top proc Ping {} { set hostname [.f.host get] catch {exec /usr/sbin/ping $hostname} result .log insert end $result .log insert end \n }

به عنوان نمونه ای دیگر میتوان برنامه تبدیل فایل­های Dos به Unix را مشاهده کرد: #!/usr/local/bin/tclsh # Dos2Unix # Convert a file to Unix-style line endings # If the file is a directory, then recursively # convert all the files in the directory and below. ## Arguments # f The name of a file or directory. ## Side Effects: # Rewrites the file to have LF line-endings proc Dos2Unix {f} { puts $f if {[file isdirectory $f]} { foreach g [glob [file join $f *]] { Dos2Unix $g } } else { set in [open $f] set out [open $f.new w] fconfigure $out -translation lf puts -nonewline $out [read $in] close $out close $in file rename -force $f.new $f # Process each command-line argument foreach f $argv { Dos2Unix $f