Операторы выбора if, case, for и модули файлов dpr, dfm

Определение назначения оператора if в зависимости от типа условия, заданного выражением с результатом булева типа. Описание конструкции условного оператора case. Значение операторов цикла в написании программ, состав и структура модуль файлов dpr, dfm.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 20.02.2013
Размер файла 180,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН

Евразийский Национальный Университет им. Л.Н. Гумилева

Кафедра системного анализа и управления

Реферат

Операторы выбора if, case, for и модули файлов dpr, dfm

модуль файл условный оператор case

Выполнила: студентка группы

АУ - 31 Козбагрова С.А.

Проверила: Ускенбаева Г.А.

Астана 2012

Условные операторы выбора if

Оператор if предназначен для выполнения тех или иных действий в зависимости от истинности или ложности некоторого условия. Условие задается выражением, имеющим результат булева типа. Оператор имеет две формы: if...then и if...then...else. Форма if..-then имеет вид:

if <условие> then <оператор>;

Если условие возвращает true, то указанный в конструкции if оператор выполняется. В противном случае управление сразу передается оператору, следующему за конструкцией if. Например, в результате выполнения операторов

С : = А;

if В > A then С := В;

переменная С станет равна максимальному из чисел А и В, поскольку оператор С:= В будет выполнен только при В > А. Форма конструкция if...then...else имеет вид:

if <условие> then <оператор!> else <оператор2>;

Если условие возвращает true, то выполняется первый из указанных операторов, в противном случае выполняется второй оператор. Обратите внимание, что в конце первого оператора перед ключевым словом else точка с запятой не ставится. Приведем примеры.

if J=О

then

ShowMesssge('Деление на нуль' )

else

Result := I/J;

В качестве и первого, и второго оператора могут, конечно, использоваться и составные операторы:

if J = О

then begin

ShowMessage('Деление на нуль') ;

Result := 0;

end

else

Result :- I/J;

Опять обратите внимание, что перед else точка с запятой не ставится. При вложенных конструкциях if могут возникнуть неоднозначности в понимании того, к какой из вложенных конструкций if относится элемент else. Компилятор всегда считает, что else относится к последней из конструкций if, в которой не было раздела else.

Например, в конструкции

if <условие1> then if <условие2> then <оператор1>

else <оператор2>;

else будет отнесено компилятором ко второй конструкции if, т.е. <оператор2> будет выполняться в случае, если первое условие истинно, а второе ложно. Иначе говоря, вся конструкция будет прочитана как

if <условие1>

then begin

if <условие2> then <оператор1> else <оператор2>

end;

Если же вы хотите отнести else к первому if, это надо записать в явном виде с помощью операторных скобок begin...end:

then begin

if <условие2> then <onepaiop1>

end

else <оператор2>;

Приведем пример на Delphi:

n=

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.text:='0,1';

Edit2.text:='0,356';

Edit3.text:='0';

Memo1.Clear;

Memo1.Lines.Add('Результаты ст.гр.АУ-31 Козбагарова С.А.');

end;

procedure TForm1.Button1Click(Sender: TObject);

var x,y,z,min,max,n:extended;

begin

// Ввод исходных данных и их вывод в окно Memo1

x:=StrToFloat(Edit1.Text);

Memo1.Lines.Add(' x='+Edit1.Text);

y:=StrToFloat(Edit2.Text);

Memo1.Lines.Add(' y='+Edit2.Text);

z:=StrToFloat(Edit3.Text);

Memo1.Lines.Add(' z='+Edit3.Text);

// Нахождение максимума и минимума функции, и их соотнешение

if sqr(x)+y<y-z then min:=sqr(x)+y else min:=y-z;

if sqr(x)>y then max:=sqr(x) else max:=y;

n:=min/max;

Memo1.Lines.Add(' min='+FloatToStrF(min,ffFixed,8,2));

Memo1.Lines.Add(' max='+FloatToStrF(max,ffFixed,8,2));

Memo1.Lines.Add(' n='+FloatToStrF(n,ffFixed,8,2));

end;

Оператор выбора case

Условный оператор удобен в тех случаях, когда необходимо проверить 1-2-3 варианта. При большем числе получается слишком громоздкая и неудобная для восприятия конструкция из множества вложенных инструкций.

Скажем, если требуется проверить 5 значений переменной x, то получим такую конструкцию:

if x = 1 then ;

else if x = 2 then ;

else if x = 3 then ;

else if x = 4 then ;

else if x = 5 then ;

Очевидно, что код получается слишком громоздким, и малоэффективным. В таких случаях на помощь приходит семафор - оператор множественного выбора case. Он состоит из выражения, являющегося селектором, списка вариантов, представленного константами или значениями, и необязательной части else. Таким образом, формат оператора case таков:

case [выражение-селектор] of

