Уроки Pascal ABC

advertisement
Уроки Pascal ABC - Введение
Паскаль (англ. Pascal) - это язык программирования, имеющий текстовую среду. Является
основой многих языков программирования. Паскаль бывает полезен для начинающих.
Преподаётся в школах и ВУЗах. Пример программы, написанной на паскале:
Код:
Program umnogenie;
var a, b: integer;
begin
writeln ('Введите переменные ');
readln (a, b);
a:= a*b;
writeln ('Результат ', a);
end.
Эта простая программка умножает число a на число b.
Уроки Pascal ABC - Урок №1
Первые знания, операторы, структура.
Сегодня мы начинаем уроки по изучению Pascal. В этом уроке мы обсудим структуру
программы, написанной на pascal, основные операторы, типы переменных.
Вся программа состоит из:
1) Описание переменных
2) Основной программы:
а) Ввод данных, диалог с пользователем
б) Основной блок - выполнение поставленных задач
в) Вывод данных, диалог с пользователем
В виде алгоритма это получается так:
- Вводим переменные а и б которые являются численными (действительными целыми
числами);
- начало программы;
- ввод данных;
- работа программы;
- вывод данных;
- конец программы.
А как это делается в программе?
Код:
Program vvod i vivod
var a :integer;
begin
readln (a);
writeln ('вы ввели число ', a);
end.
А теперь я объясню, что это всё значит. Первая сторока (Program vvod i vivod;) означает
название программы. Мы просто пишем "Program", затем пишем название нашей новой
программы, какое сами захотим (я написал vvod i ivod). Ограничением является то, что
название должно содержать только английские буквы, цифры или знак "_". После каждой
строчки пишется точка с запятой. Во второй строке мы перечисляем переменные, в нашей
програмке она всего одна - "а". "var" - это служебное слово которое задаёт переменные.
Мы просто пишем слово "var", затем переменные которые будут учавствать в нашей
программе через запятую, после переменных всегда ставится двоеточие, оно не ставится
лишь в некоторых случаях, в каких я расскажу потом, далее идёт вид переменных (integer
- целые числа (1,6,48,4859) и real - дрбные числа (1,376 или например 8,45) в конце как и в
первой строчке пишется точка с запятой. "begin" означает начало (запуск) программы.
"readln" означает ввод данных. Во время работы программы нам необходимо будет ввести
значение переменной в нашем случае необходимо ввести значение переменной "а".
Поскольку у нас переменные вида "integer" мы можем ввести любое целое число. Если
программе необходимо ввесто или вывести информацию то используются закруглённые
скобки (то что написано в скобках мы увидим на экране во время работы программы).
"writeln" - это наоборот вывод данных. В скобках после этой команды мы пишем то, что
хотим чтобы показал компьютер. Если хотим, чтобы он показал не просто числа, а какойнибудь текст, то в скобках мы ставим одинарные кавычки. То что написано в одинарных
кавычках будет выведено на экран в чистом виде. Последняя строчка - "end." указывает,
на завершение программы в конце всегда ставится точка.
Уроки Pascal ABC - Урок №2
Сегодня я расскажу про основные операторы, с помощью которых можно написать вашу
первую программу.
1)Оператор присваивания
Без этого оператора мы не сможем обойтись дальше. Его функция - это присваивания
значения переменной.
Допустим x - это переменная, пусть она будет равна 2, в программе это будет выглядеть
так:
Код:
{ввод данных}
x:=2;
{вывод данных}
Я думаю, что Вы уже заметили, что на деле она выглядит, как двоеточие со знаком равно
(:=).
2)Операторы сложения, вычитания и умножения
а)Сложение
С помощью данного оператора мы можем сложить два числа, в программе он пишется,
как "+" (без кавычек). Допустим у нас есть переменные x, y и z. Мы можем присвоить
переменной x значение 4, а переменной у значение 3.
Код:
{ввод данных}
x:=4;
y:=3;
z:=x+y;
{вывод данных}
При данном сложении мы получим 7, само собой можно самому придумать другие
значения переменным x и y. В таком случае переменная z изменит своё значение на
другое.
б)Вычитание
В этом операторе тоже ничего сложного нет, он выполняет вычитание двух чисел. В
программе обозначается, как "-" (без кавычек):
Код:
{ввод данных}
x:=8;
y:=3;
z:=x-y;
{вывод данных}
Выше мы x присвоили 8, а у присвоили значение 3. В итоге z у нас становится 5.
в)Умножение
Этот оператор умножает два числа друг на друга, обозначается, как "*" (также без
кавычек):
Код:
{ввод данных}
x:=8;
y:=2;
z:=8*2;
{вывод данных}
Здесь переменная z в следствии умножения приобретёт значение 16.
3)Операторы деления
Операторов деления - три, и все они работают по разному и соответственно выполняют
разные действия.
а)Простое деление
Простое деление выполняется с помощью оператора вида "/" (без кавычек), он делит одно
число на другое. Данный оператор работает только с типом чисел real, о котором я писал в
прошлом уроке.
Код:
{ввод данных}
x:=22;
y:=5;
x:=x/y;
{вывод данных}
В примере мы x присвоили 4,4. В следствии деления 22(x) на 5(y).
б)Целочисленное деление
Данное действие делит число только на цело, при таком способе деления невозможно
получить десятичную или периодическую дробь. В программе пишется, как "div" (без
кавычек). Данный оператор работает только с типом integer.
Код:
{ввод данных}
x:=22;
y:=5;
x:=x div y;
{вывод данных}
В данном примере z будет равно 4, а не 4,4, как при обычном делении.
в)Получение остатка
Данный способ позволяет получить не само число, которое должно получится, а его
остаток. Допустим при делении 22 на 5 мы получим 2, при этом способе деления. В
программе обозначается, как "mod" без кавычек:
Код:
{ввод данных}
x:=48 mod 5;
{вывод данных}
Простейший калькулятор.
Давайте попробуем написать простейший калькулятор, который выполняет с нашими
двумя числами все действия, которые мы сегодня выучили, сразу.
program calc; //вводим название программы
Код:
var a, b, sum, raz, pro, c: integer; del: real; //вводим переменные
begin //начинаем программу
readln (a, b); // вводим в программу два числа
sum:=a+b; // складываем числа
raz:= a-b; // вычитаем
pro:=a*b; // умножаем
del:=a/b; // выполняем простое деление
c:=a div b; //делаем целочисленное деление
a:= a mod b; // находим остаток, при этом меняем значение a
writeln ('сумма - ', sum); // выводим на экран сумму
writeln ('разность - ', raz); // выводим на экран разность
writeln ('произведение - ', pro); // выводим на экран произведение
writeln ('простое деление ', del); // выводим на экран обычное деление
writeln ('целочисленное деление ', c); // выводим на экран результат целочисленного деления
writeln ('остаток - ', a); // выводим на экран остаток
end. //заканчиваем программу
Уроки Pascal ABC - Урок №3
Сегодня предлагаю рассмотреть операторы квадрата, корня и модуля.
1. Оператор квадрата
Этот оператор возводит в квадрат заданное число или переменную. Выглядит, как "sqr"
(без кавычек). В программе пишется как sqr(a), где a - любая переменная или число.
Код
var a, c:integer;
begin
writeln ('Введите число');
readln (a);
c:=sqr(a);
writeln ('Квадрат равен ',c);
end.
2. Оператор корня
Этот оператор находит корень из переменной или числа. Выглядит, как "sqrt" , (без
кавычек). В программе пишется как sqrt(a), где a - любая переменная или число.
Код
var a, c:real;
begin
writeln ('Введите число');
readln (a);
c:=sqrt(a);
writeln ('Корень равен ',c);
end.
3. Оператор модуля
Данный оператор переводит число из обычного в число по модулю, то есть меняет знак
этого числа на всегда положительный. Обозначается, как "abs" без кавычек, в программе
пишется, как abs(a), где a - любое число или переменная.
Код:
var a, c:real;
begin
writeln ('Введите число');
readln (a);
c:=abs(a);
writeln ('Модуль равен ',c);
end.
Уроки Pascal ABC - Урок №4
Сегодня мы будем рассматривать оператор условия. Он работает по принципу: Если
(условие), то (команда 1), иначе (команда 2).
Слово если выполняет команда IF, слово тогда - then, а иначе - else. На деле этот цикл
выглядит так:
Код:
///////////////////////////////////////////////////////////////////////
Program sravnenie; // Название программы.
var a,b,c,d: integer; // Вводим переменные.
begin // Начало программы.
readln(a); // Ввести значение a.
readln(c); // Ввести значение c.
if a < с then // Если а меньше с, то
b:=с // b будет равно с.
writeln(b); // Вывести значенние b на экран.
else a:=d; // В противном случае а равно d.
writeln(d); // Вывести значенние d на экран.
end. // Конец программы.
//////////////////////////////////////////////////////////////////////
Немного потренируемся
Раньше мы создавали калькулятор без возможности выбора действий, на основе
изученных в последнем уроке операторов условий (if, then и else), мы можем составить
калькулятор с выбором действий (свой первый калькулятор я составлял сам и ушло на
него у меня 2 часа).
Исходник калькулятора для паскаля, который умеет:
- складывать;
- вычитать;
- умножать;
- находить корень;
- находить квадрат;
- делить в обычном и привычном для нас виде;
- делить в целых числах
- делить с остатком.
Использованы операторы sqrt, sqr, mod и div, +, -, /, *.
Код:
Program calc2;
var a, b, sum, raz, pro, c, n: integer; // Задаём переменные, их типы
del: real;
begin
writeln (' Введите требуемое действие:' ); // Диалог с пользователем
writeln (' 1 - сложение, 2 - вычитание, 3 - умножение, 4 - простое
деление, 5 - деление с остатком, 6 - квадрат, 7 - кв. корень');
readln (n); // считывание действия
writeln ('Введите числа для операции, если корень или квадрат, то
второе число - любое');
readln (a, b); // считываем два числа
if n = 1 then begin // Если n = 1 (сложение), то начало д.
sum:=a+b; // складываем числа
writeln ('сумма - ', sum); // выводим сумму
end; //конец д.
if n = 2 then begin // Если n = 2 ( вычитание), то начало д.
raz:= a-b; //вычитаем
writeln ('разность - ', raz); // выводим разность
end; // конец д.
if n = 3 then begin // Если n = 3 (умножение), то
начало д.
pro:=a*b; // умножаем
writeln ('произведение - ', pro); // выводим
произведение
end; // конец действия.
{Дальше комментарии к оператору if отсутствуют, т.к.
они почти теже}
if n = 4 then begin
del:=a/b; // выполняем простое деление
writeln ('простое деление - ', del); // выводим
обычное деление
end;
if n = 5 then begin
c:=a div b; //делаем целочисленное деление
a:= a mod b; // находим остаток, при этом
меняем значение a
writeln ('целочисленное деление - ', c); //
выводим результат целочисленного деления
writeln ('остаток - ', a); // выводим
остаток
end;
if n = 6 then begin
pro:= sqr (a); // находим квадрат
первого числа
writeln ('Квадрат a равен ', pro); //
выводим квадрат перового числа
end;
if n = 7 then begin
del:= sqrt (a); // Находим квадратный
корень первого числа
writeln ('Кв. корень равен ',del); //
Выводим кв. корень
end; //
end. //конец программы
Pascal ABC - Урок 6
Мы будем разбирать цикл while с предусловием.
1. Цикл с параметром в Паскале - FOR
Цикл FOR задает определённое условие по которому программа будет работать
определённое количество раз, допустим нам нужно 5 (или n) раз зациклить программу, это
легко сделать с помощью данного цикла. У цикла FOR есть характерная черта - счетчик
который обычно обозначается буквой i или j.
Внешний вид цикла с параметром в паскале:
Код:
for i:= 1 to n do // присваиваем i сначала одному, потом двум, трем,
..., n
После 1-го прохода переменной i присваиваем 1, после второго присваиваем 2 и так до тех
пор, пока не дойдем до n. to - это до .. в порядке возрастания, также есть downto - до .. в
порядке убывания.
2. Цикл с предусловием в Паскале - WHILE
Оператор цикла с предусловием выполняет действия заранее неизвестное число раз.
Выход из цикла осуществляется, если какое-либо логическое выражение или его результат
окажется ложным. Так как верность логического выражения проверяется в самом начале,
то тело цикла может не выполнится ни одного разу.
Структура цикла с предусловием:
Код:
WHILE
<условие> DO
begin
<тело цикла>
end;
Порядок выполнения цикла:
- логическое выражение, истинность которого проверяется вначале выполнения
циклического оператора;
- любые выполняемые операторы языка.
Пока условие истинно выполняется тело цикла. Как только условие становится ложно
выполнение цикла прекращается.
Пример:
Задача: вычислить сумму ряда 1+1.5+2+2.5+3+3.5+ .. + 30
Код:
program example-while;
var
sum:real;
n:real;
BEGIN
sum:=0;
n:=1;
while n < =30 do
begin
sum:=sum+n;
n:=n+0.5;
end;
writeln('Сумма равна: ',sum);
END.
3. Цикл с постусловием - Repeat - until.
Этот оператор аналогичен оператору цикла с предусловием, но отличается тем, что
проверка условия производится после выполнения тела (действий) цикла. Это
обеспечивает его выполнение хотя бы один раз в отличие от ранее разобранных циклов.
Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких
операторов в теле цикла, то есть можно выполнять несколько действий, поэтому
служебные слова Begin и End не нужны.
Последовательность операторов, входящих в тело цикла выполняется один раз, после чего
проверяется соблюдение условия, записанного следом за служебным словом Until. Если
условие не соблюдается, тогда цикл завершается. В противном случае - тело цикла
повторяется ещё раз, после чего снова проверяется соблюдение условия.
Формат записи, структура цикла:
Код:
REPEAT
<тело цикла>
UNTIL <условие>;
Пример:
Код:
Program test2;
Var b:Real;
Begin
b:=100;
Repeat b:=b/2;
Until b<10;
Writeln(b:0:2);
End.
Pascal ABC - Урок 8
В прошлом уроке мы разобрали общее понятие подпрограммы в Паскале, сегодня лучше
познакомимся с подпрограммами типа Функции. Узнаем о том, как она вызывается в
основной части, как описывается, как выглядит и т.п. Подробнее дальше.
Функции - подпрограммы, которые возвращают значение, то есть не изменяют
переменные в основной программе, а выполняет действие, которое в дальнейшем можно
использовать многократно.
Предлагаю рассмотреть структуру функции на примере:
Код:
Function Prim(a, b, c:integer):integer; //Задание переменных в функцию
из программы
var M:integer; //Описание локальной/ных переменных
begin
A:=B+C; //Складывание чисел
M:=A/B; //Присваивание локальной переменной значение А/В
A:=A*C*B*M; //Перемножение
Prim:=A; //Возвращение значения
end; //Конец функции
Данная функция выполняет простые операции с числами, в предпоследней строчке мы
видим, как происходит возвращение значения. Передаваться значения могут как по
ссылке, так и по значению.
Как вызвать функцию в программе?
Для того, чтобы вызвать функцию, мы должны либо присвоить её значение какой-либо
переменной, либо совершить с ней какую-то операцию, либо вывести с помощью
write/writeln. Вызывается она следующим образом: (переменные, которые требуется
передать в функцию);
Пример вызова для нашей вышеописанной функции:
Код:
k:= Prim(a, b, c); // Присваивание значения функции переменной, где kлюбая переменная, описанная в программе
k:=Prim (a,b,c)+365 // Совершение операции с функцией, к значению
функции прибавляем 365
write (Prim(a,b,c)); // Вывод значения функции
Download