7


  • Учителю
  • Методическая разработка Как овладеть Turbo Pascal (9 класс)

Методическая разработка Как овладеть Turbo Pascal (9 класс)

Автор публикации:
Дата публикации:
Краткое описание:
предварительный просмотр материала



А. Н. Николаев

















«Как овладеть Turbo Pascal».



















































2013

















Рекомендовано



в качестве учебного пособия для учеников

основной школы





Николаев А. Н.

Как овладеть Turbo Pascal: учеб. пособие для учеников основной школы / А. Н. Николаев.-Затон, 2013. - 40с.

Учебное пособие содержит базовый курс по информатике, 9 класс, программирование на основе Turbo Pascal. Все материалы соответствуют государственным образовательным стандартам.

Разработано по итогам работы в школе, в период 2001 - 2013 гг.

Книга может быть рекомендована как для учеников так и для учителей преподающих в школе информатику.

В этой книге разработана практическая и теоретическая часть для ТР_6. Это пособие поможет учителям и ученикам быстро и качественно овладеть языком программирования, хотя она и не претендует на роль главной книги.



Пояснительная записка.



В 2001 году была принята президентская программа «Дети России», каждой школе был выделен компьютер. С этим была поставлена задача научить детей работать на ЭВМ.

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

В методической разработке внимание уделено языку Паскаль. Он заслуженно является наиболее популярным при традиционном - процедурном подходе к программированию, пригоден для разработки прикладных программ для самых различных предметных областей. Именно на базе Паскаля создана одна из наиболее мощных сред объектно-ориентированного программирования (Delphi), что является дополнительным стимулом к его более детальному изучению.

Содержание образовательной программы



11. Программное управление работой компьютера - 11 часов.

Языки программирования, их классификация. Правила записи основных операторов: ввода, вы­вода, присваивания, ветвления, цикла. Правила записи программы. Этапы разработки програм­мы: алгоритмизация - кодирование - отладка - тестирование.





Урока

Изучаемый раздел,

тема учебного материала

Количество часов

Планируемые результаты

Контрольно-

измерительные материалы

знания

умения

ОУУН

и способы деятельности

11. Программное управление работой компьютера.

11









51

Алгоритмы работы с величинами.

1

назначение языков программирования;

алфавит языка программирования Pascal;

разработка и запись на языке программирования Pascal типовых алгоритмов;

выполнение действий по инструкции, алгоритму;

составление алгоритмов;

анализ и синтез, обобщение и классификация,

сравнение информации;



52

Язык Паскаль. Основные операторы.

1



53

Практическая работа «Разработка линейных программ».

1

объекты, с которыми работает программа (константы, переменные, функции, выражения, операторы и т.д.);

основные типы данных и операторы языка Паскаль;

определение массива, правила описания массивов, способы хранения и доступа к отдельным элементам массива;

владение основными приемами работы с массивами: создание, заполнение, сортировка массива, вывод элементов массива в требуемом виде;



использование знаний в стандартной и нестандартной ситуации;

логичность мышления;

умение работать в коллективе;

сравнение полученных результатов с учебной задачей;

владение компонентами доказательства;

формулирование проблемы и определение способов ее решения;

определение проблем собственной учебной деятельности и установление их причины;



54

Оператор ветвления.

1



55

Практическая работа «Разработка программ с ветвлением».

1



56

Логические операции.

1



57

Циклы на языке Паскаль.

1



58

Практическая работа «Циклы в Паскале».

1



59

Одномерные массивы в Паскале.

1



60

Практическая работа «Обработка одномерных массивов».

1



61

Контрольная работа «Программное управление работой компьютера».

1

КР «Программное управление работой компьютера»





Тематическое планирование



Практическая работа «Циклы в Паскале».

Оператор варианта.

Понятие цикла в ТР_6. Цикл с предусловием while.. do..

Пример программы цикла с предусловием while.. do..

Цикл с постусловием repeat.. until..

Пример программы цикла с постусловием repeat.. until..

Цикл с параметром for.. to.. do..

Пример программы цикла с параметром for.. to.. do..



Дополнительный материал

Понятие const и использование в программе.

9

Одномерные массивы в Паскале.

Массив. Понятие массива.

10

Практическая работа «Обработка одномерных массивов».

Нахождение max и min элементов массива.



Дополнительный материал

Понятие процедуры.

Понятие функции.

Ввод типов переменных.

Интервальный тип переменных.

Строковый тип переменных.

Скалярный тип переменных.

Логические операции со множеством.

Комбинированный тип переменных.

11

Контрольная работа «Программное управление работой компьютера».

Проект «Программа на языке Pascal».

Тема: Назначение, история создания ТР_6.

Одной из самых революционных идей, приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века Ч. Бэббиджем мысль о предварительной записи порядка действий машины для последующей автоматической реализации вычислений - программе. И, хотя использованная Бэббиджем запись программы на перфокартах, придуманная для управления ткацкими станками французским изобретателем Жозефом Мари-Жаккаром, технически не имеет ничего общего с современными приемами хранения программ в ЭВМ, принцип здесь по существу один. С этого момента начинается история программирования.

После этого прошло ещё более 100 лет пока не появились современные языки программирования они разделились на:

1. Процедурное

а). Операционное - Бейсик

б). Структурное - Паскаль

2. Непроцедурное

а). Объектное - С++, Дельфи

б). Декларативное

- Логическое - Пролог

- Функциональное - Лисп



Язык Паскаль, начиная с момента своего создания Н.Виртом в 1971 г., играет особую роль и в практическом программировании, и в его изучении. С непревзойденной четкостью в нем реализованы принципы структурного программирования. Паскаль стал первым языком, с которым знакомится большинство будущих программистов в мире.

