TurboPascal для начинающих методическая разработка по информатике и икт (9 класс) по теме
Язык программирования PASCAL считается одним из самых популярных и удобных. Он был создан профессором Никлаусом Виртом, директором института информатики Швейцарской высшей политехнической школы, назван в честь великого французского математика и философа – Блеза Паскаля, первого в мире создателя счетно-решающей машины.
Хотя миллионы программистов используют язык программирования PASCAL для сложных и больших проектов, он был разработан в первую очередь для обучения учащихся практике современного программирования. И по сей день язык программирования PASCAL считается наиболее желательным для тех, совершает свои первые шаги в этой области.
Стройность и лаконичность, широчайшие возможности в области отработки различных структур данных обусловили популярность языка PASCAL. Его модификация PASCAL7.0 отражает все современные тенденции в области объектно-ориентированного программирования.
Обучение программированию пройдет гораздо быстрее, если овладеть сначала сокращенным вариантом языка. Возможностей сокращенного языка вполне достаточно для написания довольно сложных программ, которые будут правильными и в смысле полного PASCAL’я.
Для набора команд используются строчные и прописные латинские буквы. Некоторые латинские буквы по начертанию совпадают с буквами русского алфавита (А, В, М, О и т.д.), но так как коды у них разные, то компьютер их различает. Поэтому русские буквы нельзя использовать в написании команд.
Цифры от 0 до 9.
Буквы русского алфавита используются для записи комментариев и строковых и символьных величин.
Знаки операций и отношений:
Меньше или равно
Больше или равно
- Знаки пунктуации:
Выделение индексов массивов и элементов множеств
Запись на Паскале
Выделение дробной части аргумента
Выделение целой части аргумента
Boolean(true, если число нечетное)
Округление вещественного числа до целого
Выделение целой части вещественного числа
Формирование случайного числа
Аргумент не задан
- Стандартные функции.
Способ изображения десятичных дробей отличается от традиционного тем, что вместо знака запятой, разделяющей целую и дробную части числа, используется точка.
Например: 1,45 1.45 0,5 .5
Вещественное число можно записать двумя способами:
а) Число записывается с десятичной точкой, за которой должна следовать хоть одна цифра. Такая запись числа называется представлением числа с фиксированной точкой.
б) Десятичная дробь записывается как целое или вещественное число, умноженное на целую степень числа десять. Это показательная форма записи с плавающей точкой.
Например: 5е+2 5*10 2 5*100=500
3е-3 3*10 -3 3*0,001=0,003
.25е+3 0,25*10 3 0,25*1000=250
.5е+2 0,5*10 2 0,5*100=50
§3 Простые типы данных
К простым типам данных относятся:
а) числовые типы
от -32768 до +32767
от -2 147 483 648 до +2 147 483 647
от 2.9*10 -39 до +1.7*10 +38
б) Логический тип.
Величины логического типа могут принимать только два значения: TRUE – истина и FALSE – ложь. Про эти значения известно, что TRUE > FALSE.
в) Символьный тип.
Стандартный тип CHAR включает полный набор ASCII-символов. В программе при задании символьных значений необходимо использовать апострофы: ‘A’, ‘9’ и т.д.
Тип STRING – строка от 0 до 255 символов в апострофах.
г) Тип-диапазон задается начальным и конечным значениями, которые разделяются двумя точками.
Например, TYPE LIN= -100 ..100 определяет целые числа в диапазоне от –100 до 100.
Задания по теме:
1. Какие из перечисленных сочетаний могут быть идентификаторами языка:
а) x; x 1 ; x1; x’; б) x1x2; ab; abcd; ab+cd;
в) sin; sin(x); sinx; г) объем; delta; volume;
д) a1%; abc$; 2d$; dx1a.
2. Переведите числа из экспоненциальной формы записи в форму с фиксированной точкой:
а) 15е+3; б) 1.5е+2 в) 1.5е-2 г) 1е+5
д) -3е+4 е) -5е-2 ж) 1.7е+2 з) -5.3е+2
и) 100е-2 к) 5.9е+3 л) 12.8е+4 м) -.4е+4.
3. Переведите числа в форму с плавающей точкой
а) со степенью 2; б) со степенью -2:
3; -0,005; 4,5; 72342; 35000; -4700; -0,00034.
4. Сравните числа:
а) 3.5 и 0.035е+2 б) 7.4 и 0.134е+3
в) 1.7е+3 и 2000 г) 3.7е+2 и 371
д) 3е-5 и 0.0005 е) 35е-3 и 0.035.
5 Какие из следующих последовательностей символов являются выражениями, записанными по правилам Pascal:
а) 1; б) a; в) ab; г) 1+ y ; д)2xy;
e) -2*xy; ж) xy2; з) x2+y2; и) -abs(x)+sin(y);
k) abs(x)+cos(abs(y-1,7)); л) x+y*z; м)1/2+beta;
н) ; o) sqr(abs (x)); п) x1y1 +x2y2; р) x1/x2+y1/y2 ?
6. Переведите выражения в линейную форму:
7. Переведите из линейной формы записи в обычную:
а) a/b*c; б) a/b^c; в) a/b^c^d; г) a+b/c; д) (a+b)/c.
8. Переведите из линейной формы записи в обычную:
а) 1/sqr(1+x^2); б) sqr(x^2+y^2); в) x^(1/3); г) 1/x^(1/3); д) (a+b)/(c+d);
9. Переведите из линейной формы записи в обычную:
а) sqr(tg(a+b))/ sqr(tg(a-b)); б)1/2*a*b*sin(c);
в) 4*R*sin( /2)*sin( )*sin( ) г) sgr(a*x^2+b*x+c).
10. К каким типам величин могут принадлежать следующие значения:
123, '9’, 9, ‘word’, 90.87, 6e+8, ‘6e-9’, 45, 677, 129, 34,908, ‘hgf’,4.9 ?
§ 4. Структура программы
Каждый из разделов программы, кроме последнего, завершается точкой с запятой. Заголовок программы (в версии 7.0 это необязательная часть и игнорируется компилятором) состоит из служебного слова program и имени программы.
Общий вид программы:
Label список меток;
Const список констант;
Var список переменных;
procedure имя процедуры;
function имя функции
В разделе указания исполняющих модулей раздел указания используемых модулей начинается с зарезервированного слова uses . присутствие в программе uses необязательно оно описывается в том случае, если в программе используются константы, переменные, типы, процедуры или функции, определённые в модулях Turbo Pascal, кроме модуля System.
Uses в каждой отдельной программе может быть описано только один раз и должно располагаться сразу после заголовка программы.
Стандартный модуль SYSTEM всегда используется по умолчанию. Этот модуль отвечает за ввод-вывод, обработку строк и операции с числами в экспоненциальной форме.
§4.1 Оформление программ
- После служебного слова, означавшего название оператора, обязательно ставится пробел.
- Любую команду можно снабдить комментарием – поясняющим текстом, который заключается либо в фигурные скобки либо в круглые скобки со звездочкой (* …*).
- Например, или (*Это моя первая программа *).
- Для того чтобы при выводе результатов на экране не было лишних данных, в начале программы целесообразно поставить процедуру очистки экрана ClrScr из блока CRT.
- Каждый оператор заканчивается точкой с запятой (;). Исключением может быть только последний, перед end, оператор.
- Заканчивается программа оператором end. и точкой.
II. ПРОСТЫЕ ОПЕРАТОРЫ
§5. Оператор присваивания
Для того чтобы присвоить значение переменной, используя команду присваивания.
ИМЯ ПЕРЕМЕННОЙ:= ВЫРАЖЕНИЕ;
Например, а:=10; b:=3;
Работа команды делится на два этапа:
- Вычисляется значение выражения, стоящего в правой части команды;
- Полученное значение присваивается переменной, стоящей слева, то есть помещается в область памяти, соответствующую переменной.
Внимание! В команде присваивания тип переменной должен быть согласован с типом выражения.
Команду присваивания нельзя отождествлять со знаком равенства.
Читать команду А:=5 следует таким образом: “Переменной А присвоить значение 5.” или просто “А присвоить 5”.
Команду А:=А+1 следует понимать следующим образом. Выше описаны два этапа работы команды присваивания: на первом этапе вычисляется значение А+1. Для компьютера А — это не буква, а переменная с именем А, в которой лежит какое-то значение. Таким образом, компьютер к этому значению прибавит 1. Полученное число 6 на втором этапе будет помещено в переменную, имя которой записано слева, т.е. в переменную А. Старое значение будет заменено новым.
При записи выражений в команде присваивания необходимо помнить о приоритете операций:
1) возведение в степень и действия в скобках.
2) умножение и деление.
3) сложение и вычитание.
Какие значения последовательно будет получать переменная Х при выполнении следующих команд
Х:=Х+5 Х :=10+5:= 15 Х:=15
Х:=Х/3 Х :=15/3:= 5 Х:=5
Х:=Х*2+1 Х :=5*2+1:= 26 Х:=26
Задания по теме
11. Какие из следующих последовательностей символов могут быть операторами присваивания:
а) a:=b б) a:=c+1 в) a/b+a/c г) a+b:=с д) d=1
е) x:=a+c ж) y=x з) a$:=c$. и) d:=’abc’ ?
12. Значение величины равно 3. Чему оно будет равно после выполнения команд:
а) х:=5; б) х:=х+5; в) у:=х.
13. Значение х равно 3. Чему было равно х до выполнения команд:
14. Какие значения последовательно получает переменная х после выполнения команд:
15. После выполнения оператора присваивания х:=х+у значение величины х стало равно 3, а значение у :=5. Чему были равны значения величин х и у до выполнения оператора?
16. Значение величины х равно а, значение у равно b. После выполнения каких их указанных ниже последовательностей команд значения величин х и у поменяются, т.е. х станет равно b, а значение у станет равно а:
17. Задать в виде оператора присваивания следующие действия:
а) Переменной z присвоить значение, равное полусумме значений переменных х и у.
б) Удвоить значение переменной а.
в) Значение переменной х увеличить на 0,1.
г) изменить знак значения переменной t.
18. Задать с помощью операторов присваивания следующие действия:
а) переменной а присвоить значение разности, а переменной b — полусуммы значений переменных х и у.
б)переменной а присвоить значение удвоенного произведения значений переменных х и у, а переменной b — значение 0.
19. Найдите ошибки в программе:
§6. В вод данных с клавиатуры
В вод данных с клавиатуры выполняется двумя процедурами READ и READLN.
READ (список ввода); или READLN (список ввода);
Выполняя эту процедуру, компьютер ожидает ввод данных, которые должны вводиться с клавиатуры через пробел. Заканчивается ввод нажатием клавиши .
В случае READ курсор после ввода данных и нажатия , остается на той же строке, а READLN переводит курсор на следующую строку.
Например, …; read(x, y, z); end. Допустим, введем числа 10, 11 и 12. Переменные получат соответствующие значения.
- 11 12
Процедуру READLN можно использовать без параметров, тогда она выполняет только перевод строки.
Задания по теме:
20. Какие из перечисленных операторов могут являться операторами ввода с клавиатуры?
а) read(d); б) readln(‘d’,d); в) input (“a=”;a) г) read(a,b,c);
д) read(abc); е) readln; ж) readln( ).
21. Какие значения получат переменные x, y и z после выполнения программы, если с клавиатуры будут последовательно введены числа 12 и 5:
§ 6.1 Генератор случайных чисел
RND — это встроенная функция, которая выдает случайное число в интервале от 0 до 1.
Для того, чтобы получить числа из интервала (А; В) нужно использовать формулу
При RND=0 число будет равно А, а при RND=1 — В.
Чтобы получить целое число на интервале (А; В) надо воспользоваться функцией INT, которая вычисляет целую часть числа:
В некоторых версиях языка несколько выполнений одной и той же программы, использующей функцию RND, дают одну и ту же последовательность “случайных” чисел. Чтобы этого не происходило, надо в начале программы записать команду RANDOMIZE, которая инициализирует генератор случайных чисел.
§7. Вывод информации
Для вывода данных на экран используют процедуры Write; и Writeln;.
Write(список вывода); или Writeln(список вывода);
Процедура Write выводит на экран список данных, не переводя курсор на следующую строку, а Writeln – переводит курсор на следующую строку.
Для вывода информации можно использовать форматный вывод, в котором через двоеточие нужно указать количество позиций, в которых выведется значение величины.
Write( величина1 : кол-во позиций1 ,…, величинаN : кол-во позицийN );
§7.1. Управление выводом на печать
Операторы вывода write и writeln дают возможность выводить информацию как построчно, так и в одной строке. В модуле CRT имеется процедура, которая позволяет управлять выводом, то есть выводить информацию в любом месте экрана.
где x и y – числовые величины типа byte. X – столбец (1≤x≤80), y – строка (1≤y≤25). Верхний левый угол экрана имеет координату (1,1). Если задаются недопустимые координаты, то обращение к процедуре игнорируется.
Вывести в третьей, четвертой и пятой строках, в третьем, шестом и девятом столбцах слова «март», «апрель» и «май».
Задания по теме:
22. Какие из перечисленных последовательностей символов являются операторами вывода:
г) WRITE (A, ‘symbols’)
23. Вывести на экран свою визитную карточку. Например:
* Смирнов Алексей Олегович *
* менеджер по кадрам *
* фирма “НОВОЕ ВРЕМЯ” *
24. Какие числа будут выведены на экран в результате выполнения последовательности операторов:
Readln x; Write (x, x,/2,x*10); если в качестве исходного данного использовалось числa:
а) 12; б) 2; в) 52; г) 100 ?
25. Даны два числа. Найти среднее арифметическое кубов этих чисел и среднее геометрическое модулей этих чисел.
26. По двум катетам найти гипотенузу и площадь прямоугольного треугольника.
27. Даны два числа х и у. Вычислить их сумму, разность и произведение.
28. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.
29. Вычислить значение выражения y=, используя для исключения повторяющихся вычислений промежуточную величину.
30. Известны количество жителей в государстве и площадь его территории. Определить плотность населения в этом государстве.
31. Дано расстояние в сантиметрах. Найти число полных метров в нем.
32. Дана масса в килограммах, Найти число полных тонн в ней.
33. Дано расстояние в метрах, Найти число полных километров в нем.
34. Дано четырехзначное число. Найти
а) сумму его цифр; б) произведение его цифр.
35. В киоске продают различные журналы стоимостью 12 рублей. Напишите программу, анализирующую покупку и выдающую на экран результат в виде:
II. СОСТАВНЫЕ ОПЕРАТОРЫ
Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки BEGIN …END. Например, тело программы является также составным оператором, заключенным в такие скобки.
§ 8. Условный оператор
Условный оператор позволяет выполнять те, или иные действия, в зависимости от выполнения условия. Условный оператор имеет две формы.
- Сокращенная форма:
- Полная форма:
В случае сокращенной формы, если условие выполняется (истинно), то выполняется оператор, если условие не выполняется (ложно), происходит переход к следующему оператору.
Если форма ветвления полная, при истинности условия выполняется оператор1, в противном случае – оператор2.
Дано действительное x. Найти значение функции y= .
Так как область допустимых значений функции x≠0.
Write(‘Введите x:’); readln(x);
If x = 0 then writeln(‘Вне ОДЗ’);
Дано x. Вычислить Y, если Y=
Write (‘Введите x:’); readln(x);
Дан график функции. Написать программу вычисления значения функции при x, заданном с клавиатуры.
Write(‘Введите x:’); readln(x);
§8.1 Простые и составные условия
В условных операторах и в операторах условных циклов в качестве условия можно использовать отношения равенства и неравенства: a>0; c простыми .
Из простых условий в Паскале разрешается строить более сложные или составные условия . Для этих построений существуют определенные правила.
Прежде всего требуется, чтобы все отношения, которые используются при построении, заключались в скобки: (a=b+1), (c>=0), (s>t) и т.д.
Далее, пусть А и В — некоторые условия. Рассмотрим связки, которыми они могут быть соединены.
1. А and B (чит. А и В) — это условие соблюдается тогда и только тогда, когда соблюдаются оба условия.
2. A or B (чит. А или В) — это условие соблюдается тогда и только тогда, когда соблюдается хотя бы одно из условий А и В.
3. not A (чит. не А) — это условие соблюдается тогда и только тогда, когда условие А не соблюдается.
При выполнении логических операций необходимо соблюдать следующий приоритет:
1) NOT; 2) AND; 3) OR.
Задания по теме:
36. Определите, какие из перечисленных ниже операторов могут быть операторами условного перехода:
а) IF A=B THEN A=B;
б) IF A=B THEN A=B ELSE B=A;
г) IF AB THEN A=ABS(B)
е) IF A0 THEN Y=1/A ИНАЧЕ ЕND.
37. Составить программу вычисления значения функции Y для х, вводимого с клавиатуры:
а) Y= ; б) Y=; в) Y= г) Y= .
38. Написать программу удвоения меньшего из двух чисел.
39. Даны три числа. Возвести в квадрат те из них, значения которых неотрицательны. Отрицательные числа оставить без изменения.
40. Даны два числа. Заменить второе число нулем, если оно не меньше первого, и оставить его прежним, если это не так. Первое число оставить без изменений.
41. Даны два числа. Вывести на печать первое число, если оно больше второго, и оба числа, если это не так.
41. Найти наименьшее из трех чисел.
42. Найти значение функции у=, в точке x. Значение х ввести с клавиатуры.
44. Дано Х. Вычислить У, если:
45. Дано действительное x. Для функций y=f(x), графики которых представлены на рисунках, вычислить f(x).
46. По заданным условным операторам нарисуйте графики функций
- IF X
- IF X>=2 THEN Y=X-4 ELSE
IF X>-1 THEN Y=-X ELSE Y=1/X
- ЦИКЛИЧЕСКИЕ СТРУКТУРЫ
§ 9 Понятие цикла.
Для того чтобы наглядно увидеть необходимость в использовании в программах циклических структур, рассмотрим пример.
Вывести на экран квадраты первых N натуральных чисел.
Разберем решение задачи, например, для N=5.
Для небольших значений N написать и набрать эту программу не составит труда — можно воспользоваться копированием и вставкой строк, а потом только исправить числа. Но представьте себе в какого “монстра” превратится эта программа, если нам придется писать ее для N=1000 !
Как же быть? Оказывается все очень просто. Внимательно рассмотрев программу, мы увидим, что 5 раз повторяется один и тот же оператор, отличие только в том, что каждый раз вычисляется квадрат числа на единицу больше предыдущего.
Таким образом, при многократном повторении одних и тех же действий речь может идти о цикле. А что такое цикл? Когда Вы говорите о человеке — “зациклился”? Когда он много-много раз говорит об одном и том же или делает одно и то же.
Итак, цикл — это многократное повторение одних и тех же действий.
Цикл в общем виде должен содержать:
Установку начальных значений переменных цикла.
Тело цикла — действия, повторяемые многократно.
Изменение переменных цикла.
Проверку условия окончания (продолжения) цикла.
В случае выполнения условия продолжения цикла, переход к пункту 2.
§ 10. Оператор безусловного цикла FOR …DO
FOR счетчик := нач.значение TO кон.значение DO
Где счетчик – это переменная, которая изменяется от начального значения до конечного с шагом 1 (нач.значение
В программе может быть использован другой безусловный оператор цикла, в котором счетчик изменяется с шагом –1.
FOR счетчик := нач.значение DOWNTO кон.значение DO
Если требуется повторить группу операторов, то тело цикла следует заключить в операторные скобки begin … end:
FOR счетчик := нач.значение TO кон.значение DO
Примечание : прервать выполнение цикла можно оператором BREAK .
Подсчитать сумму натуральных чисел от 1 до 100.
Примечание : Прежде, чем использовать переменную s для подсчета суммы, ее необходимо инициализировать, то есть присвоить ей начальное значение. В случае подсчета суммы это ноль, так как прибавляя 0, мы не изменяем сумму.
For i :=1 to 100 do s :=s+i;
Writeln (‘сумма чисел от 1 до 100=’,s)
С клавиатуры вводятся два числа – a и n. Найти a n .
Примечание : Так как в TurboPascal нет операции возведения в степень, задача сведется к тому, что в «копилке» мы будем копить произведения чисел а . Так как мы считаем произведение, то инициализировать переменную s следует единицей.
For i :=1 to n do s:=s*a;
Writeln (‘a в степени n=’,s); End.
Подсчитать и напечатать сумму дробей вида для n от 1 до 5.
For i :=1 to 5 do
if i5 then write (‘1/‘,i,’+’) else write (‘1/‘,i,’=’)
Вывести на экран 1000 символов * в случайных местах.
Задания по теме:
47. Составьте программу, выводящую на экран таблицу перевода милей в километры (1 миля=1.603 км) от 1 мили до 10.
48. Вывести на экран натуральные числа от 40 до 10.
49. Дано натуральное N. Вычислить:
50. Написать программу вычисления суммы всех двузначных чисел.
51. Написать программу вычисления произведения всех натуральных чисел на интервале от 1 до n. N – ввести с клавиатуры..
52. Составьте программу, выводящую таблицу умножения на N. N вводится с клавиатуры.
53. Вывести на экран все натуральные делители числа n.
54. Вывести на экран значения функции Y=x2, для x на интервале от -10 до 10.
55. Вывести на экран значения функции Y= , для x на интервале от 10 до 20.
56.Найти сумму четных чисел на интервале от 1 до 30.
§ 11. Цикл WHILE … DO
Цикл While является циклом с предусловием. То есть условие продолжения цикла проверяется перед каждым выполнением тела цикла.
Цикл выполняется, пока условие истинно. Как только условие становится ложным, цикл завершает свою работу.
Например, дано число Х. Возводить Х в квадрат, пока оно не превысит 100.
Примечание : в зависимости от значения Х, существуют две возможности выполнения программы. Во-первых, если ввести начальное значение Х меньше или равное 1, то произойдет зацикливание, то есть цикл никогда не завершит свою работу (при возведение в квадрат Х будет уменьшаться). Во-вторых, если значение Х будет больше или равно 100,тело цикла не выполнится ни разу, потому что условие продолжения цикла сразу же не будет выполняться.
Таким образом, при работе с циклом WHILE … DO необходимо помнить:
тело цикла может не выполниться ни разу, если условие сразу не выполняется;
цикл может никогда не завершиться, если условие будет всегда выполняться.
С клавиатуры вводится последовательность целых чисел, заканчивающаяся нулем. Найти сумму чисел.
Примечание. В §10 мы решали подобную задачу, но в ней подсчитывалась сумма натуральных чисел от 1 до 100. Здесь же сами числа и их количество заранее не известно. В этом случае нам на помощь и приходит цикл WHILE … DO – пока введенное число не ноль. будем считать сумму.
Var x, s: integer;
§12. Оператор цикла REPEAT … UNTIL
Этот цикл является циклом с постусловием, то есть проверка условия осуществляется после каждого выполнения тела цикла.
Тело цикла выполнится хотя бы один раз, и будет выполняться до тех пор, пока условие не станет истинным.
Найти квадратный корень из введенного с клавиатуры числа х (х 0).
Write (‘x=’); readln(x);
Y:= sqrt(x); Writeln(‘корень из ‘, x, ‘=’,y:6:4)
В данной программе с помощью цикла REPEAT … UNTIL организована проверка вводимого значения: до тех пор, пока вводимое число меньше нуля, будет повторяться тело цикла.
Допустим, необходимо ввести число из диапазона [a; b]. В этом случае цикл будет выглядеть следующим образом:
Write (‘x=’); readln (x);
Задания по теме:
56. Вводится последовательность целых чисел, ноль – конец последовательности. Найти максимальное число.
57. Вводится последовательность целых чисел, ноль – конец последовательности. Найти минимальное число.
58. Вводится последовательность целых чисел, ноль – конец последовательности. Найти сумму всех чисел.
59. Вводится последовательность целых чисел, ноль – конец последовательности. Подсчитать сколько раз в ней встречается максимальное число.
60. Вводится последовательность целых чисел, ноль – конец последовательности. Найти количество положительных чисел.
61. Вводится последовательность целых чисел, ноль – конец последовательности. Определить каких чисел, положительных или отрицательных, больше.
62. Вводится последовательность целых чисел, ноль – конец последовательности. Найти количество четных чисел.
Вводится последовательность целых чисел, ноль – конец последовательности. Определить встречается ли в последовательности хотя бы одна пара одинаковых рядом стоящих чисел (an=an+1).
§13. Символьные и строковые величины
В TurboPascal 7.1 существует стандартный тип данных, который называется CHAR. Этот тип считается порядковым, и значения величин могут сравниваться между собой по кодам. Известно, что коды латинских букв упорядочены по алфавиту и, начиная с 65, идут коды заглавных букв, а с 97 — коды маленьких букв. Коды заглавных русских букв — с 128 до 159, а коды строчных русских букв по алфавиту не упорядочены: коды малых букв от «а» до «п» идут от 160 до 175 соответственно, а коды от «р» до «я» - от 224 до 239.
Для работы с символьными переменными можно также использовать функции:
PRED(x) – дает предыдущее значение аргумента. Например, PRED(‘B’)=’A’.
SUCC(x) – дает последующее значение аргумента. Например, SUCC(‘a’)=’b’.
ORD(x) – дает численное значение кода. Если х – символ, то функция дает код, если это целое число, то функция равна числу.
Последовательность символов, заключенная в апострофы, называется строкой и описывается типом STRING. Например, ‘дом’,’школа’,’12345’,’abc’ и так далее.
Длина строки типа STRING может иметь длину от 1 до 255 символов. Можно указать длину строки: STRING[N], в этом случае максимальная длина строки будет N символов.
Для работы со строковыми величинами служат следующие процедуры и функции:
Склейка (конкатенация) строк и символов выполняется с помощью знака «+» или функции
Функция Copy(s, k, l), где s:string, k,l: byte – копирует из строки s l символов, начиная с символа с номером k.
Write (copy(x, 4, 3));
Примечание: отдельные символы можно копировать, указывая номер символа в квадратных скобках. Например, s[10], s[5] и так далее.
Процедура Delete(s, k, l), где s:string, k,l: byte – удаляет (вырезает) из из строки s l символов, начиная с символа с номером k.
Процедура Insert(st, s, k), где st, s: string; k: byte – вставляет строку st в строку s перед позицией k.
Var s, st: string;
Из слова «ЭЛЕКТРИЧЕСТВО» путем копирования и склейки выделить слова «ствол», «лектор» и «волк».
Задания по теме:
61. Используя процедуры склейки и копирования строк, составить несколько слов из символов слова:
62. Произвести анализ введенного с клавиатуры слова: вывести длину слова, первую и последнюю буквы.
63. В веденном с клавиатуры слове заменить окончание. Заменяемое и новое окончание вводятся пользователем.
64. В введенном предложении заменить одно слово на другое.
65. Подсчитать количество слов в предложении. Считать, что слова разделены одним пробелом.
66. Дано слово. Определить является ли оно перевертышем. Например, Шалаш – перевертыш, мама – не перевертыш.
67. Напишите программу подсчета вхождения буквы “А” в заданный текст. Например: БАРАБАН — рез. 3 МОРЕ — рез. 0.
68. Напишите программу подсчета числа вхождений слова Х$ в слово У$.
69. Составить программу, удаляющую из слова буквы “Д”.
Например, ДОВОД - ОВО.
70. Напишите программу, проверяющую в выражении количество открытых и закрытых скобок.
71. Предложение состоит из слов, между словами один пробел, а после последнего слова — точка. Найти длину самого длинного слова.
72. Составить программу контроля знаний столиц европейских государств. Например, Англия — Лондон, Франция — Париж, Испания — Мадрид.
73. Составить программу, реализующую эпизод из сказки: спрашивает, куда предпочитает пойти пользователь (направо, прямо или налево) и печатает, что его ждет в каждом случае. Ответ компьютера присвоить символьной переменной и напечатать. Текст вопросов и ответов компьютера задать самостоятельно.
IV. РАБОТА С МОДУЛЕМ CRT
§14 Процедуры и функции модуля CRT.
Модуль CRT представляет собой библиотеку процедур и функций, осуществляющих ввод-вывод данных.
Размеры текстового экрана:
Рассмотрим некоторые процедуры и функции модуля CRT, используемые для работы с текстом.
Процедура TextBackground(C), где С – числовая константа от 0 до 15, определяет цвет фона.Например, TextBackground(15) – задает ярко-белый цвет фона.
Процедура TextColor(C) – задает цвет символов.
Например, TextColor(4) – задает красный цвет текста
Процедура ClrScr – очистка экрана цветом фона.
Процедура GotoXY(Px,Py) – устанавливает курсор для печати в столбец PX и в строку Py.
Процедура Window(x1,y1,x2,y2), где x1,y1,x2,y2 – числовые величины типа Byte, определяет размер текстового окна на экране.Например, Window(10,10,15,15).
Функция KeyPressed – определяет , была ли нажата клавиша на клавиатуре. Тип функции: Boolean (нажата – true, не нажата - false).
Функция ReadKey – читает значение нажатой клавиши. Тип функции: char.
Процедура Delay(t), где t – время в миллисекундах, вводит задержку в миллисекундах.
В модуле CRT цвета фона и символов можно устанавливать в соответствии с таблицей:
Установить на экране текстовое окно и закрашивать его в различные цвета.
Var x1, x2, y1, y2, i:byte;
Writeln ‘Введите два числа от 1 до 40’);
Writeln (‘Введите два числа от 1 до 25’);
For i:= 1 to 15 do
Напечатать на экране всеми цветами фразу “ONE MOMENT, PLEASE!”, расположив ее лесенкой.
Write (‘ONE MOMENT, PLEASE!’);
Задания по теме:
Нарисовать на экране несколько вложенных друг в друга разноцветных прямоугольников.
Построить семейство разноцветных прямоугольников, расположенных по диагонали, в каждом из которых стоит знак вопроса.
Нарисовать на экране прямоугольник и заставить его двигаться по горизонтали, сопровождая движение звуком.
Нарисовать на экране прямоугольник и заставить его двигаться по вертикали, сопровождая движение звуком.
Нарисовать на экране прямоугольник и заставить его двигаться по диагонали, сопровождая движение звуком.
VII. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ.
Для работы в графическом режиме в программе должна быть ссылка на соответствующий модуль — USES GRAPH ., а также необходимо инициализировать работу модуля командой Initgraph(Driver, Mode, ‘C:\BP\BGI’), где Driver — параметр установки типа графического драйвера видеоадаптера, Mode — задание режима его работы, ‘C:\ BP\ BGI\’ — путь к директории, где расположены графические драйверы *.bgi. Если драйвер находится в той же директории, где и программа, то эта строка может быть пуста. Также, если указать режим видеоадаптера затруднительно, то можно разрешить определить его самой системе с помощью функции DETECT.
Var driver, mode: integer;
Initgraph(Driver, mode, ‘C:\BP\BGI\’);
Также необходимо настроить среду TPascal. Для этого в меню OPTIONS/DIRECTORIES в поле UNIT нужно указать каталог, где расположен файл graph.tpu .
§15 Процедуры и функции модуля GRAPH.
- Bar(x1, y2, x2, y2:integer); — построение закрашенного прямоугольника;
- Circle(x,y: integer, Radius:word); — построение окружности с центром (x,y) и радиусом Radius;
- ClearDevice; — очистка экрана и заливка его цветом фона;
- FloodFill(x,y:integer, Border: word); — заполнение замкнутой фигуры текущим цветом и узором. x,y – внутренняя точка области, Border – номер узора.
- Line(x1, y2, x2, y2:integer);— рисует линию, соединяющую точки с координатами (x1, y2) и (x2, y2).
- LineTo(x,y:integer); — рисует линию из последней нарисованной точки в указанную.
- OutText(TextString:string); — выводит текст на графический экран;
- OutTextXY(x,y:integerTextString:string); — выводит текст на графический экран c указанной точки;
- PutPixel(x,y:integer, Pixel:word); — рисует точку с координатами (х,у);
- Rectangle(x1, y2, x2, y2:integer); — построение контура прямоугольника;
- SetBkColor(ColorNum: word); — определяет цвет фона;
- SetColor(ColorNum: word); — определяет цвет линий;
- SetFillStile(Pattern:word, Color:word); — определяет стиль заполнения.
- GetMaxХ; — функция, дающая максимальную координату Х;
- GetMaxУ; — функция, дающая максимальную координату У;
Цвета в операторах можно записывать как число или строковую константу, определяющую название цвета:
Var driver, mode: integer;
Initgraph(Driver, mode, ‘C:\BP\BGI\’);
Write(‘Введите координаты начала отсчета:’);
;Line(x,y,x+50,y-50); Line(x+100,y); Line(x,y,x+100,y);
Построить семейство разноцветных случайным образом расположенных окружностей.
Var driver, mode, y, x: integer;
Задания по теме.
78.Написать программу построения на экране картинок:
Написать программу, выводящую на экран до нажатия клавиши случайные линии случайного цвета.
79. Изобразить на экране отрезок, пересекающий с постоянной скоростью экран слева направо параллельно горизонтальной оси. Длина отрезка 15 пикселей.
80. Получить изображение прямоугольника, движущегося :а) слева направо; б) сверху вниз;в) справа налево; г) снизу вверх.
81. Получить изображение: а) надувающегося шарика; б) сдувающегося шарика; в) надувающегося и сдувающегося шарика максимальный радиус задает пользователь с клавиатуры.
VIII. ПРОЦЕДУРЫ И ФУНКЦИИ.
При разработке программы иногда появляются группы действий нециклического характера, или возникает необходимость расчленить программу на функциональные модули, сделать структуру программы иерархической. Для этого во всех языках программирования существуют средства организации подпрограмм. Подпрограммы используют также при решении сложной задачи, разбивая ее на более простые задачи и оформляя их в виде подпрограмм. Такой метод решения задач называется методом последовательной детализации. Использование подпрограмм дает возможность разрабатывать программу по частям, поручать реализацию проектов группам разработчиков. В ТР различают два вида подпрограмм — процедуры и функции. Основное различие между ними заключается в том, что процедура получает в результате своей работы любое количество данных, а функция — только одно значение.
Основное, не формальное, различие между процедурой и функцией в том, что процедура только выполняет какую-либо работу, не возвращая результата работы в основную программу, а функция и выполняет действия, и возвращает результат.
Например, M:=MAX(x,y); — вернет в основную программу значение максимального из двух переменных x и y и присвоит его переменной М.
Подпрограммы имеют структуру аналогичную главной программе. Они содержат заголовок со специальным словом признака подпрограммы — PROCEDURE или FUNCTION , и при необходимости, списки передаваемых на обработку и получаемых из подпрограммы данных. Далее могут располагаться все, имеющиеся в главной программе разделы описаний: меток, констант, типов и переменных. В этих разделах описываются данные, используемые только внутри подпрограммы и являющиеся промежуточными при ее выполнении. Такие данные называются локальными . В подпрограмме могут участвовать переменные, описанные в главной программе, они называются глобальными .
Процедура — это подпрограмма, имеющая любое количество входных и выходных параметров. Процедура может быть описана с параметрами и без параметров. Параметры — это данные из заголовка процедуры, как передаваемые ей на обработку, так и получаемые в виде результатов. Таким образом, с помощью параметров происходит обмен между процедурой и вызывающей ее программой.
Процедуры без параметров.
Описание имеет вид:
Все переменные, над которыми производят действия операторы процедуры, определяются в вызывающей программе, им присваиваются необходимые для выполнения процедуры значения.
Дана строка символов. Написать процедуру удаления из строки всех кратных рядом стоящих символов.
Например, аабооум бум.
Write(‘’); readln(s); L:= length(s);
Процедуры с параметрами
Рассмотрим структуру программы с использованием подпрограмм.
Все переменные, описанные в основной программе, известны всем подпрограммам и самой программе. Это глобальные переменные.
Величины, объявленные в подпрограмме, известны только ей. Это локальные переменные.
Var i, j, t :integer;
Dr, mode: integer;
Procedure p2(x, y, c, r: integer):
For k:=1 to 10 do
Procedure p3(x, y :integer; var m: integer);
If x>y then m:=x else m:=y;
Procedure p4(var k,t:integer);
K:=1; for i:=1 to n do k:=k*I;
Writeln(‘Введите 2 числа и число факториала’); readln(i, j, t);
P4(i,j) ; writeln(i, ‘-i’, j, ‘-j’);
Writeln( F(t), ‘- факториал’, t);
Рассмотрим процедуру P1 — процедура без параметров, k – локальная переменная. P1 рисует 5 концентрических окружностей с центром (50,50);
Р2(x, y, c, r: integer) — при объявлении описаны параметры величин, но нет слова var — это параметры-значения. Они могут принимать значения, которые им передаются при вызове процедуры: P2(400,100,5,5);. При х=400, y=100, с=5 и r=5 строятся концентрические окружности.
Р3(x, y :integer; var m: integer); — здесь появилась переменная m , ее так и называют – параметр-переменная, а значит она может не только принимать передаваемые при вызове P3(I,j,i); значения, но и вернуть обратно новое значение глобальной переменной i .
Р4(var k,t:integer) ;— здесь только параметры-переменные, которые при вызове P4(i, j) примут значения, а потом измененные значения возвратят тем же переменным, то есть k:=i, k:=k+3; t:=t-2; i:=k; j:=t.
При объявлении процедур с параметрами всегда нужно следить за тем, чтобы типы параметров и передаваемых им величин были одинаковы.
В процедурах параметры называют формальными , им передаются фактические значения, поэтому параметры, записанные при вызове, называют фактическими .
Таким образом, можно сделать вывод: фактические параметры передают свои значения формальным параметрам, то есть в процедуре изменяют свои значения, а потом формальные параметры-переменные возвращают свои значения фактическим параметрам.
Задания по теме:
1. Дан фрагмент программы:
Procedure P(x, y:integer);
Procedure Q(x: integer, var y: integer);
Procedure R(var x, y: integer);
а) Для каждой из этих процедур указать, какие из ее параметров являются параметрами-значениями, а какие параметрами-переменными.
б) Определить, что будет выдано на печать после выполнения программы:
C:=2; d:=0; P(sqr(c)+c,d);writeln(d);
C:=2; d:=0; Q(sqr(c)+c,d);writeln(d);
с) Можно ли допустить в вызове процедуры Q следующие параметры:
C:=2; d:=0; R(sqr(c)+c,d);writeln(d);
д) Почему при изменении в процедуре P параметров-значений соответствующий фактический параметр своего значения не меняет? Что надо сделать, чтобы он менял значение?
2. Найти значения функции:
а) у=x2+x/2 для x= -4; 0,5; 3,14; 12,02;
б) y= sin x для x=0; /2; ; /3; 2 ;
в) y= для x=1,24; 345; 49; 999.
3. Даны длины отрезков a, b, c и d. Для каждой тройки из этих отрезков, из которых можно построить треугольник, напечатать площадь данного треугольника. Определить процедуру Pl(x, y, z), печатающую площадь треугольника со сторонами x, y, z, если он существует.
4. Даны координаты вершин двух треугольников. Определить какой из них имеет большую площадь.
IX. МАССИВЫ ДАННЫХ
Многие задачи, которые решаются с помощью компьютера, связаны с обработкой больших объемов информации, представляющей собой совокупность данных, объединенных единым математическим содержанием или связанные по смыслу. Такие данные удобно представлять в виде линейных или прямоугольных таблиц — массивов.
В линейном массиве каждому его элементу ставится в соответствие один порядковый номер. Для элемента двумерного массива должны быть указаны два номера — номер строки и номер столбца, на пересечении которых он находится. Итак,
Массив — это набор упорядоченных по номерам переменных одного типа, с общим именем.
Например, последовательность чисел 1.6, 14.9, -5.0, 8.5, 0,46 можно считать массивом.
Массив характеризуется именем, типом и размерностью.
Имя массива образуется по общему правилу образования имен в Pascal’е, но его имя не должно совпадать ни с одним другим именем простых переменных, используемых в программе.
§ 13.1 Линейные массивы.
В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы, списки фамилий. Порядковый номер или индекс, пишется, как правило, либо ниже имени, либо в круглых скобках. Рассмотрим оформление массивов в Pascal’е.
Пусть массив носит имя А и имеет 5 элементов. Тогда его можно описать, как совокупность переменных с индексом: А[1], А[2], . , А[5]. Индексы определяют положение элемента в массиве. Число индексов определяет размерность массива. Для рассмотренного выше примера можно записать: А[1]= 1.6,А[2]= 14.9,А[3]= -5.0,А[4]= 8.5,А[5]= 0.46.
Для хранения элементов массива в памяти компьютера необходимо выделить место. Количество ячеек памяти для массива определяется его размерностью. Описать массив можно в разделе переменных:
Var имя массива : array [тип индекса] of тип массива;
Для нашего примера:
Var A:array [1..5] of real;
Если несколько массивов имеют одинаковый тип данных и одинаковый тип индексов, то допускается в описании объединить массивы в список:
Var A, В, С:array [1..5] of real;
Элементы массива могут стоять как в левой части оператора присваивания, так и в выражениях. Над элементами массива можно производить те же операции, которые допустимы для простых данных его базового типа.
Для ввода и вывода массивов используются циклы.
а) Ввод элементов массива с клавиатуры:
Begin write(‘A[‘,I,’]=’); readln(A[i]); end;
б) Случайным образом:
Вывод на печать:
For i:=1 to 5 do writeln(‘A[‘,I,’]=’,A[i]:4:1);
Ввести с клавиатуры 10 целых чисел, больших нуля и найти их среднее значение.
Поскольку все предполагаемые числа имеют один тип, их можно оформить как массив.
А – массив из 10 элементов целого типа,
SA – среднее арифметическое (SA=(A[1]+A[2]+…+A[10])/10);
Var a:array[1..10] of word; i: byte; SA:real ;;
For i:=1 to 10 do
Имеются данные о ежедневной температуре воздуха в апреле. Определить в какие дни была самая низкая и самая высокая температура.
I, dmin, dmax byte; ;
Clrscr; max:=-100; min:=100; Randomize;
For i:=1 to 30 do
Writeln(I, ‘апреля - ‘, a[i], ‘град.’);
If min>a[i] then begin min:=a[i]; dmin:=I; end;
Writeln(dmax, ‘апреля была самая высокая температура месяца - ‘,max, ‘град.’);
Writeln(dmin, ‘апреля была самая низкая температура месяца - ‘, min, ‘град.’);
Задания по теме:
- Заполнить двумерный массив из 20 элементов значениями, равными их удвоенным порядковым номерам.
- Заполнить массив из 20 элементов числами Фибоначчи. (a[1]=1, a[2]=2, a[3]=a[1]+a[2], …, a[i]=a[i-1]+a[i-2])
- В целочисленном массиве из 30 элементов, заданном случайным образом на интервале от 0 до 100, подсчитать количество четных чисел.
- Дана последовательность из 100 различных целых чисел. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальным элементами (в сумму включить и эти два числа).
- В одномерном случайном массиве из 10 элементов поменять местами элементы.ю стоящие на нечетных местах с элементами, стоящими на четных.
- Дан массив из 10 элементов, заданный случайным образом на интервале [-5;+5]. Определить, сколько раз в этом массиве встречаются элементы, по своему значению равные a[1].
По теме: методические разработки, презентации и конспекты
QBASIC для начинающихУчебник и задачник по программированию.
Школа для начинающих портнихНаправленность программы «Школа для начинающих портних» по содержанию является художественной (прикладное творчество); по функциональному предназначению - общеразвивающей; по форме организ.
Музыкально- творческие задания для начинающих.Данная работа - плод совместного творчества с преподавателем теоретических дисциплин Кисленко И.Н. Основана на детских стихотворениях про нотки, придуманных нами и с успехом используемых в работ.
1 Курс компьютерное моделирование для начинающих 2006Элективный курс "Моделирование для начинающих".
Презентация к уроку технологии: Квиллинг для начинающихДидактический материал к урокам технологии.
Дистанционный курс для 5-6 классов "Английский для начинающих"Обучение иностранным языкам рассматривается, как одно из приоритетных направлений модернизации школьного образования. Основной стратегией обучения на данном этапе исторического развития страны п.
Основы художественно-исполнительского мастерства. Методы работы над музыкальными произведениями с начинающими.Эта работа адресована педагогам по фортепиано,а также родителям начинающих учеников. В ней содержатся рекомендации по обучению нотной грамоте, упражнения, представл.