Методическое пособие для 9 классов Составители
Вид материала | Методическое пособие |
- И. В. Бернгардт литературно музыкальная гостиная учебно-методическое пособие, 582.04kb.
- Г. В. Плеханова английский язык учебно-методическое пособие, 1565.3kb.
- Методическое пособие для студентов экономических специальностей Составители, 382.29kb.
- Л. А. Элективный курс «Обратные тригонометрические функции» для учащихся 10-11-х профильных, 49.84kb.
- Методическое пособие для учителей, психологов, воспитателей общеобразовательных учреждений, 2321.32kb.
- В. А. Жернов апитерапия учебно-методическое пособие, 443.6kb.
- Учебно-методическое пособие Тамбов 2002 г. Авторы составители: Иванова О. Г., Орлов, 818.24kb.
- Методическое пособие для специалистов в области психиатрии по организации инновационных, 3405.04kb.
- Методическое пособие для практических занятий красноярск 2002, 894.08kb.
- Учебно-методическое пособие минск Белмапо 2006, 314.28kb.
Логический тип
Значения логического типа boolean занимают 1 байт и принимают одно из двух значений, задаваемых предопределенными константами True (истина) и False (ложь). Логический тип является порядковым.
В частности, False
Логические операции
К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean.
Выражения с and и or вычисляются по "короткой схеме":
в выражении x and y если x ложно, то все выражение ложно, и y не вычисляется;
в выражении x or y если x истинно, то все выражение истинно, и y не вычисляется.
Примеры логических выражений:
(x>=0)and(x<=10); (ch='y')or(ch='Y');
(x=5)or(y=1);
(x+1>0)and(x+1<10) or (y>0)and(y<2);.
Поскольку в Паскале приоритеты операций and и or выше приоритета операций сравнения (равно, больше, больше или равно и т. д.), то использование скобок в данных выражениях является обязательным.
1.2.3. Циклический алгоритм
Структура цикл обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла.
Основные разновидности циклов представлены в таблице:
Школьный алгоритмический | Язык блок-схем язык | Язык программирования Pascal | |
Циклы с условием
Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова пока | |||
нц пока (условие) тело цикла (последовательность действий) кц | | Циклы с условием обычно используются в тех случаях, когда число повторений заранее неизвестно. Нужно повторять действия еще раз либо цикл должен быть завершен, определяется условием. Если условие проверяется перед выполнением действий тела цикла, то такой цикл называют циклом с предусловием или циклом «пока» («повторять пока истинно условие»). В Pascal он выглядит следующим образом: while условие do оператор; | |
Пример: | нц пока i <= 5 S:= S+A[i] i:= i+1 кц | Пример: while a > 10 do a := sqrt(a); | Такая запись обозначает: пока значение переменной a превосходит 10, из него следует извлекать квадратный корень. Предположим, что до начала цикла переменная имела значение 10000. Поскольку 10000 > 10, из него будет извлечен корень; переменная получит значение 100. С этим значением вновь проверяется условие повторения. 100 больше 10, поэтому квадратный корень извлекается еще раз; переменная получает значение 10. Опять проверяется условие, но на этот раз 10 не больше 10, значит цикл будет завершен, и компьютер перейдет к исполнению следующего оператора. |
Школьный алгоритмический язык | Язык блок-схем | Язык программирования Pascal |
| ||
последовательность действий нц пока (условие (ЛВ - логическое выражение)) кц | | Другой тип цикла с условием — цикл с постусловием, в котором проверка условия происходит после выполнения операторов тела цикла. Действия повторяются до того момента, когда условие станет истинным. Тело цикла выполняется хотя бы 1 раз. В Pascal он записывается следующим образом: repeat операторы until условие; |
Пример: repeat write('Введите положительное число:'); readln(x); until x > 0; | Этот фрагмент программы осуществляет ввод исходных данных с проверкой их корректности. Запрос будет повторяться до тех пор, пока пользователь не введет значение, удовлетворяющее поставленному условию (в данном случае — положительное). |
Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне. | |||
Школьный алгоритмический язык | Язык блок-схем | Язык программирования Pascal | |
нц для i от i1(начальное) до i2(конечное значение) тело цикла (последовательность действий) кц | | В тех случаях, когда количество посторенний известно заранее (до начала цикла), обычно бывает удобнее использовать цикл с параметром. Он выполняется следующим образом: переменная-параметр (её также называют счетчиком) принимает последовательные значения в заданных пределах и при каждом из них выполняются операторы тела цикла. В Pascal оператор цикла с параметром выглядит следующим образом: | |
Пример: нц для i от 1 до 5 X[i] := i*i*i Y[i] := X[i]/2 кц | | for параметр:= начальное to конечное do оператор; либо For i := 1 to N do тело цикла ; | В таком случае параметр будет увеличиваться на величину шага Величина шага 1 |
for параметр := начальное downto конечное do оператор; либо For i := N downto 1 do тело цикла ; | Если необходимо, чтобы значения параметра убывали, оператор немного изменяется. Do меняется на downto; Величина шага – 1 | ||
Параметр цикла При составлении программ с использованием циклов с параметром необходимо помнить следующее:
Параметры циклов в процедурах и функциях должны быть локальными переменными. | Пример 1: for i := 1 to 20 do writeln(i:3, i*i*i:5); | При выполнении этого фрагмента программы переменная i примет поочередно все значения от 1 до 20, при каждом из них на экран на отдельной строке (writeln) будет выводиться само это значение и его куб. В результате получится таблица кубов первых двадцати натуральных чисел. Чтобы значения выводились ровными колонками, в процедуре вывода указан формат (на значение переменной i отведено 3 позиции, для куба — 5). | |
Пример 2: for c := 'z' downto 'a' do write(c); | Этот фрагмент программы выведет на экран английский алфавит в обратном порядке —от «z» до «a»:zyxwvutsrqponmlkjihgfedcba |
Примеры программ циклической структуры:
|
|
|
Пример программы №7 Написать программу, которая вычисляет наибольший общий делитель двух целых чисел Program Z_7; var n1,n2,: integer; {числа НОД которых надо найти} nod: integer; {наибольший общий делитель} r: integer; {остаток от деления n1 на n2} begin write ('n1='); readln (n1); write ('n2='); readln (n2); while (n1 mod n2) < > 0 do begin r:=n1 mod n2; {остаток от деления} n1:=n2; n2:=r; end; nod:=n2; writeln (‘nod=’, ‘ чисел’, ‘ ’ ,n1, ,n2, ‘это’, nod); Readln; End. | Пример программы №8 Написать программу, которая вычисляет сумму и среднее арифметическое последовательности положительных чисел, которые вводятся с клавиатуры Program Z_8; var а: integer; {число введенное с клавиатуры} n: integer; {количество чисел} s: integer; {сумма чисел } m: real; {среднее арифметическое} begin s:=0; n:=0; repeat write ('введите числа'); readln (a); {после ввода последнего числа введите 0} s:=s+a; n:=n+1; until a<=0; n:=n-1; writeln (‘Введено чисел:’,n); writeln (‘Cумма чисел=’,s); m:=s/n; writeln (‘Среднее арифметическое:’, ‘ ’ ,m:6:2); {Для завершения работы программы нажмите enter!} Readln; End. | Пример программы №9 Написать программу, которая запрашивает имя пользователя и повторяет его на экране указанное число раз Program Z_9; var i,n:integer; a: string; begin Writeln (‘Введите имя');readln(a); Write('n='); readln(n); {введите кол-во повторов} for i:=1 to n do Writeln(' ', a); readln; end. |
Пример программы №10 | Вычислить сумму натурального ряда чисел от 1 до N. Решение: программа состоит из трех частей, в которых повторяется решение этой задачи с использованием операторов цикла While, Repeat, For. |
program C_PR_28; | |
var | |
a,N,Summa: integer; | |
begin | |
writeln ('N'); readln (N); | |
a:=1; summa:=0; | |
while a<=N do | Цикл - While |
begin | |
summa:=Summa+a; | |
a:=a+1 | |
end; | |
writeln ('S1=', summa); readln; | |
a:=1; summa:=0; | |
repeat | Цикл - Repeat |
Summa:=summa+a; | |
a:=a+1 | |
until a>N; | |
writeln ('S2=', summa); readln; | |
summa:=0; for a:=1 to N do summa:=summa+a; writeln ('S3=', summa); readln; end. | Цикл - For. |
Очевидно, что все три результата будут одинаковыми. | |
|
Самостоятельная работа № 3 по теме: «Составление алгоритмов циклических структур» Задание: «Представить решения задач в соответствии с обобщенной схемой алгоритма обработки данных»
| |
1.3. Массивы
Существует большое число задач, требующих много однотипных переменных. Например, присвоить переменным значения среднесуточных температур в течение года. Работать с таким количеством переменных очень трудно: процесс описания, присваивания, способы обработки переменных и т.д.
МАССИВ - это упорядоченный по номерам набор значений, объединенных общим типом и именем. Упорядоченность в том, что элементы массива располагаются в последовательных, пронумерованных ячейках памяти. Массив имеет фиксированные: имя, тип и количество значений. Массиву выделяется место в памяти.
Элементы массива - это переменные с индексами. Индексы можно вычислять. ОПРЕДЕЛЕНИЕ МАССИВА - массивы, как и простые переменные, подлежат описанию в разделе переменных: VAR <имя>: ARRAY[ array (эррэй) - массив. of (оф) - из. Тип индексов - целый . Индексы можно вычислять. Тип элементов - любой для данной версии языка. [min..max] - размер массива. min - нижняя, max –верхняя границы индексов. min<=max. Границы можно задать с помощью переменных. Можно задавать постоянный массив: const x: array [1..10] of integer=(4,6,3,5,2,1,7,8,9,13); const x: array [1..8] of char=('a','b','c','d','e','f','g','h'); Элементы таких массивов являются константами. Если массивы одинаковы и отличаются лишь именами, то их можно описать в одной строке: var a,b,c :array[1..n] of real; , где n -верхняя граница индекса и n описывается в разделе констант. ВИДЫ МАССИВОВ : Одномерные - ряд элементов. B[5] - 5-ый элемент массива. Двумерные - таблицы. B[3,5] - элемент таблицы B ,стоящий в 3 строке и в 5 столбце. Многомерные - ряд таблиц (изучаются в Вузе). ЗАПОЛНЕНИЕ МАССИВА: 1. С помощью CONST. 2. С помощью READ и циклической конструкции. 3. Часто требуется обнуление ячеек массива. For I:=1 to n do A[I]:=0; 4. Для отладки программ и для программирования игр, тестов применяют заполнение массива случайными числами. randomize; For I:=1 to n do A[I]:=random(q-p+1)+p; qp 5. Присваивание значений. A[1]:=7; A[2]:=77; A[3}:=33; и т. д. Способы задания и заполнения массивов в задаче Пример программы№11: Заполнить и вывести на экран одномерный массив целых чисел. Массив оценок учащихся 5 А класса
| |||||||||||||||||||||||||||
Пример программы №12. Вычислить сумму элементов числового массива A = (a1 , a2 , ... , aN ). | |||||||||||||||||||||||||||
Школьный алгоритмический язык | Язык блок-схем | Язык программирования Pascal | |||||||||||||||||||||||||
алг Сумма (арг цел N, арг вещ таб A[1:N], рез вещ S) дано N>0 нач цел i S:=0 нц для i от 1 до N S := S + A[i] кц кон Тест
Исполнение алгоритма
| | Program Summa; Var A Array [1..20] of Real; i, N : Integer; S : Real; BEGIN Write('Введите N = '); ReadLn(N); {ввод значения N} For i := 1 to N dо {цикл по элементам массива} begin Write('A [ ', i , ' ] = '); ReadLn(A[i]) {ввод элементов массива} end; S := 0; {присваивание начального значения} For i := 1 to N do S := S+A[i]; {суммирование} WriteLn; WriteLn('Сумма равна ', S : 5 : 1); ReadLn; END. Результаты работы Pascal-программы Введите N = 5 A[1] = 3 A[2] = 5 A[3] = -2 A[4] = 6 A[5] = 3 Сумма равна 15.0 | |||||||||||||||||||||||||
Пример программы №13. Найти наибольший элемент числового массива A = (a1, a2 , ..., aN ) и его номер. | |||||||||||||||||||||||||||
Школьный алгоритмический язык | Язык блок-схем | Язык программирования Pascal | |||||||||||||||||||||||||
алг МаксЭлемент (арг цел N, арг вещ таб A[1:N], рез вещ Amax, рез цел k) нач цел i Amax := A[1]; k := 1 нц для i от 2 до N если A[i] > Amax то Amax:=A[i]; k := i все кц кон Тест Тест
Исполнение алгоритма
| | Program MaxElem; Var A Array [1..20] of Real; i, N : Integer; k : Integer; Amax : Real; BEGIN Write('Введите N = '); ReadLn(N); For i := 1 to N do {Ввод значений элементов массива А} begin Write('A [ ', i, ' ] = '); ReadLn(A[i]) end; Amax := A[1]; k:=1; {Поиск максимального элемента} For i := 2 to N do If A[i] > Amax then begin Amax := A[i]; k := i; end; WriteLn; WriteLn('Наибольший элемент' , k , '-й'); WriteLn('Его значение ', Amax : 5 : 1); ReadLn END. |
Пример программы №14. В баскетбольную команду могут быть приняты ученики, рост которых превышает 170 см. Составьте список кандидатов в команду из учеников класса. | ||||||||||||||||||||||||||||||||||
Система тестов
алг Баскетбол (арг цел N, арг лит таб Фам[1:N], арг вещ таб Рост[1:N], рез лит таб Канд [1:N] ) нач цел i, k k:=0 нц для i от 1 до N | запись фамилий кандидатов в таблицу Канд если Рост[i]>170 то k:=k+1; Канд [k] := Фам [i] все кц если k=0 то вывод "В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ." иначе нц для i от 1 до k вывод Канд [i] кц все кон Исполнение алгоритма
| Program BascetBall; Var SurName : Array [1..30] of String; { фамилии учеников } Height : Array [1..30] of Real; { рост учеников } Cand : Array [1..30] of String; { фамилии кандидатов } NPupil, i, K : Integer; { NPupil - число учеников, K - количество зачисленных} Write('В КОМАНДУ ЗАЧИСЛЯЮТСЯ УЧЕНИКИ, '); WriteLn('РОСТ КОТОРЫХ ПРЕВЫШАЕТ 170 СМ.'); WriteLn; Write('Сколько всего учеников ? '); ReadLn(NPupil); WriteLn('Введите фамилии и рост учеников :'); For i := 1 to NPupil do begin Write(i, '. Фамилия - '); ReadLn(SurName[i]); Write(' Рост - '); ReadLn(Height[i]); end; WriteLn; K:=0; { Составление списка команды } For i := 1 to NPupil do If Height[i]>170 then begin K:=K+1; Cand[K] := SurName[i] end; If K=0 then WriteLn('В КЛАССЕ НЕТ КАНДИДАТОВ В КОМАНДУ.') else begin WriteLn('КАНДИДАТЫ В БАСКЕТБОЛЬНУЮ КОМАНДУ :'); For i := 1 to K do WriteLn( i, '. ' , Cand[i]); end; ReadLn END. |
| | | | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Пример программы №15. Примеры задач ГИА-2012. В таблице DAT хранятся данные измерений суточной температуры за неделю в градусах (Dat[1]) – данные за понедельник, Dat[2] – данные за вторник и т.д.). Определите, что будет напечатано в результате выполнения следующего алгоритма. | |||||||||||||||||||||||||||||||||||||
Школьный алгоритмический язык | Язык блок-схем | Язык программирования Pascal | |||||||||||||||||||||||||||||||||||
Исполнение алгоритма
| | Program GIA_9_1; var k,m,day:integer; Dat: array [1..7] of integer; begin Dat[1]:=7; Dat[2]:=9; Dat[3]:=10; Dat[4]:=8; Dat[5]:=6; Dat[6]:=7; Dat[7]:=10; Day:=1; m:=Dat[1]; for k:=2 to 7 do if Dat[k]>m then begin m:=Dat[k]; day:=k; end; write('day=',day); readln; end. |
Самостоятельная работа № 4 по теме: «Составление алгоритмов обработки числовых последовательностей (массивов)» Задание: «Представить решения задач в соответствии с обобщенной схемой алгоритма обработки данных» !Инструкция для учащегося! В задачах, имеющих четные номера, значения массива вводятся с клавиатуры. В задачах, имеющих нечетные номера, значения массива вводятся с помощью оператора присваивания.
|
Классификация типов данных Целочисленный тип данных
Вещественные типы данных различаются диапазоном и точностью значений
| Символьные величины
Строковые величины
Логические (булевские) величины
|