|
#1
|
|||
|
|||
Блок схема
Помогите пожалуйста составить блок-схему к этой программе
Код:
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; Типы данных: type TForm1 = class(TForm) Edit1: TEdit; RadioGroup1: TRadioGroup; Label1: TLabel; Button1: TButton; RadioGroup2: TRadioGroup; Label2: TLabel; Label3: TLabel; StatusBar1: TStatusBar; procedure Edit1Change(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure RadioGroup2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; В разделе описания идентификаторов внесены следующие пункты: Form1: TForm1; {форма окна} vv1 : string; {переменная типа (целое число)string для ввода информации в строку «переводимое число»} m,m1,cH2, i : integer;{переменные строкового типа(string) m, m1 используется для радиогрупп «Исходная система» и «Конечная система», cH2 вспомогательная переменная для перевода чисел, I переменная для циклов,} implementation {$R *.DFM} В программе использованы следующие функции и процедуры: 1)Функция переводит данные из типа char в тип integer. Входные данные это переменная «a» типа char, выходные данные типа integer. Принцип работы программы заключается в том, что переменная «а» переводиться в ASCII код, и отнимается определённое число(55,48,87), вследствие чего получается число в десятичном виде. 55 - отнимается если символ «а» в диапазоне [‘A’..‘F’], 87 – если диапазон [‘a’..‘f’] и 48 – если диапазон [‘0’..‘9’]. function perevod0(a:char):integer; var c: integer; begin case a of 'A'..'F': c := ord(a) - 55; 'a'..'f': c := ord(a) - 87; '0'..'9': c := ord(a) - 48; end; perevod0 := c; end; 2) Функция переводит из десятичной системы в систему Е. «A» - переменная типа integer, служит для ввода десятичного числа. Переменная «е» типа integer служит для ввода системы счисления в которую нужно перевести число в моей программе e := m1(т.е. то что выбирается в радиогруппе «Конечная система ») function perevod1(a:integer;e: integer): string; var l,j : string; z,c,b,d: integer; begin repeat{Начало цикла} c := a mod e;{с это остаток от деления десятичного числа на систему счисления } if (e = 16) and (c>9) then l:= l + chr(c+55) else l:= l + chr(c+48);{Если система счисления шестнадцатеричная и остаток от деления больше 9, то число становиться от A до F, иначе число записывается от 0 до 9} if a <> 0 then b := a div e;{Если а неравно нулю то b присваивается целочисленное деление а на е} if b9) then l:= l + chr(b+55) else l:= l + chr(b+48); {Если B меньше системы счисления, то если система счисления шестнадцатеричная и остаток от деления больше 9, то число становиться от A до F, иначе число записывается от 0 до 9} a := b; {a присваивается b } until (b<="" p=""> for i:= length(l) downto 1 do{Цикл который идет назад т.е 3,2,1} if (l[i]='0') and (z = 0) then else begin j:=j+ l[i]; z:=1 end;{Условный оператор переворачивает строку задом наперед} perevod1 := j; end; 3) Функция проверяет, введены ли числа в диапазоне [‘0’..‘9’, ‘A’..‘F’, ‘a’..‘f’], и включены ли радиогруппы. Vv1 – строка ввода типа string. Вывод типа integer если ошибка равно 1 иначе 0. function error1(vv1:string):integer; begin for i := 1 to length(vv1) do {цикл от одного до конца строки ввода вспомогательная переменная i} if vv1 = '' then error1 :=1{Если строка ввода пустая то error1 присваивается 1} else{иначе, если vv1[i]='0'..'9','a'..'f','A'..'F' не какого действия не происходит, иначе error1 присваивается 1} begin case vv1[i] of '0'..'9','a'..'f','A'..'F':; else error1 :=1; end; end; end; 4) Функция возводит целое число в степень. x – это число в которое требуется возвести в степень, N – степень в которую надо возвести число вывод информации в типе integer. function step(n:integer; x : integer): integer; var y: integer; begin y:=1; for i:= 1 to n do{Цикл задает число умножений} y := y*x;{умножает число которое требуется возвести в цикл на Y и присваивает значение Y} step := y; end; 5) Присваивает переменной vv1 входные данные. procedure TForm1.Edit1Change(Sender: TObject); begin vv1:= edit1.text; end; 6)Функция присваивает радиогруппе «Исходная система» значение. procedure TForm1.RadioGroup1Click(Sender: TObject); begin case radiogroup1.ItemIndex of { Определяет ItemIndex и присваивает m данные типа integer согласно условию} 0: m:=2; 1: m:=8; 2: m:=10; 3: m:=16; end; end; 7)Функция срабатывает на нажатие кнопки «Перевести». Переводит из 2,8,10,16-ой системы счисления в десятичную систему передаёт данные b выполняет функцию perevod0.Так же выводит полученный результат на экран. procedure TForm1.Button1Click(Sender: TObject); var n : integer; begin if error1(vv1) <> 1 then {Если error1 не равно 1 то } begin cH2 :=0; for i := 0 to length(vv1)-1 do {Начало цикла FOR} begin n n:=perevod0(vv1[length(vv1)-i])*step(i,m);{выполняется формула AiMi} cH2 := cH2+n; end; label1.Caption := perevod1(cH2,m1);{На экран выводиться переведённое число} end else label1.Caption := 'ОШИБКА ВВОДА!!!'; {иначе на экран выводиться 'ОШИБКА ВВОДА!!!'; } end; 8) Функция присваивает радио группе Исходная система значение. procedure TForm1.RadioGroup2Click(Sender: TObject); begin case radiogroup2.ItemIndex of{ Определяет ItemIndex и присваивает m данные типа integer согласно условию} 0: m1:=2; 1: m1:=8; 2: m1:=10; 3: m1:=16; end; end; end. Последний раз редактировалось lmikle, 09.06.2014 в 07:01. |
#2
|
||||
|
||||
Цитата:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#3
|
|||
|
|||
Цитата:
|