Конец холивара. Pascal vs C - [7]
printf (“Введите целое положительное число\n”);
scanf (”%d”, &n);
for (k=1; k <=n; k++)
f=f*k;
printf (“n!=%d\n”, f);
getchar ();
return 0;
}
Для этого цикла в Си Рис. 6 из части о Паскале даже более нагляден, чем там! Особенно, если заменить в этом операторе k++ на k=k+1, что его работы не изменит. Разве, что только незаметно замедлит, поскольку унарные операции выполняются быстрее бинарных.
Цикл с параметром в Си больше похож на аналогичный оператор в древнем Бейсике – там тоже был шаг цикла и этим он был более гибким, чем соответствующий оператор Паскаля.
В Си возможен, например, такой оператор цикла с параметром:
for (i=100; i>=10; i=i-5) {…};
Здесь переменная i уменьшается от 100 до 10 с шагом 5 и, соответственно, тело цикла в фигурных скобках будет выполнено 19 раз.
3. Функции
В C есть только функции, а процедур нет.
Тело функции не может содержать в себе определения других функций.
Функцию можно вызвать из другой функции.
Оператор return возвращает выполнение программы в точку вызова функции.
При использовании return; функция не возвращает никакого значения.
При использовании такого вида – return выражение; результатом функции становится значение данного выражения. Тип этого выражения должен либо совпадать с типом функции, либо относиться к числу типов, допускающих автоматическое преобразование к типу функции.
Оператор return может не присутствовать в явном виде в теле функции. Тогда он подразумевается перед закрывающей тело функции фигурной скобкой. Эту подстановку производит сам компилятор.
Глобальные переменные описываются до функций, которые их будут “видеть”.
Пример 2.7: Из главной функции вызывается функция вычисляющая факториал.
#include
#include
int fakt (int n)
{
int f=1, k;
for (k=1; k <=n; k++)
f=f*k;
return f;
}
int main (void)
{
int n;
printf (“Введите целое положительное число\n”);
scanf (”%d”, &n);
int f = fakt (n);
printf (“n! = %d\n”, f);
getchar ();
return 0;
}
4. Массивы и индексированные переменные
Пример описания одномерных массивов:
int x [15], y [30];
Пример описания двумерного массива:
float z [10] [20];
Нумерация элементов массива начинается с нуля.
Пример 2.9: Программа генерирует таблицу умножения и оформляет вывод результатов в матрицу 10 на 10 используя двумерный массив.
#include
#include
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: Найти корень уравнения X>2 – 3 = 0.
#include
#include
#include
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.
Но я не советую злоупотреблять этой занятной возможностью, так как это усложняет понимание текста программы другими людьми.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.