Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика учебник.doc
Скачиваний:
192
Добавлен:
13.05.2015
Размер:
27.91 Mб
Скачать

3.3. Язык программирования Pascal

Особенности языка Паскаль. Более подробно познакомимся с одним из самых популярных и самым (на взгляд автора) удобным для изучения языком программирования высокого уровня Паскаль. Самой удобной для пользователя версией языка является Turbo Pascal 7.0. Рассмотрим особенности этой версии:

  • обладает простым синтаксисом и достаточно малым набором понятий;

  • написан на языке, близком к естественному, что позволяет четко описать всю последовательность действий;

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

  • кроме стандартных встроенных типов программист может создавать и описывать свои собственные типы.

Для удобства пользователя Turbo Pascal 7.0. позволяет использовать функциональные клавиши. Рассмотрим самые важные из них:

F1 – вызов справки (если она установлена);

F2 – сохранить;

F3 – открыть;

F9 – компилировать программы без выполнения;

Ctrl+F9 – компилировать программу и в случае удачной компиляции выполнить;

Alt+F5 – сменить окно редактора на окно выполнения программы (и наоборот);

Alt+Х – выход из программы.

Синтаксис Turbo Pascal 7.0. Алфавит языка состоит из следующих символов:

  1. Заглавные и строчные буквы латинского алфавита (от A до z);

  2. Арабские цифры (от 0 до 9);

  3. Знаки арифметических операций (+, –, *, /);

4) Знаки пунктуации.

Как и любой язык программирования высокого уровня Turbo Pascal 7.0. содержит зарезервированные слова, которые при написании программы выделяются полужирным шрифтом. Зарезервированные слова используются для указания частей программы и для некоторых функций. Постепенно мы познакомимся с этими словами.

Любая программа имеет одинаковую структуру (таблица 3.6.)

Часть программы

Запись на Turbo Pascal 7.0.

Заголовок программы

Program <имя программы>;

Список используемых модулей

Uses<список модулей через запятую>;

Раздел объявления меток

Label <список меток через запятую>;

Раздел объявления констант

Const <имя константы>=<значение>;

Раздел объявления типов

Type <список типов>;

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

Var <имя переменной>:<тип переменной>;

Раздел объявления функций и процедур

Procedure<имя процедуры>;(function<имя функции>;)

Begin

<тело процедуры или функции>

End;

Тело программы (программный алгоритм)

Begin (начало алгоритма)

<программный алгоритм>

End (завершение алгортима или все программы). (или ;)

Таблица 3.6. Структура программы TurboPascal7.0.

Каждое действие отделяется точкой с запятой (;), в конце программы ставится точка. Программа начинается с заголовка. После зарезервированного слова program через пробел следует имя программы. Имя программы может состоять из любых символа алфавита, при этом начинаться имя должно с латинской буквы. Максимальная длина имени 255 символов.

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

Раздел описания констант служит для описания переменных, значения которых не будут изменяться. Например, при решении задач с использованием числа пи, обычно значение числа записывается в разделе описания констант: const P=3.14;.

В разделе описания переменных должны быть описаны все переменные, используемые в программе. Рассмотрим основные используемые типы (табл. 3.7.).

Тип переменной

Запись в Turbo Pascal 7.0.

Диапазон значений

Целый

integer

-32768…32767 (2 байта)

Целый длинный

longint

-2 147 483 648… 2 147 483 647 (4 байта)

Целый кодовый

byte

0…255 (1 байт)

Целый длинный кодовый

word

0…65535 (2 байта)

Действительный (вещественный)

real

-2.910-39…1.71038(6 байт)

Строковый тип

string

Строка из любых символов алфавита длиной до 255 символов

Символьный тип

char

Любой из символов используемой таблицы кодов

Логический тип

boolean

Два значения: true(истина) иfalse(ложь)

Таблица 3.7. Типы переменных в TurboPascal7.0.

Среди числовых типов наиболее удобны для использования integer для целых чисел и real для действительных.

