Форум: Форум C++Разное
Новые темы: 00
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Стили языка Си
 
 автор: Mookapek   (09.10.2007 в 21:29)   письмо автору
 
 

Здравствуйте!
Просматривая книги по Си, просматривая данный форум, я выяснил, что есть несколько способов написания кода на языке Си. Видел 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; в конце в первых двух случаях?
Спасибо.

  Ответить  
 
 автор: cheops   (10.10.2007 в 11:00)   письмо автору
 
   для: Mookapek   (09.10.2007 в 21:29)
 

С-стиль не очень рекомендуется, если вы разрабатываете программы на C++, так как язык C++ объектно-ориентированный и при разработке программ рекомендуется использовать стандартную библиотеку ввода-вывода IOstream, вместо старой системы ввода-вывода C. Иначе сложно будет выводить объекты в стандартный поток.

return 0 требуется для того, чтобы сообщить операционной системе или вызывающему программу процессу, что программа завершилась штатно, в противном случае возвращается число отличное от 0.

Последний стиль слишком ориентирован на командную строку - вы очищаете экран, хотя программа может запускаться вообще без окна или всё, что она выводит будет отправляться в файл, а данные, которые вы сотрёте с экрана будут нужны пользователю. Такой стиль хорош для демонстрационных программ, но в реальной практике, даже при разработке под консоль следует как можно меньше ограничивать пользователя. getch() - вы задерживаете окно, но в реальной консоли оно незакрывается и ввод символа становится излишним.

  Ответить  
 
 автор: Mookapek   (10.10.2007 в 19:34)   письмо автору
 
   для: cheops   (10.10.2007 в 11:00)
 

Э-э-э, а что такое "реальная консоль"?

  Ответить  
 
 автор: cheops   (10.10.2007 в 19:57)   письмо автору
 
   для: Mookapek   (10.10.2007 в 19:34)
 

Здесь имеется в виду не закрытая редактором вроде Borland С++ или незакрывающаяся после выполнения программы. Ведь если человек работает с консолью - она у него постоянно открыта и не закрывается после выполнения той или иной программы.

  Ответить  
 
 автор: Mookapek   (10.10.2007 в 20:31)   письмо автору
 
   для: cheops   (10.10.2007 в 19:57)
 

Эх, плохо я понимаю эти тонкости... Значит так, я запускаю Borland C++ for DOS, далее пишу программу, компилирую, затем открываю файл .EXE с интерфейсом командной строки, где я могу лицезреть работоспособность только что написанной программы. Так про какую реальную консоль Вы говорите? И что такое демонстрационная программа? Объясните, пожалуйста.

  Ответить  
 
 автор: cheops   (11.10.2007 в 10:37)   письмо автору
 
   для: Mookapek   (10.10.2007 в 20:31)
 

Если для Windows
Пуск->Программы->Стандартные->Командная строка
Причём консольные программы, как правило, входят в bat-файл и запускаются пакетно - их ввод, вывод переправляется в файлы средствами командной строки.

  Ответить  
 
 автор: Mookapek   (11.10.2007 в 21:04)   письмо автору
 
   для: cheops   (11.10.2007 в 10:37)
 

А что такое демонстрационная программа?
И в чем недостаток последнего из приведенных стилей (я так и не понял)? Слишком ориентирован на командную строку? Так ведь и оболочка называется Borland C++ for DOS.

  Ответить  
 
 автор: cheops   (12.10.2007 в 12:04)   письмо автору
 
   для: Mookapek   (11.10.2007 в 21:04)
 

>А что такое демонстрационная программа?
Например, сдаёте преподавателю проект - он является демонстрационным - показывает насколько вы усвоили материал.
>И в чем недостаток последнего из приведенных стилей (я так и не понял)? Слишком
>ориентирован на командную строку? Так ведь и оболочка называется Borland C++ for DOS.
Порядок работы в командной строке отличается от работы в оболочке Borland C++ for DOS. Командная строка это не только DOS, это и Linux и командная строка Windows (которая от DOS отличается), это и скрипты, запускающие другие программы. Для того, чтобы программа была универсальной и могла использоваться в других программах - она должна по минимуму влиять на состояние командной строки.

  Ответить  
 
 автор: Mookapek   (13.10.2007 в 18:52)   письмо автору
 
   для: cheops   (12.10.2007 в 12:04)
 

А тогда какие существуют критерии для определения того, демонстрационная программа это или нет?

  Ответить  
 
 автор: cheops   (14.10.2007 в 11:15)   письмо автору
 
   для: Mookapek   (13.10.2007 в 18:52)
 

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

  Ответить  
 
 автор: Mookapek   (10.10.2007 в 20:21)   письмо автору
 
   для: cheops   (10.10.2007 в 11:00)
 

> return 0 требуется для того, чтобы сообщить операционной системе или вызывающему программу
> процессу, что программа завершилась штатно, в противном случае возвращается число отличное от
> 0.

А что произойдет, когда возвратится число, отличное от 0? И вообще, не очень понятно практическое использование данной функции.

  Ответить  
 
 автор: cheops   (11.10.2007 в 10:39)   письмо автору
 
   для: Mookapek   (10.10.2007 в 20:21)
 

Если вы запускаете свою программу через функцию system() другой программы или организуете для неё отдельный поток или нить - вы сможете получить номер возврата в вызывающей программе и предпринять действия - повторить запуск программы с другими параметрами или сообщить пользователю, что запуск внешней программы завершился неудачей, чтобы он не ждал у моря погоды.

  Ответить  
 
 автор: Mookapek   (11.10.2007 в 21:00)   письмо автору
 
   для: cheops   (11.10.2007 в 10:39)
 

а, понятно, спасибо!

  Ответить  
 
 автор: alex19921992   (26.11.2007 в 03:46)   письмо автору
 
   для: Mookapek   (11.10.2007 в 21:00)
 

Если начинаете изучать С/С++ ни в коем случае не советую 1 и 3 стили. ТОЛЬКО 2-й. третий - сильно древний. 1-й - можно понять только посттигнув язык С и при переходе на С++ изучаете его. А то я видел, как темному народу объясняли 1й стиль. чтоб понять как он работает, нужно знать классы, перегрузку операторов, а это уже С++, поэтому вы не поймете, если не знаете классы и перегрузки операторов.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования