§ 3.3. Программирование линейных алгоритмов | Типы данных

Планирование уроков на учебный год (ФГОС)


Урок 26
§ 3.3. Программирование линейных алгоритмов




Ключевые слова:

• вещественный тип данных
• целочисленный тип данных
• символьный тип данных
• строковый тип данных
• логический тип данных

Программы, реализующие линейные алгоритмы, являются простейшими. Все имеющиеся в них операторы выполняются последовательно, один за другим.

Программируя линейные алгоритмы, рассмотрим более подробно целочисленные, логические, символьные и строковые типы данных.

3.3.1. Числовые типы данных


Вы уже знакомы с основными числовыми типами данных integer и real. К ним применимы стандартные функции, часть из которых приведена в табл. 3.3.

Таблица 3.3

Стандартные функции Паскаля

Исследуем работу функций round, int и frас, применив их к некоторому вещественному х. Соответствующая программа будет иметь вид:

Запустите программу несколько раз для каждого х ∈ {10,2; 10,8; -10,2; -10,8}. Что вы можете сказать о типе результата каждой из этих функций?

3.3.2. Целочисленный тип данных


Над целыми числами в языке Паскаль выполняются следующие операции: сложение (+), вычитание (-), умножение (*), получение целого частного (div), получение целого остатка деления (mod) и деление (/). Результаты первых пяти операций — целые числа. Результатом операции деления может быть вещественное число.

Рассмотрим пример использования операций div и mod, записав на языке Паскаль программу нахождения суммы цифр вводимого с клавиатуры натурального трёхзначного числа.

Используем тот факт, что положительное трёхзначное число можно представить в виде следующей суммы: х — а*100 + 6*10 + с, где а,Ь,с — цифры числа.

Чему равна сумма цифр числа 123? А числа -123? Совпадают ли ваши результаты с результатами работы программы? Как можно объяснить и исправить ошибку в программе?

3.3.3. Символьный и строковый типы данных


Значением символьной величины (тип char) в языке Паскаль является любой из символов, который можно получить на экране нажатием на клавиатуре одной из клавиш или комбинации клавиш, а также некоторых других символов, в том числе и невидимых. Множество таких символов состоит из 256 элементов, каждому из которых согласно используемой кодовой таблице поставлен в соответствие код — число 0 до 255.

Символы, соответствующие первым 32 кодам, являются управляющими, а остальные — изображаемыми. К изображаемым символам относится и пробел, имеющий код 32.

Знакам препинания, знакам арифметических операций, цифрам, прописным и строчным латинским буквам соответствуют коды от 33 до 127. Буквам национального алфавита соответствуют коды с номерами 128 и далее.

В тексте программы константу символьного типа можно задать, заключив любой изображаемый символ в апострофы: '5', 'В', '*'.

Если значение символьной переменной считывается с клавиатуры, то его следует набирать без апострофов.

Чтобы найти код символа, используют функцию ord, где в качестве параметра задают символ.

Чтобы по коду узнать символ, используют функцию chr, где в качестве параметра указывают код символа.

Значением строковой величины (тип string) является произвольная последовательность символов, заключенная в апострофы. В Паскале (как и в алгоритмическом языке) строки можно сцеплять.

Пример. Запишем на языке Паскаль программу, в которой для введённой с клавиатуры буквы на экран выводится её код. Затем на экран выводится строка, представляющая собой последовательность из трёх букв используемой кодовой таблицы: буквы, предшествующей исходной; исходной буквы; буквы, следующей за исходной.


3.3.4, Логический тип данных


Как известно, величины логического типа принимают всего два значения; в Паскале это false и true. Эти константы определены так, что false < true.

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

Пример. Напишем программу, определяющую истинность высказывания «Число п является чётным» для произвольного целого числа n.

Пусть ans — логическая переменная, а n — целая переменная. Тогда в результате выполнения оператора присваивания

ans:=n mod 2 = 0

переменной ans будет присвоено значение true при любом чётном n и false в противном случае.

