Реферат: Урок №1 языки программирования. Язык паскаль
Урок №1 ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ЯЗЫК ПАСКАЛЬ.
ЯНУ
Языки низкого (машинного) уровня удобны для интерпретации аппаратурой ЭВМ, но плохо приспособлены для непосредственного использования человеком - программистом. Они разработаны с максимальным приближением к конкретному виду компьютеров, ориентированы на его систему команд. Поэтому программа, составленная для одного компьютера, будет непонятна другому. Каждый оператор программы - это машинная команда, а все данные имеют адреса, по которым происходит обращение к ним. Пример ЯНУ - Ассемблер. ЯНУ достаточно сложны и на них составляют программы только профессионалы - разработчики новой техники.
ЯВУ
Языки высокого уровня - ЯВУ - разработаны с максимальным приближением к восприятию человеком. В таких языках каждый шаг алгоритма записывается с помощью формул или какого-либо оператора - обычно словами на английском языке, смысл которых согласуется с соответствующим действием. Этих слов немного и они не изменяются, поэтому составлять и понимать программы, написанные на ЯВУ, легко даже человеку, не знающему английского. Правила синтаксиса (написания операторов и соединения их в программу) достаточно строги, но единообразны. К ним нетрудно привыкнуть. ЯВУ не зависят от типа аппаратуры: программа, созданная на одном компьютере, будет работать и на другом. Чтобы она стала понятна компьютеру, ее надо перевести на машинный язык. Это осуществляют специальные программы-переводчики, которые называются "трансляторами".
ПАСКАЛЬ.
Язык программирования Паскаль был разработан в 1968 - 1970 годах швейцарским профессором Никлаусом Виртом и назван в честь великого французского математика и философа Блеза Паскаля (1623-1662г). Созданный для обучения студентов, язык оказался настолько хорош, что стал использоваться профессионалами. Он является мощным средством программирования широкого круга прикладных задач.
Достоинства ПАСКАЛЯ.
1. Прост при изучении из-за интуитивной понятности его конструкций.
2. Программы наглядны, легко читаются.
3. Наличие большой библиотеки модулей.
4. Простые, гибкие и четкие структуры языка.
5. Возможность составлять программы из отдельных модулей.
6. Отладка программы по частям делает ее надежной.
7. Структурированность программ прививает хороший стиль программирования.
Интегрированная среда программирования (ИС).
Турбо Паскаль - это соединение языка и среды программирования, которая включает в себя экранный редактор, компилятор (переводящий всю программу на машинный язык), компоновщик (соединяющий отдельные фрагменты воедино), отладчик (находящий ошибки в программе) и систему контекстной помощи. Использование ИС позволяет создавать тексты программ, находить и исправлять в них ошибки, отлаживать программы и исполнять их, не выходя из среды программирования.
^ Основные особенности ИС Паскаля:
1) многооконность;
2) возможность работы с несколькими файлами сразу;
3) развитая система меню;
4) наличие диалоговых окон;
5) поддержка работы с "мышью";
6) возможность по желанию пользователя легко модифицировать ИС.
^ Первое знакомство.
I. Вызов Паскаля (вход в интегрированную среду):
C:\PASCAL\turbo.exe (или свой вариант).
Появляется основной экран ИС - голубое поле экранного редактора (для размещения текстов программ), вверху - строка основного меню (содержит 10 пунктов), внизу - строка состояния (строка подсказок).
II. Выполнение готовой программы (любой из 3 вариантов):
а) F10, "Run", Enter, "Run", Enter;
б) Alt+R, "run", Enter;
в) Ctrl+F9.
Происходит переход в другое окно (черного цвета), где компьютер работает в режиме диалога с человеком: запрашивает исходные данные, печатает сообщения и результаты. Возвратиться к тексту программы можно с помощью "Enter".
III. Выход из Паскаля (любой из 3 вариантов):
а) F10, "File", Enter, "Exit", Enter;
б) Alt+F, "Exit", Enter;
в) Alt+X.
Перед выходом из Паскаля появится сообщение:
"NONAME00.PAS has been modified. Save?" [Файл изменен. Сохранить?]
Следует выбрать: "Yes" [да], "No" [нет] или "Cancel" [отменить выход] (Рекомендуется выбирать "no", если задача решена и получена оценка.)
^ Алфавит языка.
Алфавит Паскаля состоит из:
-- английских букв
-- цифр
-- математических знаков -, +, *, /, <, >, =, <=, >=, <>
-- скобок (, ), [, ], ,
-- других символов ' : ; , . := .. "пробел"
-- в комментариях можно использовать любые символы, в том числе и русские буквы.
Д/З: Выучить конспект.
Урок №2 СТРУКТУРА ПРОГРАММЫ В ПАСКАЛЕ.
Программа в Паскале имеет вид:
^ I. Заголовок Program <имя программы>;
II. Раздел объявлений (описаний) Const <имя>=<значение>;
Var <имя>,<имя>:<тип1>;
В разделе объявлений должны быть указаны все объекты, с которыми будет работать программа: константы, переменные, процедуры и функции. В разделе Const приводятся значения КОНСТАНТ - величин, которые не изменяются при выполнении программы. В разделе Var перечисляются типы всех ПЕРЕМЕННЫХ - величин, которые могут изменять значения при выполнении программы.
Рассмотрим 2 типа переменных:
1) integer - целые числа из интервала [-32768, 32767];
2) real - дробные числа из интервала [-2.9*10-39, 1.7*1038].
Имя программы, имена констант, переменных и других объектов программы называются ИДЕНТИФИКАТОРАМИ. Они записываются по правилам:
1. Имя должно лаконично отражать сущность объекта.
S,v,t - общепринятые обозначения;
Summa, N_max - значения суммы номера максимума.
2. Длина идентификатора не должна превышать 127 символов, но для Паскаля значимы только первые 63 знака.
3. В запись идентификатора могут входить только цифры, английские буквы и знак подчеркивания,
4. но начинаться он должен с буквы или знака подчеркивания.
5. Маленькие и большие буквы в записи идентификаторов Паскаль не различает:
SUMMA, SumMA, summa - для Паскаля одно и то же.
III. Тело программы begin
<операторы>
end.
В теле программы записываются операторы - отдельные шаги алгоритма. Каждый оператор заканчивается ";" Этот знак можно не ставить перед "end".
^ Арифметические операции в Паскале.
1. Операции с дробными числами (обычные, как в математике).
- вычитание; + сложение; * умножение; / деление.
2. Операции с целыми числами.
- вычитание; + сложение; * умножение;
Деление представлено двумя операциями:
div - целая часть от деления, mod - остаток.
23 div 3 = 7 23 mod 3 = 2
9 div 4 = 2 9 mod 4 = 1
35 div 10 = 3 35 mod 10 = 5
3. Приоритет арифметических операций: вначале - умножение и деление ( /, div, mod). Затем - сложение и вычитание. Порядок выполнения действий - слева направо. В выражениях могут быть скобки, при этом вначале производятся вычисления в скобках.
^ READLN.
Процедура Readln считыват значения, вводимые с клавиатуры, и записывает их в переменные, которые указаны. Общий вид:
Readln (<имя>,...,<имя>);
Например, если на запрос Readln (а, с, х); с клавиатуры будут введены числа 2, 5, и 4.6, то переменные получат значения: а=2, с=5, х=4.6.
Примечание: при вводе значения разделяются пробелами.
WRITELN и WRITE.
Процедуры Writeln и Write служат для печати информации в "черном" экране компьютера. Они отличаются только тем, что процедура Write после напечатанного оставляет курсор на той же строчке, а Writeln переводит его после печати на новую строку. Общий вид: Writeln (<список вывода>);
Элементы списка вывода разделяются запятыми. Элементом может быть:
а) текст, заключенный в апострофы; в него могут входить любые символы, в том числе и русские буквы. При этом текст будет напечатан на экране точно в таком же виде, в каком указан в операторе.
Например: в программе - Write ('Привет!'); на экране - Привет!
б) имя переменной - на экране будет напечатано ее значение. Например:
если Х=675, то в программе - Write (Х);
на экране - 675
в) выражение - будет вычислено его значение и напечатан результат. Например:
в программе - Write (34*2+102);
на экране - 170
ЗАДАЧА. Ввести с клавиатуры скорость и время путника. Напечатать расстояние.
Решение.
Program Rasst; {комментарии записывают в фигурных скобках}
var v,t:integer; {объявляем 2 переменные - целые числа}
begin {тело программы записываем с отступом вправо}
Write ('введи v и t '); {печатается приглашение для ввода числа}
Readln (v, t); {запрашиваются с клавиатуры значения для v и t}
Writeln ('S=',v*t); {печатается текст "S=" и результат v*t}
Readln {задержка в "черном" экране, выход - Enter}
end.
САМОСТОЯТЕЛЬНО: Ввести с клавиатуры длину и ширину прямоугольника. Найти его периметр.
Д/З. Ввести с клавиатуры цену и количество товара. Найти стоимость покупки.
Урок №3. ФОРМАТЫ ПЕЧАТИ.
^ I. Печать целых чисел.
Пусть А=45, В=123, тогда при выполнении Writeln (А, В); значения А и В сольются в одно число:
45123
Чтобы разделить числа, используют форматы печати, определяя для каждой переменной количество позиций в строке. Оно записывается после имени переменной через ":". Таким образом, оператор можно записать так: Writeln (A:4, B:6); и на экране значения будут напечатаны в виде
_ _45_ _ _123
^ II. Печать дробных чисел.
Дробное число в памяти компьютера представлено в стандартном виде: целая часть числа - это 1 цифра, не равная 0, остальные цифры записываются в дробную часть. Чтобы исходное число сохранило свое значение, его следует домножить на 10 в соответствующей (положительной или отрицательной) степени. Выражение "умножить на 10 в степени" компьютер записывает одним символом "Е". В дробной части - 10 цифр. Таким образом, число 1243,563 будет иметь вид 1.2435630000Е+03,
число 0,0000345 будет иметь вид 3.4500000000Е-05.
Такая запись называется "число с плавающей точкой". Именно в этом виде и будет напечатано значение любой переменной X типа real, если в программе выполняется оператор Writeln (X);
Чтобы напечатать дробное число в привычном нам виде, который называется "число с фиксированной точкой", следует указать для него форматы печати, которые выбираем по своему желанию:
Writeln ( <имя>: <колич. всех знаков>: <колич. знаков на дроб.часть> );
ПРИМЕР: пусть Х=1243,563, тогда
Writeln (X:8:2); ==> _1234.56
Writeln (X:13:5); ==> _ _ _1234.56300
Writeln (X:10:3); ==> _ _1234.563
ЗАДАЧА. Ввести с клавиатуры значение массы тела m. Считая g=9,8, найти вес тела P.
Комментарий: при решении задачи после умножения получится дробное число, поэтому печатать его будем с "фиксированной точкой": всего 7 знаков, в том числе и десятичная точка, из них 2 цифры - дробная часть.
Решение.
Program Ves;
const g=9.8; { константа g – ускорение свободного падения}
var m:integer; {переменная m – масса тела}
begin
Write ('Введи массу '); {приглашение ввести значение массы}
Readln (m); {с клавиатуры вводится число и записывается в m}
Writeln ('Веc=',m*g:7:2); {результат m*g печатается «с фиксированной точкой»}
Readln {задержка в диалоговом режиме}
end.
САМОСТОЯТЕЛЬНО: Введя с клавиатуры площадь и одну сторону прямоугольника, найти длину другой стороны.
Д/З. Папа, воспитывая сына-двоечника, изнашивает в год 3 ремня. Ввести с клавиатуры количество изношенных папой ремней, определить: какой класс закончил сын.
Урок №4. ОПЕРАТОР ПРИСВАИВАНИЯ.
^ ПРОМЕЖУТОЧНАЯ ПЕРЕМЕННАЯ.
Очень часто при решении задач выполняются промежуточные вычисления, которые не указываются в ответе, но участвуют в получении окончательного результата. (Например, нахождение скорости катера по течению реки при вычислении пройденного по течению расстояния; нахождение дискриминанта при решении квадратного уравнения). Такие вычисления запоминаются в промежуточных переменных.
Промежуточные переменные должны быть объявлены так же, как и переменные с исходными данными, в разделе Var. Значения они получают не с клавиатуры, а с помощью оператора присваивания. Этот оператор имеет вид:
<имя переменной> := <значение>;
Здесь "значением" может быть конкретное число, имя другой переменной или выражение соответствующего типа. Например, переменной типа integer можно присвоить лишь целочисленное значение и нельзя - дробное. Однако переменной типа real можно присваивать и дробные, и целые значения.
^ Порядок выполнения оператора присваивания.
1. Вычисляется значение, стоящее в правой части оператора присваивания.
2. Результат записывается в переменную, имя которой указано в левой части.
ПРИМЕР: С:=45; в С будет число "45"
В:=С-5; в В будет число "40"
В:=В*2; в В будет число "80"
С:=В; в С будет число "80"
ЗАДАЧА. Ввести с клавиатуры скорость катера vk и скорость течения vt. Какой путь S пройдет катер по течению за t=3 часа?
Комментарий: при решении задачи объявим и
Решение.
Program S_po_t;
Const t=3; {константа t=3}
ar vk,vt,v_po,s_po: integer; {переменные: vk, vt, v_po - скорость по }
begin {течению и s_po - расстояние по течению}
Write ('Введи v катера и v течения ');
Readln (vk, vt);
v_po:=vk+vt; {находим скорость по течению}
s_po:=t*v_po; {находим расстояние по течению}
Writeln ('Расстояние по теч.=',s_po); {печать результата}
Readln
end.
ЗАДАЧА. Ввести с клавиатуры значения для А и В. Поменять их местами. Комментарий: чтобы решить эту задачу, используем следующий алгоритм:
1) объявим в программе третью переменную Х;
2) запомним в новой переменной Х значение А;
3) скопируем в А значение из В;
4) скопируем в В число из Х (исходное значение А).
Решение.
Program Change;
Var a,b,x: integer;
begin
Write ('Введи А и В ');
Readln (a, b);
x:=a; {Х <= A }
a:=b; {A <= B }
b:=x; {B <= X }
Writeln('a=', a, ' b=', b); {'a=' и ' b='- это текст, а и b -числа}
Readln
end.
САМОСТОЯТЕЛЬНО. Ввести с клавиатуры значения для А, В, С. Поменять их местами: А => В, В => С, С => А. Комментарий: в программе будет объявлено 4 переменных, обмен значений произведем за 4 шага.
Д/З: Маша Петрова сделала в диктанте М ошибок, а Гриша Кружков, который у нее все списал, - на К ошибок больше. Ввести с клавиатуры значения для М и К. Сколько ошибок сделал Гриша?
^ Урок №5 ТИП WORD. ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА.
ЗАДАЧА 1. Ввести с клавиатуры двузначное число. Напечатать цифры его единиц и десятков.
Решение.
Program E_D;
Var ed, des, x: integer; {х – число, ed - единицы, des – десятки}
begin
Write ('Введи число ');
Readln (x);
ed:=x mod 10; {находим правую цифру числа}
des:=x div 10; {находим левую цифру числа}
Writeln ('В числе ', ed ,' единиц и ', des ,' десятков.');
Readln
end.
Иногда при решении задач используются только натуральные числа. При этом удобнее их тип объявлять не integer (числа из интервала [-32768, 32767] ), а WORD, для которого диапазон значений = [0, 65535].
ЗАДАЧА 2. Ввести с клавиатуры натуральное число. Напечатать, сколько в нем тысяч.
Решение.
Program thausend;
Var thau, x: word; {х – число, thau – количество тысяч}
begin
Write ('Введи число ');
Readln (x);
thau:=x div 1000; {находим левые цифры числа}
Writeln ('В числе ', thau ,' тысяч.');
Readln
end.
CАМОСТОЯТЕЛЬНО 1.Ввести с клавиатуры натуральное число. Напечатать, сколько в нем сотен (1 цифру) и десятков тысяч. Комментарий: цифру сотен можно получить из остатка от деления числа на 1000.
2. На кухне площадью С кв.м. дедушка рассыпал мелочь. С каждого кв.м. бабушка собрала N копеек. Задать С и N. Каков общий урожай в рублях?
3. Пожарных учат надевать штаны за 23 секунды. Ввести с клавиатуры время в минутах. Напечатать, сколько штанов успеет надеть хорошо обученный пожарный за это время (целое число: штаны - штучная вещь!).
Д/З Ввести с клавиатуры натуральное число. Напечатать 3 его младшие цифры.
^ Урок №6 СТАНДАРТНЫЕ ФУНКЦИИ ПАСКАЛЯ.
В Паскале возможно использование стандартных функций.
Функция
Тип аргумента
Тип результата
Комментарии
Abs(X) модуль Х
целый
дробный
целый
дробный
Тип аргумента совпадает с типом результата
Sqr(X) квадрат Х
целый
дробный
целый
дробный
Sqrt(X) корень из Х
целый
дробный
дробный
X >= 0
Round(X)
Округление до целых
дробный
целый
Round(2.8) -> 3
Round(2.3) -> 2
Trunc(X)
Целая часть от Х
дробный
целый
Trunc(2.8) -> 2
Trunc(2.3) -> 2
Int(X)
Целая часть от Х
дробный
дробный
Int(2.8) =>
=> 2.0000000000E+00
Frac (X)
Дробная часть от Х
дробный
дробный
Frac(2.1358)=> 0.1358 =>
=> 1.3580000000Е-01
Sin(X) - sin X
целый
дробный
дробный
Аргумент записывается
в радианах:
1 рад - это примерно 57°,
рад = 180°
Cos(X) - cos X
целый
дробный
дробный
Pi-число
нет
дробный
Pi = 3.14...
Эти функции можно использовать в программе в любых операторах вместо значения переменной. Аргументами функций могут быть константы, переменные и выражения соответствующего типа.
Например:
1) в операторе присваивания: <имя> := <функция>;
X := Sqrt (a+b);
b := Sin (2*y) + Cos (y);
2) в операторе печати: Writeln (<функция>);
Writeln ('квадрат=',Sqr(f+z));
Writeln ('дробная часть=',Frac(w/g):6:4);
ЗАДАЧА. Ввести с клавиатуры длины катетов треугольника. Найти гипотенузу.
Решение
Program Gip;
Var a, b, c: real;
begin
Write ('Ввести А и В ');
Readln (a,b);
c:=Sqrt (Sqr(a)+Sqr(b)); {формула гипотенузы (т. Пифагора)}
Writeln ('c=',c:6:2);
Readln
end.
^ СЛУЧАЙНЫЕ ЧИСЛА.
Иногда при решении задач удобно не задавать значения переменным с клавиатуры, а вводить их случайным образом: пусть число выбирает сам компьютер. Для этого следует:
1) включить генератор случайных чисел "Randomize". Эта процедура записывается в программе сразу после "begin";
2) выбрать значение для переменной с помощью функции "Random"
а) для дробных чисел из интервала [ X0; X1 ): X:=Random * (X1-X0) + X0;
б) для целых чисел из интервала [ X0; X1 ]: X:=Random(X1-X0) + X0.
3) напечатать полученное число, чтобы знать, что выбрал компьютер: Writeln ('X=', X);
ЗАДАЧА. Когда дядя Петя вышел во двор с ружьем, с 1-ой яблони упало f, а со 2-ой - g соседей. Ввести случайным образом значения для f и g, найти общее количество упавших соседей.
Решение.
Program D_Petya;
const X0=1; {х0 и х1 – границы промежутка случайных чисел }
X1=8;
Var f, g, vsego: integer;
begin
Randomize;
f:=Random(X1-X0)+X0; {стандартные формулы для случайного числа}
g:=Random(X1-X0)+X0;
Writeln ('на 1 яблоне ',f,' соседей');
Writeln ('на 2 яблоне ',g,' соседей');
vsego := f+g;
Writeln ('всего ', vsego ,' соседей');
Readln
end.
CАМОСТОЯТЕЛЬНО. Толя поспорил с Колей, что съест А баночек гуталина, а съел только К баночек. Сколько баночек не смог осилить Толя? (А и К задать случайным образом, А>K).
Д/З. В специальный ящик можно уложить 68 яиц. А если уминать их ногами, то поместится в 100 раз больше. Сколько уминаемых ногами яиц можно уложить в Х таких ящиков? (Х задать случайным образом.)
^ Урок №7 ТИП BOOLEAN.
Переменные типа BOOLEAN могут иметь только 2 значения - "true" ("истина") и "false" ("ложь"). Эти значения переменные могут получать только в операторе присваивания: слева - имя переменной, справа - логическое выражение. Логическое выражение содержит сравнение: x>r+4, a<=5*b и т.п.
ПРИМЕР. Пусть объявлена переменная b: boolean, в теле программы стоит оператор b := x>5; тогда при х=7 b="true"; при х=3 b="false".
ЗАДАЧА 1. Ввести случайным образом двузначное число. Равны ли его цифры?
Решение
Program Figures;
Сonst X0=10; {х0 и х1 – границы промежутка случайных чисел }
x1=99;
Var x, ed, des: integer; {Х-число, ed-цифра единиц и des-
цифра десятков }
Otvet: boolean; {в логической переменной Otvet будет содержаться}
Begin {ответ на вопрос в виде "true" или "false".}
Randomize;
x := Random (X1-X0) + X0;
Writeln ('В числе ', x, ' цифры равны? ');
ed := x mod 10;
des := x div 10;
Otvet := ed = des; {проверка равенства}
Writeln (Otvet); {будет напечатано "true" или "false"}
Readln
end.
ЗАДАЧА 2. Ввести с клавиатуры N кабинета. Есть ли такой в гимназии?
Решение
Program Gym;
Const n=48; {всего 48 кабинетов}
Var Otvet: boolean;
Num: integer;
begin
Write ('Введи номер ');
Readln (Num);
Otvet := Num <= n; {номер меньше или равен последнему?}
Writeln ('Есть такой кабинет? ',Otvet);
Readln
end.
САМОСТОЯТЕЛЬНО.
N1. Ввести с клавиатуры число. Является ли оно положительным?
N2. Задать случайным образом номер дня недели - целое число от 1 до 7. Напечатать, является ли день выходным.
Д/З. Задать с помощью генератора случайных чисел час суток - целое число от 0 до 23. Напечатать, к какой половине дня он относится (до или после полудня).
^ Урок №8 СЛОЖНЫЕ УСЛОВИЯ.
Во многих задачах при решении требуется проверка выполнения сразу нескольних условий. При проверке их записывают в скобках и связывают союзами Not, And и Or.
Союз Not означает "отрицание", для него можно записать таблицу значений:
Условие
Not (условие)
true
false
false
true
Союз And связывает 2 условия и означает, что обязательно должны выполняться оба условия. Таблица истинности для этого союза:
условие 1
условие 2
(условие 1) and (условие 2)
true
true
true
true
false
false
false
true
false
false
false
false
Союз Or связывает 2 условия и означает, что должно выполниться хотя бы одно условие. Таблица истинности для этого союза:
Условие 1
условие 2
(условие 1) or (условие 2)
true
true
true
true
false
true
False
true
true
False
false
false
ЗАДАЧА. Ввести с клавиатуры 2 натуральных числа: d - день и m - месяц. Считая, что в каждом месяце по 30 дней, определить, нет ли ошибки.
Решение.
Program Data;
Const dd=30; {максимальное количество дней}
mm=12; {максимальное количество месяцев}
Var d, m: integer;
Otvet: boolean; {логическая переменная Otvet имеет}
begin {значение "true" при правильно введенной дате}
Write ('Введи день, месяц ');
Readln (d, m);
Otvet := (d<=dd) and (m<=mm); {должны быть выполнены оба условия}
Writeln ('Дата введена верно? ', Otvet);
Readln
end.
ЗАДАЧА. В гимназии уроки труда проходят в 33 и 38 кабинетах. Задать случайным образом N кабинета. Является ли он кабинетом иностранного языка?
Комментарий: введем 4 константы –
) и). Кроме этого, объявим 2 переменные: N - число - номер кабинета и
.
Решение.
Program Kabinet;
Const k1=33; {k1 и k2 - номера кабинетов труда}
k2=38;
x0=1; {х0 и х1 - границы интервала для выбора кабинета}
x1=48; {случайным образом}
Var N: integer;
Otvet: boolean; {логическая переменная Otvet имеет значение}
Begin {"true" при правильно выбранном номере}
Randomize;
N:=Random(X1-X0)+X0;
Write ('Кабинет ', N,' - кабинет труда? ');
Otvet := (N=k1) or (N=k2); {достаточно выполнения одного из условий}
Writeln (Otvet);
Readln
end.
САМОСТОЯТЕЛЬНО (по вариантам)
1. Задать случайным образом N кабинета гимназии. Он на 2 этаже?
2. Ввести с клавиатуры двузначное число. Есть ли в его записи цифра "5"?
3. Ввести с клавиатуры 2 натуральных числа: часы и минуты. Определить, нет ли ошибки.
4. В зрительном зале 30 рядов по 25 мест. Ввести с клавиатуры номер места и ряда. Определить, нет ли ошибки.
5. Поезд составлен из 17 вагонов по 36 мест в каждом. Ввести с клавиатуры номер вагона и места. Определить, нет ли ошибки.
6. Поезд в Варшаву отправляется по вторникам и пятницам. Задать случайным образом номер дня недели. Определить, можно ли уехать в Варшаву в этот день.
Д/З. Задать случайным образом N месяца. Определить, это летний месяц? Это зимний месяц?
^ Урок №9. УСЛОВНЫЙ ОПЕРАТОР IF. ОПЕРАТОРНЫЕ СКОБКИ.
До сих пор при решении задач мы могли напечатать ответ на вопрос задачи в виде "true" или "false". Такой вид ответа далеко не всегда подходит, хочется в случае "true" выдавать одно сообщение, а в случае "false" - другое. Или выполнять разные действия в зависимости от результата проверки какого-либо условия. Для этого служит оператор if. Он позволяет реализовать алгоритм ветвления. Общий вид:
if <условие> then <оператор 1>
else <оператор 2>;
Здесь:
<условие> - это переменная типа boolean или логическое выражение, которое может быть простым или сложным:
<оператор 1> и <оператор 2> - любой оператор (Writeln, Readln, оператор присваивания, if и т.д.) или несколько операторов, заключенных в "операторные скобки".
Ветвь "else" может отсутствовать.
^ Операторными скобками называется пара зарезервированных слов "begin ... еnd". Если по логике решения задачи нужно выполнить серию из нескольких операторов, а Паскаль позволяет ставить только один, то эту серию заключают в операторные скобки.
ЗАДАЧА. На мини-рынке продают молоко и цветы. Задать случайным образом N - номер торгового места - целое число от 1 до 6. Определить, чем торгуют: 1, 3, 5 - молоко, 2, 4, 6 - цветы.
Решение.
Program Rinok;
Const x0=1; {х0 и х1 отвечают за случайный выбор места}
x1=6;
N1=1; {N1, N2 и N3 отвечают за “молоко”}
N2=3;
N3=5;
Var N: integer;
begin
Randomize;
N:=Random(X1-X0)+X0;
Write ('место ', N);
if (N=N1) or (N=N2) or (N=N3)
then Writeln ('-молоко') {если условие верно, то напечатается "молоко"}
else Writeln ('-цветы'); {иначе напечатается "цветы"}
Readln
end.
САМОСТОЯТЕЛЬНО Вовочка, любитель стрелять из рогатки, 7 раз попадал в милицию. Ввести случайным образом число - номер попадания. Определить результат: 4, 6, 7 - милиционеры вставляли новое стекло, 1, 2, 3, 5 - майор лично менял разбитые лампочки.
Д/З В поезде 17 вагонов. С 10 по 17 вагоны купейные, а остальные - плацкартные. Ввести с клавиатуры номер вагона. Напечатать его вид.
^ Урок №10. УСЛОВНЫЙ ОПЕРАТОР IF. РЕШЕНИЕ ЗАДАЧ.
(По вариантам)
№1 Ввести с клавиатуры 2 числа. Напечатать а) большее, б) меньшее.
№2 Ввести с клавиатуры 2 числа. Напечатать их частное или сообщение "Делить на ноль нельзя".
№3 Ввести с клавиатуры значения для Х. Вычислить и напечатать соответствующее значение для Y по правилу:
А) Y=X+5, X<6 Б) Y=X-4, X<=100
Y=X/2, X>=6 Y=X*3, X<+100
№4 (По Г.Остеру). У младенца Кузьки вылезло уже s зубов , а у его бабы Дуси осталось w зубов. Задать с помощью генератора случайных чисел 2 целых числа от 0 до 5 - значения для s и w. У кого зубов больше?
№5 Два числа К и М однажды пришли в такое место, где валялось много всяких разностей и стали искать свою. Ввести с клавиатуры значения для М и
К. Напечатать их разность, вычитая из большего меньшее.
№6 В бублике 1 дырка, в кренделе - 2. На сколько меньше дырок в А бубликах, чем в В кренделях?
№7 Мама завела себе Х кактусов. Когда трехлетняя Маша старательно побрила папиной бритвой Т кактусов, мама не смогла определить каких кактусов больше: гладких или небритых. Помоги ей.
Д/З Одна тетенька произносит К слов в минуту, а другая - С слов. Кто и на сколько больше скажет слов за 3 часа, если они разговаривают одновременно и непрерывно, не слушая друг друга?
Урок №11. ТИП CHAR.
В Паскале есть возможность решения задач с использованием переменных символьного типа. Они объявляются:
Var <имя переменной>: char;
Их значения - это любой символ: буква, цифра, знак. Все символы, которые могут быть значением переменных типа сhar, собраны в таблицу ASCII (как буквы в алфавит). Каждому символу соответствует уникальный код - число от 0 до 255. Таким образом, переменные char можно сравнивать: больше та переменная, чье значение имеет больший код.
Символьные переменные получают свои значения с клавиатуры (оператор Readln) или в операторе присваивания. Присваивание для переменных char может быть записано двумя способами:
а) х:= '*'; б) х:=#65; (65 - код английской буквы 'A')
ЗАДАЧА. Ввести с клавиатуры символ Х. Является ли он большой русской буквой?
Решение.
Program Bukva;
Const b1='А'; {b1 и b2 отвечают за 1 и последнюю русскую}
b2='Я'; {большую букву}
Var х:char; begin
Write ('введи знак ');
Readln (х);
if (х>=b1) аnd (х<=b2) {должны выполняться оба условия }
then Writeln ('Это большая русская буква')
else Writeln ('Ошибка');
Readln
end.
САМОСТОЯТЕЛЬНО. Ввести с клавиатуры символ. Является ли он:
а) маленькой английской буквой?
б) большой английской буквой?
в) цифрой?
^ Д/З. Ввести с клавиатуры символ. Это слэш? (т.е. символ '\' или '/')
Урок 12. Стандартные функции для символьных переменных.
Ф-ция, Тип Тип Комментарии
ее значение аргумента результата
Ord (х)
код символа х char целый Ord ('D') => 68
Chr (х) целый char Chr (100) => 'd'
cимвол кода х
Pred (х) целый целый Pred (132) => 131
предыдущее
значение х char char Pred ('Л') => 'K'
Succ (х) целый целый Succ (132) => 133
следующее
значение х char char Succ ('Л') => 'М'
Задача. Задать случайным образом kod - код символа. Напечатать Symb - сам символ и его соседей Symb_L - слева и Symb_R- справа.
Решение
Program Symbol;
Const x0=0; {x0 и x1 отвечают за случайный выбор кода}
x1=255;
Var Symb, Symb_L, Symb_R: char; kod: integer;
begin
Randomize;
kod := Random(x1-x0)+x0;
Write ('Код=',kod);
Symb := Chr (kod);
Write (' символ: ',Symb);
Symb_L := Pred (Symb);
Write (' слева: ',Symb_L);
Symb_R := Succ (Symb);
Writeln (' справа: ',Symb_r); Readln
end.
Самостоятельно. Ввести с клавиатуры символ-маленькую английскую букву. Напечатать соответствующую ей большую. (Комментарий: маленькие и большие английские буквы имеют коды, отличающиеся на 32: Ord ('F')=Ord ('F')+32.)
Д/З. Задать случайным образом код символа - большой русской буквы. Напечатать соответсвующую ей маленькую букву. (Комментарий: ряд маленьких русских букв в таблице ASII прерывается а...п, р...я. Разность кодов больших и маленьких букв до "n"= 32, после 'р'=80.)
^ Урок 13. Оператор Case.
Оператор Case служит для реализации алгоритма ветвления не по 2-м направлениям, как в if ("then" и "else"), а по многим. Общий вид:
Case <выражение> of
<знач 1>: <оператор1>;
<знач 2>: <оператор2>;
...
<знач n>: <оператор n> Внимание! Перед "else" нет ";"
else <оператор>
end;
Комментарии:
1) <выражение>, проверяемое в Case, должно иметь значение дискретного типа, например, inteder или char;
2) <значение> может записываться разными способами:
а) единичное, например 'а': <оператор>;
или 1234: <оператор>;
б) список, например 'a', 'A', 'я', 'Я': <оператор>; или 3, 45, 127: <оператор>;
в) интервал, границы которого разделяются "..", например 'a'..'я': <оператор>;
или 15..23: <оператор>;
3) <оператор> - любой простой или составной;
4) ветвь "else" может отсуствовать.
ЗАДАЧА Ввести с клавиатуры mon - номер месяца. Напечатать, сколько в нем дней.
Решение.
Program Month;
Const J=1; {январь}
F=2; {февраль}
A=4; {апрель}
In=6; {июнь}
S=9; {сентябрь}
N=11; {ноябрь}
D=12; {декабрь}
Var mon: integer;
begin
Write ('Введи номер месяца ');
Readln (mon);
Case mon of
F: Writeln ('28 или 29 дней');
A, In, S, N: Writeln ('30 дней');
J..D: Writeln ('13 день') {эта строчка будет выполняться
только в том случае, если не были выбраны 2 предыдущие строки}
else Writeln ('Такого месяца нет')
end;
readln
end.
САМОСТОЯТЕЛЬНО: Ввести с клавиатуры номер месяца. Напечатать время года.
^ Д/З Ввести с клавиатуры час суток. Напечатать время суток: утро, день, вечер, ночь.
Урок №14 ОПЕРАТОР CASE: РЕШЕНИЕ ЗАДАЧ
(по вариантам).
1. В шеренге спортсмены стоят по росту. Задать с помощью генератора случайных чисел номер спортсмена - целое число от 1 до 9, определить вид
спорта: 1,2,9 - баскетбол, 3,4,5 - бег, 6,7,8 - штанга.
2. В поликлинике кабинеты распределены так: 1,2,3,17 - окулисты, 4,18,19,20 - хирурги, 5-8 стоматологи, 9-16 - педиатры. Задать с помощью генератора случайных чисел номер кабинета - целое число от 1 до 20, определить специальность врача.
3. С автостанции автобусы отправляются по 16 маршрутам и переезжают через реку по 4-м мостам: 1,2,3,5 - по Южному, 4,6,7,8 - по Центральному, 9,10,11, 12 - по Северному, 13,14,15, 16 - по Окружному. Ввести с клавиатуры номер маршрута. Определить, по какому мосту он пойдет.
4. Задать с помощью генератора случайных чисел номер ряда в кинотеатре - целое число от 1 до 25. Определить сколько стоит билет, если его цена зависит от ряда: 1,2,3, 25- 10 руб, 4,5 - 15 руб, с 6 по 24 - 20 рублей.
5. Один мальчик на перемене 12 раз дергал девочек за косички. Ввести номер косички. Определить, кому она принадлежит: 1,2,3,8 - девочке из 3"а", 4,5,6 - девочке из 3 "б", 7,10, 11, 12 - девочке из 3"в", 9 - завучу Маргарите Багратионовне.
6. Во время сильного дождя на остановке стояло 12 человек. Подкативший автобус забрызгал грязью 4-го, 5-го, 6, 7 и 8-го человека. Остальные попрыгали в колючие кусты, причем 3-ий, 9-ый и 12-ый так и не смогли выбраться из них. Задать номер пассажира, определить:
а) грязный он или исцарапанный; б) едет или сидит в кустах.
7. Во время игры в прятки 1,6,10 мальчики спрятались в бочку из под известки, 2,3,4,5 - в ящик из-под угля, 8 и 9 - бочку из под зеленой краски, 7 - прислонился к свежеокрашеВОПРОСЫ
1. Что такое массив?
2. Чем характеризуется массив?
3. Как объявляется массив?
4. Перечислить основные этапы работы с массивом.
5. Как можно задавать начальные значения элементам массива?
6. В каком случае следует распечатывать начальные значения элементов массива?
7. Как напечатать элементы массива "в столбик"? "В строчку"?
Урок №25 3 этап работы с массивами: решение задач.
На 3-ем этапе возможно решение различных задач. Рассмотрим простейшие из них.
Изменение элементов массива.
Общий вид: For k := 1 to n do
a[k] := <новое значение>;
Пример: увеличить вдвое каждый элемент массива.
For k := 1 to n do
a[k] := a[k] :* 2;
Вычисление суммы элементов.
Общий вид: Summa := 0;
For k := 1 to n do
Summa := Summa + a[k];
Вычисление произведения элементов.
Общий вид: Proizv := 1;
For k := 1 to n do
Proizv := Proizv * a[k];
.^ Нахождение количества элементов по условию.
Общий вид: Kol := 0;
For k := 1 to n do
If <условие для a[k]> then Kol :=Kol + 1;
Пример: найти количество чётных элементов массива.
Kol := 0;
For k := 1 to n do
If a[k] mod 2 := 0 then Kol :=Kol + 1;
Cамостоятельно. Задать случайным образом 10 элементов массива: целые числа из интервала от -5 до 50. Найти:
1) сумму нечётных элементов;
2) произведение элементов, стоящих на чётных местах;
3) количество отрицательных элементов.
Д/З Ввести с клавиатуры 12 элементов числового массива. Все положительные увеличить на 100, все отрицательные обнулить.
^ Урок №26. Решение задач.
В символьном массиве из 6 элементов, заданных с клавиатуры:
1) поменять все маленькие латинские буквы на большие;
2) найти количество запятых;
3) поменять все маленькие русские буквы на большие.
В числовом массиве из 10 элементов, заданных случайным образом от -100 до 500:
1) найти сумму положительных элементов, стоящих на чётных местах;
2) найти произведение элементов массива, кратных 3 и стоящих на нечётных местах;
3) найти количество двузначных чисел в массиве.
Д/З Ввести с клавиатуры 15 элементов символьного массива. Заменить все цифры на «звёздочки», а все «пробелы» на знаки подчёркивания.
^ Урок №27 Нахождение максимального (минимального) элемента в
массиве.
Чтобы найти максимальный элемент в массиве и потом производить с ним какие-либо действия, нужно узнать его номер (индекс). Для этого вначале будем считать максимальным элементом первый, а потом в цикле сравнивать с ним все остальные. Как только встретится элемент, больший максимального, мы запомним этот новый индекс.
Алгоритм можно записать так:
N_max := 1;
For k := 1 to n do
if a[k] > a[N_max] then N_max := k;
После выполнения цикла и выхода из него максимальный элемент – это a[N_max].
Самостоятельно. Задать случайным образом 9 элементов числового массива – дробные числа от 10 до 50. В этом массиве:
Найти минимальный элемент и увеличить его на 100.
Найти максимальный элемент и поменять его местами с первым элементом.
Д/З. Найти минимальный и максимальный элемент в числовом массиве из 10 элементов, заданных с клавиатуры. Поменять их местами.
^ Урок №28. Удаление элементов из массива.
Чтобы
еще рефераты
Еще работы по разное
Реферат по разное
Маркировка товара Пр р.: Определение гарантийности качества товара по штриховому коду. Тип урока
17 Сентября 2013
Реферат по разное
Задачи: Образовательная расширить кругозор учащихся в процессе изучения данной темы, ознакомить с особенностями нумерации, мер веса и длины Древней Руси Развивающая
17 Сентября 2013
Реферат по разное
Тема. «Світ подібний до театру». Стежками життєвої І творчої долі Івана Карпенка-Карого Мета, завдання уроку
17 Сентября 2013
Реферат по разное
Урок по биологии Урок №2 Тема: становление наук о человеке
17 Сентября 2013