Урок 6. Основные алгоритмические конструкции и типы данных

Повторение изученного

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

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

Транслятор (translator) – это программа, предназначенная для перевода (трансляции) описания алгоритма с одного формального языка на другой.

Язык программирования – это специально обусловленный набор символов, слов и мнемонических (особым образом организованных и заранее оговоренных) сокращений, используемых для записи набора команд (программы), воспринимаемых компьютером.

Синтаксис языка программирования – это перечень правил записи программ из элементов этого языка.

Программирование – это технология разработки программ с помощью языков программирования.

Оператор ветвления – команда, реализующая алгоритмическую конструкцию ветвление.

Оператор цикла – команда, реализующая алгоритмическую конструкцию ветвление.

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

Общий вид программы

Любая программа на языке программирования Pascal имеет три составляющие: 1) заголовок; 2) раздел описаний; 3) тело программы.

  1. Заголовок – это слово Program , после которого идет название программы латиницей и точка с запятой в конце. Название не может начинаться с цифры, не должно совпадать с зарезервированными словами (begin, end, integer и т.п.) или с названиями переменных из раздела описаний (см. ниже), а также недопустимо использование каких бы то ни было символов (‘@’, ‘%’, ‘&’ и т.п.), кроме подчеркивания. Название желательно давать со смыслом, которое отображало бы суть самой программы. Но заголовок писать не обязательно.
  2. Раздел описаний – Поскольку сначала мы будем рассматривать простейшие задачи, то у нас во втором разделе будет находиться или описание констант, или переменных
  3. Тело программы – блок операторов, в котором записываются команды для выполнения. Начинается этот блок словом begin («начало»), а заканчивается словом end. («конец») с точкой в конце.
  Program <название программы>;
     <раздел описаний>
  begin
     <оператор 1>;
     <оператор 2>;
     . . . . . . .
     <оператор N>;
  end.
Раздел описаний
  •  Label <раздел описания меток>;
  •  Const <раздел описания констант>;
  •  Type <раздел описания типов>;
  •  Var <раздел описания переменных>;
  •  Procedure (Function) <раздел описания подпрограмм>;

В разделе описания переменных var указываются все переменные (определяя их тип), которые впоследствии будут использованы в программе:

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

Например:   Var x:integer;  Y:char;  a:integer;  b:integer;

Переменные одного типа можно описывать вместе:

Var x,a,b:integer; Y:char;
Типы данных

Существуют стандартные и пользовательские (создаваемые самим программистом) типы.

Некоторые стандартные типы:

  • Integer – целые числа (-10; 0; 1; 2; … )
  • Real – вещественные числа (-10; -7,241; 0; 1; 4,25; …)
  • Boolean – логический тип (true и false)
  • Char – символьный тип (’а’; ’б’; ’1’; ’*’ …)
  • String – строковый тип (’а’; ’б’; ’1’; ’123’; ’абв’; ’*’ …)
Команды ввода

Ввод данных с клавиатуры осуществляется с помощью оператора Read (или Readln):

Read (<список переменных>);
Readln (<список переменных>);

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

С клавиатуры можно вводить только значения переменных. Например: 

1.Read(a) – ввод значения переменной a;
2.Read(’a’) – неверная команда, т. к. вводить можно только значения переменных;
3.Read(a, b, c) – ввод значений переменных a, b, c.
Команды вывода

Вывод данных на экран осуществляется с помощью оператора Write (или Writeln):

Write(<список вывода>);
Writeln(<список вывода>);

Элементами списка могут быть константы, переменные, выражения. Указанные данные выводятся на экран в порядке их перечисления в списке. Для вывода на экран определенного текста он указывается в кавычках.  При использовании оператора Writeln после вывода на экран осуществляется переход на следующую строку, при использовании оператора Write перехода на следующую строку не происходит.
Например:

1.Write(a) – вывод на экран значения переменной (или константы) a
2.Write(’a’)– вывод на экран буквы а
3.Write(’a’, b, c)– вывод на экран буквы а и значений переменных (или констант) b и c
4. Write(’a,’, b, ’,’, c) – вывод на экран буквы а и значений b и c через запятую
Команда присваивания

Значения переменных можно изменять в процессе выполнения программы с помощью оператора присваивания.

Команда присваивания имеет следующий вид:   <переменная>:=<выражение> ;

Оператор присваивания выполняется следующим образом:

       1. вычисляется значение выражения
       2. переменная получает это значение

При этом тип выражения (тип выражения определяется типом его значения) должен быть совместим с типом переменной. Например, числовой переменной нельзя присвоить в качестве значения символ или строку символов и наоборот; переменной символьного типа Char нельзя присвоить в качестве значения строку символов, а переменной типа Integer – значение, тип которого Real и т.д. Но при этом обратное возможно: переменной типа String можно присвоить значение типа Char , а переменной типа Real – значение типа Integer

Составной оператор

Любой набор операторов, размещённый между ключевыми словами begin и end, с точки зрения транслятора становился одной командой (оператором) и мог использоваться в любом месте программы, где следует использовать один оператор.

В Паскале условный оператор if, циклы while и for требуют в качестве ветвей и тела один оператор, поэтому при необходимости разместить в ветвях условного оператора или теле цикла несколько команд используются составные операторы:

if условие then 
  begin  { начало составного оператора }
    ... { несколько операторов }
  end { конец составного оператора }
else
  begin  { начало составного оператора }
    ... { несколько операторов }
  end; { конец составного оператора }