Функции и процедуры являются подпрограммами. Они имеют структуру аналогичную основной программы. У любой подпрограммы есть свои переменные, свой результат. Подпрограммы описываются до начала основной программы. Функция в качестве результата выводит одно значение. А процедура может иметь несколько результатов.

Рассмотрим запись операций и основных функций (табл. 3.8.). Типы аргумента в таблицы записаны сокращенно: I – integer, R – real, S – string, C – char, B – boolean.

Функция/операция

Математическая запись

Запись в Turbo Pascal 7.0.

Тип аргументов

Тип значения функции

Сложение

x + y

x + y

I,R

I,R

Вычитание

x– y

x– y

I,R

I,R

Умножение

x y

x  y

I,R

I,R

Деление

или x/y

x/y

I,R

R

Остаток от деления xнаy

x mod y

I (>0)

I (>0)

Неполное частное деления хнау

x div y

I (>0)

I (>0)

Модуль

abs(x)

I,R

I,R (≥0)

Квадрат

х2

sqr(x)

I,R

I,R (≥0)

Корень

sqrt(x)

I,R

I,R (≥0)

Натуральный логарифм

ln(x)

I,R (>0)

I,R

Экспонента

ех

exp(x)

I,R

R

Степень

ху

exp(yln(x))

I,R

I,R

Синус

sin(x)

I,R

R (от -1 до 1)

Косинус

cos(x)

I,R

R(от -1 до 1)

Тангенс

tan(x)

I,R

R(от -1 до 1)

Арктангенс

arctan(x)

I,R

R(от -до)

Целая часть

trunc(x)

I,R

I

Округление до целого

round(x)

I,R

I

Случайное число от 0 до x-1

random(x)

I

I

Логическое сложение

или

or

Логическое умножение

и

and

Ввод переменной х без переноса строки

read(x)

Ввод переменной х с переносом строки

readln(x)

Вывод переменной х без переноса строки

write(x)

Вывод переменной х с переносом строки

writeln(x)

Таблицы 3.8. Арифметические операции и основные функции.

Реализация линейных алгоритмов на языке Turbo Pascal 7.0. При написании линейных алгоритмов на языке Turbo Pascal 7.0. все действия записываются строго друг за другом и разделены точкой с запятой. Знак присваивания записывается в виде: «:=» (двоеточие, равно). Алгоритм решения каждой задачи будем записывать в графическом и программном виде.

Задача 3.7. Найти корень линейного уравнения ax+b=0.

Решение:

Решение задачи запишем в таблицу 3.9. Стоит отметить, что для корректной работы программы коэффициент а≠0.

Блок-схема

Программа

Пояснение

Programz331;

VarA,B,X:real;

Begin

Write(‘A=’);

Readln(А);

Write(‘B=’);

Readln(B);

X:=-B/A;

Writeln(‘X=’,X:1:3);

End.

Имя программы – z331

Все переменные действительные числа.

Начало алгоритма

Вывод подсказки

Ввод числа А

Вывод подсказки

Ввод числа В

Переменной Х присваиваем значение

Вывод результата

Конец алгоритма

Таблица 3.9. Решение задачи 3.7.

Отметим, что вывод подсказки необязателен. Это делается для удобства и определенности при исполнении программы. Все, что записано в апострофах, компьютер выводит на экран без проверки. При выводе действительных чисел целесообразней указывать, сколько ячеек используется для хранения результата и сколь знаков после запятой выводить. В нашем случае под результат мы оставляем одну ячейки, после запятой 3 знака (X:1:3). Если это не сделать, результат будет выведен в экспоненциальном формате.

Ответ: см. табл. 3.9. 

Задача 3.8. Найти остаток от деления числа а на число b.

Решение:

Блок-схема

Программа

Пояснение

Programz332;

VarA,B,C:integer;

Begin

Write(‘A=’);

Readln(А);

Write(‘B=’);

Readln(B);

C:=A MOD B;

Writeln(‘C=’,C);

End.

Имя программы – z332

Все переменные целые числа.

Начало алгоритма

Вывод подсказки

Ввод числа А

Вывод подсказки

Ввод числа В

Переменной С присваиваем значение

Вывод результата

Конец алгоритма

Таблица 3.10. Решение задачи 3.8.

Ответ: см. табл. 3.10. 

Задача 3.9. Округлить число а до целых, до сотых.

Решение:

При округлении числа до целых проблем не возникнет, так как есть функция ROUND. Как округлить число до сотых, ведь такой функции нет? Для решения этой проблемы мы «обманем» компьютер. Число, которое необходимо округлить до сотых, мы сначала умножим на 100. Затем результат округлим до целых. А округленное число разделим на 100. Решение представлено в таблице 3.11.

Блок-схема

Программа

Пояснение

Programz333;

VarA,C,E:real;

B,D:integer;

Begin

Write(‘A=’);

Readln(А);

B:=Round(A);

C:=A*100;

D:=Round(C);

E:=D/100;

Writeln(‘B=’,B);

Writeln(‘E=’,E:1:2);

End.

Имя программы – z333

Объявление действительных аргументов

Объявление целых аргументов

Начало алгоритма

Вывод подсказки

Ввод числа А

Округление числа А до целых

Умножаем число А на 100

Округляем результат С до целых

Получаем округление числа А до сотых

Выводим округление числа А до целых

Выводим округление числа А до сотых

Конец алгоритма

Таблица 3.11. Решение задачи 3.9.

Ответ: см. табл. 3.11. 

Реализация разветвляющихся алгоритмов на языке Turbo Pascal 7.0. На языке Паскаль разветвляющийся алгоритм реализуется следующим образом: if <условие> then <действие, если условие выполнено> else <действие, если условия не выполнено>;. Зарезервированное слово if соответствует слову «если», then – «то», else – «иначе». В случае невыполнения условия может быть так, что никаких действий выполнять не следует. Тогда разветвляющийся алгоритм запишется в виде: if <условие> then <действие, если условие выполнено>;. Если в случае выполнения (или не выполнения) условия необходимо выполнить несколько действий, то эти действия заключаются в операторные скобки. Открывается операторная скобка словом Begin, а закрывается словом end c точкой с запятой.

Задача 3.10. Дано число а. Если число а положительное вывести знак +, иначе вывести знак –.

Решение:

Блок-схема

Программа

Пояснение

Programz334;

VarA:real;

Begin

Write(‘A=’);

Readln(А);

IfA>0

then Writeln(‘+’)

else Writeln(‘-‘);

End.

Имя программы – z334

Переменная А – действительное число

Начало алгоритма

Вывод подсказки

Ввод переменной А

Если А>0

То выводим знак +

Иначе выводим знак –

Конец алгоритма.

Таблица 3.12. Решение задачи 3.10.

Ответ: см. табл. 3.12. 

Задача 3.11. Даны числа а и b. Если a>b вывести их сумму, иначе вывести их разность.

Решение:

Введем переменную С для вывода. Если условие выполняется С будет равно сумме, иначе произведению.

Блок-схема

Программа

Пояснение

Programz335;

Var А,В,С:real;

Begin

Write(‘A=’);

Readln(А);

Write(‘B=’);

Readln(B);

If A>B

Then C:=A+B

Else C:=A*B;

Writeln(C:1:3);

End.

Имя программы – z335

Все переменные действительные числа

Начало алгоритма

Вывод подсказки

Ввод числа А

Вывод подсказки

Ввод числа В

Если A>B

То присваиваем переменной С сумму

Иначе присваиваем С произведение

Вывод С

Конец алгоритма

Таблица 3.13. Решение задачи 3.11.

Ответ: см. табл. 3.13. 

Задача 3.12. Дано натуральное число а. Если а делится на 3, то вывести квадратный корень из часть числа а и тангенс числа а, иначе вывести квадрат числа а и экспоненту числа а.

Решение:

Для записи условия воспользуемся тем, что если число делится на 3, то остаток от деления этого числа на 3 будет равен 0. Отметим, что в случае выполнения и невыполнения условия необходимо выполнить несколько действий. Значит, эти действия заключим в операторные скобки.

Блок-схема

Программа

Пояснение

Programz336;

Var А:integer;

B,C:real;

Begin

Write(‘A=’);

Readln(А);

If A MOD 3=0

Then begin

B:=SQRT(A);

C:=TAN(A);

End

Else begin

B:=SQR(A);

C:=EXP(A);

End;

Writeln(‘B=’,B:1:3);

Writeln(‘C=’,C:1:3);

End.

Имя программы – z336

A– целое число

В и С – действительные числа

Начало алгоритма

Вывод подсказки

Ввод числа А

Если А делится на 3

То открываем операторную скобку

В присваиваем корень из А

С присваиваем тангенс А

Закрываем операторную скобку

Иначе открываем операторную скобку

В присваиваем квадрат А

С присваиваем экспоненту А

Закрываем операторную скобку

Выводим число В

Выводим число С

Конец алгоритма

Таблица 3.14. Решение задачи 3.12.

Ответ: см. табл. 3.14. 

Задача 3.13. Найти корень линейного уравнения ax+b=0 (При условии, что коэффициент a может быть равен 0).

Решение:

Сначала мы выясним равен ли коэффициент а 0. Если он равен нулю, то выясним, равен ли 0 коэффициент b.

Блок-схема

Программа

Пояснение

Programz337;

VarA,B,X:real;

Begin

Write(‘A=’);

Readln(А);

Write(‘B=’);

Readln(B);

If A=0

Then if B=0

Then writeln(‘Х - любое’)

else writeln (‘Решений нет’)

Else begin

X:= –B/A;

Writeln(‘X=’,X);

End;

End.

Имя программы – z337

Все переменные действительные числа

Начало алгоритма

Вывод подсказки

Ввод числа А

Вывод подсказки

Ввод числа В

Если А=0

То Если В=0

То выводим сообщение «Х-любое»

Иначе выводим сообщение «Решений нет»

Иначе открываем операторную скобку

Присваиваем переменной Х корень ур-я

Выводим переменную Х

Закрываем операторную скобку

Конец алгоритма

Таблица 3.15. Решение задачи 3.13.

Ответ: см. табл. 3.15. 

Реализация цикла со счетчиком на языке Turbo Pascal 7.0. На языке Паскаль цикл со счетчиком реализуется следующим образом: for <счетчик> do <тело цикла>;. Зарезервированное слово for соответствует слову «для», слово do соответствует началу тела цикла. Если тело цикла состоит из нескольких действий, то эти действия заключаются в операторные скобки.

Задача 3.14. Дано натуральное число n. Ввести n целых чисел. Найти их сумму.

Решение:

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

Блок-схема

Программа

Пояснение

Programz338;

VarA,N,S,I:integer;

Begin

Write(‘N=’);

Readln(N);

For I:=1 TO N DO

Begin

Write(‘A=’);

Readln(А);

S:=S+A;

End;

Writeln(‘S=’,S);

End.

Имя программы – z338

Все переменные целые числа

Начало алгоритма

Вывод подсказки

Ввод числа N

Для Iот 1 доN

Открываем операторную скобку

Вывод подсказки

Ввод числа А

Добовляем к сумме число А

Закрываем операторную скобку

Вывод суммы

Конец алгоритма

Таблица 3.16. Решение задачи 3.14.

Ответ: см. табл. 3.16.

Задача 3.15. Ввести 4 целых числа. Найти их произведение.

Решение:

Нахождение произведения отличается от нахождения суммы тем, что искомой переменной задается начальное значение, равное 1.

Блок-схема

Программа

Пояснение

Programz339;

VarA,P,I:integer;

Begin

P:=1;

For I:=1 TO 4 DO

Begin

Write(‘A=’);

