Чтение онлайн

на главную - закладки

Жанры

Конец холивара. Pascal vs C

Кривцов М. А.

Шрифт:

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

#include <stdio. h>

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 <stdio. h>

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 <assert. h>

#include <stdio. h>

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 <assert. h>

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

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

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

#include <assert. h>

#include <stdio. h>

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;

Поделиться:
Популярные книги

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Переиграть войну! Пенталогия

Рыбаков Артем Олегович
Переиграть войну!
Фантастика:
героическая фантастика
альтернативная история
8.25
рейтинг книги
Переиграть войну! Пенталогия

Последний Паладин. Том 2

Саваровский Роман
2. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 2

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Санек 2

Седой Василий
2. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 2

Семь Нагибов на версту

Машуков Тимур
1. Семь, загибов на версту
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Семь Нагибов на версту

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Хозяин Теней 7

Петров Максим Николаевич
7. Безбожник
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Хозяин Теней 7

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Моров. Том 1 и Том 2

Кощеев Владимир
1. Моров
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Моров. Том 1 и Том 2

Сильнейший Столп Империи. Книга 2

Ермоленков Алексей
2. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 2

Первый среди равных. Книга III

Бор Жорж
3. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
6.00
рейтинг книги
Первый среди равных. Книга III

Графиня с изъяном. Тайна живой стали

Лин Айлин
Фантастика:
фэнтези
героическая фантастика
киберпанк
5.00
рейтинг книги
Графиня с изъяном. Тайна живой стали