while условие do 
  begin  { начало составного оператора }
    ... { несколько операторов }
  end; { конец составного оператора }

for переменная := значение1 to значение2 do
  begin  { начало составного оператора }
    ... { несколько операторов }
  end; { конец составного оператора }
Команда ветвления

Для осуществления ветвления в программе используется условный оператор. Он имеет полную и неполную формы:

Полная форма:

If <условие> Then <оператор1> Else <оператор2>;
{Точка с запятой перед Else не ставится!}

Неполная форма:

 If<условие> Then <оператор1>;

Условный оператор выполняется следующим образом:
              1.проверяется условие
              2.если условие выполнено, выполняется оператор1
              3.если условие не выполнено, в полной форме выполняется оператор2, а в неполной форме никаких действий не выполняется
              4. осуществляется переход к следующей команде

Условие может быть простым или сложным.

Простое условие – сравнение значений двух выражений с помощью знаков сравнения:

  • < – меньше
  • > – больше
  • <= – меньше или равно
  • >= – больше или равно
  • = – равно
  • <> – неравно

Например: 1) X>=3; 2) A<>B; 3) sqr(c)=sqr(a)+sqr(b)

Сложное условие – несколько простых условий, соединенных логическими операциями:

  • Not– не
  • And – и
  • Or – или

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

Например: 1) (X>3) and (Y<=17) and (Z<>2) – выполнено, если выполнены все простые условия
                     2) (X<2) or (X=8) or (X>=12) – выполнено, если выполнено хоть одно из простых условий

Команда цикла с предусловием

Цикл с предусловием – наиболее универсальная циклическая структура (с его помощью можно представить любой цикл). В языке Pascal этот вид цикла реализован оператором While:

  While <условие> do
  <тело цикла>

Оператор While выполняется следующим образом:

  1. Проверяется условие
  2. Если условие выполнено, выполняется тело цикла и происходит переход к п. 1
  3. Если условие не выполнено, то происходит переход к следующей команде (выход из цикла)
  • Цикл повторяется, пока условие выполнено
  • Если изначально условие не выполнено, то тело цикла не выполняется ни разу
  • Оператор While может зациклиться: если изначально условие выполнено, а в теле цикла его значение не изменяется, то выхода из цикла не происходит
Команда цикла с повторением

Цикл с параметром используется тогда, когда заранее известно количество повторений и шаг постоянен. Этот тип цикла реализуется в языке Pascal оператором For, который имеет 2 варианта записи:

1)For <параметр цикла> := <начальное значение> to <конечное значение> do
               <тело цикла>

2)For <параметр цикла> := <начальное значение> downto <конечное значение> do
               <тело цикла>
  • Параметр цикла – переменная целого типа
  • начальное и конечное значения – выражения того же типа;
  • тело цикла – простой или составной оператор.
  1. Цикл повторяется, пока значение параметра лежит в интервале между начальным и конечным значениями
  2. При каждом повторении цикла значение параметра автоматически изменяется: в первом варианте увеличивается, а во втором уменьшается на 1.
  3. Значение параметра цикла можно использовать, но нельзя изменять внутри цикла.
Арифметические операции

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

Тип арифметического выражения определяется по следующему правилу: если все операнды целые и в выражении отсутствует операция деления ( / ), то выражение имеет тип integer, в противном случае выражение имеет тип real.

Порядок вычисления значений арифметических выражений:
1) действия в скобках;
2) вычисление математических функций;
3) изменение знака, возведение в степень;
4) умножение, деление;
5) сложение, вычитание.

Для выделения отдельных цифр из многоразрядного числа удобно использовать операции целочисленного деления [div] и извлечения остатка от деления [mod].

Операция div делит число нацело, остаток при этом не учитывается, например:

123 div 10 = 12
123 div 5 = 24
123 div 2 = 61

Операция mod определяет остаток полученный при делении одного числа на другое, например:

123 mod 10 = 3 [123 - (12 * 10) = 3]
123 mod 20 = 3 [123 - (6 * 20) = 3]
123 mod 5 = 3 [123 - (24 * 5) = 3]
123 mod 2 = 1 [123 - (60 * 2) = 1]

Операцию mod часто используют для определения четности числа, например:

x mod 2 = 1 [если число не четное]
x mod 2 = 0 [если число четное]

Так же для извлечения цифр из числа. Данная программа считывает пятиразрядное число и выводит сумму всех его цифр:

Program prim;
Var
    x, a, b, c, d, e, s : integer;
Begin
    Read(x);
    a:= (x div 10000) mod 10;
    b:= (x div 1000) mod 10;
    c:= (x div 100) mod 10;
    d:= (x div 10) mod 10;
    e:= (x div 1) mod 10;
    s:= a + b + c + d + e;
    Write(s);
End.

Задания

  1. Составьте программу для нахождения суммы всех целых чисел от  a до b включительно (a<b). Числа a и b вводятся с клавиатуры.
  2. Составьте программу решения линейного уравнения ax + b = 0. Числа a и b вводятся с клавиатуры.
  3. Напишите программу, которая находит сумму квадратов чисел от 1 до N кратных 7. Значение переменной N ввести с клавиатуры. 

72+142+212+…+X2, где X<=N


Это изображение имеет пустой атрибут alt; его имя файла - hw-e1653285769766.png

Домашнее задание

§ 6 учебного пособия, ответить на вопросы


Форма отправки файлов

Форма видна только зарегистрированным пользователям.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *