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

  • Program ABCMorze; Uses Sounds,CRT; var A : array

  • Вычислительные программы – квадратное уравнение

  • Program SquareEquation; var a, b, c : real

  • Учебное пособие для школьников 79 классов СанктПетербург Павловск 20152016 Введение


    Скачать 0.84 Mb.
    НазваниеУчебное пособие для школьников 79 классов СанктПетербург Павловск 20152016 Введение
    Дата05.05.2022
    Размер0.84 Mb.
    Формат файлаpdf
    Имя файлаabcpascal.pdf
    ТипУчебное пособие
    #514238
    страница6 из 6
    1   2   3   4   5   6
    string
    , index - integer вставляет подстроку subs в строку s с позиции index
    Pos(subs,s) s, subs -
    string
    integer возвращает позицию первой подстроки subs в строке s (или 0 если подстрока не найдена)
    SetLength(s,n) s - string, n
    - integer устанавливает длину строки s равной n
    Str(x,s)
    Str(x:n,s)
    Str(x:n:m,s) s - string, x
    - integer, real и n, m - integer преобразует x к строковому представлению (во втором и третьем случаях согласно формату вывода, устанавливаемому n и m) и записывает результат в строку s
    Val(s,v,code) s - string, v
    - integer, real, и code
    - integer преобразует строку s к числовому представлению и записывает результат в переменную v. Если преобразование возможно, то в переменной code возвращается 0, если невозможно, то в code возвращается ненулевое значение
    Concat(s1,...,sn) s1,..., sn -
    string
    string
    возвращает строку, являющуюся результатом слияния строк s1,..., sn.
    Результат тот же, что у выражения s1+s2+...+sn
    UpCase(c) c - char
    char
    возвращает символ c, преобразованный к верхнему регистру
    LowCase(c) c - char
    char
    возвращает символ c, преобразованный к нижнему регистру
    UpperCase(s) s - string
    string
    возвращает строку s, преобразованную к верхнему регистру
    LowerCase(s) s - string
    string
    возвращает строку s, преобразованную к нижнему регистру
    Trim(s) s - string
    string
    возвращает копию строки s с удаленными лидирующими и заключительными пробелами

    Тема №16 Множества символов
    А.С.Цветков, ABC Pascal
    - 44 -
    19.09.2015
    Занятие №16
    МНОЖЕСТВА
    В языке Pascal есть очень интересный тип данных множество. Множество представляет собой набор элементов одного порядкового типа. Элементы множества считаются неупорядоченными; каждый элемент может входить во множество не более одного раза. Тип множества описывается следующим образом:
    set of
    базовый тип;
    В качестве базового может быть любой порядковый тип с элементами, для которых функция
    Ord
    возвращает значения в диапазоне от 0 до 255. К таким типам, из изученных нами, относятся тип
    char
    и
    byte
    (а также их подмножества).
    16
    Аналогично массивам можно определить название нового типа в секции
    type
    , например:
    type
    ByteSet = set of byte;
    CharSet = set of char;
    Digits = set of '0'..'9'; // подмножества типа char
    Сами множества задаются в виде перечисления их элементов (возможно с использованием диапазонов), заключенные в квадратные скобки:
    var
    Vowels : CharSet; // можно было написать vowels : set of char;
    Good : Digits; // можно было написать good : set of '0'..'9';

    Vowels:=['A', 'E', 'O', 'I', 'U']; // Элементы явно перечислены
    Good:=['3'.. '5', '10']; //
    Диапазон и отдельный элемент
    Для проверки принадлежности элемента множеству существует операция in:
    var
    c : char;

    if
    c in Vowels then inc(n); // Если с – гласная, то увеличить n на 1
    На обороте страницы приведена программа, которая вводит текстовую строку с экрана и выводит ее на экран азбукой Морзе, заодно проигрывая ее. В этой программе используется много нового: работа с модулем Sound, массив из строк, индексация массива не целыми числами, а типом char, функция задержки выполнения Sleep, функция перевода буквы в верхний регистр Upcase, работа с множеством.
    Задание 16
    1. Внимательно изучите текст программы ABCMorse, задайте преподавателю вопросы.
    2. Напишите программу, которая вводит текстовую строку, подсчитывает, сколько в ней гласных букв, согласных букв, знаков препинания.
    (3 балла)
    3. Напишите программу, которая вводит из файла 10 текстовых строк и выводит их в другой файл, отсортированными в алфавитном порядке. Используйте алгоритм сортировки занятия №13, и операцию сравнения строк < или >.
    (5 баллов)
    4. Основываясь на программе ABCMorse придумайте интересную задачу на использование текстовых строк и множеств.
    (доп. баллы)
    16
    Другие возможные базовые типы – перечисления (об этом позже).

    Тема №16 Множества символов
    А.С.Цветков, ABC Pascal
    - 45 -
    19.09.2015
    Program
    ABCMorze;
    Uses
    Sounds,CRT;
    var
    A : array ['А'..'Я'] of string[5]; c : char; f : text; s : string; i,j : integer; dash, dot : integer; morze : string[5];
    begin
    // Читаем файл и заполняем массив строк A['А'], A['Б'] ,... A['Я'] азбукой Морзе
    assign(f,'morze.txt'); reset(f);
    for c:='А' to 'Я' do readln(f,A[c]);
    close(f);
    // Выводим таблицу на экран
    for c:='А' to 'Я' do write(c,' ',A[c]:5,' ');
    // Загружаем звуки dash:=LoadSound('dash.wav'); dot:=LoadSound('dot.wav');
    // Вводим текстовую строку writeln; write('Введите сообщение '); readln(s);
    for i:=1 to length(s) do // Разбираем ее по символам
    if Upcase(s[i]) in ['А'..'Я'] then // Проверка принадлежности
    begin // Если это русская буква (перевод в заглавные – Upcase)
    morze:=A[Upcase(s[i])]; // Читаем s[i] элемент массива A в строку morze
    for j:=1 to Length(morze) do // Разбираем строку Morze и проигрываем её
    begin
    write(morze[j]); // Вывод на экран буквы кодом Морзе
    if morze[j]='-' then
    begin
    PlaySound(dash); Sleep(SoundLength(dash)); // играем dash
    end
    else
    begin
    PlaySound(dot); Sleep(SoundLength(dot)); // играем dot
    end;
    Sleep(50);
    end; write(' '); Sleep(500); // Пауза между буквами 500 мс
    end; // end к внешнему оператору if
    end
    Файл morse.txt
    ·-
    -···
    ·--
    --·
    -··
    ·
    ···-
    --··
    ··
    ·---
    -·-
    ·-··
    --

    ---
    ·--·
    ·-·
    ···
    -
    ··-
    ··-·
    ····
    -·-·
    ---·
    ----
    --·-
    --·--
    -·--
    -··-
    ··-··
    ··--
    ·-·-

    Тема №17 Задача о квадратном уравнении
    А.С.Цветков, ABC Pascal
    - 46 -
    19.09.2015
    Занятие №17
    Вычислительные программы – квадратное уравнение
    Решение квадратного уравнения выходит за рамки курса математики 7 класса, но мы сочли возможным внести эту классическую задачу программирования в дополнение.
    Квадратным уравнением называ
    0
    d
    =
    ется уравнение вида
    2 0
    ax
    bx c
    +
    + =
    На первом этапе его решения определяется так называемый дискриминант:
    2 4
    d b
    ac
    =

    Далее рассматривают три случая
    1.
    0
    d
    <
    – в этом случае вещественных решений нет
    17
    ;
    2.
    0
    d
    =
    – один корень, определяемый формулой
    2
    b
    a

    ;
    3.
    0
    d
    >
    – два корня, вычисляемых по формуле
    1,2 2
    b
    d
    x
    a
    − ±
    =
    , где знак «+» соответствует первому корню, а знак «–» – второму корню.
    Составим программу для решения этой задачи:
    Program
    SquareEquation;
    var
    a, b, c : real; // Коэффициенты уравнения d
    :
    real
    ; // Дискриминант x1, x2 : real; // Корни уравнения
    begin
    write('Введите a, b, c '); readln(a,b,c); // Ввод исходных данных d:=b*b-4*a*c; // Вычисление дискриминанта
    if d<0 then writeln('Решений нет')
    else if d=0 then begin x1:=-b/(2*a); write('x=',x1)
    end
    else begin x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); write('x1=',x1,' x2=',x2)
    end
    end
    Последнюю ветвь else можно оптимизировать, убрав повторяющиеся вычисления (особенно вычисление квадратного корня)
    else begin
    d:=sqrt(d); a:=2*a; x1:=(-b+d)/a; x2:=(-b-d)/a; write('x1=',x1,' x2=',x2)
    end
    17
    Решение есть только в комплексных числах
    1   2   3   4   5   6


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