Объекты - списки unit List; interface type TElem = class public p: TElem; s: integer; constructor Create(r: TElem); function Len: integer; function Sum:

Slides:



Advertisements
Similar presentations
EXEMPLO DE REMOÇÃO ARVORE if (T = nil) then begin writeln ('ELEMENTO NAO ENCONTRADO NA ARVORE'); end else begin if (X.ch < T^.elem.ch) then.
Advertisements

Основни задачи с файлове. 1. Създаване на файл с фиксиран брой записи Program p1; Type Fl=file of real; Var F:Fl; T:real; I,N:integer; Begin Write(N=);
James Tam Linked Lists in Pascal Linked Lists In this section of notes you will learn how to create and manage a dynamic list.
E.g.9 For to do loop for i:=1 to 10 do writeln(i); While do loop i:=1;
Selection Process If … then … else.... Condition Process 2 Process 1 Y.
1) Scope a] Ada scope rules b] C scope rules 2) Parameter passing a] Ada parameter modes b) Parameter passing mechanisms COMP205 IMPERATIVE LANGUAGES 13.
MAIN BODY OF PROGRAM DECLARATION ACTION
1 Data Type Anan Phonphoem Data Type Ordinal TypeNon-ordinal Type StandardUser Define Enumerated Subrange Integer Char Boolean Real.
Naredba If..Then..Else... Procedure TForm1.Button1Click ( SEnder: Tobject ); Var x, y, Max : Integer; Begin x := StrToInt ( Edit1.Text ); y := StrToInt.
Pascal Syntax. What you have learnt so far writeln() and write(); readln() and read(); variables (integers, strings, character) manipulation of variables.
Selection If Flowchart A diagram that shows step-by-step progression through a procedure or system especially using connecting lines and a set of conventional.
An Introduction to Hashing. By: Sara Kennedy Presented: November 1, 2002.
Principles of programming languages 4: Parameter passing, Scope rules Department of Information Science and Engineering Isao Sasano.
PASCAL 语言 吉林大学计算机科学与技术学院. 第十一章 指针 指针的由来 指针的定义 PQ.
1 Flowchart If – Then – Else อนันต์ ผลเพิ่ม Anan Phonphoem
Program CheckPass; var TestScore, ExamScore : integer; FinalScore : real; Status : string; begin write(‘Enter the Test score:’); readln(Testscore); write(‘Enter.
J. Michael Moore Scope & Testing Modules CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
J. Michael Moore From James Tam’s material Multi-Dimensional Arrays CSCE 110.
Алгоритмы на графах Представление графов Построение остовного дерева Нахождение компонент смежности Перебор в глубину и в ширину.
Principles of Object-Oriented Software Development The language Eiffel.
James Tam Arrays In this section of notes you will be introduced to a homogeneous composite type, one- dimensional arrays.
J. Michael Moore From James Tam’s material Multi-Dimensional Arrays CSCE 110.
J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
J. Michael Moore Modules – the Basics CSCE 110 Influenced by material developed by James Tam & Jennifer Welch.
ARRAY PADA PASCAL DOSEN : NURAINI PURWANDARI.
1 The CONST definition CONST Pi = , City = ‘New York’; Constant identifiers are used when you do not want the value of an identifier to change why.
ARRAYS 1.Basic Ideas 2.The Array Type 3.Processing Arrays 4.Parallel Arrays 5.Two-dimensional Array 6.Arrays as Parameters.
Copyright 1999 by Larry Fuhrer. Pascal Programming Getting Started...
Introduction to Pascal The Basics of Program writing.
CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 3, Lecture 1.
Developing a Simple ZDD Package Alan Mishchenko University of California, Berkeley.
Pascal Programming Today Chapter 11 1 Chapter 11.
Chemistry CS1020.  Given a set of mappings and chemical formula: Calculate the molecule mass of the formula Problem Description C12 H1 N14 O16 (NH 4.
So now we’re programming What do programs do? Manipulate (process) data Math Read files Write to files Create files.
CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 5, Lecture 2 (Tuesday)
Array : 1-dimension อนันต์ ผลเพิ่ม Anan Phonphoem
Input and Output Output Prompt: –A message displayed to the user indicating what they are to enter. Should be clear and exact on what you want. write:
Looping(1) For … to … do... Can you do this? Write a program to display:
FOR LOOP STRUCTURE For := to do eg. for I := 1 to 100 do begin writeln(‘This is a loop’); end;
ПЕЧЕНЬ 9. Закладка печени в период эмбрионального развития.
Быстрое введение в язык C++
Section 2.1: Programming paradigms
RECORDS Introduction Declaring a record Using records
Halting Problem Dr K R Bond 2009
The CONST definition CONST Pi = , City = ‘New York’;
Principles of programming languages 4: Parameter passing, Scope rules
CPSC Pascal Brent M. Dingle Texas A&M University 2001, 2002
Section 2.1: Programming paradigms
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
Потпрограми во Pascal.
CMP 131 Introduction to Computer Programming
Паскаль тілінде бағдарламалау II Бөлім
Двумерные массивы в интегрированной среде Delphi 7
Көңіл күйлеріңіз қалай?
Сызықтық алгоритмдерді бағдарламалау
Liên kết các ngôn ngữ bậc cao với ASM
Бірөлшемді жиымдар Паскаль тілінде бағдарламалау
Two-Dimensional Arrays
kbkjlj/m/lkiubljj'pl;
TEST II razredi.
Pascal Subprogram Procedure Function Build in Function (e.g. Sin(x))
S8 + O2  SO3 C10H16 + Cl2  C + HCl MOLES REVIEW, NOV 26,2007MFC 12 8
Recursion You will learn what is recursion as well as how and when to use it in your programs.
Паскаль тілінің басқару
Қайталау операторлары
9 сынып 8 сабақ Сабақтың тақырыбы: Дейін циклі REPEAT операторы.
Computer Science 2 Take out a piece of paper for the following dry runs. Label It Recursive Dry Runs 4/12/2018. It will be turned in when completed
Computer Science 1 For..do loop Dry Run Take notes on the For loop
Computer Science
Resolución de problemas y algoritmos
Presentation transcript:

Объекты - списки unit List; interface type TElem = class public p: TElem; s: integer; constructor Create(r: TElem); function Len: integer; function Sum: integer; end;

Объекты - списки implementation constructor TElem.Create(r: TElem); begin inherited Create; p:=r; end; function TElem.Len: integer; begin if p = nil then Result := 1 else Result := 1 + p.Len; end; function TElem.Sum: integer; begin if p = nil then Result := s else Result := s + p.Sum; end; end.

Объекты – списки (вариант 2) function TElem.Len: integer; var p1: TElem; d:integer; begin d:=1; p1:=p; while p<>nil do begin d:=d+1; p1:=p1+1 end; Result:=d end; function TElem.Sum: integer; var p1: TElem; d:integer; begin d:=s; p1:=p; while p<>nil do begin d:=d+p.s; p1:=p1+1 end; Result:=d end;

Формирование списка program TestList; {$APPTYPE CONSOLE} Uses List; var p1, p2: TElem; i, n: integer; begin readln(n); p1 := nil; for i := 1 to n do begin p1 := TElem.Create(p1); readln(p1.s) end; writeln('len = ',p1.Len); writeln('sum = ',p1.Sum);...

Вывод и уничтожение списка p2 := p1; while p2 <> nil do begin write(p2.s:8); p2 := p2.p end; writeln; p2 := p1; while p2 <> nil do begin p2 := p2.p; p1.Destroy; p1 := p2; end; readln end.

Списки: наследование и полиморфизм unit List2; interface type TElem = class public p: TElem; function Len: integer; end; TElemI = class(TElem) public s: integer; function Sum: integer; end; TElemR = class(TElem) public s: real; function Sum: real; end;

Списки: наследование и полиморфизм implementation function TElem.Len: integer; begin if p = nil then Result := 1 else Result := 1 + p.Len; end; function TElemI.Sum: integer; begin if p = nil then Result := s else Result := s + (p as TElemI).Sum; end; function TElemR.Sum: real; begin if p = nil then Result := s else Result := s + (p as TElemR).Sum; end; end.

Формирование списка (тип TElemI ) program TestList2; {$APPTYPE CONSOLE} uses List2; var p1, p2: TElemI; i, n: integer; begin readln(n); p1 := nil; for i := 1 to n do begin p2 := TElemI.Create; p2.p := p1; readln(p2.s); p1 := p2; end; writeln('len = ',p1.Len); writeln('sum = ',p2.Sum);

Вывод и уничтожение списка (тип TElemI ) p2 := p1; while p2 <> nil do begin write(p2.s:8); p2 := (p2.p as TElemI); end; writeln; p2 := p1; while p2 <> nil do begin p2 := (p2.p as TElemI); p1.Destroy; p1 := p2; end; end.

Задача о ферзях Ф Ф Ф Ф

unit Queens; interface var n,ch: integer; type TQueen = class public i,j:integer; p:TQueen; function TestQ:boolean; procedure PrintQ; end; procedure GenQ(q:TQueen); implementation procedure TQueen.PrintQ; begin if p<>nil then p.PrintQ; write(i:3) end;

Задача о ферзях function TQueen.TestQ:boolean; var p1:Tqueen; b:boolean; begin if p=nil then Result:=true else begin p1:=p; b:=true; while b and(p1<>nil) do begin if (i=p1.i)or((j-p1.j)=abs(i-p1.i)) then b:=false; p1:=p1.p end; Result:=b; end;

Задача о ферзях procedure GenQ(q:TQueen); var q1:TQueen; t:integer; begin for t:=1 to n do begin q.i:=t; if q.TestQ then begin if q.j=n then begin ch:=ch+1; q.PrintQ; writeln; end else begin q1:=TQueen.Create; q1.j:=q.j+1; q1.p:=q; GenQ(q1); q1.Destroy; end; end.

Задача о ферзях program Queen; {$APPTYPE CONSOLE} uses Queens; var p: TQueen; begin readln(n); p := TQueen.Create; p.j := 1; p.p := nil; GenQ(p); p.Destroy; writeln(ch); readln end.

Задача о ферзях: решение на основе алгоритма генерации перестановок чисел Диагонали: правые: (столбец – строка) левые: (столбец + строка)

program TestQueen; {$APPTYPE CONSOLE} var S,Q:array[1..20]of integer; R:array[ ]of integer; L:array[2..40]of integer; n,i,ch:integer; procedure Queen(j:integer);... begin readln(n); for i:=1 to n do S[i]:=0; for i:=1-n to n-1 do R[i]:=0; for i:=2 to 2*n do L[i]:=0; ch:=0; Queen(1); writeln('var=', ch); readln end.

procedure Queen(j:integer); var i,k:integer; begin for i:=1 to n do if (S[i]=0)and(R[j-i]=0)and(L[j+i]=0) then begin S[i]:=1; R[j-i]:=1; L[j+i]:=1; Q[j]:=i; if j=n then begin ch:=ch+1; for k:=1 to n do write(Q[k]:3); writeln end else Queen(j+1); S[i]:=0; R[j-i]:=0; L[j+i]:=0; end;