Никлаус Вирт В начале 70-х годов XX века швейцарский учёный Никлаус Вирт разработал язык программирования, и дал ему название Паскаль, в честь знаменитого французского математика XVII века, изобретателя первой счётной машины Блеза Паскаля. С помощью ЯП Паскаль можно разрабатывать программы самого разного назначения. Синтаксис этого языка интуитивно понятен даже тем, кто только начинает осваивать азы программирования.
Алфавит языка прописные и строчные буквы латинского алфавита от A до z, а также символ подчеркивания (_), который тоже считается буквой. Прописные и строчные буквы взаимозаменяемы (рАвНоЗнАчНы); арабские цифры; специальные одиночные знаки: + – * / =., : ; ^ $ специальные парные знаки: () { } ; составные знаки: =.. (* *) (..).
Структура программы Program NameProgram; {заголовок программы} Uses …;{раздел подключения модулей} Label …; {раздел описания меток} Const …; {раздел описания констант} Туре …; {раздел определения типов} Var …; {раздел описания переменных} Function …; Procedure …; {раздел описания функций и процедур} BEGIN... {раздел операторов} END.
Арифметические действия Если в программе записать: Writeln(3+8); То после исполнения программы в экране выполнения появится надпись 3+8 Если же записать: Writeln(3+8); //без апострофов То после исполнения программы в экране выполнения появится надпись 11, т.е. Pascal произведет сам расчёт Попробуйте вычислить выражение: 185(14+16)
Программирование на языке Паскаль
В 1970 году в мире программирования произошли по крайней мере два великих события- появились операционная система UNIX и новый язык программирования, созданный профессором Никлаусом Виртом из швейцарского Федерального Технологического Института в Цюрихе. Вирт назвал его в честь великого французского математика и философа XVII века Блеза Паскаля.
Никлаус Вирт (Niklaus Wirth)
Блез Паскаль
Язык Паскаль удобен для начального обучения программированию, не только
потому, что учит как правильно написать программу, но и тому, как правильно
разрабатывать методы решения задач программирования
- прописные и строчные буквы латинского алфавита от A до z , а также символ подчеркивания (_), который тоже считается буквой.
- Прописные и строчные буквы взаимозаменяемы (рАвНоЗнАчНы);
- арабские цифры 0 1 2 3 4 5 6 7 8 9 ;
- специальные одиночные знаки: + – * / = . , : ; ^ $ # @ ;
- специальные парные знаки: () { } ;
- составные знаки: = .. (* *) (..) .
Структура программы
Программа на языке Паскаль состоит из:
// Заголовок (необязательная часть)
- Описание меток;
- Определение констант;
- Определение типов;
- Описание переменных;
- Описание процедур и функций.
- begin { начало программы }
- { тело программы }
- end. { конец программы }
Структура программы
Program имя программы; { заголовок программы }
Uses …; {раздел подключения модулей}
Label … ; { раздел описания меток }
Const … ; { раздел описания констант }
Туре … ; { раздел определения типов }
Var … ; { раздел описания переменных }
Function … ; Procedure … ; { раздел описания функций и процедур }
... { раздел операторов }
Из чего состоит программа?
Константа – постоянная величина, имеющая имя.
Переменная – изменяющаяся величина, имеющая имя (ячейка памяти).
Процедура – вспомогательный алгоритм, описывающий некоторые действия (рисование окружности).
Функция – вспомогательный алгоритм для выполнения вычислений (вычисление квадратного корня, sin ) .
Константы
i2 = 45; { целое число }
pi = 3.14; { вещественное число }
q = " Вася "; { строка символов }
L = True; { логическая величина }
целая и дробная часть отделяются точкой
можно использовать русские буквы!
может принимать два значения:
- True (истина, «да») False (ложь, «нет»)
- True (истина, «да»)
- False (ложь, «нет»)
Переменные
Типы переменных:
- integer { целая } real { вещественная } char { один символ } string { символьная строка } boolean { логическая }
- integer { целая }
- real { вещественная }
- char { один символ }
- string { символьная строка }
- boolean { логическая }
Объявление переменных ( выделение памяти ) :
variable – переменная
тип – целые
var a, b, c: integer ;
список имен переменных
Пример программы
write(‘ Это моя первая программа ! ’);
Запустите программу на исполнение просмотрите результат.
Оператор вывода
Write(‘ текст ’); - оператор вывода текста и переменных на экран (оставляет курсор на текущей строке);
Writeln(‘ текст ’); - оператор вывода текста и переменных на экран (переносит курсор на новую строку);
Задание
- Выведите следующий текст на экран:
Привет всем!
Я лучший программист ОСШ №3!
Обратите внимание на то, что текст выводится в две разные строчки
Вычисление математических выражений в ABC Pascal
- Приоритет выполнения операций в ABC Pascal такой же, как и в математике.
- Достаточно только научиться правильно записывать математические выражения на языке Pascal
Арифметические действия
Операция
Наименование
Сложение
Вычитание
Умножение
Деление (только для вещественного типа)
А div B
Вычисление целой части (неполного частного)
Вычисление остатка
Вычисли:
10 div 3 18 mod 4
Примеры
Математическая запись
Запись на языке Pascal
37(25+87,5)-17(4,6+1,9)
37*(25+87.5)-17*(4.6+1.9)
(a +2* b-3*c)/(5*a+4)
(a+b)/(a-b)+a*b/3.14
Десятичная запятая в Pascal обозначается точкой
Стандартные функции
Функция Паскаля
Математическая запись
Название
Абсолютная величина числа Х (модуль)
Возведение числа в квадрат
Экспонента
Вычисление квадратного корня
Вычисляет дробную часть числа
Округляет до ближайшего целого числа
Отсекает дробную часть
Определите результат:
Frac(16.68); Round(16.68); Trunc(16.68);
Стандартные функции
Функция Паскаля
Математическая запись
Название
Вычисление синуса
Вычисление косинуса
Целая часть числа
Вычисление натурального логарифма
Возведение числа в степень
Возвращает случайное число в диапазоне от 0 до Х
Число π
Градусы в Pascal нужно перевести в радианы
Запись на языке Pascal
Математическая запись
Операторы ЯП Pascal ABC
:= выражение; Арифметическое выражение может включать константы имена переменных знаки арифметических операций: константы имена переменных знаки арифметических операций: + - * / div mod + - * / div mod вызовы функций круглые скобки () вызовы функций круглые скобки () деление нацело умножение остаток от деления деление" width="640"
Оператор присваивания
имя переменной := выражение ;
Арифметическое выражение может включать
- константы имена переменных знаки арифметических операций:
- константы
- имена переменных
- знаки арифметических операций:
+ - * / div mod
- + - * / div mod
- вызовы функций круглые скобки ()
- вызовы функций
- круглые скобки ()
деление нацело
умножение
остаток от деления
Какие операторы неправильные?
program qq;
var a, b: integer;
x, y: real;
10 := x;
y:= 7 , 8;
b:= 2.5;
x:= 2*(a + y);
a:= b + x;
имя переменной должно быть слева от знака :=
целая и дробная часть отделяются точкой
нельзя записывать вещественное значение в целую переменную
Оператор ввода
read (a); { ввод значения переменной a}
read (a, b); { ввод значений переменных a и b}
Как вводить два числа?
через пробел:
через Enter :
Оператор вывода
write (a); { вывод значения переменной a}
write ln (a); { вывод значения переменной a и переход на новую строчку }
writeln (" Привет! "); { вывод текста }
writeln (" Ответ: ", c); { вывод текста и значения переменной c}
writeln (a, "+", b, "=", c);
Сложение двух чисел
Задача. Ввести два целых числа и вывести на экран их сумму.
Простейшее решение:
program qq;
var a, b, c: integer;
read (a, b);
c:= a + b;
writeln (c);
Полное решение
program qq;
var a, b, c: integer;
writeln(" Введите два целых числа ");
read (a, b);
c:= a + b;
writeln (a, "+", b, "=", c);
компьютер
Протокол :
Введите два целых числа
25+30=55
пользователь
ВЫЧИСЛИТЬ:
12 div 4 =
1 9 div 5 =
12 mod 3 =
1 36 mod 10 =
На Паскале
На языке математики
Модуль числа х
Возведение в квадрат числа х
Trunc(x)
е х
Round(x)
Вычисление дробной части
Корень квадратный из х
Округляет до ближайшего целого числ
Random(x)
Отсекает дробную часть
Синус х
Exp/y*ln(x))
Возвращает случайное число от 0 до х
Косинус х
[ х ]
х у
Ln x
Домашнее задание
1. Вычислить длину окружности и площадь круга по заданному радиусу
2. Вычислить периметр прямоугольного треугольника по его катетам
Условный оператор ( полная форма )
полная форма ветвления
условие
Действие1
Действие2
вывод
then begin { что делать, если условие верно } end else begin { что делать, если условие неверно } end ; Особенности: перед else НЕ ставится точка с запятой begin и end перед else НЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end" width="640"
Условный оператор (полная форма)
if условие then begin
{ }
else begin
{ что делать, если условие неверно }
Особенности:
- перед else НЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end
- перед else НЕ ставится точка с запятой
- если в блоке один оператор, можно убрать слова begin и end
Условный оператор (не полная форма )
неполная форма ветвления
условие
Действие
вывод
then begin { что делать, если условие верно } end ; Особенности: если в блоке один оператор, можно убрать слова begin и end если в блоке один оператор, можно убрать слова begin и end" width="640"
Условный оператор (неполная форма)
if условие then begin
{ что делать, если условие верно }
Особенности:
- если в блоке один оператор, можно убрать слова begin и end
- если в блоке один оператор, можно убрать слова begin и end
Домашнее задание
- Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго.
2. Запишите программу, в которой значение переменной с вычисляется по формуле: a+b , если а нечетное и a*b , если а четное .
b then c:= a + b else c:= b – a;" width="640"
Домашнее задание
1. Написать программу решения задачи:
а). Известно значение х. Вычислить у, если
б). Даны координаты точки. Выяснить лежит ли эта точка в 3 координатной четверти?
2. Определите значение переменной c после выполнения следующего фрагмента программы:
a:= 6 ;
b:= 15 ;
a:= b – a*2;
if a b then
c:= a + b
else c:= b – a;
Цикл – это многократное выполнение одинаковой последовательности действий.
- цикл с известным числом шагов (цикл с параметром ) цикл с неизвестным числом шагов (цикл с условием )
- цикл с известным числом шагов (цикл с параметром )
- цикл с неизвестным числом шагов (цикл с условием )
:= начальное значение to конечное значение do begin { тело цикла } end; Уменьшение переменной на 1 (шаг -1) : for переменная:= начальное значение downto конечное значение do begin { тело цикла } end;" width="640"
Увеличение переменной на 1 (шаг 1):
for переменная := начальное значение to
конечное значение do begin
{ тело цикла }
Уменьшение переменной на 1 (шаг -1) :
for переменная := начальное значение downto
конечное значение do begin
{ тело цикла }
Особенности:
- integer ) to ) или -1 ( downto ) begin и end можно не писать: to ) не выполняется ни разу (
- переменная цикла может быть только целой ( integer )
- шаг изменения переменной цикла всегда равен 1 ( to ) или -1 ( downto )
- если в теле цикла только один оператор, слова begin и end можно не писать:
- если конечное значение меньше начального, цикл ( to ) не выполняется ни разу ( проверка условия в начале цикла, цикл с предусловием)
for i:= 1 to 8 do
writeln( " Привет " );
- в теле цикла не разрешается изменять переменную цикла
- при изменении начального и конечного значения внутри цикла количество шагов не изменится:
for i:= 1 to n do begin
writeln( " Привет " );
n:= n + 1;
нет зацикливания
do begin { тело цикла } end; Особенности: можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать: можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать: while (a d o begin { тело цикла } end; while a d o a:= a + 1;" width="640"
while условие do begin
{ тело цикла }
Особенности:
- можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать:
- можно использовать сложные условия:
- если в теле цикла только один оператор, слова begin и end можно не писать:
while (a d o begin
{ тело цикла }
while a d o
a:= a + 1;
b d o a:= a – b; a:= 4; b:= 6; while a d o d:= a + b;" width="640"
- условие пересчитывается каждый раз при входе в цикл
- если условие на входе в цикл ложно, цикл не выполняется ни разу
- если условие никогда не станет ложным, программа зацикливается
a:= 4; b:= 6;
while a b d o
a:= a – b;
a:= 4; b:= 6;
while a d o
d:= a + b;
until условие " width="640"
Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.
тело цикла
until условие
ЗАДАЧА
Найти сумму квадратов всех натуральных чисел от 1 до 100. Решим эту задачу с использованием всех трех видов циклов.
"Пока" .
Program qq;
var a, s: integer;
s:=s+a*a;
writeln(s);
100 ; writeln(s); end." width="640"
"До"
Program qq;
var a, s: integer;
s:=s+a*a;
until a 100 ;
writeln(s);
"С параметром"
Program qq;
var a, s: integer;
for a:=1 to 100 do
s:=s+a*a;
writeln (s);
Задача.
Вывести на экран квадраты и кубы целых чисел от 1 до 8.
Особенность:
одинаковые действия выполняются 8 раз.
блок «цикл»
i 1 := i * i;
i 2 := i 1 * i;
тело цикла
i, i 1 , i 2
Программа
program qq;
var i, i1, i2: integer;
for i:=1 to 8 do begin
i1:= i*i;
i2:= i1*i;
writeln(i, i1, i2);
начальное значение
переменная
конечное значение
Цикл с уменьшением переменной
Задача. Вывести на экран квадраты и кубы целых чисел от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:
for i:=8 1 do begin
i1:= i*i;
i2:= i1*i;
writeln(i, i1, i2);
down to
Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом.
Особенности:
- все элементы имеют один тип весь массив имеет одно имя
- все элементы имеют один тип
- весь массив имеет одно имя
- все элементы расположены в памяти рядом
Примеры:
- список учеников в классе квартиры в доме школы в городе
- список учеников в классе
- квартиры в доме
- школы в городе
- данные о температуре воздуха за год
НОМЕР элемента массива
(ИНДЕКС )
массив
ЗНАЧЕНИЕ элемента массива
НОМЕР (ИНДЕКС) элемента массива: 2
ЗНАЧЕНИЕ элемента массива: 10
Объявление массивов
Зачем объявлять?
- определить имя массива определить тип массива определить число элементов выделить место в памяти
- определить имя массива
- определить тип массива
- определить число элементов
- выделить место в памяти
Массив целых чисел:
Размер через константу:
элементов
конечный индекс
начальный индекс
var A : array[ 1 .. 5 ] of integer ;
var A: array of integer ;
const N=5;
Что неправильно?
var a: array of integer;
A := 4.5;
var a: array ["z".."a"] of integer;
A["B"] := 15;
["a".."z"]
var a: array of integer;
A := "X";
Объявление:
Ввод с клавиатуры:
Поэлементные операции:
Вывод на экран:
const N = 5;
var a: array of integer;
i: integer;
a =
a =
a =
a =
a =
for i:=1 to N do begin
write("a[", i, "]=");
read (a[i]);
Почему write ?
for i:=1 to N do a[i]:=a[i]*2;
writeln(" Массив A:");
for i:=1 to N do write(a[i]:4);
Массив A:
1 0 24 68 112 26
Задача:
1. Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива.
Пример:
Введите пять чисел:
4 15 3 10 14
среднее арифметическое 9.200
РЕШЕНИЕ:
Program qq;
var N: array of integer;
for i:=1 to 5 do begin
write ("N[",i,"]");
for i:=1 to 5 do begin
write(" среднее", k:6:2);
Описание слайда:
Система Pascal ABC Система Pascal ABC предназначена для обучения программированию на языке Паскаль и ориентирована на школьников и студентов младших курсов. По мнению авторов первоначальное обучение программированию должно проходить в достаточно простых и дружественных средах, в то же время эти среды должны быть близки к стандартным по возможностям языка программирования и иметь достаточно богатые и современные библиотеки стандартных подпрограмм. Язык Паскаль признан многими российскими преподавателями как один из лучших именно для начального обучения. Однако, среда Borland Pascal, ориентированная на MS DOS, устарела, а среда Borland Delphi с ее богатыми возможностями сложна для начинающего программиста. Так, попытка начинать обучение с написания событийной программы в Borland Delphi вызывает у обучаемого массу сложностей и приводит к ряду неправильно сформированных навыков.Система Pascal ABC основана на языке Delphi Pascal и призвана осуществить постепенный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Некоторые языковые конструкции в Pascal ABC допускают, наряду с основным, упрощенное использование, что позволяет использовать их на ранних этапах обучения. Например, в модулях может отсутствовать разделение на секцию интерфейса и секцию реализации. В этом случае модули устроены практически так же, как и основная программа, что позволяет приступить к их изучению параллельно с темой "Процедуры и функции". Тела методов можно определять непосредственно внутри классов (в стиле Java и C#), что позволяет создавать классы практически сразу после изучения записей, процедур и функций. Ряд модулей системы программирования Pascal ABC специально создавался для учебных целей:Модуль растровой графики GraphABC обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi. Он доступен в несобытийных программах и позволяет легко создавать анимацию без мерцания. Модуль Events позволяет создавать простейшие событийные программы без использования объектов (события представляют собой обычные процедурные переменные). Модули Timers и Sounds позволяют создавать таймеры и звуки, которые также реализованы в процедурном стиле. Эти модули можно использовать даже в консольных программах. Модуль контейнерных классов Containers позволяет работать с основными структурами данных (динамические массивы, стеки, очереди, множества), реализованными в виде классов. Модуль векторной графики ABCObjects предназначен для быстрого изучения основ объектно-ориентированного программирования, а также позволяет создавать достаточно сложные игровые и обучающие программы. Модуль визуальных компонентов VCL позволяет создавать событийные приложения с главной формой в стиле Delphi. Классы VCL немного упрощены по сравнению с аналогичными классами Delphi. Имеется редактор форм и инспектор объектов. Технология восстановления формы по коду программы позволяет обойтись для приложения с главной формой одним файлом (!). В языке Pascal ABC имеются арифметические операции с типизированными указателями (в стиле языка C), а также тип complex, предназначенный для работы с комплексными числами.Компилятор Pascal ABC является компилятором переднего плана (front-end). Это означает, что он не генерирует исполняемый код в виде.exe-файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора. В итоге скорость работы программы примерно в 20 раз медленнее скорости работы этой же программы, откомпилированной в среде Borland Pascal, и в 50 раз медленнее этой программы, откомпилированной в среде Borland Delphi.В системе Pascal ABC ученик может выполнять так называемые проверяемые задания, обеспечивающие постановку задачи со случайными исходными данными, контроль операций ввода-вывода, проверку правильности решения, а также ведение протокола решения задач.Проверяемые задания реализованы в виде электронного задачника по программированию Programming Taskbook, содержащего 1000 задач по программированию разного уровня сложности (от простейших задач до задач на файлы, указатели и рекурсию) а также в виде исполнителей Робот и Чертежник, предназначенных для быстрого обучения основам программирования школьников младших и средних классов.В свободно распространяемую версию Pascal ABC & Programming Taskbook Mini Edition входит мини-версия электронного задачника (200 задач) и урезанный комплект задач для исполнителей Робот и Чертежник. Версия Pascal ABC & Programming Taskbook Complete Edition содержит полный комплект задач.
Cлайд 1
Cлайд 2
Урок 1. Моя первая программа Нашей первой программой будет программа-приветствие. Она просто выведет текст на экран компьютера и завершит свою работу. Мы также рассмотрим основные правила оформления программы. program First; begin write("Привет,"); writeln("друзья!"); writeln("Это вторая строка") end. Первая строка-заголовок программы. Program-служебное слово; First – имя нашей программы, его придумываете сами. В конце строки стоит «;» При перечислении инструкций Паскаля между ними нужно ставить «;» . Дальше идет тело программы. Оно всегда начинается со слова begin. Здесь в конце строки нет «;» Следующая команда или оператор выводит слово ПРИВЕТ на экран; текст для вывода всегда заключается в апострофы. (" "). Этот оператор выводит на экран слово ДРУЗЬЯ! и переводит курсор на следующую строку. Т.к. символы «ln» в операторе writeln означают «line» - строка. Здесь в конце строки «;» не обязательна, т.к. это последний оператор (перед end «;» можно не ставить). End – заканчивает тело программы и в конце обязательно стоит точка. В результате выполнения программы получаемCлайд 3
Как заложить программу в компьютер? Для начала рассмотрим этапы, которые должен пройти пользователь(программист) для того, чтобы увидеть на экране правильные результаты работы программы.Cлайд 4
Схема прохождения этапов создания программы на компьютере. начало Edit (редактирование) Ошибка? Compile (компиляция) Ошибка? Build (построение) Ошибка? Run (выполнение) Ошибка? Конец Да Да Да Да Нет Нет Нет НетCлайд 5
Запустите программу Паскаль АВС со значка на рабочем столе Главное меню Переход - F10 Окно редактирование Переход из главного меню - Alt Окно вывода Запуск на выполнение программы – F9Cлайд 6
Наберите в окне редактирования свою первую программу, запустите на выполнение кнопкой F9 . program First; begin write("Привет, "); writeln("друзья!"); writeln("Это вторая строка") end. Процессы компиляции и запуска программы на выполнение можно объединить, вызвав команду Run (F9) сразу после набора текста программы. Выход из программы осуществляется с помощью команды Exit в меню File. Задание 1. Напишите программу, которая выводит на экран текст: Важно Не путать Write и Writeln ! Проверяем.Cлайд 7
Задание 2. Напишите программу, которая выводит на экран фразу «Всем привет!» 20 раз – в таблице из 5 строк по 4 столбца. Подсказка. Для задания расстояния между колонками используйте несколько пробелов. Напишите сначала только один оператор write? Который выведет одну фразу (не забудьте про пробелы). Затем скопируйте его еще 4 раза, чтобы получить целую строку. В конце не забудьте поставить переход на следующую строку (writeln). Копировать begin и end не нужно! Проверяем.