<значение 1>: <код для значения 1>;

<значение 2>: <код для значения 2>;

...

<значение N>: <код для значения N>;

[else <код для непредусмотренных явно значений>;]

end

Единственным ограничением семафора, в сравнении с условным оператором, является то, что в качестве селектора могут выступать лишь данные порядкового типа, скажем, целым числом или же символом. Впрочем, для подавляющего числа случаев этого достаточно. Например, приведенный выше вариант кода с 4 вложенными условными операторами, при помощи case можно оформить так:

case x of

1: ;

2: ;

3: ;

4: ;

5: ;

end;

Здесь подразумевается, что типом переменной x является целое число, поскольку тип значений, коими в данном случае являются целые числа, должен соответствовать типу селектора.

Инструкция выбора выполняется следующим образом: вначале, при необходимости, вычисляется значение селектора, затем производится последовательный обход вариантов на предмет совпадения с селектором. В случае совпадения, выполняется инструкция, предусмотренная для этого варианта, после чего выполнение оператора выбора заканчивается. Если же ни один из перечисленных вариантов не совпал со значением селектора (для нашего случая - если x меньше 1 или больше 5), то либо оператор завершается без каких-либо действий, либо, при наличии блока else, выполняются заданные в нем инструкции.

В качестве констант выбора могут выступать не только единичные значения, но и их список, разделенный запятыми, или же диапазоны, определенные границами из 2 констант, разделенных двумя точками. В таком случае мы можем объединить логически связанные значения в группы, для которых следует выполнить один и тот же код. Пример:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

RadioGroup1: TRadioGroup;

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.text:='0,1';

Edit2.text:='0,356';

Edit3.text:='0';

Memo1.Clear;

Memo1.Lines.Add('Результаты ст.гр.АУ-31 Козбагарова С.А.');

end;

procedure TForm1.Button1Click(Sender: TObject);

var x,y,z,u,min,max,n:extended;

begin

// Ввод исходных данных и их вывод в окно Memo1

x:=StrToFloat(Edit1.Text);

Memo1.Lines.Add(' x='+Edit1.Text);

y:=StrToFloat(Edit2.Text);

Memo1.Lines.Add(' y='+Edit2.Text);

z:=StrToFloat(Edit3.Text);

Memo1.Lines.Add(' z='+Edit3.Text);

// Проверка номера нажатой кнопки и выбор соответствующей ей функции

case RadioGroup1.ItemIndex of

0: u:=(Exp(x)-Exp(-x))/2;

1: u:=sqr(x);

2: u:=Exp(x);

end;

// Нахождение максимума и минимума функции, и их соотношение

if u+y<y-z then min:=u+y else min:=y-z;

if u>y then max:=u else max:=y;

n:=min/max;

Memo1.Lines.Add(' min='+FloatToStrF(min,ffFixed,8,2));

Memo1.Lines.Add(' max='+FloatToStrF(max,ffFixed,8,2));

Memo1.Lines.Add(' n='+FloatToStrF(n,ffFixed,8,2));

end;

end.

Оператор цикла for

Для написания практически любой программы, помимо операторов условия, требуются операторы цикла, и в Object Pascal, они, разумеется, есть. Прежде всего, это оператор цикла с параметром - for. Такой тип цикла обычно применяют в тех случаях, когда количество возможных повторов известно заранее. Он имеет 2 варианта написания: один - для цикла с приращением, и другой - для цикла с уменьшением:

for <параметр> := <выражение 1> to <выражение 2> do <тело цикла>;

for <параметр> := <выражение 1> downto <выражение 2> do <тело цикла>;

В первом случае (с использованием цикла for-to) при каждом проходе цикла, называемом итерацией, значение параметра увеличивается на 1, а во втором (for-downto) - уменьшается на 1. При этом в качестве начального значения используется "выражение 1", а в качестве конечного - "выражение 2". Разумеется, если для цикла to значение первого выражения изначально будет больше значения второго, или наоборот, меньше (для цикла downto), то цикл не будет выполнен ни разу. Практическое применение циклов крайне разнообразно. Если привести наиболее общий пример из программирования, то цикл - идеальный способ заполнения массива. Например, если требуется организовать цикл для заполнения массива из 10 числовых значений последовательно возрастающими числами, то можно записать:

for i := 0 to 9 do MyArray[i]=i;

В данном случае элементам массива MyArray последовательно назначаются значения от 0 до 9.

ПРИМЕЧАНИЕ

Сами массивы будут рассмотрены несколько позже, в главе, посвященной структурным типам данных.

Теперь рассмотрим цикл for с отрицательным приращением на примере вычисления математического факториала (последовательное произведение всех целых чисел от 1 до самого числа). Для этого нам понадобится следующий цикл:

var num, rez: integer;

...

rez := 1;

