Конец холивара. Pascal vs C
Шрифт:
#include <stdio. h>
#include <stdlib. h>
int main (void)
{
int i, k;
int a [10] [10];
for (i=0; i <10; i++)
for (k=0; k <10; k++)
a [i] [k] = i * k;
for (i=0; i <10; i++)
{
for (k=0; k <10; k++)
printf (”%d%s%d%s%d\t”, i,”*”, k,”=”, a [i] [k]);
printf (”\n”);
}
getchar ;
return 0;
}
5. Заглянем
Метод половинного деления
Пример 2.10: Найти корень уравнения X2 – 3 = 0.
#include <assert. h>
#include <stdio. h>
#include <stdlib. h>
float fn (float x)
{
float y;
y = x*x – 3;
return y;
}
int main
{
float a, b, e, x, y, y1;
printf (“Введите границы интервала и погрешность через пробел\n”);
int r = scanf (”%f%f%f”, &a, &b, &e);
assert (r == 3);
x = a;
y = fn (x);
y1 = y;
while (b – a> = e)
{
x = (a + b) /2;
y = fn (x);
if (y * y1> = 0)
{
a = x;
y1 = y;
}
else
b = x;
}
printf (“X=%f\n”, x);
getchar ;
return 0;
}
6. Что ещё интересного?
Язык C замышлялся его создателем Деннисом Ритчи, как язык структурного программирования, а предназначением его должно было стать системное программирование, то есть создание операционных систем и компиляторов для других языков программирования. Происходило это в период разработки платформонезависимой операционной системы UNIX на фирме Bell Laboratories, где Д. Ритчи работал. Идея была такая – написать операционную систему на языке высокого уровня, создать для каждой аппаратной платформы компилятор этого языка и спокойно откомпилировать операционную систему для этого “железа”. Что с успехом и делалось без лишнего мучения с ассемблерами. Д. Ритчи, будучи высококлассным профессионалом, делал C как подручный инструмент для себя. Поэтому C не так “дуракоустойчив”, как Pascal, созданный Николаусом Виртом для обучения студентов. Но C позволяет тоньше использовать возможности компьютера, что ранее могли только языки низкого уровня – ассемблеры. Поэтому C иногда называют языком “среднего уровня”.
Скорость выполнения программ написанных на C близка к скорости программ на ассемблерах. А синтаксис этого языка послужил образцом при создании многих языков нового поколения.
Иногда удобны применяемые в C унарные операции, например запись i++ вместо i = i +1.
Причём возможна и запись ++i – но это выражение увеличивает переменную на единицу до её использования, а не после, как в случае i++.
Например: Если x имеет значение 5, то оператор x=i++; установит x равным 5, а оператор x=++i: равным 6. Тем не менее в обоих случаях i после выполнения любого из операторов становится равным 6. Аналогично работают унарные операции уменьшения на единицу i – – и – – i. При этом унарные операции работают быстрее, чем бинарные.
В C возможна, например, такая странная запись:
x=a+ (b=5) -1;
Здесь переменная b получит значение 5, такое же значение будет присвоено выражению в скобках, и всё выражение в целом
стане равным a+4.Но я не советую злоупотреблять этой занятной возможностью, так как это усложняет понимание текста программы другими людьми.
В C имеется препроцессор, который осуществляет макроподстановки, подстановки файлов, условные подстановки и перенумерацию строк в тексте программы перед её компиляцией.
Отличительным признаком директивы препроцессора служит символ #, помещённый перед ней.
Например, если вы напишете в начале программы:
# define pi 3.14159
# define e 2.71828
То препроцессор заменит в ней все имена pi и e на соответствующие числовые константы. Такие действия называются макроподстановками.
Подстановку файлов, например #include <stdio. h>, вы уже встречали в примерах программ.
Этот язык по прежнему пользуется уважением профессионалов и рассказывать о нём можно долго, но я, чтобы не раздувать объём книги, отсылаю вас к приведённому в её конце списку хорошей специальной литературы.
Напутствие
Ну, вот, я и рассказал вам всё, что хотел. Книжка получилась достаточно компактной, поскольку, как и в лекциях моим студентам, я следовал принципу – “Ещё проще!” Собственно, то, что вы держите сейчас в руках – это переработка тех самых лекций, в которых я снова нашёл, что можно ещё упростить и выкинул ряд моментов, требующих дополнительных объяснений и, следовательно, отвлекающих внимание от основных сведений. Надеюсь, что чтение этой работы и разбор примеров не заняли у вас много времени, но, в дальнейшем, вы ещё будете к ней возвращаться – пока не сформируете базовых навыков. А дальше – в добрый путь в волшебную страну программирования, где вы сами, со временем, станете магами, или шаманами. Существует много умных книг об этом – свои любимые я вам рекомендую в списке литературы. Есть ещё интернет с онлайн-справочниками и форумами, где энтузиасты и профессионалы делятся своими знаниями, а иногда и секретами. Так что без помощи вы не останетесь.
Буду очень рад получить ваши отзывы на свою работу – по адресу:
malaplaneta@yandex.ru
Если книжка вам понравится, то, может быть, возьмусь за следующую. И, скорее всего, она будет посвящена моему любимому интернет-программированию.
Упражнения
1. Написать программу пересчёта температуры из шкалы Цельсия в шкалу Фаренгейта:
t (F) =t (C) x 1,8 +32, где t (F) – температура по Фаренгейту, а t (C) – температура по Цельсию.
2. Написать программу пересчёта цены товара с учётом скидки, заданной в процентах.
3. Написать программу вычисления пройденного пути по известным значениям скорости и времени.
4. Написать программу для вычисления переменной S:
S= 1 +1/2 +1/3 +1/4 +…+1/n, при n=30.
5. Написать программу полного исследования совокупности корней биквадратного уравнения AX4 + BX2 + C = 0. Если корней нет, то должно быть выведено текстовое сообщение об этом, иначе должны быть выведены два или четыре корня.
6. Даны положительные X, Y, Z. Выяснить, существует ли треугольник с длинами сторон X, Y, Z? Ответ получить в текстовой форме: существует или не существует.
7. Дано положительное A. Найти наибольшее число вида 1/2n, где n больше или равно 0, меньшее А.
8. Вывести таблицу значений функции Y = sin X. Таблица должна иметь две колонки, в i-ю строку таблицы заносятся значения Xi и Yi, где Xi = 0,1 x i, Yi = sin Xi (i = 0,1, 2, 3,…, 15).