Конец холивара. Pascal vs C - [6]

Шрифт
Интервал


%c – символ;

%s – строка;

%d – целое десятичное число (тип int);

%u – целое десятичное число без знака (тип unsigned);

%f – вещественные числа в форме с фиксированной точкой;

%е – вещественные числа в форме с плавающей точкой.


Соответствие между спецификаторами формата и элементами списка аргументов устанавливается в порядке их записи слева направо.

Использование функций ввода и вывода смотрите в примерах программ далее по тексту.

Арифметические операции

Унарные операции – применяются к одной переменной.


++ – увеличение на единицу (x++ выдаёт старое значение, ++x – новое значение).

– – – уменьшение на единицу, аналогично операции ++.


Бинарные операции – стоят между двумя переменными или числами.


* – умножение.

/ – деление.

% – остаток от деления (только для int или long).

+ – сложение.

 – вычитание.

Стандартные математические функции

Для того, чтобы использовать эти функции в начале программы должно стоять:


#include


abs (x) – возвращает абсолютное значение целого аргумента x.

acos (x) – арккосинус x.

asin (x) – арксинус x.

atan (x) – арктангенс x.

cos (x) – косинус x.

exp (x) – e>x.

fabs (x) – абсолютное значение вещественного аргумента x.

floor (x) – наибольшее целое, не превышающее значения х.

labs (x) – абсолютное значение целого аргумента long x.

log (x) – ln x.

log10 (x) – log >10 x.

pow (x, y) – х в степени у.

sin (x) – синус x – угол задается в радианах.

sqrt (x) – квадратный корень x.

tan (x) – тангенс x – угол задается в радианах.


Это только основные функции, которые могут понадобиться на первом этапе освоения языка.

Оператор присваивания

x = … – пусть x будет…

2. Программные конструкции

2.1. Ветвление (выбор)


2.1.1. Альтернатива (условный оператор)

Пример 2.1: Вычисление значений функции Y=1/X.


#include


int main ()

{

float x;

printf (“Введите число\n”);

scanf (”%f”, &x);

if (x!= 0)

printf (“Y=1/X=%f\n”, 1/x);

else

printf (“0 не входит в область определения функции Y=1/X\n”);

getchar ();


return 0;


}

2.1.2. Неполный условный оператор

Пример 2.2: Если X <3, то вывести на печать значение X.


if (x <3)

printf (”%f”, x);

> – больше

– меньше

> = – не меньше

<= – не больше

= = – равно

!= – не равно


! – не

&& – и

|| – или


Примеры сложных (составных) условий:


if (a == 2 && b> 5)…

if (a == 2 || b> 5)…

if (! (a == 4))…

2.1.3. Оператор варианта (переключатель)

Переключатель в C существенно отличается от подобного в Pascal. Например, в нём нельзя в одном варианте выбора предлагать через запятую несколько констант. Зато у переключателя в C есть вариант по умолчанию. Поэтому, я привожу для разбора другой, но тоже простой и наглядный, пример.


Пример 2.3: При вводе номера дня недели программа сообщает название рабочего дня или сообщение “Выходной!”


#include


int main ()

{

int n;


printf (“Введите номер дня недели\n”);


scanf (”%d”, &n);


switch (n)

{

case 1: printf (“Понедельник\n”); break;

case 2: printf (“Вторник\n”); break;

case 3: printf (“Среда\n”); break;

case 4: printf (“Четверг\n”); break;

case 5: printf (“Пятница\n”); break;

case 6: printf (“Выходной!\n”); break;

case 7: printf (“Выходной!\n”); break;

default: printf (“Вы заработались :-) \n”);

}

getchar ();


return 0;


}


Как видите, данный оператор не может похвастаться хвалёной компактность записи, столь свойственной C. В Pascal подобная структура реализована куда элегантней. Вообще, современные среды программирования сводят на нет преимущество в экономии нажатий клавиш, поскольку все они обладают опцией автозавершения. Но данному монстру из C завоевать любовь программистов не поможет даже это.


SWITCH – переключатель, железнодорожная стрелка.

CASE – случай, обстоятельство.

BREAK – прервать.

DEFAULT – отсутствие, исключение, по умолчанию.

2.2. Повторение (операторы цикла)


2.2.1. Цикл типа “пока” (цикл с предусловием)

Пример 2.4: Программа находит наибольший общий делитель двух целых чисел.


#include

#include


int main ()

{

int x, y;


printf (“Введите два целых числа через пробел\n”);

int r = scanf (”%d%d”, &x, &y);


assert (r == 2);


while (x!= y)

if (x> y)

x = x – y;

else

y = y – x;

printf (“НОД=%d\n”, x);


getchar ();


return 0;


}


Для проверки соответствия ввода пользователя требованиям программы мы сохраняем (=) результат выполнения scanf – количество успешно измененных переменных – в целочисленной переменной с именем r (int r), после чего требуем равенства её значения двум


(assert (r == 2);


Для этого и нужна директива препроцессора


#include

2.2.2. Цикл, который выполняется не меньше одного раза

Обратите внимание, что в цикле используется условие продолжения, а не завершения повторения! Это не цикл “до”, подобный REPEAT… UNTIL в Pascal, хотя назначение его то же – позволить телу цикла выполнится хотя бы один раз.


Пример 2.5: Решение предыдущей задачи.


#include

#include


int main ()

{

int x, y;


printf (“Введите два целых числа через пробел\n”);


int r = scanf (”%d%d”, &x, &y);


assert (r == 2);


do

if (x> y)

x = x – y;

else

y = y – x;

while (x!= y);


printf (“НОД=%d\n”, x);


getchar ();


return 0;


}

2.2.3. Цикл с параметром (со счётчиком)

Пример 2.6: Вычислить факториал числа (n!=1×2×3×…×n).


#include


int main ()

{

int f=1, k, n;


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.