for num := num downto 1 do rez := rez * num;

Здесь нам потребовалась небольшая подготовительная работа: определена переменная rez, в которой будет храниться вычисляемое значение, и ей присвоено значение 1. В качестве числа, для которого вычисляется факториал, выступает переменная num, она же используется для самого цикла в качестве счетчика. Поскольку нам надо будет прекратить выполнение цикла, после того, как счетчик (num) достигнет значения 1, то именно это значение и указано в качестве конечного условия.

В итоге, если переменной num присвоить значение 5, то после прохождения цикла переменная rez получит значение 120. Хотя в результате работы такого цикла получится выполнение как бы наоборот (т.е. не вместо 1*2*3*4*5, на самом деле выполняется 5*4*3*2*1), это никак не помешает получить верный результат.

Наконец, в качестве тела цикла, как и в случае с уже рассмотренными операторами, может использоваться составной оператор. Кроме того, циклы могут быть вложены один в другой, при этом важно лишь следить за тем, где заканчивается вложенный цикл и начинается внешний. Для этого полезно следить за правильным оформлением программы, в частности, использовать отступы, в качестве которых можно использовать либо знак табуляции, либо пробелы, в последнем случае их желательно ставить не менее 2.

S(x)=

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label3: TLabel;

Button1: TButton;

Memo1: TMemo;

Edit1: TEdit;

Edit2: TEdit;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.text:='0,5';

Edit2.text:='5';

Memo1.Clear;

Memo1.Lines.Add('Результаты ст. гр.АУ-31 Козбагарова С.А.');

end;

procedure TForm1.Button1Click(Sender: TObject);

var x,a,s:extended;

N,k:integer;

begin

x:=StrToFloat(Edit1.Text);

Memo1.Lines.Add(' x='+Edit1.Text);

N:=StrToInt(Edit2.Text);

Memo1.Lines.Add(' N='+Edit2.Text);

S:=1;

for k:=1 to N do

begin

a:=exp((2*k)*ln(2*x));

s:=s+a;

end;

Memo1.Lines.Add('при x='+FloatToStrF(x,ffFixed,6,2)+' сумма ='+FloatToStrF(s,ffFixed,6,2));

end; end.

Модуль файлы dpr, dfm

Файл проекта имеет расширение *.dpr. Это текстовый файл, который содержит программный код, написанный на языке Object Pascal. Для каждого проекта может быть только один такой файл. В файле проекта содержатся ссылки на все формы проекта и относящиеся к ним модули, в нем содержится код инициализации приложения. Он связывает вместе все файлы, из которых состоит приложение. Файл проекта не предназначен для редактирования пользователем и создается автоматически самой системой (средой Delphi). DPR-файл может быть открыт для просмотра или редактирования при помощи команды Project/View Source.

Код проекта по умолчанию не отображается, так как его редактировать не рекомендуется. Его можно однако в познавательных целях увидеть, выбрав командой Вид => Модули список доступных модулей, в котором выделить файл проекта Project1.dpr. Его код отображается на отдельной странице Редактора кода. В файле есть ссылка на модуль Forms,содержащий средства работы с формой, и на исходник модуля формы. В исполняемой части проекта находятся вызовы трех стандартных подпрограмм Windows (редактировать здесь нечего).

Appllication.Initialize - инициализация приложения,

Application.CreateForm(TForm1, Form1) - создание формы приложения.

Application.Run - запуск приложения на исполнение.

Файл формы имеет расширение *.dfm. Файл формы содержит значения свойств формы и ее компонентов. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств - достаточно запомнить только те, которые имеют значение, отличное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается. Файл формы связывает графическое представление формы с обработчиками сообщений и используется методом TApplication.CreateForm для начального создания формы. Файл с расширением .dfm представляет собой двоичный файл, но его содержимое может быть отображено на экране в виде текста командой File/Open.

Расширения *.~dpr, *.~dfm, *.~раs имеют файлы резервных копий, соответственно для проекта, формы и модуля. Если вы что-то безнадежно испортили в своем проекте, то можно изменить расширение этих файлов и вернуться к предыдущему не испорченному варианту.

Размещено на Allbest.ru

...

Подобные документы

  • Изучение циклических операторов: оператора цикла, управляемого счетчиком, оператора цикла с предусловием и постусловием. Минимизированные функции, текст программы. Алгоритм работы приложения по нахождению функции с помощью операторов break и continue.

    лабораторная работа [474,2 K], добавлен 23.11.2014

  • Организация файлов и доступ к ним. Файловые операции. Программирование с использованием встроенных функций ввода-вывода; линейных, разветвляющихся и циклических вычислительных процессов с использованием If-else, оператора выбора Case; массивов и матриц.

    курсовая работа [5,8 M], добавлен 24.05.2014

  • Создание кнопки панели инструментов для выполнения макроса. Практический пример создания таблицы значений функций. Использование оператора Select Case. Создание процедуры с использованием операторов цикла For/Next и Do/Loop. Оператор InputBox, массив.

    контрольная работа [501,8 K], добавлен 06.12.2013

  • Что такое компьютерные вирусы. Цикл функционирования вирусов. "Вакцинация" программ. Заголовок исполняемых файлов. Защита вновь создаваемых программ. Модуль F_Anti. Защита существующих ехе-файлов. Описание программ SetFag.pas и Fag.asm.

    реферат [38,2 K], добавлен 19.03.2004

  • Изучение строкового типа данных, построение классов обработки строк. Описание программы, выводящей слова, состоящие только из гласных латинских букв (a, e, i, o, u). Операторы для проверки корректности вводимых значений c помощью условного оператора if.

    контрольная работа [12,7 K], добавлен 26.05.2016

  • Ознакомление с формой записи и работой операторов условного if (если) и безусловного а goto (идти к) переходов как способами организации ветвления в программе. Изучение оператора выбора альтернативы - switch (переключатель). Использование функции default.

    лабораторная работа [72,0 K], добавлен 15.07.2010

  • Особенности использования переменных вещественного типа в программе. Основные виды типов данных: простые, структурированные, указатели, процедурные, объекты. Работа и структура оператора while. Характеристика основных отличий while от оператора repeat.

    контрольная работа [31,4 K], добавлен 17.08.2010

  • Принцип работы основных операторов языка программирования Turbo-Paskal: оператор присваивания, выбора Case, безусловного перехода, цикла, уловный, составной. Формальное описание и вызов функции и процедуры. Требования к списку фактических параметров.

    реферат [261,8 K], добавлен 09.02.2011

  • Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.

    курсовая работа [400,6 K], добавлен 10.11.2016

  • Основы методологии проектирования информационных систем, понятие их жизненного цикла. Основные модели жизненного цикла. Методология функционального моделирования SADT. Состав функциональной модели. Моделирование данных, характеристика case-средств.

    реферат [327,5 K], добавлен 28.05.2015

  • Рациональные корни полинома n-й степени с целыми коэффициентами. Значение функции Y(x) при различных значениях исходных данных. Алгоритм: по номеру года вывести его название с использованием оператора switch/case. Исходные коды программ, тестирование.

    контрольная работа [197,2 K], добавлен 25.09.2010

  • Выполнение арифметических операций с помощью вспомогательных переменных, которые позволяют вычислить искомую переменную. Использование оператора цикла с предусловием и полной формы условного оператора. Примеры решения задач на работу с двумерным массивом.

    курсовая работа [518,8 K], добавлен 07.03.2014

  • Проектирование программного обеспечения. Схема начального формирования каталога файлов, вывода на экран каталога файлов, удаления файлов, сортировки файлов по имени, дате создания и размеру методом прямого выбора. Управление каталогом в файловой системе.

    курсовая работа [804,0 K], добавлен 08.01.2014

  • Общая форма записи условного оператора, его назначение и синтаксис. Случаи использования сокращенных вариантов записи при программировании на С++. Вложенные операторы условия и условия их правильной работы. Составные логические выражения и их применение.

    лабораторная работа [25,2 K], добавлен 15.07.2009

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Изучение понятия архивации, сжатия файлов с целью экономии памяти и размещения сжатых данных в одном архивном файле. Описания программ, выполняющих сжатие и восстановление сжатых файлов в первоначальном виде. Основные преимущества программ-упаковщиков.

    контрольная работа [534,7 K], добавлен 11.01.2015

  • Анализ структуры и методологии CASE-средств. Методологии проектирования, используемые в CASE-средствах. Основные понятия о системах электронного документооборота, их создание с помощью CASE-средств. Объектно-ориентированное и структурное проектирование.

    курсовая работа [67,9 K], добавлен 18.07.2014

  • Характеристики операторов языка Си. Операторы безусловного и условного перехода: if, if-else, if-else if. Оператор переключатель switch. Оператор цикла с предусловием while, постусловием do-while. Упрощение логических выражений, взаимозаменяемость циклов.

    лабораторная работа [30,0 K], добавлен 06.07.2009

  • Понятие процесса архивации файлов. Программы, осуществляющие упаковку и распаковку файлов. Защита информации от несанкционированного доступа. Самораспаковывающиеся архивы. Основные характеристики программ-архиваторов. Распространенные алгоритмы сжатия.

    презентация [801,6 K], добавлен 23.10.2013

  • Определение понятия CASE-технологий. Использование комплексного инструментария ER/Studio для создания логической и физической модели данных, генерирования баз данных на платформе СУБД Access. Процедура добавления атрибутов и сущностей, создания связей.

    контрольная работа [2,2 M], добавлен 21.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.