Трансляторы для программ, написанных на Паскале, разработаны для различных компьютеров и в настоящее время имеют множество разновидностей. Они являются компиляторами, обрабатывающими разработанные программистами тексты программ.

Существует много версий языка Паскаль. Различия между ними порой весьма велики. Так, базовая версия Вирта имеет многократно меньшие возможности чем, скажем, версия Турбо-Паскаль 7.0 (первая, фактически - язык для обучения будущих программистов, а вторая - орудие профессиональных разработчиков прикладного программного обеспечения). Тем не менее, это версии одного языка, что, в частности, подтверждается их совместимостью «сверху вниз», т.е. любая программа, соответствующая «младшей» версии, соответствует и «старшей» (за исключением малозначащих синтаксических оговорок). Приведенные ниже тексты программ и примеры соответствуют (если нет специальных оговорок) версиям не ниже Турбо-Паскаль 3.0. Изучим Pascal ABC.»



Строение программы ТР- 6.

Любая программа на языке ТР_6 выглядит следующим образом:

Схематически программа представляется в виде последовательности восьми разделов:

1) заголовок программы;

2) описание внешних модулей, процедур и функций;

3) описание меток;

4) описание констант;

5) описание типов переменных;

6) описание переменных;

7) описание функций и процедур;

8) раздел операторов.

Не в каждой программе обязательно присутствуют все восемь разделов, в простейшей программе, например, могут быть только 5-й и 8-й разделы.

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



Раздел описаний:

Рассмотрим подробней раздел описаний, который включает в себя основные пункты.

PROGRAM - имя программы.

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

TYPE - определяются не стандартные типы переменных.

VAR - определяются стандартные типы переменных.

CONST - определяются постоянные

LABEL - записываются метки

Эти пункты используются по необходимости, не обязательно все вместе.



Стандартные модули «Pascal»:

SYSTEM - внутри создаются оси команды, арифметические действия, операции сравнения и основные конструкций языка. Данный модуль всегда автоматически подключается к любой программе, поэтому в пункте USES слово SYSTEM писать не надо.

CRT - модуль для работы в текстовом режиме.

GRAPH - создать команду для работу в графическом режиме.

DOS - создать инструкций для работы с файлами и командами операционной системы.

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

Все операторы языка в тексте программы отделяются друг от друга явными или неявными разделителями, например:

S1;S2;...;Sn

Операторы выполняются в порядке их следования в тексте программы. Лишь с помощью операторов перехода этот естественный порядок может быть нарушен.

Любые действие в PASCAL заканчивается «;»



Основные типы переменных и функций.

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

Целый - Integer

Вещественный - Real

Логический - Boolean

Символьный - Char

Строковый - String

Массив - Array

Множество - Set

Файл - File

Запись - Record

Объект - Object

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

- целочисленный integer (от -32800 до 32800) его подвиды Byte (от 0 до255), Word (от 0 до 64000), Longint (-2 млрд. до 2млрд.)

- дробные числа Real (пример 4.5Е+01)

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

- Char значение переменных можно считать лишь один раз.

- логический переменные Boolean могут принимать 2 значения: истина True; ложь False.

Переменные описываются в разделе описания переменных по схеме:



var <список имен переменных>: <тип>



Имена в списке разделяются запятой. В этом разделе может быть описано несколько переменных разного типа, например:



var a,b,c:real; k,l:integer; p:boolean;



Набор встроенных математических функций в языке Паскаль невелик, он включает :

1. Abs(x) - абсолютная величина числа.

2. Int(x) - целая часть вещественного числа.

3. Frac(x) - дробная часть вещественного числа.

4. Trunc(x) - целая часть вещественного числа, преобразованная к типу LongInt.

5. Round(x) - округленное до целого вещественное число, преобразованное к типу LongInt.

6. Sqr(x) - квадрат числа.

7. Sqrt(x) - квадратный корень.

8. Exp(x) - экспонента.

9. Ln(x) - натуральный логарифм.

10. Pi - число пи.

11. Sin(x) - синус.

12. Cos(x) - косинус.

13. Arctan(x) - арктангенс.

Все остальные математические функции можно получить, пользуясь этим основным набором; например: десятичный логарифм - Ln(x)/Ln(10), тангенс - Sin(x)/Cos(x) и т.д. Аргументы функций могут быть любыми арифметическими выражениями и задаются в круглых скобках после имени функции, аргументы функций Sin и Cos выражаются в радианах. Вычислим квадрат синуса 70 градусов: Sqr(Sin(Pi/180*70))

Кроме перечисленных выше математических функций Паскаль предоставляет еще несколько полезных числовых функций и процедур разного назначения:

14. High (целый тип) - возвращает наибольшее возможное значение данного типа.

15. Low (целый тип) - возвращает наименьшее возможное значение данного типа.

16. SizeOf (тип)

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

17. Random(Range:Word) - возвращает целое случайное число в диапазоне от 0 до Range-1.

18. Random - возвращает вещественное случайное число в из отрезка [0,1].

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







Тема: Арифметические и логические операции.



Данные, обрабатываемые программой, могут быть разных типов (числа, символы, строки, массивы и т.д.). Тип определяет область допустимых значений, а также операции и функции, применяемые к величинам этого типа. В Паскале имеется несколько встроенных простых типов со стандартными именами.

Группа типов, значения каждого из которых можно перечислить в некотором списке - скалярные типы. Для них определена порядковая функция ord(x) - номер значения х в списке (для целочисленного х ord(x)=x); функции pred(x) - значение в списке, предшествующее х, и suce(x) - значение в списке, следующее за х.

Упорядоченный тип - это тип, значения которого упорядочены в обычном смысле. К данным такого типа применимы операции отношения <, >, <= (меньше или равно), >=(больше или равно), =, <> ( не равно). Для логического типа выполняется неравенство:

false < true.

Над целыми величинами (тип integer) определены арифметические операции : * (умножение), div (деление нацело), mod (вычисление остатка от деления), + , -(сложение и вычитание); операции перечислены в порядке старшинства.



Например: 25 div 4 = 6; 25 mod 4=1.



Над логическими величинами определены операции:

NOT - логическое отрицание;

AND - логическое "и";

OR - логическое "или";

XOR - логическое исключающее "или".

Правила выполнения этих операций таковы :

NOT - унарная (т.е. применимая к одному операнду) операция:

NOT FALSE = TRUE , NOT TRUE = FALSE .

Правила выполнения бинарных операций AND, OR и XOR приведены в таблице .

Таблица

Правила выполнения бинарных операций

Результат операции

A

B

a AND b

a OR b

a XOR b

FALSE

FALSE

FALSE

FALSE

FALSE

FALSE

TRUE

FALSE

TRUE

TRUE

TRUE

FALSE

FALSE

TRUE

TRUE

TRUE

TRUE

TRUE

TRUE

FALSE



Приоритет операции NOT (как и всякой унарной операции) наивысший, следующий приоритет у операции AND, и наинизший приоритет - у операций OR и XOR. Выражения могут содержать не только разные логические операции, но и операции сравнения и арифметические, поэтому отметим, что приоритет логических и арифметических операций выше, чем операций сравнения. Существует функция, определенная для целочисленных аргументов и имеющая логическое значение, - это функция

Odd(x).

Она возвращает TRUE, если значение x нечетное, и FALSE, если оно четное. Логические значения можно выводить процедурой WRITE, но вводить логические переменные процедурой READ нельзя.

Множество всех символов образуют символьные величины (тип char), которые являются упорядоченными, причем 'А' < 'В'< 'С' <...< 'Z', 'а' < 'b' <...< 'z', '0' < '1' <...< '9'.

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

Эта роль выражений отражена в основном операторе языка - операторе присваивания. Он имеет следующий вид:

<имя переменной> := <выраженне>

Тип переменной и тип выражения должны быть согласованы (величины принадлежат одному и тому же типу). Есть исключение: имя переменной может относиться к типу real, а значение выражения - к типу integer.

Примеры.

l:=2*pi*r;

p:=(a+b+c)/2;

z:=sqrt(sqr(x)+sqr(y))





Тема: Операторы ввода и вывода.



В Паскале можно вводить с клавиатуры числовые и символьные данные. Имеются две встроенные процедуры (подпрограммы) ввода:

1) read(<cписок переменных>);

2) readln(<cписок переменных>).

При выполнении процедуры read(xl,x2,...,xN) программа прерывается и компьютер ждет ввода с клавиатуры N значений переменных из списка х1, х2,..., xN. Эти значения - константы соответствующих типов - должны при вводе разделяться пробелами. Набор данных завершается клавишей ввода.

Процедура readln отличается от read только тем, что при завершении ввода курсор перемещается в начало следующей строки.

Пример.

var

a,b:real; c:char; d:integer;

...

read(a,c,d,b);

...

Допустимый ввод: 83.14 k 200-7.15

Функция readln в некоторых случаях задерживает прогон программы, что необходимо для визуального контроля результата расчета. Нажатие клавиши Enter снимает «задержку» прогона программы.

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

1) write(<cписок выражений>);

2) writeln(<cписок выражений>).

Процедура write(xl,x2,...,xN) печатает на экране значения выражений из списка х1, х2, ..., xN. Процедура writeln отличается от write тем, что переводит курсор в начало следующей строки. Для вывода на принтер используются те же процедуры с добавлением служебного слова 1st перед списком выражений.

Пример: write(lst,'нет решений');

На бумаге будет напечатан текст «нет решений».

Если А=5, то при

write(A) - на экран выйдет значения А

write('A') - на экран выйдет буквы А

write ('А'=,А); (А=5)

Для управления печатью используются форматы данных. Пусть х - переменная типа real. Если не использовать форматы, то значение х будет выводиться в «плавающей» форме (типа 1.654887892Е-04). Форматы позволяют напечатать вещественное число в естественной форме. Пусть m, n - целые числа. Процедура write(x:m:n) выводит на экран значение переменной х в виде десятичной дроби, причем m определяет общее число выводимых символов, включая цифры, точку и знак числа, n - количество цифр после точки. Если количество выводимых символов меньше m, то перед числом добавляются пробелы.

Пусть, например, х = 387.26. Следующая таблица демонстрирует влияние форматов на вывод значения х:

оператор строка вывода

writeln('*',x) * 3.8726000000E+02

writeln('*',x:8:3) * 387.260

writeln('*',x:8:l) * 387.3

Один формат - ширину поля вывода - можно использовать и для вывода значений выражений типов integer, boolean, char.

Программа Диалог.

Program Dialog; {название программы}

Var { описание переменных}

s:string;

begin

writeln('Привет! Как тебя зовут?');

readln(S) {то что человек введёт с клавиатуры=переменная S.}

writeln( S,'как твой дела?');

readln(S);

writeln('У меня тоже',S);

end.

Запуск программы осуществляется при нажатии «Ctrl+F9», при этом происходит поиск ошибок, если они есть, то курсор появляется после ошибок.

