Вопрос Как написать программу на языке си? точнее как понять написание программы на си.

Регистрация
21 Авг 2013
Сообщения
88
Репутация
1
Спасибо
0
Монет
0
Дана задача. Рассчитать расстояние от школы до дома. (Грубо говоря просто рандомно придумал).

Я учу синтаксис языка. Знаю , что такое библиотеки, это пакеты кодов, которые нужны под свои задачи.

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

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

А вот как быть с синтаксисом? Для понимания , поясните пожалуйста.
 
Сначала пишете комментарии к программе, затем к ним сам текст программы на С. Проще говоря, сначала описание действий на русском языке, затем переводите эти действия на С.
Например, "рассчитать расстояние от школы до дома" - какие исходные данные? Как Вы его рассчитаете на бумаге или в уме?
 
В математике записываем не только сами формулы, но и процесс решения задачи. И программирование - та же самая математика. Код программы - это формулы + процесс решения задачи, записанные значками языка программирования.

Нахождение способа решения задачи (т.е. алгоритма) - это и есть основное в программировании. И для развития этого умения надо изучать не языки программирования, а само программирование.

А вот запись найденного алгоритма значками какого-то языка программирования - всего лишь кодинг: предпоследний этап процесса программирования.
 
## Как написать программу на языке Си: пошаговое руководство

**1. Анализ задачи:**

* **Определите задачу:** Что именно нужно вычислить? Какие данные для этого требуются?
* В данном случае: расстояние от школы до дома.
* **Разбейте задачу на подзадачи:** Какие вычисления нужно выполнить, чтобы получить результат?
* В данном случае:
1. Получить координаты школы.
2. Получить координаты дома.
3. Вычислить расстояние между ними.
* **Определите типы данных:** Какие данные будут использоваться в программе?
* В данном случае:
* Координаты школы (вероятно, два числа - широта и долгота).
* Координаты дома (вероятно, два числа - широта и долгота).
* Расстояние (вероятно, число).
* **Определите алгоритм:** Как именно будут выполняться вычисления?
* В данном случае:
1. Ввести координаты школы.
2. Ввести координаты дома.
3. Используйте формулу для вычисления расстояния между двумя точками на сфере (например, формулу Гаверсинуса).
4. Вывести результат.

**2. Выбор библиотек:**

* Для этой задачи не требуются специальные библиотеки, но вам может пригодиться библиотека `math.h` для математических функций (например, для вычисления квадратного корня).

**3. Написание программы:**

```c
#include <stdio.h>
#include <math.h>

#define EARTH_RADIUS 6371.0 // Радиус Земли в километрах

double calculate_distance(double school_latitude, double school_longitude,
double home_latitude, double home_longitude) {
// Преобразовать градусы в радианы
double school_latitude_rad = school_latitude * M_PI / 180.0;
double school_longitude_rad = school_longitude * M_PI / 180.0;
double home_latitude_rad = home_latitude * M_PI / 180.0;
double home_longitude_rad = home_longitude * M_PI / 180.0;

// Вычислить разницу в широте и долготе
double delta_latitude = home_latitude_rad - school_latitude_rad;
double delta_longitude = home_longitude_rad - school_longitude_rad;

// Вычислить квадрат расстояния
double a = sin(delta_latitude / 2) * sin(delta_latitude / 2) +
cos(school_latitude_rad) * cos(home_latitude_rad) *
sin(delta_longitude / 2) * sin(delta_longitude / 2);

// Вычислить расстояние
double distance = 2 * EARTH_RADIUS * atan2(sqrt(a), sqrt(1 - a));

return distance;
}

int main() {
// Ввод координат школы
double school_latitude, school_longitude;
printf("Введите координаты школы (широта, долгота): ");
scanf("%lf %lf", &school_latitude, &school_longitude);

// Ввод координат дома
double home_latitude, home_longitude;
printf("Введите координаты дома (широта, долгота): ");
scanf("%lf %lf", &home_latitude, &home_longitude);

// Вычислить расстояние
double distance = calculate_distance(school_latitude, school_longitude,
home_latitude, home_longitude);

// Вывести результат
printf("Расстояние от школы до дома: %.2f км\n", distance);

return 0;
}
```

**4. Объяснение кода:**

* **#include <stdio.h>:** Подключает стандартную библиотеку ввода-вывода, которая используется для работы с консолью.
* **#include <math.h>:** Подключает математическую библиотеку, которая используется для математических функций.
* **#define EARTH_RADIUS 6371.0:** Определяет константу `EARTH_RADIUS`, которая хранит значение радиуса Земли в километрах.
* **double calculate_distance(...):** Определяет функцию `calculate_distance`, которая принимает координаты школы и дома в качестве параметров и возвращает расстояние между ними.
* **//
 
Как вы это все изучили, не научившись ничего писать?
При изучении любого теор материала в конце куча задач практических дается.

Пишете каркас приложения, который ничего не делает допустим, типа hello world, без hello world и наполняете ее логикой.
Ввести переменные, посчитать результат, вывести результат.
Вы же это все по отдельности умеете, собираете в один код и все.
 
Назад
Сверху