Шпаргалка по "Программированию"

Автор работы: Пользователь скрыл имя, 16 Января 2013 в 20:45, шпаргалка

Краткое описание

Работа содержит ответы на вопросы для экзамена (или зачета) по дисциплине "Программирование"

Прикрепленные файлы: 1 файл

шпора програмиров.docx

— 65.88 Кб (Скачать документ)

Способы заполнения одномерных массивов

Ввод массива  с клавиатуры оператором Read.

For i:=1 to n do

Read (A[ i ]);

Ввод массива  оператором случайных чисел Random на интервале

[ a ; b ]                                                   ( a ; b )

For i:=1 to n do                                    For i:=1 to n do

A[ i ] := Random (b-a+1)+a;             A[ i ] := Random (b-a)+a;

Ввод массива  в разделе констант (производится вместе с объявлением).

Например:

Const N=5;

A := Array [1..N] of integer = (-8,0,4,1,3);

Вывод одномерного  массива

Вывод линейного массива

В строку                                    В столбец

For i:=1 to n do                  For i:=1 to n do

Write (a[i]);                      Writeln (a[i],' ');

Поиск минимального элемента

min := a[1];

k :=1;

for i := 1 to n do

begin

if A[i] < min then min := A[i];

k:=i;

end;

writeln (a[k]);

Поиск максимального элемента

max := a[1];

k :=1;

for i := 1 to n do

begin

if A[i] > max then min := A[i];

k:=i;

end;

writeln (a[k]);

Способы заполнения двумерных  массивов

For i := 1 to n do

For j := 1 to m do

a [i,j] := random (100) ; {или Readln[i,j]}

Вывод двумерного массива  ввиде таблицы

For i := 1 to n do begin

    for j :=1 to m do

    write (a[i;j]);

    writeln   end;

Динамические массивы  в Паскале. Динамические массивы в Паскале не имеют заранее определенного размера. Размер динамических массивов может изменяться. Пример создания динамического массива в Паскале:

type TIntMassiv = array of Integer;

var intMassiv: TIntMassiv; Устанавливают размер динамического массива в Паскаль с помощью функции SetLength

SetLength(intMassiv, 2); У динамических массивов есть интересное свойство. Если сделать присвоить переменной массив, то его содержимое не копируется, присваивается только указатель на массив. А вот если применить к новому массиву SetLength, то тогда и произойдет копирование.

 

13.Алгоритм и особенности  этой сортировки таковы:


1.При первом проходе по массиву  элементы попарно сравниваются  между собой: первый со вторым, затем второй с третьим, следом  третий с четвертым и т.д.  Если предшествующий элемент  оказывается больше последующего, то их меняют местами.

2.Не трудно догадаться, что постепенно  самое большое число оказывается  последним. Остальная часть массива  остается не отсортированной,  хотя некоторое перемещение элементов  с меньшим значением в начало  массива наблюдается.

3.При втором проходе незачем  сравнивать последний элемент  с предпоследним. Последний элемент уже стоит на своем месте. Значит, число сравнений будет на одно меньше.

4.На третьем проходе уже не  надо сравнивать предпоследний  и третий элемент с конца.  Поэтому число сравнений будет  на два меньше, чем при первом  проходе.

5.В конце концов, при проходе  по массиву, когда остаются  только два элемента, которые  надо сравнить, выполняется только  одно сравнение.

6.После этого первый элемент  не с чем сравнивать, и, следовательно,  последний проход по массиву  не нужен. Другими словами,  количество проходов по массиву  равно m-1, где m – это количество элементов массива.

7.Количество сравнений в каждом  проходе равно m-i, где i – это номер прохода по массиву (первый, второй, третий и т.д.).

8.При обмене элементов массива  обычно используется "буферная" (третья) переменная, куда временно  помещается значение одного из  элементов.

Пример прграммы:

{ сортировка массива "пузырьком"  по возрастанию }

const

  n = 10; { количество элементов в массиве }

var

  a:array[1..n] of integer;

  i,j,buf:integer;

begin

   {Заполняем массив случайными  целыми числами из диапазона  от 0 до 9 и выводим массив на  экран}

  for i:=1 to n do

    begin

      a[i]:=random(10);

      write(a[i],' ');    

    end; 

  for i:=1 to n-1 do

    for j:=i+1 to n do {В этой строке начинающие программисты чаcто допускают ошибку}

      if a[i]>a[j] then

        begin

          buf:=a[i];

          a[i]:=a[j];

          a[j]:=buf;

        end;

  writeln;

  writeln('Массив после сортировки пузырьковым методом: ');

  for i:=1 to n do

    write(a[i],' ');

end.

 

17. процедуры и функции,  создаваемые вручную. Основные  понятия, принципы, назначение.


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

Функция — ограниченная процедура. У функции всегда есть входящие параметры. Результат работы функции содержится в имени функции.

Передача параметров происходить  так же, как и процедуры: по ссылке или значению.

 

 

 

 

 

 

 

14. Сортировка выбором


Принцип метода:

Находим (выбираем) в массиве элемент  с минимальным значением на интервале  от 1-го элемента до n-го (последнего) элемента и меняем его местами с первым элементом. На втором шаге находим элемент  с минимальным значением на интервале  от 2-го до n-го элемента и меняем его  местами со вторым элементом. И так  далее для всех элементов до n-1-го.

program sortar;

const

    size=5;