Просмотр результата «Alt+F5».

Длина строки не должна превышать 128 знаков.

Д/з. Составить программу для нахождения n-ого члена арифметической прогрессии:

program ArPr;

var

n:integer;

a1,an,d:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

an:=a1+d*(n-1);

writeln('an= ',an:0:4);

readln;

end.



Тема: Условный оператор.



Для реализации развилки в Паскале предусмотрены два оператора: условный оператор и оператор варианта (выбора). Они предназначены для выделения из составляющих их операторов одного, который и выполняется.

Структура и действие условного оператора таковы:

If <логическое выражение>

then <оператор 1>

else <оператор 2>

Условный оператор может быть неполным, т.е. не содержать часть «else <оператор 2>». В этом случае, если значение логического выражения равно false, условный оператор не вызывает никаких действий.

if A

if A

Если после слова then и использовать несколько действий, то в этом случае придется воспользоваться составным оператором

Пример: if a

begin

A:=A+1;

B:=B-1;

end.

С помощью зарезервированного слова uses подключается специальный модуль CRT, который позволяет использовать широкий набор функций; в частности функцию сlrscr.

сlrscr; (Очистка экрана. Запомни! Очень полезно очищать экран от «мусора».)

Пример «программа нахождения максимального числа из двух чисел»:

uses crt;

var

а,b:integer;

begin

сlrscr;

writeln ('введите 2 числа');

readln (a,b);

if a>b then writeln('Максимальным числом является',a)

else writeln('Максимальным числом является',b);

readln;

end.

Запуск программы осуществляется при нажатии Ctrl+F9, при этом происходит поиск ошибок, если они есть, то курсор появляется после ошибок.

Д/з. 1. Составить программу нахождения максимального числа из трех чисел. 2. Составить программу нахождения минимального числа из двух чисел.



Тема: Пример программы с условным оператором.



А теперь попробуй составить программу с условным оператором, которую ты попытался сделать дома.



Пример программы нахождения минимального числа из двух чисел.

uses crt;

var

а,b:integer;

begin

сlrscr;

writeln ('введите 2 числа');

readln (a,b);

if a<b then writeln('Минимальным числом является',a)

else writeln('Минимальным числом является',b);

readln;

end.



Тема: Составной оператор.



Паскаль - язык структурного программирования. Это означает, что программист должен выражать свои мысли очень дисциплинированно, с использованием малого числа четко оговоренных конструкций, используя как чередование их, так и вложения друг в друга. Не рекомендуется (хотя и возможно) использовать оператор перехода goto.

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

begin <последовательность операторов> end

Раздел операторов в программе всегда является составным оператором. Служебные слова begin и end часто называют операторными скобками.

Структура составного оператора:

Begin

<оператор 1>

Begin

<оператор 2>

end;

<оператор 3>

end.

Составной оператор большинство используется с условным оператором.

Рассмотрим пример программы с составным оператором.

Эта программа для решения квадратных уравнений:

program KvadUravn; {заголовок программы}

var {список переменных}

а,b,с: real; {коэффициенты уравнения}

d,xlx2: real; {вспомогательные переменные}

begin {начало программы}

writeln; {пропуск строки на экране}

writeln('введи a,b,c');

read(а,b,с); {ввод данных}

d:=b*b-4*a*c; {дискриминант}

if d<0 then {если d<0, то}

write('корней нет') {печатать}

else {иначе}

begin {начало серии команд}

xl:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*а); {вычисляем корни}

write('х1=',х1,' х2=',х2) {печать корней}

end {конец серии}

end. {конец программы}

{текст} - в данных скобках информация не воспринимается программой.

Д/з. Составить программу для вычисления сумму n-х членов арифметической прогрессии:

program ArPrS;

var

n,I:integer;

a1,d,s:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

s:=a1+d*(n-1);

writeln('s= ',s:0:4);

readln;

end.



Тема: Пример программы с составным оператором.



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

Пример: {readln(a);} - это команда не будет действовать,

Эти скобки помогают для пояснения в программе например:

if a<b then < действие > {условный оператор}.

Пример: программы нахождения максимального числа из трех чисел.

var

a,b,c:integer;

begin

writeln('Введите три числа');

readln(a,b,c);

if a>b then

begin

if b>c then

writeln('максимальное число = ',a)

else

begin

if a>c then writeln('максимальное число = ',a)

else writeln('максимальное число = ',c);

end

end

else

begin

if b

writeln('максимальное число = ',c)

else writeln('максимальное число = ',b);

end;

readln;

end.



Тема: Оператор варианта.



Оператор варианта имеет следующую форму:

case <выражение> of

<список констант 1> : <оператор 1>;

<список констант 2> : <оператор 2>;

…………………………

<список констант N> : <оператор N>

end.



Выражение, стоящее между служебными словами case и of, должно иметь значение ординального типа. Любой список констант может состоять из одной константы.

Оператор варианта вычисляет значение выражения, записанного после case. Если его значение совпадает с одной из констант в некотором списке, то выполняется оператор, стоящий после этого списка. Если значение выражения не совпало ни с одной константой во всех вариантах, то оператор варианта ничего не делает.

В качестве примера приведем программу, которая в зависимости от номера месяца выдает сообщение о времени года.

Пример:

program seasons;

var

k:integer;

begin

writeln('введите номер месяца') ;

readln(k);

case k of

1,2,12:writeln('зима');

3, 4,5:writeln('весна') ;

6, 7,8:writeln('лето');

9,10,11:writeln('осень');

end;

readln;

end.



Тема: Понятие цикла в ТР_6. Цикл с предусловием while.. do..