Логическим переменным можно присваивать значения логических выражений, построенных с помощью известных вам логических функций и, или, не, которые в Паскале обозначаются соответственно and, or, not.

Пример. Напишем программу, определяющую истинность высказывания «Треугольник с длинами сторон а, b, с является равнобедренным» для произвольных целых чисел а, Ь, с.


САМОЕ ГЛАВНОЕ


В языке Паскаль используются вещественный, целочисленный, символьный, строковый, логический и другие типы данных. Для них определены соответствующие операции и функции.

Вопросы и задания


1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.

2. Для заданного х вычислите у по формуле у = х3 + 2,5x2 - х + 1.

При этом:

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

Подсказка: преобразуйте выражение к следующему виду: у = ((х + 2,5)х - 1)х + 1.

3. По заданным координатам точек А и. В вычислите длину отрезка АВ.

Подсказка. Расстояние d между точками А (ха, уа) и В (хb, уb) выражается формулой .

4. Известны длины сторон треугольника а, b, с. Напишите программу, вычисляющую площадь этого треугольника.

5. Известны координаты вершин А, В, С треугольника. Напишите программу, вычисляющую площадь этого треугольника.

6. Если сумма налога исчисляется в рублях и копейках, то налоговая служба округляет её до ближайшего рубля (до 50 копеек — с недостатком, свыше 50 копеек (включая 50) — с избытком). Используйте компьютер, чтобы ввести точную сумму налога и вывести, сколько следует уплатить.

7. Исследуйте работу функции random, запустив многократно на выполнение программу:

Как можно получить случайное число из интервала (0, х)?

Как можно получить случайное число из интервала (0, x]?

Как можно получить случайное число из интервала (n, х + n)?

8. Одна компания выпустила лотерейные билеты трёх разрядов: для молодежи, для взрослых и для пенсионеров. Номера билетов каждого разряда лежат в пределах:

для молодёжи — от 1 до 100;
для взрослых — от 101 до 200;
для пенсионеров — от 201 до 250.

С помощью компьютера выберите случайным образом лотерейный билет в каждом разряде.

9. Запишите на языке Паскаль программу, которая для произвольного натурального двузначного числа определяет:

а) сумму и произведение его цифр;
б) число, образованное перестановкой цифр исходного числа.

10. Запишите на языке Паскаль программу, реализующую алгоритм работы кассира, выдающего покупателю сдачу (s) наименьшим возможным количеством банкнот по 500 (k500), 100 (klOO), 50 (k50) и 10 (klO) рублей.

11. Идёт k-я секунда суток. Разработайте программу, которая по введённой k-й секунде суток определяет, сколько целых часов h и целых минут m прошло с начала суток. Например, если k = 13 257 = 3 • 3600 + 40 • 60 + 57, то h = 3 и m = 40.

Выведите на экран фразу:

It is ... hours ... minutes

.

Вместо многоточий программа должна выводить значения hum, отделяя их от слов ровно одним пробелом.

12. Запишите на языке Паскаль программу, которая вычисляет сумму кодов букв в слове «БАЙТ».

13. Запишите на языке Паскаль программу, которая формирует и выводит на экран строку символов, коды которых равны 66, 69, 71, 73, 78.

14. Разработайте программу, которая запрашивает три строковые величины — взаимосвязанные прилагательное, существительное и глагол, а затем выводит все варианты фраз с использованием введённых слов.

15. Даны значения целочисленных переменных: а = 10, b = 20. Чему будет равно значение логической переменной rez после выполнения операции присваивания?

а)rez:=(а=10) or (b>10)
б)rez: = (a>5) and (b>5) and (a<20) and (b<30)
в)rez: = (not(a<15) ) or (b>20)

16. Составьте программу, вводящую true, если высказывание является истинным, и false в противном случае:
а) сумма цифр трёхзначного числа х является чётным числом;
б) треугольник со сторонами а, b, с является разносторонним.

Электронное приложение к уроку




Cкачать материалы урока







Наверх