
- •Этапы жизненного цикла программы:
- •Основные характеристики программного продукта:
- •Операции над множествами:
- •Типы файлов. Организация доступа к файлам. Стандартные процедуры и функции для файлов разного типа.
- •Описание такого указателя имеет вид:
- •В Паскале определены стандартные функции для работы с указателями:
- •Структуры данных на основе указателей.
- •Полиморфизм.
- •Пример события в Object Pascal:
Алгоритмы. Свойства алгоритмов. Способы описания алгоритмов.
Алгоритм – это последовательность команд управления каким-либо исполнителем.
Алгоритмизация – это процесс построения алгоритма решения задачи, результатом которого является выделение этапов процесса обработки данных, формальная запись содержания этих этапов и определение порядка их выполнения.
Свойства алгоритма:
Дискретность – последовательное выполнение некоторых простых шагов.
Массовость – пригодность для решения задач этого класса.
Результативность – завершение через определенное число шагов с выдачей результатов.
Детерминированность (определенность) – повтор результата при повторе исходных данных.
Понятность – алгоритм для исполнителя должен включать только те команды, которые ему понятны.
Способы описания алгоритма:
Словесный – содержание этапов вычислений задается на естественном языке.
Формульно-словесный – задания инструкций с использованием формул со словесными пояснениями.
Блок-схемы – графическое изображение логической структуры алгоритма.
Псевдокод – позволяет формально изображать логику программы, не заботясь о синтаксических особенностях конкретного языка программирования.
Структурные диаграммы
Программный – запись на языке программирования.
Жизненный цикл программы. Программный продукт и его характеристики
Жизненный цикл программы – это период времени, начинающийся с момента принятия решения о необходимости создания программы и заканчивающийся в момент его полного изъятия из эксплуатации.
Этапы жизненного цикла программы:
Постановка задачи – четкое обоснование необходимости программного продукта.
Анализ – выявление целей будущего программного продукта и основные требования к нему.
Техническое задание – общие направления проектирования (внешний вид программы, набор функций, которые она будет выполнять)
Проектирование – внутренний состав программы (из каких модулей и подпрограмм она состоит и как эти подпрограммы взаимодействуют)
Кодирование – реализация программы с помощью языка программирования.
Тестирование и отладка – проверка правильности результатов и устранение ошибок в коде.
Сопровождение – обучение работы с программой, и модернизация программы в соответствии с требованиями заказчика (добавление новых функций)
Программный продукт (пп) – набор компьютерных программ или процедур и связанные с ними документация.
Различают тиражные (использование во многих местах различными пользователями) и заказные (для передачи определенной организации) программные продукты.
Основные характеристики программного продукта:
Корректность и безошибочность (правильное решение предназначенной задачи)
Надежность (устойчивость к сбоям)
Простота и удобство эксплуатации (пользовательский интерфейс)
Эффективность (быстродействие при разумном объеме выделенной памяти)
Переносимость с одной платформы на другую
Открытость (возможность стыковки данного пп с другими продуктами)
Классификация и характеристика языков программирования
Язык программирования – это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме.
Наиболее популярная классификация языков программирования – это разделение на языки низкого и высокого уровня.
В группу языков низкого уровня входят машинные языки и языки символического кодирования: Автокод, Ассемблер.
Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми.
К языкам программирования высокого уровня относят:
Фортран (разработан в середине 50–х годов, используется для программ, выполняющих – научные и математические расчеты)
Алгол
Кобол (используется для программирования экономических задач)
Паскаль (Никлаус Вирт – 1971 год)
Бейсик (Джон Кемени и Томас Курц – 1965 год.)
Си (Деннис Ритч – 1972 году)
Пролог (в основе языка лежит аппарат математической логики) и т.д.
Языки
програм
мирования
состоят из:
Структура программы на языке Pascal. Операторы ввода-вывода
Программа состоит из заголовка программы и тела программы (блока), за которым стоит точка – признак конца программы. В свою очередь, блок содержит разделы описаний и разделы операторов.
В
вод
данных
– это передача информации от внешних
устройств в оперативную память. Вывод
данных
– это передача из оперативной памяти
на внешнее устройство.
Ввод с клавиатуры:
read
Вывод на экран:
write
В списке вывода могут присутствовать указатели форматов вывода.
writeln (chislo:8:2);
Типы данных: простые и структурированные
Типы данных в Pascal делятся на простые и структурированные, а также указатели.
Простой тип:
порядковые – целые (byte, integer, word), логические (boolean), символьные char), перечисляемые (color=(red,green)) , интервальные (‘a’..’z’)
вещественные (real, double)
Структурированный тип: массивы, строки, множества, записи, файлы.
Структурированные типы имеют в своей основе простые типы.
Арифметические и логические операции, операции сравнения.
Арифметические операции: + - * / div (целое деление) mod(остаток от деления)
Логические операции (либо true, либо false) :
Логическое умножение (И) - and
Логическое сложение (ИЛИ) - or
Сложение по модулю 2 (Исключающее ИЛИ) - xor
Побитный сдвиг влево - shl
Побитный сдвиг вправо – shr
Отрицание – not
Унарные операции:
Сохранение знака +
Отрицание знака -
Операции сравнения (либо true, либо false): = <> >= <= > < in(принадлежность)
Условный оператор. Оператор выбора
Структура ветвления программируется с помощью условного оператора (либо true, либо false):
If <условие> then <оператор 1> else <оператор 2>;
или неполная форма
If <условие> then <оператор>;
Оператор выбора case является обобщением условного оператора if и используется для выбора одного из нескольких направлений дальнейшего хода программы.
Case <переменная> of
<значение 1>: < оператор 1>;
<значение 2>: < оператор 2>;
<значение n>: < оператор n>;
Else < оператор >
End;
Операторы обработки циклов. Вложенные циклы.
Цикл представляет собой последовательность операторов, выполняющихся неоднократно.
Бывают 3 вида циклов:
С предусловием.
While <условие> do <оператор>;
Цикл выполняется пока условие истинно. Универсальный цикл, т.к может не выполняться, если условие ложно с самого начала.
С постусловием.
Repeat
<оператор>
Until <условие>;
Цикл выполняется пока условие ложно. Всегда выполняется хотя бы один раз.
С параметром.
С шагом +1
For <переменная>:=НачальноеЗначение to КонечноеЗначение do <оператор>
С шагом -1
For <переменная>:=НачальноеЗначение downto КонечноеЗначение do <оператор>
Для досрочного выхода из цикла используется команда break.
Для перехода к следующей итерации цикла используется команда continue.
В теле любого цикла могут находиться другие операторы цикла. Тогда один будет считаться внешним, а другой внутренним (вложенным).
Например: for i:=1 to n do
for j:=1 to n do
write(i,’*’,j);
Организация подпрограмм в Pascal. Типы подпрограмм
Подпрограммы позволяют разрабатывать программы в виде отдельных частей модулей, которые могут отдельно взаимодействовать между собой.
Каждая подпрограмма описывается один раз, но при необходимости к ней можно обращаться неоднократно.
В Pascal существует 2 вида подпрограмм:
Функции.
Подпрограмма-функция используется для вычисления одного значения.
Function ИмяФункции(ФормальныеПараметры):ТипРезультата;
<раздел объявления переменных>
Begin
<операторы>
ИмяФункции:=Результат;
End;
Обращение к функции записывается в правой части оператором присваивания при этом указывается ИмяФункции и в скобках перечисляются ФактическиеПараметры:
Переменная:=ИмяФункции(ФактическиеПараметры);
Процедуры.
Процедура – это подпрограмма, которая может возвращать в основную программу одно или несколько значений или не возвращать ничего.
Procedure ИмяПроцедуры(Параметры; Var Параметры);
<раздел объявления переменных>
Begin
<операторы>
End;
Вызов из основной программы осуществляется следующим способом:
ИмяПроцедуры(ФактическиеПараметры)
Для принудительного выхода из процедуры используется оператор exit.
Если данный блок вложен в другой, то присущие в нем описания являются локальными.
Глобальные переменные видимы во всех блоках и живут от начала и до конца программы.
Рекурсия. Программирование рекурсивных алгоритмов
Рекурсия – это такой способ вычислительного процесса при котором функция или процедура в ходе выполнения обращается сама к себе.
Рекурсия может быть прямой или косвенной.
При прямой рекурсии оператор вызова подпрограммы содержится непосредственно в ее исполняемой части. Рекурсивная подпрограмма однократно вызывается из вне. Условие полного окончания работы рекурсивной подпрограммы должно находится в ней самой.
При косвенной рекурсии одна подпрограмма вызывает другую, вызывающая в свою очередь первую подпрограмму.
Основы структурного программирования
Структурное программирование — методология программирования, в основе которой лежит представление программы в виде иерархической структуры блоков. Так же такое программирование называется программированием без GOTO.
Появилось в 70-х годах XX века и связана с именами Дейкстрой и Виртом.
В соответствии с данной методологией:
1) Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций: следование, ветвление, цикл.
2) Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде подпрограмм (процедур или функций).
3) Разработка программы ведётся пошагово, методом «сверху вниз» (метод пошаговой детализации)
Так же алгоритм может быть написан «снизу вверх» (сборочный метод), сначала составляются вспомогательные алгоритмы, затем основной.
Модульное программирование. Понятие модуля. Структура модуля.
Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам.
Модуль – это набор ресурсов (функций, процедур, констант, переменных, типов и тд.) разрабатываемых и хранимых независимо от исполняющих их программ.
Существуют стандартные модули Pascal (SYSTEM, CRT, GRAPH и тд.)
Модуль имеет следующую структуру:
Unit <имя модуля>; {заголовок модуля}
Interface
{интерфейсная часть}
Implementation
{раздел реализации}
Begin
{раздел инициализации модуля}
End.
Unit – имя модуля, должно совпадать с имением файла, содержащего данный модуль.
Interface – объявление констант, функций, процедур, которые будут в дальнейшем доступны программисту при подключении модуля.
Implementation – описываются все подпрограммы, которые были ранее объявлены, т.е. текст подпрограммы.
Раздел инициализации (часто отсутствует) содержит операторы, которые должны быть выполнены сразу после запуска программы, использующей модуль.
Нужно модуль как .pas и скомпилировать его (Compile/Destination Disk, затем Compile/Build).
В результате компиляции создастся файл .tpu.
Часто модуль необходимо скопировать в папку, в которой хранится все модули Pascal (BGI).
Стандартные модули языка Pascal
В Паскале имеется ряд стандартных модулей, в которых описано большое количество встроенных констант, типов, переменных и подпрограмм. Каждый модуль содержит связанные между собой ресурсы.
System – основная библиотека – содержит описания всех стандартных процедур и функций, таких, как математические функции, функции преобразований, процедуры и функции обработки строк и т.п.
Ресурсы данной библиотеки доступны любой программе без специального указания.
Например: abs, sqrt, sqr, assign, copy, trunk, inc, break, continue, dispose, new, write, read.
Crt – библиотека управления экраном в текстовом режиме – содержит описания переменных, констант и процедур и функций, обеспечивающих управление экраном, клавиатурой, и динамиком.
Например: Clrscr, Delay(задержка), Sound(частота звука), GotoXY(координаты курсора), Readkey.
Graph – библиотека управления экраном в графическом режиме – содержит описание переменных, констант и процедур и функций, обеспечивающих управление экраном в графическом режиме.
Например: getMaxX(максимальная координата x), GetColor (текущий цвет), MoveTo (указатель в заданную точку), Arc (дуга окружности), Line (отрезок по прямой), GetPixel (цвет заданной точки), OutText (вывод текста на экран).
Dos – библиотека организации взаимодействия с ОС MS DOS – содержит описание процедур и функций, обеспечивающих обращение к функциям ОС.
Например: SetDate(устанавливает текущую дату в ОС), SetTime (устанавливает текущее время в ОС), DiskSize (возвращает полный размер диска) , FSearch(ищет файл), Keep(завершает программу и оставляет ее в памяти).
Так же еще есть модули Turbo3, Printer, Graph3, Overlay, но они устарели и практически не используются.
Обработка одномерных и двумерных массивов
Массив – это упорядоченная совокупность однотипных данных. Номер элемента массива называется индексом. В качестве типа индекса может быть указан любой порядковый тип (кроме longint). Тип элементов массива – любой допустимый в Pascal тип (кроме файла)
Объявление осуществляется следующим образом:
В разделе объявления переменных
var <имя массива>: array[1..n] of <тип>;
var A:array[1..5]of integer;
В разделе описания констант
const <имя массива>: array[1..n] of <тип>=(значение);
const A:array[1..5]of integer=(1,2,3,4,5);
В разделе типов
type <имя массива>=array[1..n]of <тип>
type mas=array[1..5]of integer;
var <имя массива>:<имя типа>;
var A:mas;
Обращение к любому элементу массива осуществляется следующим образом:
<имя массива>[<номер элемента>]
A[i]
Двумерный массив (матрица) - это упорядоченная совокупность однотипных данных, доступ к элементам которой осуществляется по двум индексам. Считая первый индекс – номер строки, второй – номер столбца.
Объявление осуществляется следующим образом:
В разделе объявления переменных
var <имя матрицы>: array[1..n, 1..m] of <тип>;
var A:array[1..5, 1..4]of integer;
В разделе описания констант
const <имя матрицы>: array[1..n, 1..m] of <тип>=(значение);
const A:array[1..3, 1..2]of integer=((2,5),(3,1),(0,4));
В разделе типов
type <имя матрицы>=array[1..n, 1..m]of <тип>
type matrix=array[1..5, 1..4]of integer;
var <имя матрицы>:<имя типа>;
var A: matrix;
Обращение к любому элементу матрицы осуществляется следующим образом: A[i,j]
Заполнение массива можно осуществить следующими способами:
Ввод значений элементов с клавиатуры
С помощью генератора случайных чисел.
Присваиванием значений.
Считыванием из файла.
Обработка массивов:
Сумма элементов массива.
S:=0
For i:=1 to n do S:=s+a[i];
Произведение элементов массива.
P:=1
For i:=1 to n do P:=P*a[i];
Кол-во четных в массиве.
K:=0
For i:=1 to n do
If a[i] mod 2=0 then K:=K+1;
Поиск номера первого нуля.
for i:=1 to n do
if a[i]=0 then
begin
nomer:=i;
break;
end;
Поиск числа.
flag := false;
for i := 1 to n do
begin
if (a[i] = x) then //x – искомое число, вводится пользователем
begin
flag := true;
nom := i;
end;
end;
if flag = true then writeln('Элемент найден! Его номер: ', nom)
else writeln('Элемент не найден!');
end.
Поиск максимума и его номера.
max:=a[1];
nomer:=1;
for i:=2 to n do
If a[i]>max then
begin max:=a[i]; nomer:=i; end;
Сортировка по возрастанию (Метод простого обмена или “пузырька”)
for g := 1 to n - 1 do
for i := 1 to n - g do
if a[i] > a[i + 1] then
begin
t := a[i];
a[i] := a[i + 1];
a[i + 1] := t;
end;
Обработка матриц:
Перемножение матриц.
Сумма элементов лежащих выше главной диагонали
for i := 1 to n do
for j := 1 to n do
if (i = j) then
s := s + a[i,j];
Произведение заданной строки
Символьный и строковый типы. Объявление типов. Операции со строками.
В Pascal имеются 2 типа для работы с текстом:
Char – литерный или символьный тип.
Значением переменной символьного типа char является один символ. Каждому символу соответствует код символа (ASCII код) – целое число в диапазоне от 0 до 255.
Над данными символьного типа возможны следующие операции отношения: =, <>, >, <, >=, <=, вырабатывающие результат логического типа. При выполнении этих операций коды символов сравниваются как обычные целые числа.
Для работы с символьными данными определены следующие функции:
chr(x) – возвращает значение символа по его коду
chr(128)=’Б’
ord(x) – возвращает код заданного символа
ord(‘А’)=65
pred(x) – возвращает предыдущий символ
pred(‘Б’)=’A’
succ(x) – возвращает следующий символ
succ(‘Б’)=’В’
upcase(x) – преобразует строчную букву в заглавную (только латинские)
upcase(‘n’)=’N’
Символ можно объявить:
В разделе констант
const ch=’m’
В разделе объявление переменных
var ch:char;
String – строковый тип или просто строка.
Строка – это последовательность символов. Каждый символ занимает 1 байт памяти (ASCII код). Максимальное кол-во символов в строке (длина строки) может изменяться от 1 до 255.
Строку можно объявить:
В разделе описания типов
type str=string[125]
В разделе объявления констант
const str=’Мама мыла раму.’
В разделе объявления переменных
str:string
Операции над строками:
Операция сцепления
Соединяет несколько строк в одну, например: ‘Turbo’+’ Pascal’=’Turbo Pascal’
Операция отношения
Производит сравнение двух строк в результате чего получается логическая величина. Если строки различны по длине, то считается, что короткая строка меньше, чем длинная. Строки равны, если полностью совпадают по длине и символам.
Например: ‘Иванов’=’Иванов. И.И’ - FALSE
‘Иванов’<’Иванов. И.И’ – TRUE ‘program’>’PROGRAM’ – TRUE
Процедуры и функции
Функция Length(S) – определяет длину строки S
Функция Copy(S,Poz,N) – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz.
Функция Conat(S1,S2,…,Sn) – сцепление строк в одну
Функция Pos(S1,S2) – обнаруживает первое появление в строке S2 подстроки S1. Результат – номер позиции.
Delete(S,Poz,N) – удаление N символов из строки S, начиная с позиции Poz
Insert(S1,S2,Poz) – вставка строки SI в строку S2, начиная с позиции Poz.
Str(N,S) – преобразует натуральное число N в строку S
Val(S,N,Flag) – преобразует строку S в число N, а flag показывает есть ли ошибка в преобразовании или нет.
Пример: Из строки удалить все символы ‘X’ и ‘x’ и подсчитать кол-во удаленных символов.
Program Stroka;
Uses crt;
Var S:string;
K,i:byte;
Begin
Clrscr;
Writeln('Строка:');
Readln(s);
K:=0;
for i:=1 to length(s) do
if s[i] in ['a'..'z'] then s[i]:=UpCase(s[i]);
While pos('X',s)<>0 do
Begin
Delete(s,pos('X',s),1);
K:=k+1;
End;
Writeln('Кол-во удаленных символов:',k);
Readkey;
End.
Понятие множества. Объявление множества. Операции над множествами
Множество – совокупность неповторяющихся элементов некоторого типа. В Pascal могут быть только конечные множества, содержащие от 0 до 255 элементов. Вводить или выводить элементы множества процедурами ввода/вывода нельзя. Множественная переменная может получить конкретное значение только в результате выполнения оператора присваивания.
Тип элементов множества называется базовым типом: byte,char,boolean, перечисляемые типы, диапазоны и тд.
Множество можно объявить:
В разделе описания типов
type mn=set of ‘a’..’z’;
В разделе объявление констант
const mn=[a,b,c,d,f];
В разделе объявления переменных
mn: set of char;