Для реализации циклов в Паскале имеются три оператора. Если число повторений известно заранее, то удобно воспользоваться оператором цикла с параметром. В других случаях следует использовать операторы цикла с предусловием (цикл «пока») или с постусловием (цикл «до»).

Цикл с предусловием является наиболее мощным в Паскале. Другие операторы цикла можно выразить через него. Его форма такова:

while - <логическое выражение> do <оператор>

Действие: вычисляется значение логического выражения. Если оно равно true, то выполняется оператор, после чего снова вычисляется значение логического выражения, в противном случае действие заканчивается.

Программа для нахождения n-ого члена арифметической прогрессии:

program ArPr;

var

n, i:integer;

a1,an,d:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

i:=1;

while n>i do

begin

a1:=a1+d;

i:=i+1;

end;

an:=a1;

writeln('an= ',an:0:4);

readln;

end.

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



Тема: Пример программы цикла с предусловием while.. do..



Программа для нахождения суммы n-х членов арифме-тической прогрессии:

program ArPrS;

var

n,I:integer;

a1,s,d:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

I:=1; s:=a1;

while n>i do

begin

a1:=a1+d;

i:=i+1;

s:=s+a1

end;

writeln('s= ',s:0:4);

readln;

end.





Тема: Цикл с постусловием repeat.. until..



Оператор цикла с постусловием имеет форму:

repeat <последовательность операторов>

until <логическое выражение>

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

Следует заметить (смотрите примеры, приведенные ниже), что оператор repeat очень удобен для многократной реализации программы без повторных ее загрузок. Практически любую программу можно модифицировать для многократного использования. Для этого необходимо: объявить переменную, например СН типа char; в начало программы за ключевым словом begin вставить строку, содержащую оператор repeat; а в конце программы перед ключевым словом end вставить три следующие строки:

witeln ('продолжить работу - Y, иначе нажми любую клавишу');

readln (CH);

until upcase (CH) <> 'Y'

Такой прием реализован во многих программах.

Программа для нахождения n-ого члена арифметической прогрессии:

program ArPr;

var

n,i:integer;

a1,an,d:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

i:=1;

repeat

begin

a1:=a1+d;

i:=i+1;

end;

until i>n-1;

an:=a1;

writeln('an= ',an:0:4);

readln;

end.

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





Тема: Пример программы цикла с постусловием repeat.. until..



Программа для нахождения суммы n-х членов арифме-тической прогрессии:



program ArPrS;

var

n,I:integer;

a1,s,d:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

I:=1; s:=a1;

repeat

begin

a1:=a1+d;

i:=i+1;

s:=s+a1;

end;

until i>n-1;

writeln('s= ',s:0:4);

readln;

end.





Тема: Цикл с параметром for.. to.. do..



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

Форма 1:

for <параметр>:= <выражение 1> to <выражение 2>

do <оператор>

Параметр, выражение 1, выражение 2 должны быть одного ординального типа. Параметр в этом цикле возрастает. Действие эквивалентно действию следующего составного оператора:

begin

<параметр>:=<выражение 1>;

while <параметр> <= <выражение 2> do

begin

<оператор>;

<параметр>:=suсс(<параметр>)

end;

end.

Если в этом описании отношение <= заменить на >= , а функцию succ на pred, то параметр в цикле будет убывать, в этом случае цикл с параметром принимает форму 2.

Форма 2:

for <параметр>:=<выражение 1> downto <выражение 2>

do <оператор>

Программа для нахождения n-ого члена арифметической прогрессии:

program ArPr;

var

n,i:integer;

a1,an,d:real;

begin

writeln('Введите a1,n,d');

readln (a1,n,d);

for i:=1 to n-1 do

begin

a1:=a1+d;

end;

an:=a1;

writeln('an= ',an);

readln;

end.

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



Тема: Пример программы цикла с параметром for.. to.. do..



Программа для нахождения суммы n-х членов арифме-тической прогрессии:

program ArPrS;

var

n,I:integer;

a1,s,d:real;

begin

writeln('Введите a1,n,d');

readln(a1,n,d); s:=a1;

for I:=1 to n-1 do

begin

a1:=a1+d;

s:=s+a1;

end;

writeln('s= ',s:0:4);

readln;

end.





Тема: Понятие const и использование в программе.



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

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

Постоянные величины описываются в разделе констант по схеме:

const <имя> = <константа>

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

Пример:

const

pi=3.14159; k=-15; s='площадь';

Пример:

program circle;

const

pi=3.14159;

var

r,s,1 : real;

begin

writeln (введите радиус');

readln(r);

s:=pi*r*r; l:=2*pi*r;

writeln('площадь круга=',S:8:4);

writeln('длина окружности=', l:8:4)

end.



Тема: Массив. Понятие массива.



Данные, с которыми имеет дело ЭВМ, являются абстракциями некоторых реальных или существующих в воображении людей объектов. Мы уже познакомились с некоторыми типами данных: стандартными, перечислимыми, интервалами. Этими типами можно было обойтись при решении простых задач. Однако естественно и часто очень удобно группировать однотипные данные в последовательности - массивы, строки символов, объединять разнотипные данные об одном и том же объекте в виде записей. Значительные удобства представляются пользователю в Паскале при организации однотипных величин в виде множества с соответствующим набором операций: объединения, пересечения и т.д. Наконец, последовательность однотипных величин переменной длины можно представить в Паскале в виде файла данных и хранить на внешних носителях, используя его в разных программах.

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

Часто используемый составной тип - массив. Массив - это последовательность, состоящая из фиксированного числа однотипных элементов. Все элементы массива имеют общее имя (имя массива) и различаются индексами. Индексы можно вычислять, их тип должен быть ординальным. При описании массивов используются служебные слова array и of. В описании массива указывается тип его элементов и типы их индексов.

Схема описания такова:

type <имя типа> = array [<список типов индексов>] оf <тип элементов>

Тип элементов - произвольный, он может быть составным. Число типов индексов называется размерностью массива. После описания типа массива конкретные массивы можно задать в разделе описания переменных.

Например:

type vector = array [1.. 10] of real;

table = array ['A'..'Z',1..5] of integer;

var a,b : vector;

с: table;

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

Например:

а[7]:=3.1; b[k*k+l]:=0; с['М',3]:=-14;

Если массивы имеют одно и то же описание, то во многих версиях Паскаля допустимо их копирование, например b:=а;

Описание массива можно совместить с описанием соответствующих переменных:

var a,b : array [1.. 10] of real;

d:array [byte] of char;

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

Схема описания констант массива:

const <имя массива>: <тип массива> = (<список значений элементов>)

Тип массива может быть описан ранее:

type digits = array [1 ..5] of char;

const a : digits =('0';2','4';6';8');

Пример:





Тема: Нахождение max и min элементов массива.



Дополнительный материал.



Тема: Понятие процедуры.



Описание и вызов. В Паскале подпрограммы называются процедурами и функциями и описываются в разделе с тем же названием.

Процедура имеет такую же структуру, как и программа, но с двумя отличиями:

• заголовок процедуры имеет другой синтаксис и включает служебное слово procedure;

• описание процедуры заканчивается точкой с запятой (а не точкой).

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

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

procedure <имя> (<список описаний формальных параметров>)

Описание формальных параметров может иметь вид:

<список имен>: <тип> или var <список имен>: <тип>

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

Оператор вызова процедуры имеет вид

<имя процедуры> (<список выражений>);



Указанные выражения называют фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры каждому параметру-значению присваивается значение соответствующего фактического параметра и поэтому их обычно используют для передачи входных данных.

Параметры-переменные следует использовать для представления результатов процедуры.

Пример:

Составим программу, которая с помощью строки символов разделит экран на части, где напечатает таблицу квадратных корней для чисел 1, 2,..., 10 и таблицу натуральных логарифмов для чисел 1, 2,..., 5.

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

Заметим, что процедура в программе выполняется пять раз.

program section;

var x:integer;

procedure line(a:integer;c:char) ;

var j:integer;

begin

for j:=l to a do write (c);

writeln

end;

begin

line(35,'-'); writeln('таблица квадратных корней');

line(35,'-');

for x:=l to 10 do writeln(x:8,sqrt(x):8,4);

line (35,'-'); writein('таблица натуральных логарифмов');

line(35,'-');

for x:=l to 5 do writein(x:8,ln(x):8:4);

line(35,'*')

end.





Тема: Понятие функции.



Функция - это подпрограмма, определяющая единственное скалярное, вещественное или строковое значение. Отличия подпрограммы-функции от процедуры:

• заголовок функции начинается со служебного слова function и заканчивается указанием типа значения функции:

function <имя> (список описаний формальных параметров): <тип>;

•раздел операторов функции должен содержать хотя бы один оператор присваивания имени функции;

• обращение к функции - не оператор, а выражение вида

<имя функции> (<список фактических параметров>).

Функции (и процедуры) могут использовать свое имя в собственном описании, т.е. могут быть рекурсивными.

Пример:

Составим программу, которая для заданных четырех натуральных чисел а, b, с, d напечатает наибольшие общие делители первой и второй пар чисел и сравнит их по величине.

В программе определим рекурсивную функцию nod(x,y) по формулам

| x, если у = 0

nod(x,y) = | nod(y.x). если х < у

| nod(x mod у,у), если х > у

Применяя эти формулы к числам 21 и 15, последовательно находим nod(21,15) = nod(6,15) = nod(15,6) = nod(3,6) = nod(6,3) = nod(0,3) = nod(3,0) = 3.

program four;

var a,b,c,d,m,n:integer;

function nod(x,у:integer):integer;

var h:integer;

begin

if y=0 then h:=x

else if x

else h:=nod(x mod у, у);

nod: =h

end;

begin

writeln('введите 4 натуральных числа');

read(а,b,с,d); writeln;

m:=nod(a,b); n:=nod(c,d);

writeln('нод(',а,',',b,')=',m);

writeln('нод(',c,',',d,')=',n);

if m>n then writeln('первый > второго')

else if mпервый < второго')

else writeln('нод пар равны')

end.



Тема: Ввод типов переменных.



Мы уже познакомились с простыми типами real, integer, boolean, byte, char.

В Паскале программист по своему желанию может определить новый тип путем перечисления его элементов - перечисляемый тип, который относится к простым ординальным типам.

Описание перечисляемого типа выполняется в разделе типов по схеме:

type <имя типа> = <список имен>

Примеры:

type operator = (plus,minus,multi, divide);

color = (white,red,blue,yelow,purple,green);

В списке должно быть не более 256 имен.

Поскольку перечисляемый тип относится к ординальным, то к его элементам можно применять функции ord(x), pred(x), succ(x) и операции отношения. Отметим, что данные этого типа не подлежат вводу и выводу с помощью функций ввода/вывода и могут использоваться внутри программы для повышения ее читабельности и понятности.

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

Пример:

program week;

type days=(mon,tue,wed,thu,fri,sat,sun);

var d:days;

begin

for d:=mon to sun do

case d of

mon: writeln("понедельник");

tue: writeln("вторник");

wed: writeln("среда");

thu: writeln("четверг");

fri: writeln("пятница");

sat: writein("суббота") ;

sun: writeln("воскресенье");

end;

end.

Тема: Интервальный тип переменных.



Интервальный тип - это подмножество другого уже определенного ординального типа, называемого базовым. Интервал можно задать в разделе типов указанием наименьшего и наибольшего значений, входящих в него и разделяющихся двумя последовательными точками, например:

type days=(mon,tue,wed,thu,fri,sat,sun);

workday s=mon.. fri;

index=1..30;

letter='a'..'z';

Можно задать интервал и в разделе переменных:

vara:1..100;b:-25..25;

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

Пример: если k - номер месяца в году, то вместо описания

var k:integer;

можно написать

vark:1..12;

Интервальный тип тоже относится к простым ординальным типам.



Тема: Строковый тип переменных.



При решении задач на ЭВМ часто возникает необходимость в использовании последовательностей символов. Такую последовательность можно описать как массив символов, однако в Паскале для таких целей имеется специальный тип - string[n] - строка из n символов, где n <= 255. Способы описания переменных - строк - аналогичны описанию массивов.

1. Строковый тип определяется в разделе описания типов, переменные этого типа - в разделе описания переменных:

type word : string[20];

var a,b,c : word;

2. Можно совместить описание строкового типа и соответствующих переменных в разделе описания переменных:

var a,b,c : string[20];

d : string[30];

3. Можно определить строковую переменную и ее начальное значение как констант-строку:

const l:string[l 1]='информатика';



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

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

'fife' < 'tree' (так как 'f' < 't'); '4' > '237' (так как '4' > '2').

Кроме логических операций <, >, =, для величин строкового типа определена некоммутативная операция соединения, обозначаемая знаком плюс:

а:='кол'+'о'+'кол'; (в результате а='колокол').

Для строковых величин определены следующие четыре стандартные функции.

1. Функция соединения - concat(sl,s2,...,sk). Значение функции - результат соединения строк sl ,s2,...sk, если он содержит не более 255 символов.

2. Функция выделения - copy(s,i,k). Из строки s выделяется k символов, начиная с i-того символа:

а:=сору('крокодил',4,3); (в результате а='код*).

3. Функция определения длины строки - length(s). Вычисляется количество символов, составляющих текущее значение строки s:

b:=length('каникулы'); (b=8).

4. Функция определения позиции - pos(s,t). Вычисляется номер позиции, начиная с которого строка s входит первый раз в строку t; результат равен 0, если строка s не входит в t:

с:=роs('ом','компьютер'); (с=2).

В Паскале определены также четыре стандартные процедуры для обработки строковых величин:

1. Процедура удаления delete(s,i,k). Из строки s удаляется k символов, начиная с i-того символа.

s:='таракан'; delete(s,5,2); (в результате S='таран').

2. Процедура вставки - insert(s,t,i). Строка s вставляется в строку t, начиная с позиции i:

t:='таран'; insert ('ka',t,5); (t='таракан').

3. Процедура преобразования числа в строку символов - str(k,s). Строка s получается «навешиванием» апострофов на число k:

str(564,s); (s='564').

4. Процедура преобразования строки из цифр в число - val(s,k,i). Число i=0, если в строке s нет символов, отличных от цифр, в противном случае i=позиции первого символа, отличного от цифры:

val('780',k,i); (k=780; i=0).

Рассмотрим несколько программ, в которых используются строковые величины.

1. Составить программу, определяющую количество гласных в русском тексте, содержащем не более 100 символов.

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

Пример:

program vowel;

const с:зtring[18]='аеиоуыэюяАЕИОУЫЭЮЯ' ;

var a :string[100]; k,n:integer;

begin

writeln('введите текст'); readln(a);n:=0;

for k:=l to length(a) do

if pos(a[k],c)>0 then n:=n+l;

writeln('кол. гласных=',n);

end.

2. Заменить в арифметическом выражении функцию sqr на ехр. Замена выражения sqr на ехр достигается последовательным применением процедур delete и insert:

Пример:

program stroka;

var a,b:string[40]; k:integer;

begin

writeln('введите строку <= 40 символов');

readin(a);b:=a;

repeat k:=pos('sqr',b);

if k>0 then

begin

delete(b,k,3);insert('ехр',b,k) ;

end;

until k=0;

writein('старая строка=',a); writein('новая строка"',b);

end.



Тема: Скалярный тип переменных.



Множество в Паскале имеет такой же смысл, как и в алгебре - это неупорядоченная совокупность отличных друг от друга однотипных элементов. Число элементов множества не должно превышать 255. В качестве типа элементов может быть любой скалярный тип, кроме типа integer и его интервалов, содержащих числа > 255. Тип элементов множества называется базовым. При описании множественного типа используются служебные слова set и of. Задание конкретного множества определяется правилом (конструктором) - списком элементов или интервалов, заключенным в квадратные скобки. Пустое множество обозначается двумя символами .

Множественный тип можно определить в разделе описания типов по схеме:

type <имя> = set of <тип элементов>

Например:

type t=set of byte;

var a:t;

Можно совместить описание множественного типа и соответствующих переменных:

var code: set of 0..7;

digits: set of '0'..'9';

Можно описать переменную множественного типа и задать ее первоначальное значение в разделе описания констант, как константмножество. Тип множества можно описать ранее, например:

type up=setof'A'..'Z';

low=set of'a'.. "z";

const upcase : up=['A'. . 'Z'];

vocals :low=['a', 'e', 'i', 'o', "u", 'y'];

delimiterset of char=[ '..' /',':'..' ? '];

Для данных множественного типа определены операции объединения, пересечения и дополнения множеств, обозначаемые в Паскале соответственно знаками +, * и -, а также отношения равенства множеств (А=В), неравенства (А<>В), включения (А<=В,А>=В).



Тема: Логические операции со множеством.



Логическая операция принадлежности х in А принимает значение true, если элемент х принадлежит множеству А и false в противном случае. Так как к элементам множества прямого доступа нет, то операция in часто используется для этой цели.

Заметим, что операции отношения на множествах выполняются быстрее, чем соответствующие операции на числах, поэтому их выгодно применять в программах.

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

Пример:

Составить программу «спортлото 5 из 36», которая позволяет человеку ввести с клавиатуры пять натуральных чисел из интервала 1..36, затем генерирует случайным образом пять различных чисел из того же интервала и объявляет величину выигрыша по правилу: если угаданы человеком 0, 1 или 2 числа, объявляется проигрыш; если угаданы 3 числа, объявляется выигрыш 3 рубля; если угаданы 4 числа, объявляется выигрыш 100 рублей; если угаданы 5 чисел, объявляется выигрыш 1000 рублей.

В программе используются обозначения: mn - множество натуральных чисел из интервала 1 . . 36, а - множество чисел, задуманных человеком, х - множество чисел, . генерируемых компьютером, z=a*x - пересечение множеств а и х; i, k, s - переменные, значения которых принадлежат интервалу 1..36. Случайное число из этого интервала генерируется оператором: s:=random(35)+l. Программа сначала выводит на экран сообщение о выигрышных номерах, затем определяет величину выигрыша.

Пример:

program lottery;

type mn = set of 1 . . 36;

var x,a, z: nm; i, k, s: 0 . . 36;

begin

writeln; a:=[];

for i:=l to 5 do

begin write('введите ',i,' -тое число ');

readin(k);a:=a+[k];

end;

randomize;

k:=0; x:=[];

while k<5 do

begin

s:random (35) +1;

if not(s in x) then

begin k:=k+l;

x:=x+[s];

end;

end;

writeln;

writeln('выигрыш выпал на следующие номера : ');

for i:=l to 36 do if (i in x) then write(i,' ');

writeln; z:=a*x; k:=0;

for i:=l to 36 do if (i in z) then

begin

writeln('угадано: ',i);

k:=k+l;

end;

case k of

0, 1, 2 : writeln('вы проиграли ');

3 : writeln('получите 3 руб') ;

4 : writeln('получите 100 руб');

5 : writein('получите 1000 руб');

end;

end.



Тема: Комбинированный тип переменных.



Записи (комбинированный тип) - одна из наиболее гибких и удобных структур данных, применяющихся при описании сложных объектов, которые характеризуются различными свойствами, а также при создании различных информационных систем. Запись - это последовательность, состоящая из фиксированного числа величин разных типов, называемых полями или компонентами записи. Так же, как и массив, запись содержит ряд отдельных компонент, но компонентами записи могут быть данные различных типов. Например, адресные данные (индекс, город, улица, номер дома, квартиры) можно представить как запись (record):

type address = record

index : string[6];

city: string[20];

street : string[20];

haus.ilat: integer

end;

Из примера видно, что тип «запись» описывается по схеме

type имя типа записи = record

имя поля 1 : тип;

имя поля 2 : тип;

имя поля N: тип

end;

Как и при описании массивов, можно совместить описание типа записи и соответствующих переменных. Например, данные о двух студентах можно описать так:

fio :string[20];

fas :string[10]

grup :string[8]

end

Переменную типа «запись» и ее первоначальное значение можно определить как констант-запись в разделе констант по схеме

const <имя>: <имя типа> = <константное значение>

Константное значение - это список имен полей и соответствующих значений, заключенный в круглые скобки. Элементы списка разделяются знаком «точка с запятой». Например, запись о начале координат можно определить так:

type point = record

х, у, z: integer

end;

const o: point = (x:0; y:0; z:0);

С компонентами записи можно обращаться как с переменными соответствующего типа. Обращение к компонентам записи осуществляется с помощью указания имени поля через точку. Пусть, например, переменная х имеет тип address, т.е. в программе имеется описание var x: address. Тогда допустимы следующие присваивания:

x.haus := 52; х.street:='пр.Мира'; x.city:= 'Красноярск';

x.flat:= 135; x.index :='б60049'

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

zl=al+i*blиz2=a2+i*b2.

Пример:

program cornpl;

type compi = record

re : real;

im : real

end;

var zl,z2,s,p : compl;

begin

writeln('компл.число a+i*b вводите двумя числами а и b:');

write('введи 1 число: '); readln(zl.re,zl.im);

write('введи 2 число: '); readin(z2.re,z2.im);

s.re := zl.re + z2.re;

s.im := zl.re + z2.im;

p.re := zl.re * z2.re - zl.im * z2.im;

p.im := zl.re * z2.im + z2.re * z1.im;

writeln('s=',s.re:4:2,' + i *',s.im:4:2);

write('p=',p.re:4:2,' + i *',p.im:4:2)

end.



Тема: Проект «Программа на языке Pascal».



Учащемуся необходимо создать проект презентацию.

  1. Слайд1 - Титульный лист.

  2. Слайд2 - Постановка проблемы, цели и задачи созданной программы.

  3. Слайд3 - Историческая справка о поставленной проблеме.

  4. Слайд4 - Математическое решение, формулы.

  5. Слайд5 - Программа на языке Pascal

  6. Слайд6 - Заключение, плюсы и минусы программы.









 
 
X

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

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить материал