2bytesprog2 course_2014_c1_sets
TRANSCRIPT
Program 2Bytes_pro;
Uses wincrt;
Var k,x,y,z :integer;
Procedure proc1(a:integer; var b:integer ;)
var i,x: integer;
Begin
i:=10; x:=7; y:=12; a:=2; b:=4;
end;
Begin
x:=3; y:=5; proc1(k,z);
Writeln(„z=„,z);
Writeln(„k=„,k);
Writeln(„x=„,x);
Writeln(„y=„,y);
Writeln(„i=„,i);
End.
+1 +1 +1
+1 +1
{ z=4 }
{Random value often be zero}
{ x=3 }
{ y=12 } { error }
In procedures and functions There are four types of variables :
1. General Variables : are variables that are written at the top of the program befor all procedures and functions and we can see it and deal with it by all procedures and functions in the main program (like : k , x , y , z) .
2. Local Variables : are variables that are declared in the statements part within procedure or function and we can‟t see it and deal with it outside that procedures (like : i , x ) .
3. Formality Variables : are variables that appear in the header of procedure or function and it is formality and is not reserved place for it in memory (like a , b )
we have two types of formality variables
1) input variables : Keeps the value entered by after the completion of the procedural ( like : a)
2) output variables : Keeps the value obtained by the procedure. And we writes before it the reserved word (var) (like : b )
4. Actual Variables : are variables that main program pass it to procedure or function during a summons and it agree formality variables in number and type (like : k , z)
Notes : Local variables have priority from general variables in the same
Field of vision ( يجال انرؤيا ) ( like : x)
Execution always start form (begin) by the main program
in string :
var : name , lname : string ;
begin writeln(„enter the name and lname „);
readln(name , lname);
writeln(name);
writeln(lname);
End.
Ahmed
Ali
Inputs :
Ahmed Ali
X nothing
outputs
readln(name);
readln(lname);
+1
What is a DiscreteType??
Discrete Data Type:
Integer boolean char Enumerated
Day=(sat,sun,mon,tu,wed,th,fri)
Lik
e..
Definition
The SET is a Data Structure which contain
discrete type elements ..
Doesn‟t have index.!!
<Nameof varible > :Set of < discrete type >
We can‟t define the set as this form :
S : Set of Integer;
Because set can have 256 components at most
and all its component values should be in rang 0
.. 255 .
Ex:
• S1 : Set of 1..100;
• S2 : Set of „a‟..‟z‟;
• S : Set of Days;
• S : Set of 66..256;
• S: set of char ;
{True}
{True}
{True}
{False}
+1 {True}
Operation
• To put a value in it , we use [value] .
• The operations on Sets :
⋂ ⇔ *
⋃ ⇔ +
/ ⇔ -
⊆ ⇔ <=
⊇ ⇔ >=
∈ ⇔ in
Program SetsOperator;
Var
A0 : set of 1..15;
A1 : set of 1..10;
A2 : set of 5..15;
i : integer;
Begin
A1 := [1..10];
A2 := [5..15];
A0 := A1*A2; {A0=[5..10]} A0 := A1+A2; {A0=[1..15]} A0 := A1-A2; {A0=[1..4]} A0 := A0-[1]; {A0=[2..4]}
A1 := [2,3]; A2 := [1,2,3,4,5]; if (A1 <= A2) then {or (A2 >= A1)} writeln ('A1 is a subset of A2'); readln (i); if (i in A1) then writeln (i,' is in A1') else writeln (i,' is not in A1'); End;
True statement
A0, A1 : Set of 1..15; A : boolean; A0 := [1, 2]; A1 := [2, 4]; A0 := A0 – [77]; A := A1 >= A0; A := 1 in A0;
Const Sets
Type Digits = set of 0..9; Const HexD : set of '0'..'z‘ = ['0'..'9', 'A'..'F', 'a'..'f']; ED : Digits = [0, 2, 4, 6, 8]; Var d : Digits; Begin d := [8]; d := ED; {d=[0,2,4,6,8]} ED:=ED+[9]; ED:=d; End.
+1
Error ..
Fateh
3eoonk !!
Enum Set
Type Day = (sun,mon,….,sat); Name=(koko,soso,fofo,fifi); Var days: Set of Day; N:set of Name Begin Days:=[sun..sat]; N:=[KOKO,SOSO]; End.
Program Test(); Type
SInt = Set of 1..150 ; SCh = Set of ‘0’..’z’;
Var S1 : SInt; S2 : SCh; Slen : Integer;
Begin Readln(Slen); ReadsetI(S1 , Slen); ReadsetC(S2 , Slen); PrintsetI(S1 , Slen); PrintsetC(S2 , Slen); Readln;
End.
Read Integer Sets
Procedure ReadsetI (var S:SInt; L:integer) ; var i, x : integer; Begin s:=[];
For i:=1 to L do begin
Read(x); S := S + [x];
end; End;
Read Char Sets
Procedure ReadsetC (var S:SCh; L:integer) ; var i, x : Char; Begin s:=[];
For i:=1 to L do begin
Read(x); S := S + [x];
end; End;
Print Integer Sets Using While Loop:
Procedure PrintsetI (S : SInt) ; var I : Integer; Begin
I := 0; While ( S <> []) do If (I in S) then begin
Writeln(I); S := S – [I];
end; I := I + 1;
End;
Print Integer Sets Using For Loop
Procedure PrintsetI (S : SI) ; var I : Integer; Begin
For I:=1 to 32700 do Begin
If (I in S) then Begin
Writeln(I); S := S – [I]; End; If (S = []) then I := 32700;
End; End;
Exercise : يرى في يؼهذ يا إػطاء دوراخ في يادذي انرياضياخ وانهغح اإلَكهيسيح
يؼطى كم طانة ػُذ ذسجيهه في انًؼهذ رقى فريذ يحصىر تيٍ طانة 50فإرا ػهًد أٌ ػذد انطالب في كم يادج ال يرجاوز 100..1
انًطهىب كراتح ترَايج ػاو تاسرخذاو االجرائياخ وانًجًىػاخ ورنك :نهقياو تانًهاو انرانيح
ذشكيم يجًىػح نطالب انرياضياخ ويجًىػح نطالب انهغح 1. (إدخال ػُاصر انًجًىػح )اإلَكهيسيح
إجراء نطثاػح ػُاصر انًجًىػح 2.
إجراء إلػطاء يجًىػح تأرقاو انطالب انًسجهيٍ تانًادذيٍ 3.
ػذد ٍقررخ إدارج انًؼهذ ذخفيض ػذد انطالب ورنك تاالسرغُاء ػ4.يحذد يُهى يذخم يٍ نىحح انًفاذيح ػهى أٌ يرى اخريار أرقاو
انطالب انًفصىنيٍ تشكم ػشىائي وانًطهىب كراتح إجراء نُقم أرقاو انطالب انًفصىنيٍ إنى يجًىػح جذيذج
وضغ أرقاو انطالب انًفصىنيٍ ضًٍ شؼاع 5.
Program prog2byte_team;
Uses wincrt;
Type students=set of 1..100;
numbers=array[1..50] of 1..100;
Var seng,smath : students;
Procedure inputset(var s : students; m:integer);
Var i,x: integer;
Begin
s:=[ ];
i:=0;
While (i<m) do
begin
writeln(„input students number „);
readln(x);
if (x in s) then
writeln(„ you input this number befor please enter
another number „)
else
begin
i:=i+1;
s:=s+[x];
end;
end;
End;
numbers of
students
Procedure printset(s :students);
Var i:integer;
Begin
i:=1;
While (s<>[ ]) do
begin
if (i in s) then
begin
write(i:5);
s:=s-[ i ];
end;
i:=i+1;
end;
writeln;
End;
Procedure deletestd(var s,n : students);
Var k,i,x ; integer;
Begin
n:= [ ];
Randomize;
i:=0; Writeln(„enter the number you want to go throw out „);
Readln(x);
While (i<x) do
begin
k:= random(100) + 1;
if ( k in s ) then
begin
s:=s – [ k ];
seng:= seng – [ k ];
smath:=smath – [ k ];
i:=i+1;
n:=n + [ k ];
end;
end;
End;
يجًىػح انطالب
انًفصىنيٍ
يجًىػح انرقاطغ
:Randomize يقىو ترىنيذ
أرقاو ػشىائيح أػرًادا ػهى ساػح انُظاو
:Random(100)=0..99;
Random(100)+1=1..100
Procedure setinArray(s: students; var a: numbers ; var k: integer);
Var i : integer;
Begin
K:=0;
For i:=1 to 100 do
If (i in s) then
begin
k:=k+1;
a[k]:=i;
end;
End;
سرذػاء ايٍ أجم انشؼاع في انثرَايج
انرئيسي
Var nmath,neng,k,i :integer;
Aunaccepted : numbers;
Sunaccepted,sboth : students;
Begin
Writeln(„enter the number of math students „);
Readln(nmath);
Inputset(smath,nmath);
Writeln(„enter the number of English students „);
Readln(neng);
Inputset(seng,neng);
Bothsub(smath , seng , sboth);
Printset(sboth);
Deletestd(sboth,Sunaccepted);
Printset(Sunaccepted);
setinArray(Sunaccepted,Aunaccepted,k);
For i:=1 to k do
Writeln(Aunaccepted[i]:5);
Readln;
End.
Homework:
Creat and read two arrays of student numbers, student numbers in Prog and in English.
-We want to know the students numbers at the two subjects..?!
-what are the student numbers at the Prog and Not at English ??
+10 point
Group : group link
Mobile phone- Kinan : 0994385748
Facebook account : kinan’s account
2 bytes team
Ques:
write a programme DO:
1-Read An Array 2-Print An Array//Proce
3-function to find the min elem in the array
4-Procedure to find the Sum array(of the tow arrays).
5- Multi array
Write the Main Program..
Programme P-Matrix;
Const nMax=20; mMax=20;
Type Matrix=array[1..nmax,1..mmax] of real;
Var A,B,Add,mult :Matrix;
n1,n2 :1..nmax;
m1,m2 :1..mmax;
min: integer;
Procedure ReadMat(Var: n:1..nmax;var m:1..mmax; var A:matrix);
Var i,j:integer;
begin
writeln(„enter the first Dimention of matrix< ‟ ,nmax);
Readln(n);
writeln(„enter the second Dimention of matrix< ‟ ,mmax);
Readln(m);
for i:=1 to n do
begin
for j:=1 to m do read(A[I,j]); {hint}
readln; {hint}
end;
end;
Procedure WriteMat(Var: n:1..nmax;var m:1..mmax; var
A:matrix);
Var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do write(A[i,j],‟ ‟);
writeln;
end;
end;
Function MinOfMatrix(n:1..nmax,m:1..mmax;A:matrix):real
Var i,j:integer; min:real;
begin
min:=A[1,1];
For i:=1 to n do
for j:=1 to m do
if (A[i,j]<min) then
min:=A[i,j];
MinOfMatrix:=min;
end;
Procedure Add_Tow_Matrix(n1,n2:1..nmax;
m1,m2:1..mmax; var n3:1..nmax; var m3:1..mmax; var c:Matrix);
Var i,j:integer;
begin
if(n1<>n2)or(m1<>m2) then
writeln(„the addition is impossible‟);
else
begin
n3:=n1; m3:=m1;
for i:=1 to n3 do
for j:=1 to m3 do
C[i.j]:=A[i,j]+B[i,j];
end;
end;
Procedure Mult_Tow_Matrix(n1,n2:1..nmax; m1,m2:1..mmax; var n3:1..nmax; var m3:1..mmax; var c:Matrix);
Var i,j,k:integer;
begin
if(n1<>m2) then
writeln(„the multi is impossible‟);
else
begin
n3:=n2; m3:=m1; { A(m1,n1)*B(m2,n2)=C(m3,n3)}
for i:=1 to n3 do
for j:=1 to m3 do
begin
C[i,j]=0;
for k:=1 to m2
C[i.j]:= C[i.j] +A[i,k]*B[k,j];
end;
end;
end;
Begin
ReadMat(n1,m1,A); WriteMat(n1,m1,A);
ReadMat(n2,m2,B); WriteMat(n2,m2,B);
writeln(„the minimum of the first Mat = ‟);
min:=MinOfMatrix(n1,m1,A); writeln(min);
Add_Tow_Matrix(n1.m1,n2,m2,A,B,n3,m3,Add);
WriteMat(n3,m3,Add);
Mult_Tow_Matrix(n1,n2,m1,m2,A,B, n3,m3,mult);
WriteMat(n3,m3,mult);
End;
Group : group link
Mobile phone- Kinan : 0994385748
Facebook account : kinan’s account
2 bytes team