Знакомство с Си. Знакомство с оболочкой Dev_C++, страница 2

Знакомство с шаблоном ввода-вывода в потоки ( файлы)

В своем рабочем каталоге найдите файл 2100.C   и загрузите его в Dev-Cpp для компиляции.

Программа аналогична программе 1100.for , которую мы рассматривали на Lab_F1.

  FILE *inf, *outf;                       - так мы готовим «потоки»   inf, outf   для работы с файлами

  inf = fopen("input.txt", "rt");          - связываем «поток»  inf  с файлом input.txt, режим работы –чтение текста ("rt" - read text)

  outf = fopen("output.txt", "wt");     - связываем «поток»  outf   с файлом output.txt, режим работы – запись текста ("wt"  -  write text)

  fprintf(outf, "#2100\n");                - вывод строки "#2100\n" в «поток» outf

  fscanf (inf, "%i", &a);                    - чтение перемнной a из  «потока »  inf

                                                            строка "%i"  задает формат вводимого числа - integer

  fprintf(outf, "%d\n", a);                 - вывод  перемнной  a  в  «потока »  outf

                                                         строка "%d\n"  задает формат выводимого числа – decimal  и переводит строку(\n)

Задание:   Решите задачу 2100    Поменяйте заголовок и вывод заголовка так, чтобы программа стала Вашей и служила бы шаблоном для следующих файлов.

Уберите ВСЕ лишние комментарии!!!

Возможно всё работает без ошибок, а возможно -  нет. Тогда вспомните, что intзадает короткое целое.  Поэтому поменяйте int   на   longint    и дескрипоры форматных преобразований

i  на li   и  d  на ld .

Отправьте отредактированный файл 2100.c   сетевой тестирующей системе.

Задание:   Решите задачу 2101

Указание: скопируйте файл 2100.C  в файл 2101.C  и отредактируйте файл 2101.C . При редактировании пользуйтесь операциями Копирования (Ctrl-C) и Вставки (Ctrl-V) 

Отправьте  файл  2101.C   сетевой тестирующей системе.

5.  Разбор работы программ BC_3. CPP

Программа использует  вывод языка С++ для удобства написания. На этом занятии мы не разбираем  как написана программа, а только смотрим НА РЕЗУЛЬТАТ её работы.

Запустите программу на исполнение и посмотрите на результат её работы.

Математические операции

Основные операции аналогичны Фортрану. Результат работы с целыми – целый.

Появилась операция - % - Остаток   аналог функции MOD(J,K)

Фортран:    N = MOD( J, K)

Си:              n =   j  %  k  ;

Появляется группа операций  вида   +=      - , т.е операция не сложения 2-х слагаемых, а операция увеличения первого слагаемого на второе. Она выполняется быстрее, чем сложение.

6.  Разбор работы программ -  BC_4.CPP

Программа использует  вывод языка С++ для удобства написания. На этом занятии мы не разбираем  как написана программа, а только смотрим НА РЕЗУЛЬТАТ её работы.

Запустите программу на исполнение и посмотрите на результат её работы.

Математические операции

Часто используются операции увеличения на 1 и уменьшения на 1. (Они реализуются аппаратно)

Это операции вида  j++ и j--

Различают 2 вида записи операций

++ j  - префиксная форма, т.е. операция пишется ДО операнда

j ++    - постфиксная форма, т.е. операция пишется ПОСЛЕ операнда

В обоих случаях операнд (j) увеличится на 1.

А что взять в качестве результата Выражения, которое печатает print(  ) ?

Ответ: если можем взять переменную сразу, то берем, а если нет, то немного ждём.

Поэтому для j++  можно сразу взять j,  а для  ++ j  сразу надо брать ++ , а это не число, значит ждем, т.е. увеличиваем j  и берем результат, т.е. j +1

j=1;  print("j++ ",  j++);   печатается результат  операции   1    , но j=2

j=1;   print("++j ", ++j);  печатается результат  операции   2    , и   j=2

Операции отношения возвращают значения истина, как 1 , а ложь, как 0

Логические операции    &&  - и ,

                                        ||      - или.

Как логическое значение рассматривается значение выражения, если значение =0, то это Ложь , а если значение  не равно 0, то это истина.

7.  Разбор работы программ -  BC_5.C

Условные операторы

  if( i && j )    printf(" i && j = %i \n\n",  i&&j);

Рассматривается условие    i && j

Если оно истинно, то вполняется вывод printf(" i && j = %i \n\n",  i&&j);

Обратите внимание, что на экран выводится не i&&j , а  значение этого логического выражения, т.е.  обязательно  0 или 1 .

if( i < j )                                                     начало аналогично

     printf(" i < j    %i \n",i<j);

else if( i > j )                                           здесь появился альтернативный выбор else, в нем

    printf(" i > j  %i \n",i>j);                       стоит новый (другой)   оператор else-if

else

    printf(" i = j  %i \n",i==j);