Copyright 2024 - Custom text here

Чайник

Содержание материала

Чайниками принято называть тех, кто не обладает знаниями в какой либо области и для них понятным и доступным языком объясняются, может быть, даже сложные понятия. Главное - это желание  разобраться и терпение, чтобы не бросить. Ну что же, встаем на увлекательную дорогу программирования, а я постараюсь, чтобы на ней было интересно и понятно. В  путь!

 

 Модуль1.  Простые задачи на линейный алгоритм

Задача: Z1.0 Ввести с клавиатуры скорость катера v и скорость течения vt. Какой путь S пройдет катер по течению за t=2 часа?

 Program Z;
 Const t=2;                                                                    { объявляется константа t=2}
 var v,vt,vp,s: integer;                                                     
 begin                                                                             
 Write ('Введи v катера и v течения ');
 Readln (v, vt);
 vp:=v+vt;                                                                    {находим скорость по течению}
 s:=t*vp;                                                                      {находим расстояние по течению}
 Writeln ('Расстояние по теч.=',s);                                  {печать результата}
 end.

 Измени программу, чтобы время в пути – переменная, а катер плыл против течения.

Предложение от Андрея Вожегова: Известно расстояние, скорость катера и скорость течения. Найти время в пути в часах и минутах

 1.      Разминка

 Z1.1 В магазине предлагают конфеты по N рублей за килограмм. Сколько кг и гр можно купить на M рублей?  Оформить программу, M, N ввести с клавиатуры.

 Z1.2. Пожарных учат надевать штаны за 23 секунды. Ввести с клавиатуры время в минутах. Напечатать, сколько штанов успеет надеть хорошо обученный пожарный за это время (целое число: штаны - штучная вещь!).

 Z1.3 Написать программу, которая меняет местами значения двух переменных a и b, введенных с клавиатуры. Комментарий: чтобы решить эту задачу, используем следующий алгоритм:

 1) объявим в программе третью переменную Х;
 2) запомним в новой переменной Х значение А;
 3) скопируем в А значение из В;
 4) скопируем в В число из Х (исходное значение А).

 Решение - найди ошибку и исправь

 Program Change;
 Var a,b,x: integer;
 begin
 Write ('Введи А и В ');
 Readln (a, b);
   x:=a;                                                  
   a:=b;                                                  
   b:=a;                                                  
 Writeln('a=', a, '  b=', b);                    
 end.

 Z1.4 Что делает эта программа? Оформите программу понятным вводом и выводом.
Program pr;
 var
  a, b, c, d: longint;
 begin
  readln(a);
  b := a; c := a; d := a;
  b := a div 3600;
  c := (a mod 3600) div 60;
  d := a mod 60;
  writeln('',b, ':',c,':',d);
end.

Z1.5 За день машина проезжает n километров. Сколько дней нужно, чтобы проехать маршрут длиной m километров?


 2.      Функции Pascal

 Прочитать стр. 6-9 учебника. Обратить внимание  на функцию квадратного корня.

Z1.6  Ввести с клавиатуры длины катетов треугольника. Найти гипотенузу по теореме Пифагора.

 3.      Случайные числа.

 Иногда  при  решении  задач  удобно  не задавать значения переменным с клавиатуры,  а  вводить  их  случайным  образом:  пусть  число выбирает сам компьютер. Для этого следует:

 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;
 const            x0=1;                         {х0 и х1 – границы интервала случайных чисел }
 x1=10;
 Var f, g, v: integer;
 begin
 Randomize;
 f:=Random(x1-x0)+x0;             {стандартные формулы для случайного числа}
 g:=Random(x1-x0)+x0;
 Writeln ('на 1 яблоне ',f,' соседей');
 Writeln ('на 2 яблоне ',g,' соседей');
 v := f+g;
 Writeln ('всего ', v ,' соседей');
 end.

 
 Z1.7 Петя получил по математике  оценку m, а Вася n. Напечатать полученные оценки.Интересно, а пятерки они когда-нибудь получают?

 Z1.8 Общая тетрадь стоит m р., а блокнот на n р. меньше. Сколько стоят общая тетрадь и блокнот вместе? m и n задать случайным образом.


4.      Данные символьного типа

 До этого мы работали только с числовыми переменными. Данные типа CHAR(1 символ)  и STRING(256 символов) позволяют представлять в программах тексты и производить над ними некоторые операции, например, вставлять и удалять отдельные буквы и слова и т.д.

 Тип STRING

 Program Name;
 Var c : string;
 Begin
 WriteLn( 'Как тебя зовут' );
 ReadLn( c );
 WriteLn( 'Давай дружить,', c,'!' );
 end.

 Z1.9 Программа спрашивает имя и год рождения. Обращаясь по имени, выводит количество лет.

 Z1.10 Программа спрашивает: Как вас зовут? Как зовут вашего друга? Выводит   Имя1+Имя2=ДРУЖБА

 Тип CHAR

 Все символы, которые могут быть значением переменных типа сhar, собраны в таблицу ASCII (как буквы в алфавит). Каждому символу соответствует уникальный код - число от 0 до 255

 Символы имеют коды от 0 до 255.

 ORD(w) - возвращает код символа w.

 CHR(i) - определяет символ с кодом i.

ЗАДАЧА. Ввести с клавиатуры символ . Напечатать его код

 Решение.

 Program simvol;
 Var x:char;
 begin
 Write ('введи символ ');
 Readln (x);
Writeln ('символ - ',x,' код-',ord(x))
end.

 Проведи эксперименты с программой и узнай коды чисел, русских букв.


Модуль 2. Алгоритмы с проверкой условия (ветвление)

Что делает эта программа?
program m;
    var a, b, m: integer;
    begin
   writeln('Введите два целых числа');
   read ( a, b );
   if a > b then begin
    m:=a; 
   end
   else begin
    m:=b;
   end;
   writeln ( m);
    end.

 Прочитать стр. 14-17 Задачи:

 Z2.1  Определить является ли введенное с клавиатуры число четным (вспомнить функцию mod).

 Z2.2 Одна тетенька произносит К слов в минуту, а другая - С слов. Кто и на сколько больше скажет слов за 3 часа, если они разговаривают одновременно и непрерывно, не слушая друг друга?

 Z2.3 Найти наибольшее из трех введенных с клавиатуры чисел
В программе использовать только два IF и дополнительную переменную max
(Алгоритм: сравниваются два первых числа, после определения максимального из них, запоминаем максимальное в дополнительной переменной max, сравнивается max и третье число и определяется максимальное значение. Значение максимального и есть искомый максимум). Посмотрите решение
Z2.4 Программа-шутка. Написать программу, в результате выполнения которой происходит такой диалог:
Не волнуйтесь, Ваше имя?
Хорошо, Имя! Можно, ли делить на ноль?
Если ответ ДА, то сообщение - Имя, Вам необходимо повторить математику!
Если ответ НЕТ, то сообщение - Имя, молодец!

Z2.5 Задать 3 числа. Найти среди них такое, которое меньше наибольшего, но больше наименьшего

Сложные условия.

Во многих задачах при решении требуется проверка выполнения сразу нескольких условий. При проверке их записывают в скобках и связывают союзами Not, And и Or.Например: (a < b) and (b < c); (a < c) or (b < c) and (b < a);Порядок выполнения : выражения в скобках  - Not - and - or.

Задача. Ввести с клавиатуры 2 натуральных числа: d - день и m - месяц.  определить, нет ли ошибки при вводе.
Решение.
Program Data;
Const dd=30;    {максимальное количество дней}
mm=12;    {максимальное количество месяцев}
Var d, m: integer;
begin   
Write ('Введи день, месяц ');
Readln (d, m);
if(d<=dd) and (m<=mm) then     {должны быть выполнены оба условия}
Writeln ('Дата введена верно ')
else Writeln ('Дата введена неверно ');
end.

Z2.6 Ввести возраст человека (от 1 до 100 лет) и вывести его вместе с последующим словом «год», «года» или «лет».
Z2.7 Ввести с клавиатуры 3 натуральных числа: часы, минуты и секунды  Определить, нет ли ошибки



Модуль 3. Повторение действий (циклы)

Как организовать повторение действий?
Проведи эксперимент с программой
задача: Вывести на экран квадраты натуральных чисел от 10 до 20.
PROGRAM N1;
VAR  i: integer; {счетчик цикла}
        a: integer;
BEGIN
      FOR i:=10 TO 20 DO
         BEGIN
              a:=i*i;
              writeln('квадрат числа',i,'=',a);
          END;
