|
|
|
| Здравствуйте!
Просматривая книги по Си, просматривая данный форум, я выяснил, что есть несколько способов написания кода на языке Си. Видел 3 разных способа написания программы "Hello world!"
C++ стиль:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world\n";
return 0;
} |
Си стиль (первый):
#include <stdio.h>
int main()
{
printf("Hello world\n");
return 0;
} |
Си стиль (второй):
#include<conio.h>
void main()
{
clrscr();
cprintf("Hello, world!");
getch();
}
|
Почему-то во всех книгах, которые я просматривал, а также на этом форуме используются только первые два стиля, а третий - нет. Но мне кажется библиотека conio.h вмещает в себя больше функций, чем stdio.h. И еще, зачем нужна строка return 0; в конце в первых двух случаях?
Спасибо. | |
|
|
|
|
|
|
|
для: Mookapek
(09.10.2007 в 21:29)
| | С-стиль не очень рекомендуется, если вы разрабатываете программы на C++, так как язык C++ объектно-ориентированный и при разработке программ рекомендуется использовать стандартную библиотеку ввода-вывода IOstream, вместо старой системы ввода-вывода C. Иначе сложно будет выводить объекты в стандартный поток.
return 0 требуется для того, чтобы сообщить операционной системе или вызывающему программу процессу, что программа завершилась штатно, в противном случае возвращается число отличное от 0.
Последний стиль слишком ориентирован на командную строку - вы очищаете экран, хотя программа может запускаться вообще без окна или всё, что она выводит будет отправляться в файл, а данные, которые вы сотрёте с экрана будут нужны пользователю. Такой стиль хорош для демонстрационных программ, но в реальной практике, даже при разработке под консоль следует как можно меньше ограничивать пользователя. getch() - вы задерживаете окно, но в реальной консоли оно незакрывается и ввод символа становится излишним. | |
|
|
|
|
|
|
|
для: cheops
(10.10.2007 в 11:00)
| | Э-э-э, а что такое "реальная консоль"? | |
|
|
|
|
|
|
|
для: Mookapek
(10.10.2007 в 19:34)
| | Здесь имеется в виду не закрытая редактором вроде Borland С++ или незакрывающаяся после выполнения программы. Ведь если человек работает с консолью - она у него постоянно открыта и не закрывается после выполнения той или иной программы. | |
|
|
|
|
|
|
|
для: cheops
(10.10.2007 в 19:57)
| | Эх, плохо я понимаю эти тонкости... Значит так, я запускаю Borland C++ for DOS, далее пишу программу, компилирую, затем открываю файл .EXE с интерфейсом командной строки, где я могу лицезреть работоспособность только что написанной программы. Так про какую реальную консоль Вы говорите? И что такое демонстрационная программа? Объясните, пожалуйста. | |
|
|
|
|
|
|
|
для: Mookapek
(10.10.2007 в 20:31)
| | Если для Windows
Пуск->Программы->Стандартные->Командная строка
Причём консольные программы, как правило, входят в bat-файл и запускаются пакетно - их ввод, вывод переправляется в файлы средствами командной строки. | |
|
|
|
|
|
|
|
для: cheops
(11.10.2007 в 10:37)
| | А что такое демонстрационная программа?
И в чем недостаток последнего из приведенных стилей (я так и не понял)? Слишком ориентирован на командную строку? Так ведь и оболочка называется Borland C++ for DOS. | |
|
|
|
|
|
|
|
для: Mookapek
(11.10.2007 в 21:04)
| | >А что такое демонстрационная программа?
Например, сдаёте преподавателю проект - он является демонстрационным - показывает насколько вы усвоили материал.
>И в чем недостаток последнего из приведенных стилей (я так и не понял)? Слишком
>ориентирован на командную строку? Так ведь и оболочка называется Borland C++ for DOS.
Порядок работы в командной строке отличается от работы в оболочке Borland C++ for DOS. Командная строка это не только DOS, это и Linux и командная строка Windows (которая от DOS отличается), это и скрипты, запускающие другие программы. Для того, чтобы программа была универсальной и могла использоваться в других программах - она должна по минимуму влиять на состояние командной строки. | |
|
|
|
|
|
|
|
для: cheops
(12.10.2007 в 12:04)
| | А тогда какие существуют критерии для определения того, демонстрационная программа это или нет? | |
|
|
|
|
|
|
|
для: Mookapek
(13.10.2007 в 18:52)
| | Пользуются ли этой программой на практике или нет - если нет - программа демонстрационная - продемонстрировала возможности программиста и на свалку, если программа разрабатывалась, чтобы ей реально пользовались, хотя бы короткое время - она рабочая. | |
|
|
|
|
|
|
|
для: cheops
(10.10.2007 в 11:00)
| | > return 0 требуется для того, чтобы сообщить операционной системе или вызывающему программу
> процессу, что программа завершилась штатно, в противном случае возвращается число отличное от
> 0.
А что произойдет, когда возвратится число, отличное от 0? И вообще, не очень понятно практическое использование данной функции. | |
|
|
|
|
|
|
|
для: Mookapek
(10.10.2007 в 20:21)
| | Если вы запускаете свою программу через функцию system() другой программы или организуете для неё отдельный поток или нить - вы сможете получить номер возврата в вызывающей программе и предпринять действия - повторить запуск программы с другими параметрами или сообщить пользователю, что запуск внешней программы завершился неудачей, чтобы он не ждал у моря погоды. | |
|
|
|
|
|
|
|
для: cheops
(11.10.2007 в 10:39)
| | а, понятно, спасибо! | |
|
|
|
|
|
|
|
для: Mookapek
(11.10.2007 в 21:00)
| | Если начинаете изучать С/С++ ни в коем случае не советую 1 и 3 стили. ТОЛЬКО 2-й. третий - сильно древний. 1-й - можно понять только посттигнув язык С и при переходе на С++ изучаете его. А то я видел, как темному народу объясняли 1й стиль. чтоб понять как он работает, нужно знать классы, перегрузку операторов, а это уже С++, поэтому вы не поймете, если не знаете классы и перегрузки операторов. | |
|
|
|