Читаем Конец холивара. Pascal vs C полностью

Для этого цикла в Си Рис. 6 из части о Паскале даже более нагляден, чем там! Особенно, если заменить в этом операторе k++ на k=k+1, что его работы не изменит. Разве, что только незаметно замедлит, поскольку унарные операции выполняются быстрее бинарных.

Цикл с параметром в Си больше похож на аналогичный оператор в древнем Бейсике – там тоже был шаг цикла и этим он был более гибким, чем соответствующий оператор Паскаля.

В Си возможен, например, такой оператор цикла с параметром:

for (i=100; i>=10; i=i-5) {…};

Здесь переменная i уменьшается от 100 до 10 с шагом 5 и, соответственно, тело цикла в фигурных скобках будет выполнено 19 раз.

<p>3. Функции</p>

В 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;

}

<p>4. Массивы и индексированные переменные</p>

Пример описания одномерных массивов:

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;

}

<p>5. Заглянем в вычислительную математику</p>

Метод половинного деления

Пример 2.10: Найти корень уравнения X2 – 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;

}

<p>6. Что ещё интересного?</p>

Язык 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;

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT