Ответим сначала на первый вопрос, заданный на этом шаге. Если убрать конструкцию Else, то в случае неправильного задания номера месяца никаких сообщений на экран выведено не будет.

    Приведем текст программы определения номера квартала по заданному номеру месяца с использованием условных конструкций.

Program Kvartal1;
Var
   a:Integer;
Begin
   WriteLn('Введите номер месяца: ');
   ReadLn(a);
   {Начинаем проверки}
   If (a>=1) and (a<=3) Then WriteLn('Первый квартал.')
   Else {Переход сюда, если значение a не попадает в диапазон 1..3}
    If (a>=4) and (a<=6) Then WriteLn ('Второй квартал.')
    Else {Переход сюда, если значение a не попадает в диапазон 1..6}
      If (a>=7) and (a<=9) Then WriteLn ('Третий квартал.')
      Else {Переход сюда, если значение a не попадает в диапазон 1..9}
        If (a>=10) and (a<=12) Then WriteLn ('Четвертый квартал.')
        Else {Переход сюда, если значение a не попадает в диапазон 1..12}
            WriteLn('Такого месяца нет.');
End.
Текст этой программы можно взять здесь.

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

Program Kvartal2;
Var
   a:Integer;
Begin
   WriteLn('Введите номер месяца: ');
   ReadLn(a);
   {Начинаем проверки}
   If (a>=1) and (a<=3) Then WriteLn('Первый квартал.');
   If (a>=4) and (a<=6) Then WriteLn ('Второй квартал.');
   If (a>=7) and (a<=9) Then WriteLn ('Третий квартал.');
   If (a>=10) and (a<=12) Then WriteLn ('Четвертый квартал.');
   If not ((a>=1) and (a<=12)) Then  WriteLn('Такого месяца нет.');
End.     
Текст этой программы можно взять здесь.

    Отличие этой программы от предыдущей заключается в том, что при ее выполнении проверяются все пять условий независимо от того, есть уже какое-то сообщение на экране или нет. Пусть, например, a=8. Проверка первых двух условий даст ложный результат. Третье условие ((a>=7) and (a<=9)) будет истинным. Поэтому на экран будет выведено сообщение: Третий квартал, однако все равно будут осуществлены проверки четвертого и пятого условий!

    Остановимся более подробно на пятом условии. Как видно из текста сообщения, оно предназначено для обработки ошибочно указанного номера месяца. Может показаться, что можно объединить четвертое и пятое условия. Однако такое объединение будет ошибочным:


   If (a>=10) and (a<=12) Then WriteLn ('Четвертый квартал.')
   Else WriteLn('Такого месяца нет.');

    Покажем это. Пусть, например, a=5. Тогда второе условие будет истинным. Поэтому на экран будет выведено сообщение: Второй квартал, однако проверки продолжатся. При выполнении проверки четвертого условия ((a>=10) and (a<=12)) оно будет ложным и, соответственно, на экране появися сообщение: Такого месяца нет. Таким образом, на экране будут два сообщения: Второй квартал и Такого месяца нет. Поэтому объединение последних двух условий в одно является ошибочным!

    Конструкцию not ((a>=1) and (a<=12)) можно понять так: значение, не принадлежащее диапазону 1..12. Сначала создается условие принадлежности числа диапазону 1..12, а затем берется его отрицание. Это условие можно было бы записать следующим образом: (a<1) or (a>12)).

    В заключение приведем еще одно решение данной задачи с использованием конструкции цикла. Советуем вам вернуться к этому варианту решения после изучения циклических конструкций.

Program Kvartal3;
Var
   i,a:Integer;
Begin
   WriteLn('Введите номер месяца: ');
   ReadLn(a);
   If not ((a>=1) and (a<=12)) Then  WriteLn('Такого месяца нет.')
   Else
     For i:=1 To 4 Do {Цикл по количеству кварталов}
       If (a>=1+3*(i-1)) and (a<=3*i) Then WriteLn(i,'-й квартал');
End.
Текст этой программы можно взять здесь.