Главная страница
Навигация по странице:

  • 5 8 7 Логический тип Бейсик Базового типа нет.Используется числовой тип INTEGERПаскаль booleanСи++Строчные выражения

  • Бейсик STRINGПаскаль

  • Синтаксис описания структуры 20.3. Алгоритмическое (модульное) программирование 5 8 9Доступ к содержимому структуры: 1980;Массивы.

  • Синтаксис описания массива

  • Правила работы со сложными типами

  • Синтаксис команд описания данных Бейсик DIM имя AS

  • Синтаксис описания нового типа Бейсик Аналогичен описанию структуры,которое уже является описанием нового типаПаскаль

  • 5 9 2

  • Область действия переменных

  • Синтаксис условного оператора Бейсик условие THENELSEоператор-2Паскаль

  • 5 9 5 Примеры.

  • Первый вид оператора цикла

  • Синтаксис оператора цикла Бейсик

  • 5 9 7 В последнем примере счетчик будет принимать значения от 0 до 999, потому что нумерация элементов массива Си++ начинается с нуля.Второй вид оператора цикла

  • Учебник Информатика. Базовый курс. Симонович С.В.. С. В. Симоновичаинформатикабазовый курс2е издание


    Скачать 17.96 Mb.
    НазваниеС. В. Симоновичаинформатикабазовый курс2е издание
    АнкорУчебник Информатика. Базовый курс. Симонович С.В..pdf
    Дата28.01.2017
    Размер17.96 Mb.
    Формат файлаpdf
    Имя файлаУчебник Информатика. Базовый курс. Симонович С.В..pdf
    ТипКнига
    #56
    КатегорияИнформатика. Вычислительная техника
    страница70 из 76
    1   ...   66   67   68   69   70   71   72   73   ...   76
    1 операнд
    true true false false
    2 операнд
    true false true false
    И
    true false false false true true true false
    исключающее
    false true true false
    (только первый
    операнд)
    false false true true
    В следующей таблице приведен синтаксис записи логических операций.
    Приоритеты всех логических операций ниже, чем приоритеты операций сравне- ния, поэтому сравнения всегда выполняются первыми. А логические операции вычисляются в следующем порядке: сначала НЕ, потом И, потом ИЛИ. При необ- ходимости этот порядок может быть изменен с помощью скобок.
    Примеры логических выражений:
    1 && xl <= 10
    (R > 3.14) and (R < 3.149)
    (Value < Oldvalue) OR (Value <> 0)

    20.3. Алгоритмическое (модульное) программирование 5 8 7
    Логический тип
    Бейсик
    Базового типа нет.
    Используется числовой тип INTEGER
    Паскаль
    boolean
    Си++
    Строчные выражения
    Строки в языках программирования всегда заключаются в кавычки. В Си++ и Бей- сике для этого используются двойные кавычки, в Паскале — одинарные.
    "это строка Бейсика или Си++"
    строка Паскаля'
    Строка может быть пустой — не содержать ни одного символа.
    Например:
    Как правило, строки можно сравнивать друг с другом на эквивалентность (равно и не равно). В некоторых языках программирования допускаются также сравнения типа «больше» или «меньше» — при этом происходит последовательное сравне- ние значений символов (каждый символ представляется в компьютере конкрет- ным
    Кроме того, часто допускается также операция сцепления строк, записываемая с помощью символа «+». Например:
    "123" + "4567" - получится "абв " + "abc " + " эюя" — получится "абв abc эюя"
    Тип «строка»
    Бейсик
    STRING
    Паскаль
    string
    Си++
    Базового типа «строка» нет
    Указатели
    Некоторые языки программирования допускают в явном виде работу с указателями
    адресами физической памяти. При этом в них имеется специальная операция полу-
    чения адреса конкретной переменной, что позволяет работать с памятью напрямую,
    примерно так, как это происходит в языках ассемблера. Такая возможность позво- ляет добиваться высокой эффективности работы программы, но часто приводит к ошибкам, если указатель вдруг получает неверное значение и при его использова- нии начинает портиться область памяти, предназначенная совсем для других целей.
    Сложные данные
    Структуры. До сих пор рассматривались базовые типы данных: числа, строки, логи- ческие величины — и операции над базовыми данными. Однако для повышения производительности труда программистов и повышения качества их работы необ- ходимо, чтобы язык программирования имел средства, позволяющие описывать данные в виде, максимально приближенном к их реальным аналогам. Например,

    5 8 8 Глава 20. Основы программирования чтобы организовать обработку данных по студентам, в программе удобно не про- сто описать десяток различных переменных, а объединить их в структуру (или
    запись) «студент», состоящую из полей разного типа «имя», «пол», «год рожде- ния», «группа» и т. д.
    Современные языки программирования позволяют применять такие сложные типы
    данных, составляющиеся из базовых и определенных ранее сложных типов. В ре- зультате удается организовывать структуры данных произвольной сложности:
    списки, деревья и т. п. При этом структура объединяет группу разных данных под одним названием.
    Получить доступ к отдельным составляющим (полям) этой структуры их именам. В рассматриваемых языках программирования такой доступ осуще- ствляется указанием имени структуры и имени поля через точку. Если подобным способом происходит обращение к полю, которое само является структурой, то выделение нужного поля продолжается приписыванием справа имени вложенного поля через точку.
    Синтаксис описания структуры

    20.3. Алгоритмическое (модульное) программирование 5 8 9
    Доступ к содержимому структуры:
    1980;
    Массивы. Доступ к элементам структуры осуществляется по имени ее составляю- щих. В одних случаях это значительно повышает наглядность исходных текстов и упрощает процесс программирования, но имеется немало ситуаций, когда надо организовать обработку больших объемов данных одного типа, при этом создавать структуры с сотнями и тысячами полей неразумно. Поэтому в дополнение к струк- турам в языки программирования введено
    массива, сложного типа данных,
    доступ к элементам которого происходит по их положению, по номеру или индексу.
    Например, можно описать массив, состоящий из тысячи элементов численного типа, и затем обратиться к десятому или сотому элементу по его номеру.
    При описании массива обычно указывается
    размер (число элементов) или верх- няя и нижняя границы — диапазон, в рамках которого можно обращаться к элемен- там массива.
    Синтаксис описания массива
    В Бейсике нижней границей считается 1, в Си++ — 0, в Паскале она указывается
    Вот примеры описания массивов.
    Бейсик:
    DIM
    AS INTEGER
    Паскаль:
    of i n t e g e r
    Си++:
    i n t
    Доступ к элементу массива осуществляется по его номеру. Этот номер указывается в круглых (Бейсик) или квадратных (Паскаль, Си++) скобках сразу за именем массива (такое действие называется индексированием):
    12 )
    ]
    Массивы, границы которых явно заданы в команде описания, называются стати-
    ческими. Их размер известен заранее и не меняется на всем протяжении работы программы.
    В последних версиях компилируемых языков программирования реализуются так называемые динамические массивы, размер которых может меняться во время выполнения программы. В ряде случаев это весьма удобно, так позволяет эко- номно расходовать память, захватывая ее по мере необходимости. Недостаток дина- мических массивов в том, что организовать эффективную работу с ними, исполь-

    5 9 0 Глава 20. Основы программирования зуя компиляторы, сложно. Приходится выполнять множество проверок, связан- ных с расходованием памяти компьютера, что понижает общую эффективность приложения. Динамические массивы в Паскале начали поддерживаться совсем недавно, с активным распространением новых мощных ПК, а в интерпретируемых языках типа Бейсика это было сделано довольно давно.
    Во многих языках программирования строки рассматриваются как массивы сим- волов. Их допускается индексировать как обычные массивы.
    Правила работы со сложными типами
    Отличие базовых типов от сложных в том, что в базовых типах нельзя выделить составные части. При этом поле структуры или элемент массива считаются обыч- ными переменными, и их использование в любых операторах ничем не отличается от использования переменных базовых типов.
    В развитых языках программирования допускаются массивы, состоящие из струк- тур, и структуры, состоящие из массивов. При этом достаточно слож- ные формы записи, например:
    Массив а состоит из структур, в описании которых есть поле Items, являющееся тоже структурой, имеющей поле Strings, которое, в свою очередь, представляет собой массив структур, имеющих поле value.
    Описание переменных
    Чтобы переменную можно было использовать в программе, ее надо предварительно описать, указав ее тип. Пока переменная не описана,
    к ней нельзя (хотя в некоторых языках, например в Бейсике и Фортране, считается, что все перемен- ные, не объявленные явно, имеют числовой тип). После того как переменная опи- сана, к ней можно обращаться, но она обычно исходно имеет неопределенное значе-
    ние, поэтому ее надо предварительно инициализировать — присвоить ей начальное значение.
    Синтаксис команд описания данных
    Бейсик
    DIM имя AS тип
    Паскаль
    var имя: тип;
    Си++
    тип имя;
    Вот примеры описания переменных.
    Бейсик:
    DIM X AS DOUBLE
    Паскаль:
    var x: real;
    var Str: record integer;
    S: string;
    end;

    20.3. Алгоритмическое (модульное) программирование
    591
    Си++:
    float int
    При описании переменных одного типа в Паскале и Си++ их можно указывать через запятую.
    Паскаль:
    var хх,
    i n t e g e r ;
    Си++:
    i n t z2;
    Новые типы данных
    При определении нескольких переменных со сложной структурой удобно описы- вать каждую переменную, многократно используя одну и ту же запись структуры.
    Если, например, в нее потребуется внести изменение (добавить новое поле, изме- нить тип существующего и т. д.), то придется делать это несколько раз, рискуя ошибиться и пропустить одно из описаний, особенно они сделаны в разных местах программы.
    Чтобы избежать этой проблемы и позволить программистам активно применять нужные структуры данных, в современных языках программирования разрешено определять собственные типы данных, которые допускается использовать в коман- дах описания наравне с базовыми типами.
    Синтаксис описания нового типа
    Бейсик
    Аналогичен описанию структуры,
    которое уже является описанием нового типа
    Паскаль
    type имя = описание;
    Си++
    struct имя-структуры
    {
    поля-структуры;
    } имя;
    Имя структуры надо указывать только из-за требований синтаксиса. Реально оно нигде не применяется
    Название нового типа можно использовать во всех последующих командах описа- ния переменных.
    Паскаль:
    type
    = array[0..99] of integer;
    type TMyRecord = record integer;
    Item2: string;
    end;
    var
    TMyArray;
    var R: TMyRecord;

    5 9 2 Глава 20. Основы программирования
    Си++:
    typedef struct
    {
    int float
    } TNewStruct;
    NewStruct;
    Разделение операторов
    Если записать подряд несколько операторов и не указать, где кончается один и начинается другой, то в процессе компиляции возникнет множество проблем с выделением отдельных операторов. Поэтому операторы в и Си++ отде- ляются друг от друга точкой с запятой «;» (каждый оператор в этих языках должен заканчиваться таким символом), а в Бейсике — двоеточием «:» или переходом на новую строку.
    Блок операторов
    Часто в программе возникает необходимость выполнить группу операторов (напри- мер, в зависимости от какого-либо условия). Такая группа объединяется в блок с помощью специальных скобок начала и конца блока,
    логическими скоб-
    ками.
    В Бейсике явного понятия «блок операторов» нет, в Паскале для этого использу- ются ключевые слова begin и end, а в Си++ — фигурные скобки «{» и «}».
    Область действия переменных
    Команды описания переменных могут встречаться в разных местах программы.
    При этом считается, что объявленные в них переменные являются локальными и их область действия — текущий блок, в котором они описаны. Как только встреча- ется логическая скобка, закрывающая блок (например,«}»), соответствующая пере- менная перестает существовать, а выделенная для нее память освобождается.
    Некоторые переменные описываются вне блоков и доступны из любого места про- граммы.
    Оператор присваивания
    Оператор присваивания позволяет изменять текущее значение переменной. Син- таксис его очень простой. В левой части оператора присваивания указывается имя переменной, значение которой изменяется, а справа — выражение, значение кото- рого будет записано в переменную. При этом старое значение, хранившееся в ней,
    безвозвратно пропадет.
    Сам оператор присваивания записывается знаком «=» в Бейсике и Си++ и комби- нацией двух знаков «:=» в Паскале (пробел между ними не
    Например:
    R e s u l t

    20.3. Алгоритмическое (модульное) программирование 5 9 3
    В переменную Result запишется число 5. Знак «=» означает именно присваивание,
    а не сравнение, которое может использоваться только в логических выражениях.
    Другой пример:
    X X + 1
    Сначала вычисляется значение выражения и затем оно заносится в перемен- ную X, Допустима и такая запись:
    X
    X
    X
    Прежде всего выполняется сравнение в правой части (X = X), его значение всегда будет true, и значением переменной X, соответственно, тоже станет true. Для повы- шения наглядности оператора присваивания в Паскале принята специальная форма его записи:
    X
    X
    X;
    Примеры.
    Бейсик:
    а23
    а 2 2 ( 1 2 ) +
    Ы
    Ы -
    Паскаль:
    а :=
    + с; d
    ( е [ 8 ] - f ) * 2 . 2 ;
    Си++:
    х [ 5 ]
    у / 3 . 3 3 ; у = z [ 0 ] - 0 . 0 0 1 ;
    Комментарии
    При составлении программы очень полезно комментировать различные участки кода, чтобы потом, обратившись к ним, сразу понять, что конкретно выполняется в том или ином месте программы. Забыть смысл того, что было сделано совсем недавно, можно очень быстро — за недель, а в больших и за несколько дней.
    Эта проблема становится особенно актуальной, когда группой специалистов раз- рабатывается объемное приложение, и разобраться в сотнях тысяч строк своего и чужого исходного текста очень сложно.
    Языки программирования допускают использование комментариев — частей исход- ных текстов, выделяемых с помощью специальных обозначений и пропускаемых компилятором при анализе текста программы.
    Комментарии могут начинаться и заканчиваться особыми символами и охваты- вать несколько строк кода, а могут записываться только в конце строки — при этом считается, что весь остаток строки является комментарием.
    Для обозначения комментариев в одном и том же языке программирования могут использоваться разные символы, поэтому возможно возникновение вложенных
    комментариев. Допустимость такого вложения задается, как правило, в настройках компилятора.

    594
    Глава 20. Основы программирования
    Синтаксис комментария
    это комментарий языка Паскаль
    (* а это вложенный комментарий *)
    }
    Условный оператор (условные вычисления)
    С помощью одного оператора присваивания можно создавать достаточно сложные расчетные программы, однако реализовать абсолютное большинство алгоритмов,
    просто последовательно выполняя операторы присваивания, невозможно. Посто- янно приходится изменять порядок выполнения последовательности вычислений в зависимости от
    Эти условия записываются в виде логиче- ских выражений и всегда принимают одно из двух значений —
    или false (истинно или ложно). При этом
    разветвление программы — выполнение в даль- нейшем может продолжиться с разных операторов.
    Синтаксис условного оператора примерно одинаков во всех языках программиро- вания — он представляет собой конструкцию:
    если условие истинно
    то выполнить
    иначе выполнить оператор-2
    После ключевого слова (если) следует условие, если оно истинно, то выполня- ется оператор или блок операторов, следующих за ключевым словом THEN (то);
    если же оно ложно, то выполняется оператор или блок операторов, следующих за ключевым словом ELSE (иначе).
    Синтаксис условного оператора
    Бейсик
    условие THEN
    ELSE
    оператор-2
    Паскаль
    if условие then else оператор-2;
    Си++
    if( условие )
    else оператор-2;

    20.3. Алгоритмическое (модульное) программирование 5 9 5
    Примеры.
    Бейсик:
    IF А О 0 THEN
    А = 0
    ELSE
    А = -1
    END IF
    Паскаль:
    if а о 0 then a :=
    e l s e a := - 1 ;
    Си++:
    if{ а о 0 ) а
    0
    e l s e a = - 1 ;
    Вторую часть условного оператора, выполняющуюся в случае, если условие ложно,
    всегда можно опускать.
    Бейсик:
    IF х < 0 THEN
    У
    х / 2
    х = 1
    END IF
    Паскаль:
    if х < 0 then begin у := х / 2;
    х
    1;
    end
    Си++:
    i f ( x < 0 )
    { .
    у
    x / 2 ;
    х = 1 ;
    } ;
    Повторяющиеся вычисления (операторы цикла)
    С помощью условных операторов и операторов присваивания теоретически можно реализовать сколь угодно сложный алгоритм. Однако на практике при необходимо- сти организовать обработку тысяч элементов массива (например, присвоить каж-

    596
    Глава 20. Основы программирования дому элементу начальное значение) вручную набирать тысячу операторов присва- ивания крайне тяжело.
    Поэтому в языках программирования имеются средства для организации повтор- ных вычислений, называемые операторами цикла. Они бывают двух видов: с фик- сированным числом повторений и условные операторы цикла.
    Каждый оператор цикла состоит из заголовка цикла, определяющего число повто- рений, и тела цикла — повторяемого оператора или блока операторов.
    Первый вид оператора цикла
    При решении задачи примерно в половине случаев заранее известно, сколько раз понадобится выполнить тело цикла. Так бывает, как правило, при обработке мас- сивов, размер которых всегда или известен заранее, или легко определяется.
    Заголовок такого оператора состоит из трех частей — инициализации переменной-
    счетчика или параметра цикла (присваивания ей начального значения), опреде-
    ления конечного значения счетчика, по достижении которого тело цикла надо выпол- нить в последний раз, и приращения счетчика, определяющего, на сколько будет меняться значение счетчика после каждого выполнения тела цикла.
    Синтаксис оператора цикла
    Бейсик
    FOR счетчик = началы-юе_значение ТО конечное_значение STEP приращение тело_цикла группа_операторов
    NEXT
    Если приращение не указывать, то считается, что оно равно 1
    Паскаль for счетчик := начальное_значение to конечное_значение do оператор или блок операторов;
    Приращение всегда равно 1
    Си++
    for( счетчик = начальное_значение;
    счетчик = счетчик +
    приращение)
    оператор или блок операторов;

    20.3. Алгоритмическое (модульное) программирование 5 9 7
    В последнем примере счетчик будет принимать значения от 0 до 999, потому что нумерация элементов массива Си++ начинается с нуля.
    Второй вид оператора цикла
    Не менее часто встречаются ситуации, когда число повторений заранее неизвестно —
    надо выполнять цикл, пока не произойдет некоторое событие (пользователь нажмет на кнопку, точность вычислений уложится в заданный порог и т. д.). В таких ситуа- циях заголовок цикла упрощается. В нем указывается только условие (логическое выражение) — пока его значение равно true, цикл будет выполняться.
    1   ...   66   67   68   69   70   71   72   73   ...   76


    написать администратору сайта