Вопросы по учебнику С... (Плавно из одного вопроса получилось несколько)

Модератор: Модераторы разделов

Аватара пользователя
Boron
Сообщения: 197

Вопросы по учебнику С...

Сообщение Boron »

Прошу меня не банить и удалить тему (если она будет мешаться).

Как запустить эту программу, зависит от системы, которую вы используете. Так, в операционной системе UNIX необходимо сформировать исходную программу в файле с именем, заканчивающимся символами ".c", например в файле hello.c, который затем компилируется с помощью команды
cc hello.c
Если вы все сделали правильно - не пропустили где-либо знака и не допустили орфографических ошибок, то компиляция пройдет ”молча” и вы получите файл, готовый к исполнению и названный a.out. Если вы теперь запустите этот файл на выполнение командой
a.out
программа напечатает
Hello, world


Как вы поняли, я решил начать учить язык С, но вот беда - не знаю, как запустить файл a.out. Помогите, пожалуйста!
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Вопросы по учебнику С...

Сообщение Zeus »

Ну в консоли набрать: ./a.out
Спасибо сказали:
Аватара пользователя
Boron
Сообщения: 197

Re: Вопросы по учебнику С...

Сообщение Boron »

Zeus, уря-я-я!!! Спасибо огромное! Ждал ответа с нетерпением!!!

Все, походу в училище пойду неспавшим. :)
Плин, еще предэкзаменационная работа завтра намечается :(
Спасибо сказали:
Аватара пользователя
Boron
Сообщения: 197

Re: Вопросы по учебнику С...

Сообщение Boron »

Столкнулся с проблемой

#include <stdio.h>
/* печать таблицы температур по фаренгейту и цельсию для fahr = 0,20,...,300*/

main()
{
int fahr, celsius;
int lower,upper,step;

lower=0;/*нижняя граница таблицы температур*/
upper=300;/*верхняя граница таблицы температур*/
step=20;/*шаг*/

fahr=lower
while(fahr <= upper){
celsius=5*(fahr-32)/9;
printf("%d\t%d\n",fahr,celsius);
fahr=fahr+step}
}

Писал все, как написано в учебнике, но почему-то в консоле выдается следующее:
boron@linux:~/Desktop/c> cc hello.c
hello.c: In function ‘main’:
hello.c:14: error: syntax error before ‘while’
hello.c:17: error: syntax error before ‘}’ token
hello.c:17:16: warning: no newline at end of file

Кто-нибудь может сказать в чем дело? Делал разные вариации скобок в строках 14 и 17 - не помогло. Пытался как их удалить, так и перенести в другие строчки. По поводу 17:16 строки я вообще не понимаю, что за новая линия у конца файла?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Вопросы по учебнику С...

Сообщение diesel »

точку с запятой перед while?
+
пустую строку в конце файла
Спасибо сказали:
iAm
Сообщения: 220
ОС: Gentoo

Re: Вопросы по учебнику С...

Сообщение iAm »

1. Вы в 16-й строке (fahr=lower) забыли поставить в конце ;.
2. Сорец должен заканчиваться пустой строкой. То есть просто нажмите <Enter> в конце файла.

diesel, пока писал, уже Вы ответили. :)
Спасибо сказали:
Аватара пользователя
Boron
Сообщения: 197

Re: Вопросы по учебнику С...

Сообщение Boron »

Точно! Спасибо! Невнимательность... Но остальные сообщения не убрались :(

ИСПРАВЛЕНО:
boron@linux:~/Desktop/c> cc hello.c
hello.c: In function ‘main’:
hello.c:17: error: syntax error before ‘}’ token


А что самое странное: я скопировал полностью текст кода из учебника (он в электронном виде) и вставил заместо своего, и тогда вообще пишеться:

boron@linux:~/Desktop/c> cc hello.c
hello.c: In function ‘main’:
hello.c:17: error: stray ‘\226’ in program
hello.c:17: error: stray ‘\128’ in program
hello.c:17: error: stray ‘\156’ in program
hello.c:17: error: syntax error before ‘%’ token
hello.c:17: error: stray ‘\’ in program
hello.c:17: error: stray ‘\’ in program
hello.c:17: error: stray ‘\226’ in program
hello.c:17: error: stray ‘\128’ in program
hello.c:17: error: stray ‘\157’ in program
hello.c:20:2: warning: no newline at end of file


Вот и поучился, плин :( . Я сомневаюсь, что в учебнике что неправильно написано - может какую программу установить надо? Просто при установке дистрибутива я все оставлял "как есть" и не выбирал какие программы мне необходимо устанавливать, а какие нет (просто только влез в мир Юникс).

И еще - лишние/недостающие пробелы учитываются? Просто к примеру у меня отличие кода, по сравнению с учебником, где написано:
celsius = 5 * (fahr-32) / 9;

я пишу:
celsius=5*(fahr-32)/9;


P.S. Тему переименовал, т.к. заголовок уже носит несколько иное описание постов :)
Спасибо сказали:
iAm
Сообщения: 220
ОС: Gentoo

Re: Вопросы по учебнику С...

Сообщение iAm »

1. Исправьте

Код: Выделить всё

fahr=fahr+step}

на

Код: Выделить всё

fahr=fahr+step;}
.

2. Ничего доустанавливать не нужно.

3.
(Boron @ Jun 8 2006, в 08:11) писал(а):И еще - лишние/недостающие пробелы учитываются?


Все и так работать будет, но в будущем лучше с пробелами писать. ;)
Стиль, знаете ли. Плюс могу привести пример, когда такое написание может вызвать ошибку в программе. :)
Спасибо сказали:
Аватара пользователя
Boron
Сообщения: 197

Re: Вопросы по учебнику С...

Сообщение Boron »

Спасибо всем огромное, все заработало! Буду разбираться теперь над значением команд!

iAm, верю наслово, что это может вызвать ошибку в программе, поэтому и спросил :)... Чтобы привыкать к пробелам, сразу.
Спасибо сказали:
Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Re: Вопросы по учебнику С...

Сообщение fatboy »

Я, блин и не заметил что между step и } нет ; :) Сразу назрел совет:

Код будет лучше читаться если писать примерно так:

Код: Выделить всё

while(fahr <= upper){
    celsius=5*(fahr-32)/9;
    printf("%d\t%d\n",fahr,celsius);
    fahr=fahr+step;
}

(Я так пишу :) )

Так видно где какой блок заканчивается. Но это ИМХО. Вообще - вопрос стилей, а их только общепризнанных штуки 4 или 5.
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
Boron
Сообщения: 197

Re: Вопросы по учебнику С...

Сообщение Boron »

fatboy, ок, спасибо, учту. Лучше сразу учиться все делать "нормально", а то потом переучиваться будет труднее :)
Спасибо сказали:
Аватара пользователя
void_false
Сообщения: 198
Статус: Sergeant of Operations, IDF
ОС: Arch x86_32

Re: Вопросы по учебнику С...

Сообщение void_false »

А что самое странное: я скопировал полностью текст кода из учебника (он в электронном виде) и вставил заместо своего, и тогда вообще пишеться:

Частенько в электронных изданиях напечатанные символы не соответствуют реальности. То есть вместо (') напечатано (`) итд. Так что лучше переписывать с нуля или смотреть прилагающиеся листинги (если таковые есть вообще)
Спасибо сказали:
Аватара пользователя
Boron
Сообщения: 197

Re: Вопросы по учебнику С...

Сообщение Boron »

void_false, ну я все с нуля и пишу, чтобы лучше запомнить команды :)

А вообще, мне вот что интересно:
На языке С пишуться только консольные программы или для графической среды тоже можно (в свое время узнаю, если не заброшу учебники, но все-таки хотелось бы знать)
Спасибо сказали:
Аватара пользователя
aLexx programmer
Сообщения: 985
Статус: Турук-Макто
ОС: Gentoo -> Ubuntu

Re: Вопросы по учебнику С...

Сообщение aLexx programmer »

(Boron @ Jun 8 2006, в 15:38) писал(а):На языке С пишуться только консольные программы или для графической среды тоже можно (в свое время узнаю, если не заброшу учебники, но все-таки хотелось бы знать)

Можно. Смотри в сторону gtk.
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Вопросы по учебнику С...

Сообщение georgy_sh »

Boron писал(а):
08.06.2006 15:38
void_false, ну я все с нуля и пишу, чтобы лучше запомнить команды :)

А вообще, мне вот что интересно:
На языке С пишуться только консольные программы или для графической среды тоже можно (в свое время узнаю, если не заброшу учебники, но все-таки хотелось бы знать)

На языке С пишется огромное количество софта под Linux. Вообще-то на С можно написать, ИМХО, практически любую вещь (в пределах разумного).
Я же сам предпочитаю ООП - поэтому пишу на C++.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вопросы по учебнику С...

Сообщение elide »

предпочитаю ООП - поэтому пишу на C++
вспомнилось...

Код: Выделить всё

"Я придумал термин "объектно-ориентированный", и вот что я вам скажу, я не имел ввиду С++."
-- Алан Кей, OOPSLA '97
(:
слава роботам!
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Вопросы по учебнику С...

Сообщение Alxn1 »

elide писал(а):
08.06.2006 17:09

Код: Выделить всё

"Я придумал термин "объектно-ориентированный", и вот что я вам скажу, я не имел ввиду С++."
-- Алан Кей, OOPSLA '97
(:


IMHO, в рамках ООП можно писать и на С и на Паскале, но удобнее и приятнее - на С++ или на чём-нибудь, что поддерживает данную методологию. :D
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вопросы по учебнику С...

Сообщение elide »

Alxn1
на самом деле, Алан писал как раз о том, что С++ крайне хреново поддерживает данную методологию (:
слава роботам!
Спасибо сказали:
Andrew S
Сообщения: 225
Статус: экспериментатор
ОС: Conrad-Gentoo

Re: Вопросы по учебнику С...

Сообщение Andrew S »

fatboy писал(а):
08.06.2006 04:07
Я, блин и не заметил что между step и } нет ; :) Сразу назрел совет:

Код будет лучше читаться если писать примерно так:

Код: Выделить всё

while(fahr <= upper){
    celsius=5*(fahr-32)/9;
    printf("%d\t%d\n",fahr,celsius);
    fahr=fahr+step;
}

(Я так пишу :) )

Так видно где какой блок заканчивается. Но это ИМХО. Вообще - вопрос стилей, а их только общепризнанных штуки 4 или 5.


Для новичков: этот стиль описан файле в /usr/src/linux/Documentation/CodingStyle (если конечно исходники ядра установлены). Очень полезно почитать и использовать
Спасибо сказали:
Аватара пользователя
nerezus
Сообщения: 525
Статус: Вселенский отказник
ОС: windoze

Re: Вопросы по учебнику С...

Сообщение nerezus »

а про подобную расстановку(точнее нерасстановку пробелов) там так и написано?
т е. fahr+=step вместо fahr += step
ICQ 547097
Спасибо сказали:
Andrew S
Сообщения: 225
Статус: экспериментатор
ОС: Conrad-Gentoo

Re: Вопросы по учебнику С...

Сообщение Andrew S »

Пробелы-то я проглядел :) Не помню есть ли там упоминание о них, читайте сами.
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Вопросы по учебнику С...

Сообщение Sfunx »

Boron писал(а):
08.06.2006 15:38
На языке С пишуться только консольные программы или для графической среды тоже можно (в свое время узнаю, если не заброшу учебники, но все-таки хотелось бы знать)


Согласно принципам написания программ на ЛЮБОМ языке можно писать ЛЮБЫЕ программы. Вопрос только в трудозатратах и количестве имеющихся библиотек.

Для графики я использовал под Linux wxGTK. Если интересно могу выложить прогу на этой байде. для рисования GTK окошек-кнопок можно использовать Glade2, например.
Спасибо сказали:
Аватара пользователя
boombick
Сообщения: 516
Статус: Anonymous
ОС: ArchLinux 0.8 Voodoo

Re: Вопросы по учебнику С...

Сообщение boombick »

aLexx programmer писал(а):
08.06.2006 15:52
Можно. Смотри в сторону gtk.

А почему не Qt?
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вопросы по учебнику С...

Сообщение elide »

boombick
а ну ка расскажи нам про использование QT в голых сях (:

Sfunx
Согласно принципам написания программ на ЛЮБОМ языке можно писать ЛЮБЫЕ программы
хм.... интересно, как может выглядеть программа, скажем, рендеринга svg графики, написанная на brainfuck.....
слава роботам!
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Вопросы по учебнику С...

Сообщение Alxn1 »

elide писал(а):
09.06.2006 14:11
boombick
а ну ка расскажи нам про использование QT в голых сях (:


А по-моему можно. Вроде какая-то обёртка была. Правда, как называется не помню, на sourceforge.net можно поискать, лень только... :rolleyes:
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Вопросы по учебнику С...

Сообщение elide »

это наверное была обертка для gtk в С++ (:
слава роботам!
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Вопросы по учебнику С...

Сообщение Alxn1 »

elide писал(а):
09.06.2006 15:52
это наверное была обертка для gtk в С++ (:


Неа, не оно. Смотрим на QTC в составе Qt# (http://qtcsharp.sourceforge.net/). Вот оно. Правда, сам не пользовал никогда :D
Спасибо сказали:
Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Re: Вопросы по учебнику С...

Сообщение fatboy »

Мысли "вслух".

nerezus писал(а):
08.06.2006 23:12
а про подобную расстановку(точнее нерасстановку пробелов) там так и написано?
т е. fahr+=step вместо fahr += step


Читал как-то книгу Хэзфилда и Кирби "Искусство программирования на С" - интересная книжулька, но для людей уже знакомых с С - так там приводится несколько стилей расстановки именно фигурных скобок и примеры различных управляющих структур, оформленных в разных стилях. Так же как один из вопросов - отступ в блоке от начала строки. О пробелах между операциями и операндами везде где встречаю так только в виде совета.

/Мысли "вслух".

to Boron:
Тот кусочек кода, что я написал, не "правильное" оформление а один из стилей оформления (Да и то я его немного под себя подогнал :) ). Так что лучше всего найти документ именно по стилям и определится с тем какой Вам больше нравится и удобно читается.
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
nerezus
Сообщения: 525
Статус: Вселенский отказник
ОС: windoze

Re: Вопросы по учебнику С...

Сообщение nerezus »

я PEAR-стиль выбрал: это примерно Java-стиль с переводом строки перед { на уровне функций/методов и классов.
ICQ 547097
Спасибо сказали:
Sfunx
Сообщения: 47

Re: Вопросы по учебнику С...

Сообщение Sfunx »

elide писал(а):
09.06.2006 14:11
хм.... интересно, как может выглядеть программа, скажем, рендеринга svg графики, написанная на brainfuck.....


А это не суть важно. Я говорю о "принципиальной возможности". Можно хоть на машине Тьюринга написать рендеринг. :D Вопрос только в том, какой язык для какой задачи удобнее.
Кстати, сам видел одну программистку, которая на FoxPro писала хрень для работы с нестандартной аппаратурой. Программа была конечно - п..ц, но работала :rolleyes:
Спасибо сказали: