Похожие презентации:
Основы программирования на языке Pascal. Алфавит, типы данных, структура программ. Основные операторы
1. Основы программирования на языке Pascal
Алфавит, типы данных,структура программ. Основные
операторы.
2. Понятие языков программирования
Языки программирования – искусственные языки,инструментальные средства разработки прикладных
программ.
Синтаксис - правила записи конструкций языка.
Семантика - смысл конструкций языка.
Отладка - это поиск и исправление ошибок в программе.
Тестирование - это составление специальных наборов
входных и выходных данных (тестов), а затем исполнение
программы и проверка полученных результатов в поисках
возможных семантических или логических ошибок.
3. Уровни языков программирования
Язык программирования низкого уровня ориентирован наконкретный тип процессора и учитывает его особенности.
Операторы данного языка близки к машинному коду и
содержат команды процессору.
Ассемблер, Форт –
примеры языков
программирования
низкого уровня
Фрагмент
программы на
языке Ассемблер
mov ax, dat
mov ds, ax
mov ah, 09h
mov dx, offset var
int 21h
mov ah, 4Ch
int 21h
4. Уровни языков программирования
Языки программирования высокого уровня не учитываютособенности конкретных компьютерных архитектур.
Создаваемые на них программы легко переносимы с одного
типа компьютеров на другой, их разработка значительно
проще, а уровень ошибок гораздо ниже.
Паскаль, С++, PHP,
Java, SQL –
примеры языков
программирования
высокого уровня
Фрагмент
программы
на языке
SQL
SELECT Товар.Название,
Товар.Цена,
Товар.Цена*Сделка.Количество
AS Стоимость
FROM Товар
5. Поколения языков программирования
1 поколение (нач. 50-х гг. 20 в.) – первый язык ассемблера, «однаинструкция, одна строка».
2 поколение (конец 50-х – нач. 60-х годов 20 в.) - символический
ассемблер, в котором появилось понятие переменной. Именно он
считается первым полноценным языком программирования.
3 поколение (вторая половина 69-х гг. 20 в.) - универсальные языки
высокого уровня, с помощью которых удалось решить множество
прикладных задач из различных областей науки и техники (Бэйсик,
Паскаль, Фортран, Ада).
4 поколение (с начала 70-х годов и по настоящее время ) - проблемноориентированные языки, оперирующие конкретными понятиями
предметной области (ЛИСП, ПРОЛОГ).
5 поколение (с сер. 90-х гг. 20 в.) - системы автоматического создания
прикладных программ с помощью визуальных средств разработки.
6. Компиляция и интерпретация
Существует два метода получения машинного кода - компиляция иинтерпретация.
Программы-компиляторы просматривают программный код в поисках
синтаксических ошибок, выполняют смысловой анализ и
автоматически переводят (транслируют) на машинный язык —
генерируют машинный код.
Основной недостаток компиляторов — трудоемкость трансляции языков
программирования, ориентированных на обработку данных сложной
структуры.
Интерпретатор берет очередной оператор из текста программы,
анализирует его структуру и запускает на выполнение. Только после
его успешного выполнения, интерпретатор переходит к следующему
оператору.
Недостаток интерпретаторов: программы, содержащие большой объем
повторяющихся вычислений, будут работать достаточно медленно.
Для выполнения исходной программы на другом компьютере там
также должен быть установлен соответствующий интерпретатор.
7. Интегрированные системы программирования
текстовый редактор, ориентированный на конкретный языкпрограммирования;
компилятор, переводящий исходный текст в машинный код;
библиотека функций, содержит машинный код подпрограмм,
реализующих различные стандартные функции языка
(например, вычисляющих математические функции sin или In);
поставляется вместе с компилятором;
редактор связей (сборщик, компоновщик) выполняет
связывание объектных модулей программы и машинного кода
стандартных функций, находя их в библиотеках, и формирует
на выходе запускаемое приложение - исполнимый код;
отладчик анализирует работу программы во время ее
выполнения. С его помощью можно выполнять операторы
исходного текста по шагам, наблюдая за изменением значений
различных переменных.
8. Элементы языка Pascal:
буквы латинского алфавита А-Z (в любом регистре), а такжезнак подчеркивания _;
буквы русского алфавита А-Я;
цифры 0-9;
специальные символы > < = + - / * [ ] ( ) { } . , : ; ^ @
’$ #
пары символов (их нельзя разделять пробелами) < > <=
>= :=
(* *) (.
.)
пробелы (рассматриваются как ограничители
идентификаторов, констант, чисел, зарезервированных слов).
9. Элементы языка Pascal:
Идентификаторы - неделимые последовательности символовалфавита, используемые для обозначения констант,
переменных, процедур, функций и т.д.
Идентификаторы могут иметь произвольную длину, но
значащими являются только первые 63 символа.
Идентификатор должен начинаться с буквы или символа
подчеркивания, не должен содержать пробелов и специальных
символов.
and goto array begin case string const label
then div mod do to downto type else of end
or until uses procedure var for program while
record function repeat
10. Элементы языка Pascal:
Константа - это объект, значение которого известно еще до началаработы программы.
В качестве констант могут использоваться числа, логические константы,
символы и строки символов.
В языке Pascal существует три вида констант:
неименованные константы (не имеют имен, и потому их не нужно
описывать; и тип определяется автоматически)
int1 := -10;
ch3 := 'z';
str4 := 'abc' + str44;
st5 := [1,3,5] * st55;
bool6:= true;
11. Элементы языка Pascal:
именованныенетипизированные константы (имеют имя,
описываются в специальном разделе const, тип определяется
автоматически)
const n = -10;
x = 2.5;
c = 'z';
s = 'string';
именованные
типизированные константы - переменные(!) с
начальным значением, которое к моменту старта программы уже
известно. Следовательно, типизированные константы нельзя
использовать для определения других констант, типов данных и
переменных. Их значения можно изменять в процессе работы
программы.
const <имя_константы> : <тип_константы> = <нач_значение>;
const n: integer = -10;
c: char = 'z';
12. Элементы языка Pascal:
Выражение задает порядок выполнения действий надэлементами данных и состоит из операндов (констант,
переменных, функций, круглых скобок и знаков
операций).
В общем случае выражение состоит из нескольких
элементов (операндов) и знаков операций, а тип его
значения определяется типом операндов и видом
примененных к ним операций.
Примеры выражений:
(a+b)*c
x-y
a>2
sin(x)
sum1+sum2
13. Структура программы
Program <имя программы>;{Раздел описаний программы}
Var …
Const …
BEGIN
{Раздел исполняемых операторов}
END.
14. Раздел описаний программы
раздел меток (label);раздел констант (const);
раздел типов (type);
раздел переменных (var);
раздел процедур (procedure)
раздел функций (function).
Пример:
var k,i,j:integer; a,b:real;
сonst pi=3.14; c=2.7531;
15. Раздел исполняемых операторов
Пример программы, служащей для вычисления площади круга некоторогопостоянного радиуса R=6.015 .
{Заголовок программы}
program pr;
{Задание значения радиуса}
const r=6.015;
{Описание переменных программы}
var s: real;
{Начало раздела операторов}
begin
{Вычисление площади круга}
s:=pi*sqr( r );
{Вывод результатов на экран}
writeln(‘s=’, s);
{Конец программы}
end.
16. Типы данных
17. Стандартные функции
ABS(x) – модуль х ( | x | );SQR(x) – квадрат числа x (x 2);
SQRT(x) – квадратный корень из x ( x );
LN(x) – натуральный логарифм от х ( ln x );
EXP(x) – е в степени х (ех );
SIN(x) – синус х (sin x);
COS(x) – косинус х (cos x);
ARCTAN(x) – арктангенс х (arctg x).
18. Оператор присваивания
Общий вид оператора присваивания:имя_переменной:=<выражение>;
здесь имя_переменной – переменная, := - операция
присваивания. Выражение может содержать константы,
переменные, названия функций, знаки операций и
скобки. Переменная и выражение в операторе должны
иметь один и тот тип.
Примеры.
y:=2*sin(x);
a:=5;
b:=a+7;
х:=х+1;
19. Понятие составного оператора
Составной оператор начинается ключевым словом BEGINи заканчивается словом END. Между этими словами
помещаются составляющие операторы, которые
выполняются в порядке их следования. После END
ставится точка с запятой, например:
...
begin
i:=2;
k:=i/5;
end;
...
20. Операторы ввода
Для организации ввода данных с клавиатуры в языке Паскаль используетсяпроцедура READ.
В общем случае данная процедура имеет вид:
READ (a1, a2, a3, … );
Здесь a1, a2, a3, … - список переменных, разделенных запятой.
Например,
Var
A : Real; B : Integer; C : Char;
Begin
READ(A, B, C)
End.
Примеры ввода данных с помощью процедуры READLN:
READLN(A, B, C);
READLN(X);
21. Процедура вывода
Процедура, выводящая содержимое переменных на экран,называется процедурой вывода.
WRITE (p1, p2, …, pn);
где p1, p2, …, pn - список констант и/или переменных,
разделенных запятой.
Например, WRITE ('Сумма=', S).
Примеры вывода данных:
WRITE(A, B, C);
WRITELN('Корнем уравнения является ', X);
WRITELN(LOGP);
22. Основные алгоритмические структуры
СледованиеПешеход шел по пересеченной
местности. Его скорость движения по
равнине v1 км/ч, в гору — v2 км/ч и
под гору — v3 км/ч. Время движения
соответственно t1, t2 и t3 ч. Какой путь
прошел пешеход?
1. Ввести v1, v2, v3, t1, t2,t3.
2. S1 := v1 * t1.
3. S2 := v2 * t2.
4. S3 := v3 * t3.
5. S := S1 + S2 + S3.
6. Вывести значение S.
7. Конец.
23. Основные алгоритмические структуры
Ветвление1. Ввести x.
2. Если x<=-12, то y:=–x2;
переход к п.5
3. Если x<0, то y:=x4;
переход к п.5
4. y := x–2
5. Вывести y
6. Конец
Пример.
функции
Вычислить
значение
24. Основные алгоритмические структуры
Циклы1. С параметром
2. С постпроверкой
условия
3. С предпроверкой
условия
25. Программирование на языке Паскаль
25Программирование
на языке Паскаль
Тема 2. Ветвления
26.
Разветвляющиеся алгоритмыЗадача. Ввести два целых числа и вывести на экран
наибольшее из них.
Идея решения: надо вывести на экран первое число,
если оно больше второго, или второе, если оно больше
первого.
Особенность: действия исполнителя зависят от
некоторых условий (если … иначе …).
Алгоритмы, в которых последовательность шагов
зависит от выполнения некоторых условий, называются
разветвляющимися.
26
27.
Вариант 1. Блок-схеманачало
блок
«решение»
ввод a,b
да
a > b?
max:= a;
полная
форма
ветвления
нет
max:= b;
вывод max
конец
?
Если a = b?
27
28.
Вариант 1. Программаprogram qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
полная форма
if a > b then begin
условного
max := a;
оператора
end
else begin
max := b;
end;
writeln ('Наибольшее число ', max);
end.
28
29.
Условный операторif <условие> then begin
{что делать, если условие верно}
end
else begin
{что делать, если условие неверно}
end;
Особенности:
• перед else НЕ ставится точка с запятой
• вторая часть (else …) может отсутствовать
(неполная форма)
• если в блоке один оператор, можно убрать слова
begin и end
29
30.
Вариант 2. Блок-схеманачало
ввод a,b
max:= a;
да
b > a?
нет
неполная
форма
ветвления
max:= b;
вывод max
конец
30
31.
Вариант 2. Программаprogram qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
неполная
форма
max := a;
условного
if b > a then
оператора
max := b;
writeln ('Наибольшее число ', max);
end.
31
32.
Задания«4»: Ввести три числа и найти наибольшее из них.
Пример:
Введите три числа:
4
15
9
Наибольшее число 15
«5»: Ввести пять чисел и найти наибольшее из них.
Пример:
Введите пять чисел:
4
15
9
56
Наибольшее число 56
4
32
33. Программирование на языке Паскаль
33Программирование
на языке Паскаль
Тема 3. Сложные условия
34.
Сложные условияСложное условие – это условие, состоящее из
нескольких простых условий (отношений), связанных с
помощью логических операций:
• not – НЕ (отрицание, инверсия)
• and – И (логическое умножение, конъюнкция,
одновременное выполнение условий)
• or – ИЛИ (логическое сложение, дизъюнкция,
выполнение хотя бы одного из условий)
• xor – исключающее ИЛИ (выполнение только
одного из двух условий, но не обоих)
Простые условия (отношения)
<
<=
>
>=
равно
=
не равно
<>
34
35.
Сложные условияПорядок выполнения (приоритет = старшинство)
• выражения в скобках
• not
• and
• or, xor
• <, <=, >, >=, =, <>
Особенность – каждое из простых условий обязательно
заключать в скобки.
Пример
4
1
6
2
5
3
if not (a > b) or (c <> d) and (b <> a)
then begin
...
end
35
36.
Сложные условияИстинно или ложно при a := 2; b := 3; c := 4;
True
not (a > b)
True
(a < b) and (b < c)
True
not (a >= b) or (c = d)
True
(a < c) or (b < c) and (b < a)
(a < b) xor not (b > c)
FALSE
Для каких значений
(x
(x
(x
(x
(x
(x
(x
(x
<
<
>
>
<
<
>
>
6)
6)
6)
6)
6)
6)
6)
6)
x истинны условия:
and (x < 10)
and (x > 10)
and (x < 10)
and (x > 10)
or (x < 10)
or (x > 10)
or (x < 10)
or (x > 10)
(- , 6)
(6, 10)
(10, )
(- , 10)
(- , 6) (10, )
(- , )
(6, )
x<6
x > 10
x < 10
x>6
36
37. Программирование на языке Паскаль
37Программирование
на языке Паскаль
Тема 4. Циклы
38.
ЦиклыЦикл – это многократное выполнение одинаковой
последовательности действий.
• цикл с известным числом шагов
• цикл с неизвестным числом шагов (цикл с условием)
Задача. Вывести на экран 5 раз слово «Привет».
Особенность: одинаковые действия выполняются 5 раз.
?
Можно ли решить известными методами?
38
39.
Блок-схема, соответствующая циклу спараметром языка Паскаль,
представлена на рисунке
Здесь i – параметр цикла; i0 – начальное значение
параметра; iT – конечное значение параметра.
40.
Циклыprogram qq;
«Для всех i от 1 до 5
var i: integer;
делай …»
begin
for i:=1 to 5 do
writeln('Привет');
end.
Если в цикле более одного оператора:
for i:=1 to 5 do begin
write('Привет');
writeln(', Вася!');
Что получится?
?
end;
40
41.
ЦиклыЗадача. Вывести на экран квадраты и кубы целых чисел
от 1 до 8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.
?
Можно ли решить известными методами?
41
42.
Алгоритмначало
задать начальное значение
переменной цикла
i := 1;
проверить, все ли сделали
i <= 8?
да
i2 := i * i;
i3 := i2 * i;
нет
конец
вычисляем квадрат и куб
вывод результата
i, i2, i3
перейти к
следующему i
i := i + 1;
42
43.
Алгоритм (с блоком «цикл»)начало
i := 1,8
i2 := i * i;
i3 := i2 * i;
блок «цикл»
конец
тело цикла
i, i2, i3
43
44.
Программаprogram qq;
var i, i2, i3: integer;
begin
начальное значение
переменная
цикла
конечное значение
for i:=1 to 8 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end.
44
45.
Цикл с уменьшением переменнойЗадача. Вывести на экран квадраты и кубы целых чисел
от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:
for i:=8 downto 1 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
45
46.
Цикл с переменнойУвеличение переменной на 1:
for <переменная> := <начальное значение> to <конечное значение> do
begin
{тело цикла}
end;
Уменьшение переменной на 1:
for <переменная> := <начальное значение> downto <конечное значение> do
begin
{тело цикла}
end;
46
47.
Цикл с переменнойОсобенности:
• переменная цикла может быть только целой
(integer)
• шаг изменения переменной цикла всегда равен 1
(to) или -1 (downto)
• если в теле цикла только один оператор, слова
begin и end можно не писать:
for i:=1 to 8 do
writeln('Привет');
• если конечное значение меньше начального, цикл
(to) не выполняется ни разу (проверка условия в
начале цикла, цикл с предусловием)
47
48.
Цикл с переменнойОсобенности:
• в теле цикла не разрешается изменять переменную
цикла (почему?)
• при изменении начального и конечного значения
внутри цикла количество шагов не изменится:
n := 8;
for i:=1 to n do begin
writeln('Привет');
нет
n := n + 1;
зацикливания
end;
48
49.
Сколько раз выполняется цикл?a := 1;
for i:=1 to 3 do a := a+1;
a= 4
a := 1;
for i:=3 to 1 do a := a+1;
a= 1
a := 1;
for i:=1 downto 3 do a := a+1;
a= 1
a := 1;
for i:=3 downto 1 do a := a+1;
a= 4
49
50.
Как изменить шаг?Задача. Вывести на экран квадраты и кубы нечётных целых
чисел от 1 до 9.
Особенность: переменная цикла должна увеличиваться на 2.
Проблема: в Паскале шаг может быть 1 или -1.
Решение:
for i:=1 to 9 do begin
if i mod
???2 = 1 then begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
end;
?
выполняется
только для
нечетных i
Что плохо?
50
51.
Как изменить шаг? – IIИдея: Надо вывести всего 5 чисел, переменная k изменяется
от 1 до 5. Начальное значение i равно 1, с каждым шагом
цикла i увеличивается на 2.
Решение:
i := 1;
???
for k:=1 to 5 do begin
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
???
i := i + 2;
end;
51
52.
Как изменить шаг? – IIIИдея: Надо вывести всего 5 чисел, переменная k изменяется
от 1 до 5. Зная k, надо рассчитать i.
k
1
2
3
4
5
i
1
3
5
7
9
i = 2k-1
Решение:
for k:=1 to 5 do begin
i ???
:= 2*k – 1;
i2 := i*i;
i3 := i2*i;
writeln(i:4, i2:4, i3:4);
end;
52
53. Программирование на языке Паскаль
53Программирование
на языке Паскаль
Тема 5. Циклы с условием
54.
Цикл с неизвестным числом шаговПример: Отпилить полено от бревна. Сколько раз надо
сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить число
цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру,
увеличиваем счетчик.
n
count
123
0
12
1
1
2
0
3
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать
«пока n <> 0».
54
55.
Алгоритмначало
обнулить
счетчик цифр
ввод n
count := 0;
выполнять
«пока n <> 0»
n <> 0?
нет
да
count := count + 1;
n := n div 10;
count
конец
55
56.
Программаprogram qq;
n1: integer;
var n, count:, integer;
begin
writeln('Введите целое число');
read(n); n1 := n;
выполнять
count := 0;
«пока n <> 0»
while nn <>
<> 00 do
do begin
begin
while
count:=:=count
count+ +1;1;
count
div10;
10;
n n:=:=n ndiv
end;
end;
writeln('В числе ', n1,
n, ' нашли ',
count, ' цифр');
end.
Что плохо?
?
56
57.
Цикл с предпроверкой условия WHILE58.
Цикл с условиемwhile <условие> do
begin
{тело цикла}
end;
Особенности:
• можно использовать сложные условия:
while (a<b) and (b<c) do begin
{тело цикла}
end;
• если в теле цикла только один оператор, слова
begin и end можно не писать:
while a < b do
a := a + 1;
58
59.
Цикл с условиемОсобенности:
• условие пересчитывается каждый раз при входе в
цикл
• если условие на входе в цикл ложно, цикл не
выполняется ни разу
a := 4; b := 6;
while a > b do
a := a – b;
• если условие никогда не станет ложным, программа
зацикливается
a := 4; b := 6;
while a < b do
d := a + b;
59
60.
Сколько раз выполняется цикл?a := 4; b := 6;
while a < b do a := a + 1;
2 раза
a=6
a := 4; b := 6;
while a < b do a := a + b;
1 раз
a = 10
a := 4; b := 6;
while a > b do a := a + 1;
0 раз
a=4
a := 4; b := 6;
while a < b do b := a - b;
1 раз
b = -2
a := 4; b := 6;
while a < b do a := a - 1;
зацикливание
60
61.
Замена for на while и наоборотfor i:=1 to 10 do begin
{тело цикла}
end;
for i:=a downto b do
begin
{тело цикла}
end;
i := 1;
while i <= 10 do begin
{тело цикла}
i := i + 1;
end;
i := a;
while i >= b do begin
{тело цикла}
i := i - 1;
end;
Замена цикла for на while возможна всегда.
Замена while на for возможна только тогда, когда
можно заранее рассчитать число шагов цикла.
61
62.
ПоследовательностиЗадача: найти сумму всех элементов
последовательности,
1 2
3
4
5
1, ,
, ,
, , ...
2 4
8 16
32
которые по модулю больше 0,001:
1 2 3 4 5
S 1
...
2 4 8 16 32
Элемент последовательности (начиная с №2):
b
a z
c
n
1
2
3
4
5
...
b
1
2
3
4
5
...
c
2
4
8
16
32
...
z
-1
1
-1
1
-1
...
b := b+1;
c := 2*c;
z := -z;
62
63.
Алгоритмначальные
значения
начало
SS :=
:= 0;
0; b := 1;
c := 2; z := -1;
a := 1;
|a| > 0.001?
новый
элемент
изменение
первый
элемент
нет
да
S
S := S + a;
конец
a := z*b/c;
b := b + 1;
c := 2*c; z := -z;
?
Перестановка?
63
64.
Программаprogram qq;
начальные
var b, c, z: integer;
значения
S, a: real;
begin
S := 0; z := -1;
2; aa := 1;
b := 1; c := 2;
while abs(a) > 0.001 do begin
увеличение
S := S + a;
суммы
a := z * b / c;
:= -- z;
z;
zz :=
расчет элемента
:= bb ++ 1;
1;
bb :=
последовательности
:= cc ** 2;
2;
cc :=
end;
переход к
writeln('S =', S:10:3);
end.
следующему
слагаемому
64
65.
Цикл с постусловиемЗадача: Ввести целое положительное число (<2000000) и
определить число цифр в нем.
Проблема: Как не дать ввести отрицательное число или
ноль?
Решение: Если вводится неверное число, вернуться
назад к вводу данных (цикл!).
Особенность: Один раз тело цикла надо сделать в
любом случае => проверку условия цикла надо делать
в конце цикла (цикл с постусловием).
Цикл с постусловием – это цикл, в котором проверка
условия выполняется в конце цикла.
65
66.
Цикл с постпроверкой условия REPEAT67.
Цикл с постусловием: алгоритмначало
ввод n
нет
n > 0?
да
основной
алгоритм
тело цикла
условие
ВЫХОДА
блок «типовой
процесс»
конец
67
68.
Программаprogram qq;
var n: integer;
begin
repeat
repeat
writeln('Введите положительное
положительное число');
число');
writeln('Введите
read(n);
read(n);
условие ВЫХОДА
until
n
>
0;
until nn >> 0;
0;
until
... { основной алгоритм }
end.
Особенности:
• тело цикла всегда выполняется хотя бы один раз
• после слова until ("до тех пор, пока не…")
ставится условие ВЫХОДА из цикла
68
69.
Сколько раз выполняется цикл?a := 4; b := 6;
repeat a := a + 1; until a > b;
3 раза
a=7
a := 4; b := 6;
repeat a := a + b; until a > b;
1 раз
a = 10
a := 4; b := 6;
repeat a := a + b; until a < b;
зацикливание
a := 4; b := 6;
repeat b := a - b; until a < b;
a := 4; b := 6;
repeat a := a + 2; until a < b;
2 раза
b=6
зацикливание
69