Presentation is loading. Please wait.

Presentation is loading. Please wait.

دسته بندی زبانها بر حسب نوع زبانهای با نوع : (ايستا : ترجمه) – (پويا : تفسير) تفسيری : Snobol، Apl، Awk، Javascript var kate=“hi” var sam=200 val l=10.25.

Similar presentations


Presentation on theme: "دسته بندی زبانها بر حسب نوع زبانهای با نوع : (ايستا : ترجمه) – (پويا : تفسير) تفسيری : Snobol، Apl، Awk، Javascript var kate=“hi” var sam=200 val l=10.25."— Presentation transcript:

1 دسته بندی زبانها بر حسب نوع زبانهای با نوع : (ايستا : ترجمه) – (پويا : تفسير) تفسيری : Snobol، Apl، Awk، Javascript var kate=“hi” var sam=200 val l=10.25 var j=l sam=kate+sam var ans=l+sam+j kate=ans change type زبانهای بدون نوع (typeless) : عدم ذخيره اطلاعات برای نوع : BCPL -------------------------- V!0,V!1,…V!25 : تخصيص متغير برداری با 26 کلمه ماشين ----------------------------- LET F(A,B)=A<B  A,B procedure F(43,21) F:=0 no longer function اسمبلی ؟

2 - زبانها با وارسی نوع قوی - زبانها با وارسی نوع ضعيف تمرين : Ada و JAVA و prolog (قوی يا ضعيف)؟

3 هم ارزی متغيرها(equvalency) هم ارزی دو متغير : انتساب به يکديگر؟ - اسمی(name equivalence) : نام نوع يکسان - ساختاری(structure equivalence) : ساختار يکسان اسمی (نام نوع : s) struct s{int a; float b;}; s s1,s2; s1=s2; ساختاری :(نوع : sوss) struct s{int a; float b;}; s s1; (type : s) struct ss{int a; float b;}; ss s2; (type:ss) s1=s2;?

4 مثال ها class c1{int x;int y;} class c2{int x;int y;} c1 z=new c2(); ? name structure struct {int a;int b;}s1; struct {int a;int b;}s3; void v(s1 ss){…} main(){ s3 s2; v(s2);} name structure

5 void v(int a1[]){ cout <<a1[5];} main(){ int a3[10]; for(int i=0; i<10;i++)a3[i]=i; v(a3);} name typedef int k1; typedef int k2; k1 s1; k2 s2; s1=s2; name structure C : (struct و class : اسمی) بقيه : ساختاری

6 پاسکال type personid=array[1..10] of char; vehicleid=array[1..10]of char; procedure vehicle(v1:vehicleid); begin……..end; var p1:personid; begin vehicle(p1); type mismatch end.

7 پاسکال Type personid=set of char; vehicleid=set of char; procedure vehicle(v1:vehicle); begin…….end; p1:personid; begin vehicle(p1); OK(set : structure) end.

8 personid=record a:set of char; end; vehicleid=record a:set of char; end; procedure vehicle(v1:vehicleid); begin…..end; var p:personid; begin vehicle(p); type mismatch(record:name) end;

9 زبانهای Ada – modoula-3 – Java ؟

10 نوع های عمومی(generic) نوع قابل تغيير. int n=2; int* m=&n; float f; float* n=&f; m=n; ارجاع عمومی: m=(int*)n; int n=2; float f=3.5; void* x; x=&n; x=&f; int* z1=&n; float* z2=&f; z1=x; z2=x; *x=3; *(int*)x=3;

11 template class array{ T a[100]; public: T& operator[] (int index){ if (index>=0 && index<size) return a[index];} }; main(){ array ia; array fa; for(int i=0; i<20; i++){ia[i]=i*i; fa[i]=float(i)*1.4; }

12 توابع template نوشتن توابع عمومی بجای توابع خاص مثال : تابعی بنويسيد که ماکزيمم دو عدد را برگرداند. برای اعداد صحيح : int max(int k, int j) { if k<j return j; else return k;} برای اعداد اعشاری : float max(float k, float j){if k<j return j;else return k;}

13 template T min (T x, T y) { return (x < y) ? x : y; } void main ( ) { int k =2, kk = 3; float z = 1.2, zz = 1.3; cout << min(k,kk); cout << min(z,zz); }

14 مثال : اشکال در عدم استفاده از template int min(int k, int j) { return(k<j) ? k : j; } void main( ) { float k = 2.5, kk = 2.4; cout <<min(k,kk); }

15 JAVA import java.util.* Stack my_stack=new Stack(); String s=“Hi Ali”; foo f=new foo(); my_stack.push(s); my_stack.push(f); s=(String)my_stack.pop();

16 Ada generic type ITEM is private; procedure EXCHANGE(X,Y:in out ITEM)is T:ITEM; begin T:=X; X:=Y; Y:=T; end; procedure swap is new EXCHANGE(REAL); procedure swap is new EXCHANGE(INTEGER );

17 generic MAX:POSITIVE; type ITEM is private; package stack is procedure PUSH(X:ITEM); function POP return ITEM; end STACK; package BODY STACK is S:array(1..MAX) of ITEM; TOP:INTEGER range 0..MAX; end STACK; declare package MY_STACK is new STACK(100,REAL); use MY_STACK; begin push(X); Y:=pop; end;


Download ppt "دسته بندی زبانها بر حسب نوع زبانهای با نوع : (ايستا : ترجمه) – (پويا : تفسير) تفسيری : Snobol، Apl، Awk، Javascript var kate=“hi” var sam=200 val l=10.25."

Similar presentations


Ads by Google