16.04.2013, 21:36
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
oleg110592, Не проще вам будет здесь же задать вопрос ?
Похоже чтение литературы вам в прок не идет, видимо вы обучались по "кухаркиным" статьям и методом тыка. Отсюда и не понимание понятий , определений .
Заметьте я не обс...ю , не унижаю, вам точно нужна помощь.
Хотя бы та же структура сишного проекта , колоссальные грабли новиков...
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 16.04.2013 в 21:45.
|
|
|
|
16.04.2013, 21:51
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Ну зря вы Кернигана и Ричи назвали кухарками
Вот этого не могу понять: Длина массива S не указана, так как она определена в MAIN. И где она определена?
Извините за такой текст - как было
Код:
|
#DEFINE MAXLINE 1000 /* MAXIMUM INPUT
LINE SIZE */
MAIN() /* FIND LONGEST LINE */
{
INT LEN; /* CURRENT LINE LENGTH */
INT MAX; /* MAXIMUM LENGTH SEEN SO FAR */
CHAR LINE[MAXLINE]; /* CURRENT INPUT LINE */
CHAR SAVE[MAXLINE]; /* LONGEST LINE, SAVED */
MAX = 0;
WHILE ((LEN = GETLINE(LINE, MAXLINE)) › 0)
IF (LEN › MAX) {
MAX = LEN;
COPY(LINE, SAVE);
}
IF (MAX › 0) /* THERE WAS A LINE */
PRINTF("%S", SAVE);
}
GETLINE(S,LIM) /* GET LINE INTO S,RETURN LENGTH */
CHAR S[];
INT LIM;
{
INT C, I;
FOR(I=0;I‹LIM-1 && (C=GETCHAR())!=EOF && C!='\N';++I)
S[I] = C;
IF (C == '\N') {
S[I] = C;
++I;
}
S[I] = '\0';
RETURN(I);
}
COPY(S1, S2) /* COPY S1 TO S2;
ASSUME S2 BIG ENOUGH */
CHAR S1[], S2[];
{
INT I;
I = 0;
WHILE ((S2[I] = S1[I] != '\0')
++I;
}
Функция MAIN и GETLINE общаются как через пару аргумен-
тов, так и через возвращаемое значение. аргументы GETLINE
описаны в строках
CHAR S[];
INT LIM;
которые указывают, что первый аргумент является массивом, а
второй - целым.
Длина массива S не указана, так как она определена в
MAIN . функция GETLINE использует оператор RETURN для пере-
дачи значения назад в вызывающую программу точно так же, как
это делала функция POWER. Одни функции возвращают некоторое
нужное значение; другие, подобно COPY, используются из-за их
действия и не возвращают никакого значения. |
я обс...ю тоже переведите, я подумал о нехорошем
|
|
|
|
16.04.2013, 21:59
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Сообщение от oleg110592
|
Ну зря вы Кернигана и Ричи назвали кухарками
|
Не я не о них . Имелись ввиду многочисленные бложики .
А внизу именно то что вы подумали, только частица "не" вылетела ... ![Прикольно](images/smilies/icon_wink3.gif)
Уже исправил...
__________________
Осторожно , злой кот
|
|
|
|
16.04.2013, 22:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Сообщение от oleg110592
|
но вы и не доказали обратного
|
Еще вчера я хотел помочь вам двоим разобраться в этом вопросе, но...
Давайте по порядку...
- Отвечая на запрос "ну приведите хоть один пример", я привел два примера, один из них снабдил иллюстрациями, а про второй сказал, где эти иллюстрации можно найти.
- Вы оба продолжили спорить, даже не ознакомившись с предложенной мной информацией, не вникая в суть. Если, содержание высказываний, с которыми вы все это время спорите, вас обоих не интересует, значит спорите вы "из прынцыпа", а это мне неинтересно.
- Причину, по которой вас не интересуют аргументы оппонентов, можно разглядеть в целом ряде ваших высказываний из серии "у меня тут работает как-то, и ладно":
Сообщение от oleg110592
|
структуры и указатели не применяю
|
Сообщение от oleg110592
|
с 2006г программа ... включает ... и опрашивает ... без сбоев
|
Сообщение от akegor
|
трудятся контроллеры автономно, закопанные в землю ... со структурами и союзами
|
Сообщение от oleg110592
|
пока убогого багажа знаний хватает
|
В целом, становится очевидным вывод, что эта тема вас обоих попросту не интересует - именно поэтому доводы, доказательства и фактические примеры вами даже не рассматриваются (" книги Вашей я не читал, но компетентно заявляю!").
Сообщение от oleg110592
|
ткните хоть носом, какую книгу почитать, может KR устарели
|
Вы заявили себя знатоком ассемблера недавно, не так ли? Если честно, я не понимаю, как человек, имеющий большой опыт разработки на асме, может не видеть сути в учебнике по Си. И поэтому я затрудняюсь сейчас предложить учебник. Думаю, что сначала Вам нужно сформулировать для себя базис - для чего вообще нужны компиляторы, какие основные задачи они решают. А затем уже читать учебники, все время стремясь понять в прочитанном материале, какие задачи и как должен решать компилятор, чтобы отрабатывать соответствующие языковые конструкции.
____________________________________
Upd:
Сообщение от oleg110592
|
Длина массива S не указана, так как она определена в MAIN
|
Ну вот и подтверждение тому, что Вы читаете не для того, чтобы понять, а с какой-то иной целью.
Там же русским по белому написано, что S[] - это не переменная, а параметр функции:
Сообщение от oleg110592
|
аргументы GETLINE
описаны в строкахCHAR S[];
INT LIM;
|
Кстати - Вы уверены, что это вообще Си? Такие вещи, как "CHAR", "RETURN" языку Си не соответствуют.
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 16.04.2013 в 22:26.
|
|
|
|
16.04.2013, 22:23
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Спасибо за объяснение - думал всегда параметры в круглых скобках.
Ассемблера не знаток - такого не говорил, так не много писал когда си еще не было.
Ну все таки на второй (или первый?) пример CV выдал варнинг. Другой пример пока не понял в чем проблема - попробую разобраться.
ладно признаю: -1 CV
|
|
|
|
16.04.2013, 22:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Сообщение от oleg110592
|
Ну все таки на второй (или первый?) пример CV выдал варнинг
|
Объяснять разницу между предупреждением и ошибкой я сейчас не буду, но она принципиальная.
_______________________________
Сообщение от oleg110592
|
Ассемблера не знаток - ... так не много писал
|
А тогда зачем и на каком основании было написано это? :
Сообщение от oleg110592
|
самые надежные программы написаны на ассемблере.
|
__________________
There's always more than one way to skin a cat.
Последний раз редактировалось tempora; 16.04.2013 в 22:48.
|
|
|
|
16.04.2013, 22:37
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,542
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Сообщение от oleg110592
|
Ну зря вы Кернигана и Ричи назвали кухарками
Вот этого не могу понять: Длина массива S не указана, так как она определена в MAIN. И где она определена?
Извините за такой текст - как было
Код:
|
#DEFINE MAXLINE 1000 /* MAXIMUM INPUT
LINE SIZE */
MAIN() /* FIND LONGEST LINE */
{
INT LEN; /* CURRENT LINE LENGTH */
INT MAX; /* MAXIMUM LENGTH SEEN SO FAR */
CHAR LINE[MAXLINE]; /* CURRENT INPUT LINE */
CHAR SAVE[MAXLINE]; /* LONGEST LINE, SAVED */
MAX = 0;
WHILE ((LEN = GETLINE(LINE, MAXLINE)) › 0)
IF (LEN › MAX) {
MAX = LEN;
COPY(LINE, SAVE);
}
IF (MAX › 0) /* THERE WAS A LINE */
PRINTF("%S", SAVE);
}
GETLINE(S,LIM) /* GET LINE INTO S,RETURN LENGTH */
CHAR S[];
INT LIM;
{
INT C, I;
FOR(I=0;I‹LIM-1 && (C=GETCHAR())!=EOF && C!='\N';++I)
S[I] = C;
IF (C == '\N') {
S[I] = C;
++I;
}
S[I] = '\0';
RETURN(I);
}
COPY(S1, S2) /* COPY S1 TO S2;
ASSUME S2 BIG ENOUGH */
CHAR S1[], S2[];
{
INT I;
I = 0;
WHILE ((S2[I] = S1[I] != '\0')
++I;
}
Функция MAIN и GETLINE общаются как через пару аргумен-
тов, так и через возвращаемое значение. аргументы GETLINE
описаны в строках
CHAR S[];
INT LIM;
которые указывают, что первый аргумент является массивом, а
второй - целым.
Длина массива S не указана, так как она определена в
MAIN . функция GETLINE использует оператор RETURN для пере-
дачи значения назад в вызывающую программу точно так же, как
это делала функция POWER. Одни функции возвращают некоторое
нужное значение; другие, подобно COPY, используются из-за их
действия и не возвращают никакого значения. |
я обс...ю тоже переведите, я подумал о нехорошем
|
Извиняюсь Вас спросить - а ЭТО откуда? Пролистнул книгу, похожее нашел, но только ПОХОЖЕЕ, без дичи, которая в приведенной вырезке. У меня стр 42, параграф 1.9
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
16.04.2013, 23:07
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
откуда?http://lib.ru/CTOTOR/kernigan.txt
А тогда зачем и на каком основании было написано это? :
я там писал - это мое личное (ошибочное) имхо
Проверил пример, поскольку нужных функций не было - подкорректировал, не знаю правильно ли
Код:
|
struct {
char value, code;
} xlattable[16] = {
{'0',0}, {'1',0}, {'2',0}, {'3',0},
{'4',0}, {'5',0}, {'6',0}, {'7',0},
{'8',0}, {'9',0}, {'A',0}, {'B',0},
{'C',0}, {'D',0}, {'E',0}, {'F',0}
};
void BuildXlat()
{
unsigned char i;
printf("Initiating XLAT table...\r");
for(i=0; i ‹ (sizeof(xlattable)/sizeof(*xlattable)); ++i)
{
xlattable[i].code = xlattable[i].value;
printf("xlattable[");
printf("%d",i);
printf("] = {0x");
printf("%d",xlattable[i].value);
printf(";0x");
printf("%d",xlattable[i].code);
printf("}\r");
}
printf("Initiating XLAT table done.\r");
} |
протеус
Код:
|
Initiating XLAT table...
xlattable[0] = {0x48;0x48}
xlattable[1] = {0x49;0x49}
xlattable[2] = {0x50;0x50}
xlattable[3] = {0x51;0x51}
xlattable[4] = {0x52;0x52}
xlattable[5] = {0x53;0x53}
xlattable[6] = {0x54;0x54}
xlattable[7] = {0x55;0x55}
xlattable[8] = {0x56;0x56}
xlattable[9] = {0x57;0x57}
xlattable[10] = {0x65;0x65}
xlattable[11] = {0x66;0x66}
xlattable[12] = {0x67;0x67}
xlattable[13] = {0x68;0x68}
xlattable[14] = {0x69;0x69}
xlattable[15] = {0x70;0x70}
Initiating XLAT table done. |
|
|
|
|
16.04.2013, 23:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
Сообщение от oleg110592
|
Проверил пример,
|
К этому, возможно, еще вернемся, но позже. Хотя, если всё же прочтёте то, что я рекомендовал прочесть, может и сами увидите эту "чудесную" картину CV.
__________________
There's always more than one way to skin a cat.
|
|
|
|
17.04.2013, 00:15
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: FlowCode это оптимальный старт в програмировании AVR+PIC
чуть подправил для проверки - вроде из массива правильные значения берет:
Код:
|
Initiating XLAT table...
xlattable[0] = {0x0;0x0}
xlattable[1] = {0x1;0x0}
xlattable[2] = {0x2;0x0}
xlattable[3] = {0x3;0x0}
xlattable[4] = {0x4;0x0}
xlattable[5] = {0x5;0x0}
xlattable[6] = {0x6;0x0}
xlattable[7] = {0x7;0x0}
xlattable[8] = {0x8;0x0}
xlattable[9] = {0x9;0x0}
xlattable[10] = {0xA;0x0}
xlattable[11] = {0xB;0x0}
xlattable[12] = {0xC;0x0}
xlattable[13] = {0xD;0x0}
xlattable[14] = {0xE;0x0}
xlattable[15] = {0xF;0x0}
Initiating XLAT table done. |
дальше сдаюсь
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:12.
|
|