Найти в Дзене
interrupt 21h

K&R: решение 1-1, 1-2, 1-3, 1-4 и 1-5

Начнем! Упражнение 1.1. Запустите программу "hello, world" на выполнение в вашей системе. Поэкспериментируйте с ней, выбрасывая определенные фрагменты программы и наблюдая за сообщениями об ошибках, которые будут появляться в связи с этим. Сам текст программы: Скомпилируем и запустим - должно напечататься "hello, world" Невероятно! 😮 Теперь давай удалим части кода и посмотрим что на это скажет gcc. Для начала выбросим инструкцию включения заголовочного файла stdio.h - стандартной библиотеки ввода вывода. Упс! Компилятор говорит что функции printf не существует и предлагает перед функцией main вписать строчку, которую мы только что удалили. Но(!) gcc 9.3 всё таки создал исполняемый файл a.out и он работает! Теперь посмотрим что произойдет если удалить функцию main 😃 Ожидаемая ошибка компоновщика - не найдена функция main 😁 Думаю с первым упражнением мы справились 😉 Отличное начало! Переходим к следующему. Упражнение 1.2. Попытайтесь выяснить экспериментально, что происходит при пер

Начнем!

Упражнение 1.1. Запустите программу "hello, world" на выполнение в вашей системе. Поэкспериментируйте с ней, выбрасывая определенные фрагменты программы и наблюдая за сообщениями об ошибках, которые будут появляться в связи с этим.

Сам текст программы:

Скомпилируем и запустим - должно напечататься "hello, world"

Невероятно! 😮

Теперь давай удалим части кода и посмотрим что на это скажет gcc. Для начала выбросим инструкцию включения заголовочного файла stdio.h - стандартной библиотеки ввода вывода.

-2

Упс! Компилятор говорит что функции printf не существует и предлагает перед функцией main вписать строчку, которую мы только что удалили. Но(!) gcc 9.3 всё таки создал исполняемый файл a.out и он работает!

Теперь посмотрим что произойдет если удалить функцию main 😃

-3

Ожидаемая ошибка компоновщика - не найдена функция main 😁

Думаю с первым упражнением мы справились 😉 Отличное начало! Переходим к следующему.

Упражнение 1.2. Попытайтесь выяснить экспериментально, что происходит при передаче в функцию printf строки, содержащей управляющую последовательность , где с — некий символ, не входящий в вышеперечисленные комбинации.

Добавим \g - такой эскейп последовательности не существует:

-4

Получили предупреждение о неизвестной управляющей последовательности '\g', а при запуске программы мы видим, что вместо несуществующих управляющих последовательностей выводится соответствующий символ - к "hello, world" добавилось 'g'.

Второе упражнение преодолено! 💪🏻 Двигаемся дальше!

Упражнение 1.3. Модифицируйте программу преобразования температур так, чтобы она выводила заголовок над таблицей.

Сама программа преобразования температур из главы 1.2 выглядит так:

Добавим простой вызов printf (строка 16), красоту наводить не будем:

-5

Пойдет. По-моему, упражнение 1-3 сделано. Что там дальше?

Упражнение 1.4. Напишите программу для перевода температур по Цельсию в шкалу Фаренгейта и вывода соответствующей таблицы.

Первое интересное задание! Уже не нужно ничего переписывать, а требуется написать свою первую программу на Си с нуля! 😎 Приступим скорее.

Для начала определим по какой формуле будет производиться расчет температуры по шкале Фаренгейта. Температура по Цельсию в программе из главы 1.2 высчитывается по формуле: Tc = (5/9) * (Tf - 32). В пятом классе я не прогуливал математику, поэтому нужную формулу для перевода в фаренгейты я получил самостоятельно: Tf = Tc * 9 / 5 + 32 и даже не гуглил (на самом деле погуглил для уверенности 😅). Во-вторых нужно определить диапазон и шаг привычных нам температур Цельсия - я выбрал от -40 до 100 с шагом 10.

-6

Готово! Осталось последнее упражнение в этой статье!

Упражнение 1.5. Доработайте программу преобразования температур так, чтобы она выводила таблицу в обратном порядке, т.е. от 300 градусов до нуля.

Нам нужно переписать программу из главы 1.3:

Изменим блоки инициализации, условия и новой итерации в цикле for (строка 8):

-7

Отлично! Первые 5 упражнений успешно решены. Увидимся в следующей статье, в которой мы решим еще 5 упражнений. 😉

#K&r #c #programming