END.

подробнее  прочитать стр.21-22

Z3.1 Напечатать таблицу перевода дюймы в сантиметры в виде:
1 дюйм = 2.54 см
2 дюйм = 5.08 см и т.д. до 10

Z3.2 Спортсмен в 1 день пробежал 10 км., в каждый следующий пробегал на 10% больше. Напечатать таблицу пробега за 5 дней.

Для решения следующих задач прочитать стр.23 - базовые циклические алгоритмы:
- определения суммы чисел 
- определения количества чисел, удовлетворяющих заданному условию

Z3.3 Друг должен вам 2000 руб. и предложил отдавать частями, а именно:
1 день - 2руб.
2 день - 4руб.
3 день - 8 руб и так 10 дней. 
Программа должна выдавать сообщение да, согласен или нет

Z3.4 Сгенерировать случайным образом оценки по математике за неделю и 
определить количество 3, 4 и 5 

Часто в задачах есть повторение действий, но неизвестно сколько раз действия 
будут повторяться. Для этого на помощь нам придет Цикл с предусловием WHILE

Задача 1. Найти количество чисел, сумма которых превысит 100.
PROGRAM N;
var  k:integer;
      s:integer;
begin
      s:=0;   k:=0;
     while  s<=100  do
        begin
             k:=k+1;
             s:=s+k
        end;
     writeln(‘количество слагаемых=’,k);
end.     
подробнее можно  прочитать на стр.27-28

Z3.5 Ввести целое число и найти сумму его цифр.
    Пример:
        Введите целое число:
        1234
        Сумма цифр числа 1234 равна 10.
Мы решали задачу с определением цифр  известного числа - двухзначного, трехзначного и т.д. Задача усложнилась - число цифр в задаче неизвестно


Есть еще один оператор цикла с постусловием Repeat
прочитать можно на 31-34стр.

Z3.6 Натуральное число р называется простым, если оно делится только на 1 и на себя. По соглашению 1 не считают простым числом. Начало последовательности простых чисел имеет вид : 2,3,5,7,11,13, 17, ....
Сколько простых чисел сумеешь найти? А сколько их найдено?
Про простые числа можно прочитать здесь Википедия  или Традиция

Определить количесво простых чисел, из введеных с клавиатуры https://pas1.ru/prime-numbers



Модуль 4. Массивы

Массив - очень удобный инструмент в программировании.
Одномерный массив - это фиксированное количество элементов одного типа, объединенных одним именем. Каждый элемент имеет свой номер- индекс. Обращение к элементам массива осуществляется с помощью указания имени массива и номера элементов.
Пусть для решения требуется массив из 30 целых чисел. Тогда объявить массив можно следующим образом:
Var  mas: array [1..30] of  integer;
mas - имя массива, [1..30] - количество элементов

В следующем примере задается случайным образом из интервала -5;+5 массив из 10 чисел, элементы массива выводятся на экран, определяется сумма элементов массива 
Program mass;
Var  a: array [1..10] of  integer;
i,s: integer;
Begin 
   RANDOMIZE;
   For i:=1 to 10 do begin
      a[i]:=Random(10)-5;
      WriteLn(i,'элемент массива= ',a[i]  );
      end;
      s:=0;
  for i:=1 to 10 do
      s:=s+a[i];
     writeln ('Сумма= ',s);
end.

прочитать стр.39-42
Z4.1
Объявить массив из 30 элементов – температура за июль 2013 года
Задать с помощью генератора случайных чисел температуру в диапазоне +15;+30
Осуществить вывод на экран значений температуры в виде:
День июля            температура
       1                        20                      и т.д. до 30
Найти
1. среднюю температуру июля. Ответ оформить в виде: Средняя температура июля 2013 года - …

2. Определить количество дней, когда температура была больше 25
3. найти день, когда температура максимальная
4. Найти дни, когда температура меньше 18. Ответ вывести в виде: Дни в июле, когда температура меньше 18 …..
Все сделать в одной программе, массив задавать один раз!

 

Меня вдохновляют

22

победы моих учеников  в олимпиадах и конкурсах

конкурсыи олимпиады

Меня воодушевляют

travel

путешествия по стране и встречи с интересными людьми

путешествия

Меня радуют

flower

мои цветы на приусадебном участке

садоводство