var

    a: array[1..size] of integer;

    i:integer; {номер элемента, от которого ведётся поиск},

               {минимального элемента}

    min:integer; {номер минимального элемента в части}

    j:integer; {номер эл-та, сравниваемого с минимальным}

    buf:integer; {буфер, используемый при обмене эл-ов массива}

    k:integer;

begin

    writeln('Сортировка массива.');

    write('Введите', size:3,' целых в одной строке');

    writeln('через пробел и нажмите Enter');

    for k:=1 to size do read(a[k]);

    writeln('Сортировка');

    for i:=1 to size-1 do

    begin

        {поиск минимального  эл-та в части массива от a[i] до a[size]}

        min:=i;

        for j:=i+1 to size do begin

             if a[j]<a[min] then min:=j;

            {поменяем местами a[min] и a[i]}

            buf:=a[i];

            a[i]:=a[min];

            a[min]:=buf;

        {Выведем массив}

        for k:=1 to size do write(a[k],' ');

            writeln;

            end;

    end;

    writeln('Массив отсортирован. ');

end.

 

 

16. файл, основные понятия,  назначение, работа с файлами.


Файл — именованная структура  данных, представляющая собой последовательность элементов данных одного типа, причём количество элементов последовательности не ограничено.

Файлы:

двоичные - файлы исполнения программ и библиотеки

ascii файлы - символьные файлы

объявление файла:

имя: file of тип дпнных;

описание текстового файла в  общем виде:

имя: textFile;

имя — файловая переменная, представляющая текстовый файл.

Файловая переменная служит для  отождествления конкретного файла  с нашей переменной. Для связи  файловой переменной с конкретным файлом на диске необходимо прописать команду:

assignFile(var f:textFile, s:string) ;

, где текстовая переменная s содержит полный адрес файла.

Непосредственно вывод в файл осуществляется при помощи команды write (или writeln) .

Write(f:textFile; s:string) ;

rewrite(f) — перезапись (запись нового файла поверх существующего или создание нового).

append(f) - добавление в уже существующий файл.

reset(f) — открытие файла для чтения.

 

 

 

 

 

 

 

 

20. Классы – это «изобретение» программистов для упрощения разработки сложных программ и улучшения их качества. В основе классов лежат три фундаментальных принципа, которые называются инкапсуляция, наследование и полимарфизм.


Инкапсуляция Класс представляет собой единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретных задач. В результате класс всегда несет в себя некоторую функциональность. Например, класс TForm

black swan movie full

содержит (инкапсулирует в себе) все необходимое для создания окна Windows-программы, класс Tmemo представляет собой полнофункциональный многострочный текстовый редактор, класс TTimer обеспечивает работу программы с таймером и т.д.

Инкапсуляция является мощным средством  обмена готовыми к работе программами  заготовками.

Наследование Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса родителя: TChildClass = class (TParentClass)

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

Принцип наследования приводит от единственного  родителя – класса Tobject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов – от создания до уничтожения. Программист не может создать класс который не был бы дочерним классом Tobject. Следующие два объявления индентичны:

TaClass = class (TObject)

TaClass

buy something borrowed the movie

= class

were can i watch the dilemma the movie

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещение от класса Tobject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам.

Полиморфизм Полиморфизм - это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающих объектам разные свойства. Это и называется полиморфизмом объектов.

В Object Pascal полиморфизм достигается не только описанным выше механизмом наследования и перекрытия методов родителя, но и их виртуализацией (см. ниже), позволяющей родительским методам обращаться к методам своих потомков.

Свойства класса

Свойство – средство доступа  к полям, которые прямо не доступны. Свойства (они published) дают доступ к полям, напрямую недоступным (они private). Формат свойства:

property <Имя>[Индексы]:<Тип> index <Число> Спецификаторы;

Имя имеет индексы, если свойство –  массив. index <Число> присутствует, если свойство – массив.  Спецификаторы – определяют действия со свойствами:Спецификатор Назначение

read Читать свойство

write Писать свойство

Пример:

type

TNewClass=class(TObject)

private

FCode:integer;

FNote:string;

published

property Code:Integer read FCode write FCode;

property Note:String read FNote;

end;

Абстрактный класс является классом, который может использоваться только в качестве базового для других классов. Абстрактный класс содержит одну или несколько чистых виртуальных функций. Чистая виртуальная функция может рассматриваться как встроенная функция, тело которой определено как =0 (чистый спецификатор). Для чистой виртуальной функции не нужно приводить действительное определение; предполагается, что она переопределяется в производных классах.

К абстрактным классам применимы  следующие правила:

• абстрактный класс не может  использоваться в качестве типа аргу-мента функции или типа возвращаемого значения;

• абстрактный класс нельзя использовать в явном преобразовании;

• нельзя определить представитель  абстрактного класса (локальную/глобальную переменную или элемент данных);

• можно определять указатель или  ссылку на абстрактный класс;

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

Например:

class Bird

{

public:

void virtual Sing() = 0;

};

//класс Eagle – также абстрактный

class Eagle : public Bird

{};

// GoldenEagle – не является абстрактным

class GoldenEagle: public Bird

{

void Sign()

{…}

}

Абстрактный класс это тот,который мы непосредственно сами и пишем, при методе наследования мы берем за основу наш написанный абстрактный класс и дописываем нужное нам(рисуем дом , дом абстрактный класс…берем за основу наш абстрактный класс-дом и дописываем окно.-это уже метод наследования)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22. Таймер - это компонент, имеющий только одно одноименное событие. Это событие таймер генерирует через определенные промежутки времени.Этот компонент расположен на вкладке System палитры компонентов.

Информация о работе Шпаргалка по "Программированию"