Данная презентация используется на протяжении 7 уроков, посвященных изучению основ программирования на языке Паскаль.
Язык Паскаль был создан как учебный язык программирования в 1968 –1971г. Никлаусом Виртом. В настоящее время этот язык имеет более широкую сферу применения, чем предусматривалось при его создании. Целью работы Вирта было создание языка, который допускал бы перевод программ в машинный код простым компилятором;
Все эти качества сделали язык очень популярным и удобным для применения в школе.
Первый урок посвящен знакомству с алфавитом языка Паскаль, со структурой программы на Паскале.
На втором уроке рассматриваются правила записи на Паскале математических функций, а также операторы языка Паскаль.
На последующих пяти уроках учащиеся изучают правила записи на языке Паскаль основных алгоритмических конструкций.
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Просмотр содержимого документа
«Основы программирования на Паскале »
Программированиена языке Паскаль
УРОК 1
В 1970 году в мире программирования произошли по крайней мере два великих события- появились операционная система UNIX и новый язык программирования, созданный профессором Никлаусом Виртом из швейцарского Федерального Технологического Института в Цюрихе . Вирт назвал его в честь великого французского математика и философа XVII века Блеза Паскаля .
Никлаус Вирт (Niklaus Wirth)
Блез Паскаль
Язык Паскаль удобен для начального обучения программированию, не только
потому, что учит как правильно написать программу, но и тому, как правильно
разрабатывать методы решения задач программирования
Алфавит языка
прописные и строчные буквы латинского алфавита от A до z , а также символ подчеркивания ( _ ), который тоже считается буквой.
Прописные и строчные буквы взаимозаменяемы (рАвНоЗнАчНы);
Function … ;Procedure … ; { раздел описания функций и процедур }
BEGIN
... { раздел операторов }
END.
Из чего состоит программа?
Константа – постоянная величина, имеющая имя.
Переменная – изменяющаяся величина, имеющая имя (ячейка памяти).
Процедура – вспомогательный алгоритм, описывающий некоторые действия (рисование окружности).
Функция – вспомогательный алгоритм для выполнения вычислений (вычисление квадратного корня, sin ) .
Константы
const
i2 = 45;{целое число}
pi = 3.14;{вещественное число}
q = 'Вася';{строка символов}
L = True;{логическая величина}
целая и дробная часть отделяются точкой
можно использовать русские буквы!
может принимать два значения:
True ( истина, «да» ) False ( ложь, «нет»)
True ( истина, «да» )
False ( ложь, «нет»)
Переменные
Типы переменных:
integer { целая } real { вещественная } char { один символ } string { символьная строка } boolean { логическая }
integer { целая }
real { вещественная }
char { один символ }
string { символьная строка }
boolean { логическая }
Объявление переменных(выделение памяти):
variable – переменная
тип – целые
vara, b, c:integer;
список имен переменных
Пример программы
Begin
write(‘Это моя первая программа!’);
End.
Запустите программу на исполнение просмотрите результат.
Оператор вывода
Write(‘текст’); - оператор вывода текста и переменных на экран (оставляет курсор на текущей строке);
Writeln(‘текст’); - оператор вывода текста и переменных на экран (переносит курсор на новую строку);
Задание
Выведите следующий текст на экран:
Привет всем!
Я лучший программист ОСШ №3!
Обратите внимание на то, что текст выводится в две разные строчки
УРОК 2
Вычисление математических выражений вABC Pascal
Приоритет выполнения операций вABC Pascalтакой же, как и в математике.
Достаточно только научиться правильно записывать математические выражения на языкеPascal
Арифметические действия
Операция
Наименование
А+В
Сложение
А-В
Вычитание
А*В
Умножение
A/B
Деление (только для вещественного типа)
Аdiv B
Вычисление целой части (неполного частного)
A mod B
Вычисление остатка
Вычисли:
10div 318 mod4
Примеры
Математическая запись
Запись на языке Pascal
37(25+87,5)-17(4,6+1,9)
37*(25+87.5)-17*(4.6+1.9)
a*b/c+d*d*d*d
( a +2* b-3*c)/(5*a+4)
( a+b)/(a-b)+a*b/3.14
Десятичная запятая вPascalобозначается точкой
Стандартные функции
Функция Паскаля
Математическая запись
Abs(x)
Название
| Х |
Sqr(x)
Абсолютная величина числа Х (модуль)
Х 2
Exp(x)
Возведение числа в квадрат
e x
Sqrt (x)
Frac (x)
Экспонента
Вычисление квадратного корня
Round (x)
Вычисляет дробную часть числа
Trunc (x)
Округляет до ближайшего целого числа
Отсекает дробную часть
Определитерезультат:
Frac(16.68); Round(16.68); Trunc(16.68);
Стандартные функции
Функция Паскаля
Математическая запись
Sin(x)
Название
sinx
Cos(x)
Int(x)
Вычисление синуса
с osx
Ln(x)
Вычисление косинуса
[x]
Exp(y*ln(x))
Целая часть числа
Ln x
Вычисление натурального логарифма
х y
Random(x)
Возведение числа в степень
Pi
Возвращает случайное число в диапазоне от 0 до Х
Числоπ
Градусы вPascalнужно перевести в радианы
Запись на языкеPascal
Математическая запись
Операторы ЯПPascal ABC
:= выражение ; Арифметическое выражение может включать константы имена переменных знаки арифметических операций: константы имена переменных знаки арифметических операций: + - * / div mod + - * / div mod вызовы функций круглые скобки ( ) вызовы функций круглые скобки ( ) деление нацело умножение остаток от деления деление" width="640"
Оператор присваивания
имя переменной:=выражение;
Арифметическое выражение может включать
константы имена переменных знаки арифметических операций:
константы
имена переменных
знаки арифметических операций:
+ - * / div mod
+ - * / div mod
вызовы функций круглые скобки ( )
вызовы функций
круглые скобки ( )
деление нацело
умножение
остаток от деления
деление
Какие операторы неправильные?
program qq;
var a, b: integer;
x, y: real;
begin
a := 5;
10:= x;
y := 7,8;
b := 2.5;
x := 2*(a + y);
a := b + x;
end.
имя переменной должно быть слева от знака :=
целая и дробная часть отделяются точкой
нельзя записывать вещественное значение в целую переменную
Оператор ввода
read ( a );{ввод значения переменнойa}
read ( a, b );{ввод значений переменныхaиb}
Как вводить два числа?
через пробел:
25 30
через Enter :
25
30
a
25
b
30
a
25
b
30
27
27
27
Оператор вывода
write ( a );{вывод значения переменнойa}
writeln( a );{вывод значения переменнойaипереход на новую строчку}
writeln ( 'Привет!' );{вывод текста}
writeln ( 'Ответ:', c );{вывод текста и значения переменнойc}
writeln ( a, '+', b, '=', c );
27
27
27
Сложение двух чисел
Задача. Ввести два целых числа и вывести на экран их сумму.
Простейшее решение:
program qq;
var a, b, c: integer;
begin
read ( a, b );
c := a + b;
writeln ( c );
end.
27
27
27
Полное решение
program qq;
var a, b, c: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
c := a + b;
writeln ( a, '+', b, '=', c );
end.
компьютер
Протокол :
Введите два целых числа
25 30
25+30=55
пользователь
27
27
УРОК 3
ВЫЧИСЛИТЬ:
12div 4 =
19div 5 =
12mod 3 =
136mod 10 =
На Паскале
На языке математики
Sqrt(x)
Модуль числа х
Abs(x)
Возведение в квадрат числа х
Trunc(x)
Sqr(x)
ех
Round(x)
Вычисление дробной части
Корень квадратный из х
Frac(x)
Округляет до ближайшего целого числ
Exp(x)
Random(x)
Отсекает дробную часть
Sin(x)
Синус х
Exp/y*ln(x))
Возвращает случайное число от 0 до х
Cos(x)
Косинус х
Ln(x)
[х]
Int(x)
Pi
ху
Ln x
Домашнее задание
1. Вычислить длину окружности и площадь круга по заданному радиусу
2. Вычислить периметр прямоугольного треугольника по его катетам
УРОК 4
Реализация разветвляющихся алгоритмов на Паскале
Условный оператор (полная форма)
полная форма ветвления
да
нет
условие
Действие1
Действие2
вывод
then begin { что делать, если условие верно } end else begin { что делать, если условие неверно } end ; Особенности: перед else НЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end перед else НЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end" width="640"
Условный оператор(полная форма)
ifусловиеthenbegin
{что делать, если условие верно}
end
else begin
{что делать, если условие неверно}
end ;
Особенности:
перед elseНЕ ставится точка с запятой если в блоке один оператор, можно убрать слова begin и end
перед elseНЕ ставится точка с запятой
если в блоке один оператор, можно убрать слова begin и end
Условный оператор (неполная форма)
неполная форма ветвления
да
нет
условие
Действие
вывод
then begin { что делать, если условие верно } end ; Особенности: если в блоке один оператор, можно убрать слова begin и end если в блоке один оператор, можно убрать слова begin и end" width="640"
Условный оператор(неполная форма)
ifусловиеthenbegin
{что делать, если условие верно}
end ;
Особенности:
если в блоке один оператор, можно убрать слова begin и end
если в блоке один оператор, можно убрать слова begin и end
Вычислить значение функции:
Домашнее задание
Составьте программу, которая уменьшает первое число в пять раз, если оно больше второго.
2. Запишите программу, в которой значение переменнойсвычисляется по формуле:a+b, еслианечетноеиa*b, еслиачетное.
УРОК 5
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;
УРОК 6
Реализация циклических алгоритмов на Паскале
Цикл– это многократное выполнение одинаковой последовательности действий.
цикл с известным числом шагов ( цикл с параметром ) цикл с неизвестным числом шагов ( цикл с условием )
цикл с известным числом шагов ( цикл с параметром )
цикл с неизвестным числом шагов ( цикл с условием )
Циклы с параметром
:= начальное значение to конечное значение do begin { тело цикла } end; Уменьшение переменной на 1 (шаг -1) : for переменная := начальное значение downto конечное значение do begin { тело цикла } end;" width="640"
Увеличение переменной на 1(шаг 1):
forпеременная:=начальное значениеto
конечное значениеdobegin
{тело цикла}
end;
Уменьшение переменной на 1(шаг -1):
forпеременная:=начальное значениеdownto
конечное значениеdobegin
{тело цикла}
end;
Особенности:
переменная цикла может быть только целой (integer)шаг изменения переменной цикла всегда равен 1 (to)или -1 (downto)если в теле цикла только один оператор, словаbeginиendможно не писать:если конечное значение меньше начального, цикл (to) не выполняется ни разу(проверка условия в начале цикла, цикл с предусловием)
переменная цикла может быть только целой (integer)
шаг изменения переменной цикла всегда равен 1 (to)или -1 (downto)
если в теле цикла только один оператор, словаbeginиendможно не писать:
если конечное значение меньше начального, цикл (to) не выполняется ни разу(проверка условия в начале цикла, цикл с предусловием)
for i:=1to 8do
writeln('Привет');
в теле цикла не разрешается изменять переменную циклапри изменении начального и конечного значения внутри цикла количество шагов не изменится:
в теле цикла не разрешается изменять переменную цикла
при изменении начального и конечного значения внутри цикла количество шагов не изменится:
n := 8;
for i:=1to ndo begin
writeln('Привет');
n := n + 1;
end;
нет зацикливания
Циклы с предусловием
do begin { тело цикла } end; Особенности: можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать: можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать: while (a d o begin { тело цикла } end; while a d o a := a + 1;" width="640"
whileусловиеdobegin
{тело цикла}
end;
Особенности:
можно использовать сложные условия: если в теле цикла только один оператор, слова begin и end можно не писать:
можно использовать сложные условия:
если в теле цикла только один оператор, слова begin и end можно не писать:
while(ado begin
{тело цикла}
end;
whilea do
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;
whilea bdo
a := a – b;
a := 4; b := 6;
whilea do
d := a + b;
Циклы с постусловием
until условие " width="640"
Цикл с постусловием– это цикл, в котором проверка условия выполняется в конце цикла.
repeat
тело цикла
untilусловие
ЗАДАЧА
Найти сумму квадратов всех натуральных чисел от 1 до 100.Решим эту задачу с использованием всех трех видов циклов.
С использованием цикла"Пока".
Program qq;
var a, s : integer;
begin
a:=1;
s:=0;
while a
s:=s+a*a;
a:=a+1;
end;
writeln(s);
end.
100 ; writeln(s); end." width="640"
С использованием цикла"До"
Program qq;
var a, s : integer;
begin
a:=1;
s:=0;
Repeat
s:=s+a*a;
a:=a+1;
until a 100;
writeln(s);
end.
С использованием цикла"С параметром"
Program qq;
var a, s : integer;
begin
s:=0;
for a:=1 to 100 do
s:=s+a*a;
writeln (s);
end.
Задача.
Вывести на экран квадраты и кубы целых чисел от 1 до 8.
Особенность:
одинаковые действия выполняются 8 раз.
блок «цикл»
начало
i := 1,8
конец
i1:=i*i;
i2:=i1*i;
тело цикла
i,i1,i2
Программа
program qq;
var i, i1, i2: integer;
begin
for i:=1 to 8 do begin
i1 := i*i;
i2 := i1*i;
writeln(i, i1, i2);
end;
end.
начальное значение
переменная
цикла
конечное значение
Цикл с уменьшением переменной
Задача.Вывести на экран квадраты и кубы целых чисел от 8 до 1 (в обратном порядке).
Особенность:переменная цикла должна уменьшаться.
Решение:
for i:=8 1 do begin
i1 := i*i;
i2 := i1*i;
writeln(i, i1, i2);
end;
downto
УРОК 7
Массивы на Паскале
Массив– это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом.
Особенности:
все элементы имеют один типвесь массив имеет одно имявсе элементы расположены в памяти рядом
все элементы имеют один тип
весь массив имеет одно имя
все элементы расположены в памяти рядом
Примеры:
список учеников в классеквартиры в домешколы в городеданные о температуре воздуха за год
список учеников в классе
квартиры в доме
школы в городе
данные о температуре воздуха за год
НОМЕР элемента массива
( ИНДЕКС )
A
массив
3
1
2
3
4
5
15
5
10
15
20
25
A[4]
A[5]
A[3]
A[2]
A[1]
ЗНАЧЕНИЕ элемента массива
НОМЕР (ИНДЕКС) элемента массива : 2
A[2]
ЗНАЧЕНИЕ элемента массива : 10
Объявление массивов
Зачем объявлять?
определить имя массива определить тип массива определить число элементов выделить место в памяти
определить имя массива
определить тип массива
определить число элементов
выделить место в памяти
Массив целых чисел:
Размер через константу:
тип
элементов
конечный индекс
начальный индекс
имя
var A: array[ 1 .. 5 ] of integer ;
var A: array[1.. ] of integer ;
const N=5;
N
Что неправильно?
var a: array[10..1] of integer;
...
A[5] := 4.5;
[1..10]
var a: array ['z'..'a'] of integer;
...
A['B'] := 15;
['a'..'z']
A['b']
var a: array [0..9] of integer;
...
A[10] := 'X';
73
73
Объявление:
Ввод с клавиатуры:
Поэлементные операции:
Вывод на экран:
const N = 5;
var a: array[1..N] of integer;
i:integer;
a[1]=
a[2]=
a[3]=
a[4]=
a[5]=
5
12
34
56
13
?
for i:=1 to N do begin
write('a[', i, ']=');
read ( a[i] );
end;
Почемуwrite?
for i:=1 to N do a[i]:=a[i]*2;
writeln('МассивA:');
for i:=1 to N dowrite(a[i]:4);
МассивA:
10 24 68 112 26
74
74
Задача:
74
1.Ввестиcклавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива.