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

Для этого цикла в Си Рис. 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: Найти корень уравнения 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;


}

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;


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

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

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Секреты приложений Google
Секреты приложений Google

Даже продвинутые пользователи Интернета не подозревают о тех огромных возможностях, которые предоставляют сервисы Google. Автор рассказывает о таких «секретах» сервисов, которые просто немедленно хочется использовать! Создавать сайты и презентации, бродить по улочкам Парижа, изучать звездное небо – все это доступно каждому, кто сидит у экрана монитора и имеет доступ в Интернет. Книга научит вас работать с веб-приложениями и тысячекратно увеличить свои возможности с помощью новейших технологий. Она написана легким, доступным языком и не требует от читателя наличия каких-либо специальных знаний. Книга содержит множество примеров, иллюстраций и будет полезна всем, кто не стоит на месте и стремится сделать свою жизнь более насыщенной и интересной.

Денис Балуев , Денис Игоревич Балуев

Программирование, программы, базы данных / Интернет / Программное обеспечение / Книги по IT