Readln(А);

P:=P*A;

End;

Writeln(‘P=’,P);

End.

Имя программы – z339

Все переменные целые числа

Начало алгоритма

Начальное значение переменной P

Для Iот 1 до 4

Открываем операторную скобку

Вывод подсказки

Ввод числа А

Вычисление произведения

Закрываем операторную скобку

Вывод произведения

Конец алгоритма

Таблица 3.17. Решение задачи 3.15.

Ответ: см. табл. 3.17.

Реализация цикла с условием на языке Turbo Pascal 7.0. На языке Паскаль цикл с условием реализуется следующим образом: while <условие> do <тело цикла>;. Зарезервированное слово while соответствует слову «пока».

Задача 3.16. Ввести последовательность ненулевых чисел. Найти сумму элементов последовательности.

Решение:

Ввод чисел необходимо выполнять до тех пор, пока не будет введен ноль. Условие запишется следующим образом: A<>0 (А не равно 0). Сумму будем находить так же как и в задаче 3.3.8. Для того чтобы цикл продолжался в конце тела цикла введем следующее число последовательности.

Блок-схема

Программа

Пояснение

Programz3310;

VarA,S:real;

Begin

Write(‘A=’);

Readln(А);

While A<>0 do

begin

S:=S+A;

Write(‘A=’);

Readln(А);

End;

Writeln(‘S=’,S:1:3);

End.

Имя программы – z3310

Все переменные целые числа

Начало алгоритма

Вывод подсказки

Ввод числа А

Пока А не равно нулю

Открываем операторную скобку

Добавляем к сумме число А

Вывод подсказки

Ввод числа А

Закрываем операторную скобку

Вывод суммы

Конец алгоритма

Таблица 3.18. Решение задачи 3.16.

Ответ: см. табл. 3.18. 

Задача 3.17. Ввести последовательность ненулевых чисел. Найти количество положительных элементов последовательности.

Решение:

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

Блок-схема

Программа

Пояснение

Programz3311;

VarA,S:real;

Begin

Write(‘A=’);

Readln(А);

While A<>0 do

Begin

If A>0

Then S:=S+1;

Write(‘A=’);

Readln(А);

End;

Writeln(‘S=’,S);

End.

Имя программы – z3311

Все переменные действительные числа

Начало алгоритма

Вывод подсказки

Ввод числа А

Пока А не равно нулю

Открываем операторную скобку

Если А больше нуля

То увеличиваем Sна единицу

Вывод подсказки

Ввод числа А

Закрываем операторную скобку

Выводим результат

Конец алгоритма

Таблица 3.19. Решение задачи 3.17.

Ответ: см. табл. 3.19. 

Задача 3.18. Перевести натуральное число а в восьмеричную систему счисления.

Решение:

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

Блок-схема

Программа

Пояснение

Programz3312;

VarA,R,B,C:integer;

Begin

Write(‘A=’);

Readln(А);

R:=1;

While A>7 do

begin

B:=A MOD 8;

A:=A DIV 8;

C:=C+R*B;

R:=R*10;

End;

C:=C+R*A;

Writeln(‘A8=’,C);

End.

Имя программы – z3312

Все переменные целые числа

Начало алгоритма

Вывод подсказки

Ввод числа А

R=1

Пока A>7

Открываем операторные скобки

В – остаток от деления А на 8

А – неполное частное от деления А на 8

Записываем цифру Bв число

Увеличиваем порядок следующего числа

Закрываем операторные скобки

Записываем последнюю цифру в число

Выводим результат

Конец алгоритма

Таблица 3.20. Решение задачи 3.18.

Ответ: см. табл. 3.20. 

Массивы на языке Turbo Pascal 7.0. Массив – это совокупность конечного числа элементов одного типа, в которой каждый элемент имеет номер, а все элементы – общее имя. Номер элемента называется индексом. Массив может быть одномерным (все элементы расположены в одну строку или столбик) или двумерным (таблица или матрица). Индекс элемента двумерного массива состоит из двух чисел: первое число – номер строки, второе число – номер столбца. Количество элементов одномерного массива называется длиной массива. Массив описывается в разделе описания переменных следующим образом: var <имя массива>: array[<начальный индекс>..<конечный индекс>] of <тип элементов массива>;. Например, одномерный массив A действительных чисел длины 5 будет описан следующим образом: var A:array[1..5] of real. Двумерный массив B целых чисел из 4 строк и 5 столбцов будет описан следующим образом: var B:array[1..4,1..5] of integer;. Обратится к элементу массива можно как к обычной переменной, указав имя массива и индекс элемента в квадратных скобках. С элементами массива можно выполнять все операции, которые допускаются его типом.

Задача 3.19. Дан одномерный массив длины 6. Найти произведение элементов массива.

Решение:

Решения этой задачи аналогично решению задачи о нахождении произведения элементов последовательности.

Блок-схема

Программа

Пояснение

Programz3313;

Var P:real;

I:integer;

A:array[1..6] of real;

Begin

For I:=1 to 6 do

Begin

Write(‘A[’,I,’]=’);

Readln(A[I]);

P:=P*A[I];

End;

Writeln(‘P=”,P:1:3);

End.

Имя программы – z3313

Р – действительное число

I– целое число

А–массив действительных чисел длины 6

Начало алгоритма

Для Iот 1 до 6

Открываем операторную скобку

Вывод подсказки

Ввод I-го элемента массива

Вычисление произведения

Закрываем операторную скобку

Вывод произведения

Конец алгоритма

Таблица 3.21. Решение задачи 3.19.

Ответ: см. табл. 3.21. 

Задача 3.20. Дан двумерный массив целых чисел из 4 строк и 3 столбцов. Найти сумму элементов массива.

Решение:

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

Блок-схема

Программа

Пояснение

Programz3314;

Var I,J,S:integer;

A:array[1..4,1..3] of integer;

Begin

For I:=1 to 4 do

For J:=1 to 3 do

Begin

Write(‘A[‘,I,’,’,J,’]=’);

Readln(A[I,J]);

S:=S+A[I,J];

End;

Writeln(S);

End.

Имя программы – z3314

Объявление целых переменных

Объявление массива

Начало алгоритма

Для Iот 1 до 4

Для Jот1 до 3

Открываем операторную скобку

Вывод подсказки

Ввод элемента массива

Вычисление суммы

Закрытие операторной скобки

Вывод суммы

Конец алгоритма

Таблица 3.22. Решение задачи 3.20.

По решению задачи элементы массива вводятся по строкам (так как цикл со счетчиком номеров строк стоит выше), то есть сначала вводятся элементы первой строки, потом элементы третей строки и т.д.

Ответ: см. табл. 3.22. 

Задача 3.21. Дан двумерный массив действительных чисел из 4 строк и 4 столбцов. Найти наибольший элемент массива.

Решение:

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

Блок-схема

Программа

Пояснение

Programz3315;

Var B:real;

I,J:integer;

A:array[1..4,1..4] of real;

Begin

For I:=1 to 4 do

For J:=1 to 4 do

Begin

Write(‘A[‘,I,’,’,J,’]=’);

Readln(A[I,J]);

End;

B:=A[1,1];

For I:=1 to 4 do

For J:=1 to 4 do

IfA[I,J]>B

ThenB:=A[I,J];

Writeln(‘B=’,B:1:3);

End.

Имя программы – z3315

B– действительное число

I,J– целые числа

А – массив действительных чисел

Начало алгоритма

Для Iот 1 до 4

Для Jот 1 до 4

Открытие операторной скобки

Вывод подсказки

Ввод элемента массива

Закрытие операторной скобки

Начальный результат – первый элемент

Для Iот 1 до 4

Для Jот 1 до 4

Если элемент массива больше результата

То результат – элемент массива

Вывод наибольшего элемента

Конец алгоритма

Таблица 3.23. Решение задачи 3.21.

Ответ: см. табл. 3.23. 

Задача 3.22. Дан одномерный массив целых чисел длины 5. Вывести массив в порядке возрастания.

Решение:

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

Блок-схема

Программа

Пояснение

Programz3316;

Var I,J,T:integer;

A:array[1..5] of integer;

Begin

For I:=1 to 5 do

Begin

Write(‘A[’,I,’]=’);

Readln(A[I]);

End;

For I:=1 to 4 do

For J:=I+1 to 5 do

IfA[I]>A[J]

Then begin

T:=A[I];

A[I]:=A[J];

A[J]:=T;

End;

For I:=1 to 5 do

Writeln(‘A[‘,I,’]=’,A[I]);

End.

Имя программы – z3316

Описываем целые переменные

Описываем массив

Начало алгоритма

Для Iот 1 до 5

Открываем операторную скобку

Вывод подсказки

Ввод I-го элемента массива

Закрываем операторную скобку

Для Iот 1 до 4

Для JотI+1 до 5

Если элемент A[I] больше элементаA[J]

То открываем операторную скобку

Меняем местами элементы массива

Закрываем операторную скобку

Для Iот 1 до 5

Выводим I-ый элемент массива

Конец алгоритма

Таблица 3.24. Решение задачи 3.22.

Ответ: см. табл. 3.24. 

Строковый и символьный тип на языке Turbo Pascal 7.0. В таблице 3.7. мы описывали строковый и символьный тип. Отметим, что строку можно рассматривать как одномерный массив, состоящий из символов. Рассмотрим основные функции для работы с переменными строкового и символьного типов (таблица 3.25).

Функция

Запись в Turbo Pascal

Определение символа с кодом n

Chr(n)

Определение кода символа c

Ord(c)

Объединение строк s1иs2

s1+s2

Выделение из строки sподстроки длиныn, начиная с символа с номеромa

Copy(s,a,n)

Удаляет из строки s подстроки длиныn, начиная с символа с номером a

Delete(s,a,n)

Вставка в строку s2подстрокуs1, начиная с символа с номерома

Insert(s1,s2,a)

Определение длины строки s

Length(s)

Таблица 3.25. Функции для работы со строковым и символьным типами.

Задача 3.23. Ввести строку. Удалить из строки первый и два последних символа.

Решение:

Перед удалением двух последних символов необходимо определить длину строку.

Блок-схема

Программа

Пояснение

Programz3317;

Var N:integer;

S:string;

Begin

Write(‘S=’);

Readln(S);

Delete(S,1,1);

N:=Length(S);

Delete(S,N-1,2);

Writeln(S);

End.

Имя программы – z3317

N– целое число

S– строка

Начало алгоритма

Вывод подсказки

Ввод строки

Удаление первого символа

N– длина строкиS

Удаление двух последних символов

Вывод строки

Конец алгоритма

Таблица 3.26. Решение задачи 3.23.

Ответ: см. табл. 3.26. 

Задача 3.24. Ввести строку. Вставить в строку на первое место символ ‘0’. Вывести первые четыре символа из получившейся строки.

Решение:

Блок-схема

Программа

Пояснение

Programz3318;

Var S,S1:string;

Begin

Write(‘S=’);

Readln(S);

Insert(‘0’,S,1);

S1:=COPY(S,1,4);

Writeln(S1);

End.

Имя программы – z3318

Объявление строковых переменных

Начало алгоритма

Вывод подсказки

Ввод строки

Вставка на первое место символа ‘0’

Копирование первых четырех символов

Вывод результата

Конец алгоритма

Таблица 3.27. Решение задачи 3.24.

Ответ: см. табл. 3.27. 

Задача 3.25. Ввести строку. Определить символ строки с наименьшим кодом.

Решение:

Решение этой задачи аналогично решению задачи 3.21. Наименьший код обозначим за А.Сначала переменной А дадим начальное приближение (для определенности – код первого символа). Затем будем сравнивать коды символов строки (так как строка – одномерный массив, то сравнение начнем со второго символа) с А. Если код символа будет меньше А, то этот код будет наименьшим, то есть А. После определения наименьшего кода, найдем символ с этим кодом.

Блок-схема

Программа

Пояснение

Programz3319;

Var I,N,A:integer;

S:string;

C:char;

Begin

Write(‘S=’);

Readln(S);

N:=length(S);

A:=ord(S[1]);

For I:=2 to N do

If ord(S[I])<A

ThenA:=ORD(S[I]);

C:=CHR(A);

Writeln(C);

End.

Имя программы – z3319

Объявление целых чисел

S– строка

C– символ

Начало алгоритма

Вывод подсказки

Ввод строки

N– длина строки

A– начальное приближение наименьшего кода

Для Iот 2 доN

Если код I-го символа меньше А

То А равно коду I-го символу

С – символ с кодом А

Вывод С

Конец алгоритма.

Таблица 3.28. Решение задачи 3.25.

Ответ: см. табл. 3.28. 

Вопросы:

1. Из чего состоит алфавит Turbo Pascal 7.0.?

2. Может ли программа на языке Turbo Pascal 7.0. иметь имя «_fr56»? Почему?

3. Что такое процедура в Turbo Pascal 7.0.?

4. Какие бывают логические переменные?

5. Как реализуются на языке Turbo Pascal 7.0. разветвляющиеся алгоритмы?

6. Чем отличается реализация циклов со счетчиком и циклов с условием языке Turbo Pascal 7.0.?

7. Какие Вы знаете зарезервированные слова для реализации алгоритмов на языке Turbo Pascal 7.0.? Что они означают?

Задачи для самостоятельного решения:

Задача 3.26. Найти неполное частное деления а на b.

Задача 3.27. Найти целую часть числа а.

Задача 3.28. Округлить число а до десятых.

Задача 3.29. Дано число а. Если а больше 10 вывести модуль числа а, иначе вывести квадрат числа а.

Задача 3.30. Даны числа а и b. Если их сумма больше их произведения вывести разность а и b, иначе вывести разность b и а.

Задача 3.31. Дано натуральное число а. Если а – четное, то вывести косинус числа а и квадратный корень из числа а, иначе вывести синус числа а и квадрат числа а.

Задача 3.32. Найти решение квадратного уравнения, если известны его коэффициенты (можно воспользоваться задачей 3.2.).

Задача 3.33. Ввести 5 действительных чисел. Найти их сумму.

Задача 3.34. Дано натуральное число n. Ввести n целых чисел. Найти их произведение.

Задача 3.35. Ввести последовательность ненулевых чисел. Найти произведение элементов последовательности.

Задача 3.36. Ввести последовательность ненулевых чисел. Найти количество четных элементов последовательности.

Задача 3.37. Найти наибольший общий делитель натуральных чисел а и b(можно воспользоваться задачей 3.3.).

Задача 3.38. Перевести натуральное число а в девятеричную систему счисления.

Задача 3.39. Дан одномерный массив целых чисел длины 5. Найти сумму элементов массива.

Задача 3.40. Дан двумерный массив действительных чисел из 3 строк и 4 столбцов. Найти произведение элементов массива.

Задача 3.41. Дан одномерный массив целых чисел длины 7. Найти наименьший элемент массива.

Задача 3.42. Дан одномерный массив действительных чисел длины 6. Вывести массив в порядке убывания.

Задача 3.43. Определить символ с кодом n.

Задача 3.44. Ввести строку. Удалить из строки третий, четвертый и предпоследний символы.

Задача 3.45. Ввести строку. Вставить на последнее место символ ‘+’. Вывести три последних символа.

Задача 3.46. Ввести строку. Определить символ строки с наибольшим кодом.

Задача 3.47. Вывести строку в порядке возрастания кодов символов.

Задача 3.48. Ввести строку. Определить количество символов строки с четным кодом. Найти сумму нечетных кодов строки.