Контрольная работа №1. Паскаль.
Данная контрольная работа предполагает знание следующих вопросов:
Структура программы на Pascal
Объявление переменных и типы данных (достаточно: integer и real)
Математические функции и операции в Pascal. Запись сложных математических выражений
Оператор присваивания
Ввод, вывод данных.
Контрольная работа по теме «Введение в программирование на языке Turbo Pascal».
1. Что выполняет данная командаREADLN(dr);
2. Целый тип данных
3. Функция, вычисляющая квадратный корень.
4. Раздел описания переменных начинается со слова _______
5.D:=SQR(4); Чему равно значение переменной D?
6. Какая программа выдаст ошибку выполнения? (предполагается, что числа s, f, a лежат в интервале от -1000 до 1000, а≠0)
(a) Var s, f, a: integer; BeginS:=f/a; End. | (b) Var s, f, a: integer; BeginS:=f+a; End. | (c) Var s, f, a: integer; BeginS:=f-a; End. | (d) Var s, f, a: integer; BeginS:=f*a; End. |
7. Чему равно значение переменной d?
d:= 14 mod 3
8. Запишите формулу, используя функции и математические операции языка Паскаль.
9. Чему равно значение переменной s
D:= 12 div 5
s:= D+9
10. Чем заканчивается любая программа, записанная на языке Паскаль
11. С помощью какой команды можно вывести значение переменной G на экран дисплея?
12. С какого слова начинается тело программы, т.е. набор команд, которые выполняются при запуске программы?
13. Какое имя переменной верно с точки зрения синтаксиса Паскаль?
a) 1fhgr c) !gjtuy
b) 1_fhgt d) gfr_1
14. Напишите программу, вычисляющую среднее арифметическое 3-х введенных с клавиатуры чисел.
15. Вещественный тип данных.
16.С:=sqrt(d);Какого типа должна быть переменная С для данного выражения?
17. Как называется оператор:=?
18. Как читается данная запись?
F:=125;
19. Запишите команду, позволяющую вывести на экран надпись, используя переменную В.
«Значение переменной В= 127»
B:=127;
…………………
20. Запишите формулу в нормальном виде
SQRT(SQR(x)+100)/(a-b)*c
21. Указать значения величин A и B после выполнения следующих операторов присваивания.
A:=5.8;
B:=-7.9;
B:=A;
A:=B;
Цикл с предусловием. Цикл WHILE в Паскале
Ноябрь 9th, 2014Andrey K
(нет оценки)
Как мы уже говорили, в паскале существуют 3 способа организации цикла (типа):
1)Цикл со счетчиком
2) Цикл с постусловием
3) Цикл с предусловием
Цикл В данной статье рассмотрим второй тип цикла — цикл с предусловием(цикл WHILE). Если цикл со счетчиком мы используем в случаях, когда необходимо организовать цикл с известным числом повторений, то цикл с предусловием используется, когда число повторений неизвестно.
WHILE условие DO действие; // тело цикла
Тело цикла выполняется пока условие ИСТИННО.
Если в теле цикла действий несколько — используются операторные скобкиbegin … end;
WHILE условие do
begin
действие_1;
действие_2;
действие_3;
...
end;
Рассмотрим пример, аналогичный рассмотренному в теме «Цикл со счетчиком», но реализуем его с помощью циклаWHILE.
Требуется на экране вывести:
Привет
Привет
Привет
Привет
Для реализации данного примера с помощью цикла с предусловием нам потребуется переменнаяn:
WHILE nПривет');
Данный цикл будет выполнять командуwriteln(‘Привет’)бесконечное число раз. Почему? Потому что переменнаяnне изменяется и всегда будет меньше 4. Поэтому необходимо в цикле добавить код, изменяющий переменную n. Например:n:=n+1.
WHILE n
begin
writeln('Привет');
n:=n+1;
end;
Теперь переменнаяnбудет изменяться с каждым выполнением команд тела цикла (с каждой итерацией).
Нужно запомнить: чтобы не произошло зацикливание в циклеWHILE— необходимо проследить за тем, чтобы переменная из условия изменялась в теле цикла. В цикле со счетчиком такого не случится (зацикливание), т.к. мы указываем точное число итераций.
Рассмотрим несколько задач, где число повторений в цикле явно не известно.
Задача 1.
Считать сумму введенных с клавиатуры чисел до тех пор, пока не будет введен ноль.
Решение.
Решение данной задачи основывается на использовании цикла WHILE, т.к. мы не знаем, когда будет введен ноль и мы перестанем вводить числа.
var a,s:integer;
begin
s:=0;
writeln('Введите число');
readln(a);
while(a0) do begin
s:=s+a; //подсчет суммы S
writeln('Введите число');
readln(a);
end;
writeln(s);
end.
Зачем два раза используем ввод числа а (readln(a);)? Первый раз вводим число а для того, чтобы войти в цикл с некоторым значением переменной a, которое будет использоваться в условии цикла WHILE. Второй раз команда readln(a) используется внутри цикла — вводим числа до тех пор, пока не введем ноль.
Задача 2.
Даны два отрезка А и B (AB). Не используя операции умножения и деления, определить, сколько отрезков В уместится в отрезке А.
Решение.
Рассмотрим изображение:
Информатика в школе. Цикл WHILE
Т.е. из рисунка видно, что нам нужно складывать длины отрезкаAдо тех пор, пока сумма не станет больше длины отрезкаВ. В этом нам поможет цикл с предусловием — циклwhile.
var a,b,s,k:integer;
begin
writeln('Введите длину отрезка А');
readln(a);
writeln('Введите длину отрезка B');
readln(b);
k:=0;
S:=a;
while s
k:=k+1; //переменная k считает количество выполнения тела цикла
s:=s+a; //суммирует длину отрезка А
end;
writeln('В отрезке В содержится ',k,' отрезков А');
end.
Рассмотрим работу программы на примере:А=5,В=21. Рассуждения запишем в таблицу:
Информатика в школе. Цикл WHILE
Задача 3.
Используя алгоритм Евклида, найти НОД двух чисел.
Решение.
Рассмотрим блок-схему алгоритма Евклида:
Алгоритм Евклида
Запишем данной алгоритм с помощью Паскаля, опираясь на данную блок-схему. Как видим, у нас имеется цикл с предусловием(MN). Внутри цикла еще одно условие(MN), т.е. операторIF… THEN.
var M, N: integer;
begin
writeln('Введите М и N');
readln(M, N);
while MN do
begin
if MN
then M:=M-N
else N:=N-M
end;
write('Н0Д = ',М)
end.
Read more:http://krivaksin.ru/tsikl-s-predusloviem-tsikl-while-v-paskale/#ixzz3PcnKG4rO
Цикл со счетчиком в Паскале
Май 28th, 2014Andrey K
(1голос, значение:5,00 из 5)
Цикл — это набор команд, которые многократно выполняются до тех пор, пока выполняется (или не выполняется) некоторое условие.
В паскале существуют 3 способа организации цикла (типа):
1)Цикл со счетчиком
2) Цикл с постусловием
3) Цикл с предусловием
Рассмотрим первый тип — цикл со счетчиком.
Данный тип используется в случаях, когда известно количество повторений (итераций) в цикле. В Паскале цикл со счетчиком выглядит так:
FOR i:=a to b DO
действия; //тело цикла
гдеi— переменная-счетчик;a— начальное значение переменной i;b— конечное значение переменной i.
Набор команд, которые выполняются в цикле называюттелом цикла.
Пример:
FOR i:=1 to 4 DO
writeln('Привет'); //тело цикла
Переменная i изменяется от 1 до 4 (с шагом 1). Пока i будет изменятся — будет выполняться команда writeln(‘Привет’).
На экране мы увидим:
Привет
Привет
Привет
Привет
Количество повторений в цикле со счетчиком можно по формуле(b-a)+1. (В нашем случае: (4-1)+1 = 4. Все верно!)
Если цикл будет выглядеть так:
FOR i:=102 to 105 DO
writeln('Привет'); //тело цикла
Мы увидим тот же результат, что и в предыдущем примере. Убедимся, используя формулу: (105-102)+1 = 4. Цикл выполнится 4 раза.
Вопрос! Что мы увидим после выполнения следующего кода программы?
FOR i:=1 to 4 DO
writeln('Привет');
writeln('Пока');
Кто-то скажет:
Привет
Пока
Привет
Пока
и т.д.
НЕТ! На экране мы увидим следующее:
Привет
Привет
Привет
Привет
Пока
В цикле будет выполнятся только одно действие writeln(‘Привет’). только оно относится к телу цикла. Команда writeln(‘Пока’) — вне тела цикла.
Как сделать так, чтобы обе команды входили в тело цикла?
Необходимо использовать ОПЕРАТОРНЫЕ СКОБКИ!
BEGIN
……..
END;
Получим:
FOR i:=1 to 4 DO BEGIN
writeln('Привет');
writeln('Пока');
end;
Теперь тело цикла состоит из двух команд.
Рассмотрим несколько классических примеров использования цикла со счетчиком.
Задача 1.
Посчитать сумму чисел от 1 до 100. (1+2+3+…+100) (не используя формулу суммы членов арифметической прогрессии)
Задача, как вы уже поняли, решается с помощью цикла со счетчиком. Мы можем изменять переменную-счетчик в цикле от 1 до 100. Это даст нам ряд чисел, которые нужно сложить:
FOR i:=1 to 100 DO
………………………
Объявим дополнительно переменную S. В эту переменную будем записывать сумму на каждом шаге цикла. До выполнения цикла S=0.
Рассмотрим табличку:
i | S=0 |
1 | 0+1=1 |
2 | 1+2=3 |
3 | 3+3=6 |
4 | 6+4=10 |
5 | 10+5=15 |
6 | 15+6=21 |
На каждом шаге цикла переменная S будет изменяться с прибавлением текущего значения переменной i
S:=S+i
(Новое значение S:= текущее значение S + текущее значение i)
Программа будет иметь вид:
var i,S: integer;
begin
for i:=1 to 100 DO
S:=S+i;
writeln('Сумма чисел от 1 до 100 равна ', s);
end.
Задача 2.
Посчитать сумму пяти введенных с клавиатуры чисел
Результат представить в виде:
Введите 1-е число 5 Введите 2-е число 6 Введите 3-е число 7 Введите 4-е число 10 Введите 5-е число 10 Сумма равна 38 |
Начнем наши рассуждения.
Нам необходимо ввести 5 чисел, следовательно можем использовать цикл со счетчиком
FOR i:=1 TO 5 DO
………………….
Что же должно выполняться в цикле?
1) Вывод на экран диалогового сообщения для пользователя («Введите 1-е число и т.д.)
2) Ввод числа а
3) Сложение числа а к некоторой переменной S (аналогично Задаче 1)
Получим:
var i,a,S: integer;
begin
for i:=1 to 5 DO BEGIN
writeln('Введите ',i,' -е число');
readln(a);
S:=S+a;
end;
writeln('Сумма равна ', s);
end.
(красным цветом выделено тело цикла)
Задача 3.
Найти сумму нечетных чисел от 1 до 1000.
Задача аналогичназадаче 1. Отличие в том, что на числа накладывается условие: числа должны быть нечетными.
Определить четность можно, используя оператор MOD — остаток от деления.
Организуем цикл:
FOR i:=1 to 1000 DO
if i mod 20 then S:=S+i;
writeln(S);
end;
.......
Таким образом к переменной S будут прибавляться только те i, которые удовлетворяют условию.
В дополнение:
если бы условие было сложным, например: найти сумму нечетных чисел и чисел, которые делятся на 10 — мы бы использовали запись:
FOR i:=1 to 1000 DO
if (i mod 20) OR (i mod 10=0) then S:=S+i
Т.е. помимо нечетных чисел в сумме будут участвовать числа, которые делятся на 10 (использовали OR для объединения двух множеств).
Read more:http://krivaksin.ru/tsikl-so-schetchikom-v-paskale/#ixzz3Pcndt637