Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2017, 12:08   #101
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
За 15 лет не одного callback'а? Ужас. )))
Ага. Вот я в 14 лет написал свой первый колбэк!
Сочный, два параметра. В трех местах вызывался.
Два часа писал, не то что сейчас всякие жаваскриптеры: раз =, два > и всё.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.07.2017, 12:47   #102
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ага.
Мужик! )))
Croessmah вне форума Ответить с цитированием
Старый 30.08.2017, 03:59   #103
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

В предыдущей программе вроде бы всё хорошо. Но один момент меня не устраивает, а именно: алфавит слишком короткий. В нём 26 букв. Если разбить на группы по 3, то получается 9 групп. Маловато. Потому и получилась куча файлов.
В следующий раз я решил алфавит удлинить. В полтора раза. И одновременно ограничить размер кода до 4 Kb. Оказалось, что ограничение на размер алфавита лишнее - мои программы достигают 4 Kb в размере раньше, чем заканчивается алфавит. Ну и пусть.
Зачем вообще это нужно? При изучении программирования изучается язык, и это единственный язык, который я учу. То есть тренируются мои способности. Это первое. Второе. С помощью языка программирования я что-то пишу. Не считая коротких постов-сообщений "по факту" - а журналист из меня хреновый. В-третьих: это что-то, что я пишу, работает. И мне не надо при этом гнаться за прогрессом - мой поезд давно ушёл. А книги (учебники) остались.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 14.10.2017, 12:30   #104
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Вот, прочитал книгу ещё раз, а поскольку алфавит короткий, удлинил его в полтора раза.
Сначала - код-заготовка для программ (так называемая "рыба").
Код:
/*   p1
     Язык Turbo C 2.0
     Начальный курс C и C++. Часть 1.   */

#include <conio.h>
#include <stdio.h>

main ()
{
   int a;

   printf ("? (1) ");
   scanf ("%i", &a);
   if (a == 1) goto aaa;
   printf ("\n");
   return;

aaa:

aaz:
   getch ();
   printf ("\n");
}
На основании этой заготовки делаю программы. Размер программы ограничил 4-мя килобайтами.
Код:
/*   p42
     Язык Turbo C 2.0
     Начальный курс C и C++. Часть 1.   */

/*   1 - 15k, 2 - 20k, 3 - 21k, 5 - 22k, 12 - 23k
     18 - 24k   */


#include <conio.h>
#include <stdio.h>

float g = 3.1415926;
char xa;


m (); n (); o ();
xd (int);
p (float);
float s (float);


main ()
{
   int a, b;   /*   исходные данные   */
   int xm;
   float d;    /*   исходные данные   */
   float j, k;
   unsigned v;
   char xg;
   char xj [80], xk [10];

   printf ("? (1-3) ");
   scanf ("%i", &a);
   if (a == 1) goto aaa;   /*   простые программы   */
   if (a == 2) goto aab;   /*   ввод данных         */
   if (a == 3) goto aac;   /*   специальный ввод    */
   printf ("\n");
   return;

aaa:
   a = 1996;
   printf ("1. Сейчас %i год.\n", a);
   printf ("4. ");
   m (); n (); o ();
   printf ("5. ");
   j = 5;
   p (j);
   printf ("6. Длина окружности радиуса %.4g равна %.4g.\n", j, s (j));
   printf ("7.");
   for (a = 10; a; a--) printf (" %i", a);
   printf ("\nСтарт!\n");
   v = 60000;
   a = v;
   printf ("8. a = %i, v = %u.\n", a, v);

   xg = 'c';
   printf ("10. %c", xg);
   xg = '+';
   printf ("%c%c.\n", xg, xg);
   a = 5; b = 60;
   a++; ++b;
   printf ("15. a = %i, b = %i.\n", a, b);
   printf ("a = %i, b = %i.\n", a++, ++b);
   a = 101 <= 105;
   b = 101 > 105;
   printf ("16. true: %i, false: %i.\n", a, b);

   goto aaz;

aab:
   printf ("Введите два целых числа: ");
   scanf ("%i%i", &a, &b);
   printf ("Введите рациональное число: ");
   scanf ("%f", &d);
   printf ("Введите символ: ");
   scanf ("%c", &xa); scanf ("%c", &xa);
   printf ("Введите строку: ");
   gets (xj); gets (xj);

   j = g * 2 * a;
   printf ("\n2. Радиус %i, длина %.4g.\n", a, j);
   j = g * 2 * d;
   k = g * d * d;
   printf ("3. Радиус %.4g, длина окружности %.4g, площадь круга %.4g.\n",
      d, j, k);
   printf ("9. ");
   xd (a);
   printf ("\n12. Я знаю ваше имя; ваше имя %s.\n", xj);
   xm = b;
   if (!xm) xm = 1;
   printf ("14. Целая часть %i, остаток от деления %i.\n", a / xm, a % xm);
   printf ("17. Число %.4g ", d);
   if (d > 0) {xm = 1; printf ("положительное, sgn = %i.\n", xm);}
   if (d == 0) {xm = 0; printf ("равно нулю, sgn = %i.\n", xm);}
   if (d < 0) {xm = -1; printf ("отрицательное, sgn = %i.\n", xm);}

   printf ("18. Число %.4g ", d);
   if (d > 0) {xm = 1; printf ("положительное.\n");}
   else if (d < 0) {xm = -1; printf ("отрицательное.\n");}
      else {xm = 0; printf ("равно нулю.\n");}
   printf ("19. ");
   if (xa >= 'А'  &&  xa <= 'Я')
      switch (xa)
      {
	 case 'А': printf ("Арбенин.\n"); break;
	 case 'Б': printf ("Блок.\n"); break;
	 case 'В': printf ("Велесаев.\n"); break;
	 case 'Г': printf ("Гюго.\n"); break;
	 default: printf ("Демидов, Золотарев и другие.\n"); break;
      }
   else printf ("Надо было ввести прописную русскую букву.\n");

   printf ("20. ");
   if (xa >= 'А'  &&  xa <= 'Я')
      switch (xa)
      {
	 case 'А': printf ("Астафьев.\n");
	 case 'Б': printf ("Береговой.\n");
	 case 'В': printf ("Вознесенский.\n");
	 case 'Г': printf ("Громов.\n");
	 default: printf ("Дьяченко, Зигмунд и другие.\n");
      }
   else printf ("Надо было ввести прописную русскую букву.\n");

   goto aaz;

aac:
   printf ("11. Нажмите какую-либо клавишу: ");
   xg = getche ();
   if (xg == 'a') printf ("\nВы нажали клавишу 'a'.");
   printf ("\nВы нажали клавишу '%c'.\n", xg);
   printf ("13. Введите строку: ");
   gets (xj);
   scanf ("%[0123456789]%s", xj, xk);
   printf ("%s..%s.\n", xj, xk);

aaz:
   getch ();
   printf ("\n");
}


m () {printf ("Вызвали первую функцию.\n");}
n () {printf ("Вызвали вторую функцию.\n");}
o () {printf ("Вызвали третью функцию.\n");}

xd (int a)
{
   int b;
   for (b = 0; b <= a - 1; b++) printf ("%c", xa);
}

p (float a) {printf ("Длина окружности радиуса %.4g равна %.4g.\n",
   a, g * 2 * a);}

float s (float a) {return g * 2 * a;}
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 15.10.2017, 02:01   #105
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

a,b,j,k,v ... отличные названия переменных. Был у меня такой гений. 17 лет писал на паскале(дельфи) игру. Потом, ктото перевел ему в С для мака, примерно такого же качества, а я собирал потом под дроид.

Ну...300 глобальных перменных вида i,j,k,n,ij,jk,nk и прочее!!!! Нету передачи параметров в функции вообще, нету локальных переменных вообще...это был тихий ужас.
Видимо, вы с ним 1 книгу читаете.
alexzk вне форума Ответить с цитированием
Старый 15.10.2017, 04:31   #106
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

:D
А словарь-то у него был хотя бы? У меня, если переменных больше 10, есть пояснения в комментариях, для чего они нужны. А то я сам запутаюсь. Приходишь через неделю, после работы, уставший - и не впираешься - а для чего это?

В моей же транскрипции можно разобраться за 10 минут. Всё просто: переменные делятся по типам, на группы из трёх подобных переменных. Какая подходит - ту и используем. Число переменных ограничено.
Код:
/*   p79
     Язык Turbo C 2.0
     Начальный курс C и C++. Часть 2.   */

/*   1 - 15k, 2 - 19k, 6 - 20k, 10 - 21k, 11 - 27k
     17 - 29k   */

#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


main ()
{
   int a, b, c;
   int m [10] = {1, 23, 4, 7, 8, 0, 1, 9, 4, 7};
   int *v, *w;
   unsigned char d;
   char g [80], h [20];
   char j [5] [20];
   char xa [] = "String of Letters in Different Registers.";
   char *xd;
   char *xg [] = {"exe", "com", "dat", "c", "pas", "cpp"};
   float p, q;
   float *s;

   printf ("? (1-3) ");
   scanf ("%i", &a);
   if (a == 1) goto aaa;   /*   простые программы   */
   if (a == 2) goto aab;   /*   специальный ввод    */
   if (a == 3) goto aac;   /*   ввод данных         */
   printf ("\n");
   return;

aaa:
   printf ("3.\n");
   for (a = 0; a < 10; a++)
   {
      for (b = 0; b < 6; b++)  printf ("%i * %i = %-2i   ", a, b, a * b);
      printf ("\n");
   }

   printf ("\n4. ");
   for (a = 0; a < 1000; a++)
   {
      b = a * a * a;
      printf ("%i - %i", a, b);
      if (b > 10000)
      {
	 printf (".\n");
	 break;
      }
      else  printf (", ");
   }

   printf ("\n5.   ");
   for (a = 0; a < 1000; a++)
   {
      if (a % 7)  continue;
      printf ("%i ", a);
   }

   printf ("\n7. ");
   strcpy (g, "Привет, "); strcpy (h, "мир!");
   puts (g); puts (h);
   strcat (g, h);
   puts (g); puts (h);
   strcpy (j [0], "Turbo Basic");
   strcpy (j [1], "Turbo Pascal");
   strcpy (j [2], "Borland C++");
   strcpy (j [3], "Turbo Prolog");
   strcpy (j [4], "Paradox");
   printf ("10. Неотсортированный массив:");
   for (a = 0; a < 10; a++)  printf (" %i", m [a]);
   for (a = 0; a < 9; a++)
      for (b = 0; b < 9; b++)
	 if (m [b] < m [b + 1])
	 {
	    c = m [b];
	    m [b] = m [b + 1];
	    m [b + 1] = c;
	 }

   printf ("\nОтсортированный массив:");
   for (a = 0; a < 10; a++)  printf (" %i", m [a]);
   p = 10.1;
   s = &p;
   q = *s;
   printf ("\n11. p = %g, q = %g.\n", p, q);
   (*s)++;
   printf ("p = %g, q = %g.\n", p, q);
   q = 1 + *s * q;
   printf ("p = %g, q = %g.\n", p, q);
   a = 10;
   v = &a;
   w = v;
   printf ("12. v = %p", v);
   printf (", w = %p.\n", w);
   printf ("a = %i, *w = %i.\n", a, *w);

   p = 10.1;
   v = (int *) &p;
   q = *v;
   printf ("13. p = %g, q = %g.\n", p, q);
   v = &a;
   printf ("14. v = %p, ", v++);
   printf ("%p.\n", v);
   printf ("15. Строка Будет Напечатана Прописными Буквами.\n");
   a = 0;
   while (xa [a])  printf ("%c", toupper (xa [a++]));
   printf ("\n16. Строка будет напечатана строчными буквами.\n");
   xd = xa;
   while (*xd)  printf ("%c", tolower (*xd++));
   printf ("\n");

   goto aaz;

aab:
   printf ("1. Введите символ 'Q':");
   for (;;)
   {
      d = getchar ();
      if (d == 'Q')  break;
      printf ("%c", d);
   }

   printf ("\n2. ");
   randomize ();
   a = random (100) + 1;
   b = 0;
   do {
      printf ("Введите число от 1 до 100: ");
      scanf ("%i", &c);
      b++;
      if (a < c) printf ("Загаданное число меньше.\n");
      if (a > c) printf ("Загаданное число больше.\n");
   } while (a - c);
   printf ("Вы угадали число: %i. ", a);
   printf ("Затратили на угадывание %i попыток.\n\n", b);

   printf ("6. Введите строку: ");
   gets (g); gets (g);
   printf ("Вы ввели строку %s.\n", g);
   printf ("Введите строку: ");
   scanf ("%s", g);
   printf ("Вы ввели строку ");
   puts (g);

   printf ("17. ");
   for (;;) {
      do {
	 printf ("Файлы с расширением: 1. exe, 2. com, 3. dat, 4. c, ");
	 printf ("5. pas, 6. cpp, 7. quit.\n");
	 printf ("Ваш выбор: ");
	 d = getche ();
	 printf ("\n");
      } while (d < '1'  ||  d > '7');
      if (d == '7')  break;
      strcpy (g, "dir *.");
      strcat (g, xg [d - '1']);
      system (g);
      printf ("\n-----\n");
   }

   goto aaz;

aac:
   printf ("Введите строку: ");
   gets (g); gets (g);

   printf ("8. Строка '%s' имеет длину %i символов.\n", g, strlen (g));

aaz:
   getch ();
   printf ("\n");
}
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 15.10.2017, 05:06   #107
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Видимо вы пользуетесь давно устаревшим стандартом. Нынешние программисты не страдают от маразма и делают так:
Код:
for (int a = 0; a < 10; a++)
Т.о. переменная локальна, со всеми вытекающими плюшками. Компилятор может отлавливать логические ошибки на этапе компиляции:
Код:
for (int a = 0; a < 10; a++)
for (int a = 0; a < 10; a++);
вот на такой код (дажды -а ) выдаст варнинг и сразу видно - косячим с копипастом. Отловит и более сложные вещи.
И вообще "Не достойно человеку, подобно рабу, делать то, что с успехом можно поручить машине" (по-моему Ч. Бэбидж)


...а когда вы таки дорастете до мульти-потокового программирования, то без побного кода вам никак

Код:
void some()
{
  ...//many code
  {
      std::lock_guard<std::mutex> tmp(mut);
      a = a+ 1;
   }
  //many more code
}
C вашим отказом использовать области видимости выйдет малоэффективный тормоз.

Последний раз редактировалось alexzk; 15.10.2017 в 05:09.
alexzk вне форума Ответить с цитированием
Старый 15.10.2017, 18:54   #108
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Мои программы не тормозят, потому что они не делают ничего сложного.
Что-то я не припомню, чтобы мне поручались сложные задачи. Тем более - такие задачи, для которых надо хоть что-нибудь знать. Вероятно, в нашем обществе таких задач просто нет. (Тем более - таких задач, для которых надо знать программирование!) Я просто читаю книги.

И всё равно это намного круче, чем то, что нам преподавали в 1993-ем году в школе.
Конечно, мой преподаватель в институте в 1996-ом году знал намного больше, чем я сейчас. Но то, что он нам объяснил, было чуть больше, чем 0.

Третья часть того же самого.
Код:
/*   p96
     Язык Turbo C 2.0
     Начальный курс C и C++. Часть 3.   */

/*   1 - 15k, 2 - 20k, 7 - 21k   */


#include <conio.h>
#include <stdio.h>

int xd = 7;


float j (float);
int *p (int *);
s (int *);
v (); w (); x (); xa (); xb ();
xg (int, int);
xj (int *, int *);


main ()
{
   int a, b;
   int *d;
   int **g;
   int xd = 10;
   float m;

   printf ("? (1) ");
   scanf ("%i", &a);
   if (a == 1) goto aaa;   /*   простые программы   */
   printf ("\n");
   return;

aaa:
   a = 7;
   d = &a;
   g = &d;
   printf ("1. a = %i, d = %p, g = %p.\n", a, d, g);
   (*d)++;
   printf ("a = %i, d = %p, g = %p.\n", a, d, g);
   **g = 12;
   printf ("a = %i, d = %p, g = %p.\n", a, d, g);
   m = 5.2;
   printf ("2. Квадрат числа %.4g равен %.4g.\n", m, j (m));
   p (&a);
   a = 10;
   s (&a);
   v ();

   printf ("6. ");
   a = 1;
   w ();
   printf ("В функции 'main ()' значение 'a' равно %i.\n", a);
   printf ("7. ");
   for (a = 1; a < 4; a++)
   {
      printf ("Вызов номер %i: ", a);
      x ();
      printf ("Вызов номер %i: ", a);
      x ();
   }

   printf ("8. xd = %i.\n", xd);
   xd++;
   {
      int xd = 200;
      printf ("xd = %i.\n", xd);
      xd++;
   }

   printf ("xd = %i.\n", xd++); xa ();
   printf ("xd = %i.\n", xd++); xb ();
   printf ("xd = %i.\n", xd++); xb ();
   printf ("xd = %i.\n", xd++);
   a = 5;
   b = 10;
   printf ("9. Сначала a = %i, b = %i.\n", a, b);
   xg (a, b);
   printf ("Теперь a = %i, y = %i.\n", a, b);
   printf ("Ничего не изменилось.\n");
   xj (&a, &b);
   printf ("Теперь a = %i, b = %i.\n", a, b);
   printf ("Значения поменялись.\n");

aaz:
   getch ();
   printf ("\n");
}


float j (float a) {return a * a;}

int *p (int *a)
{
   *a = *a * *a;
   return a;
}

s (int *a) {*a = *a * *a;}

v ()
{
   int a;
   for (a = 0; a < 80; a++)  printf ("-");
}

w ()
{
   int a;
   a = 10;
   printf ("В функции 'w ()' значение 'a' равно %i.\n", a);
}

x ()
{
   int a = 1;
   static b = 1;
   printf ("a = %i, b = %i.\n", a++, b++);
}

xa ()
{
   int xd = 77;
   printf ("xd = %i.\n", xd);
   xd++;
}

xb ()
{
   printf ("xd = %i.\n", xd);
   xd++;
}

xg (int a, int b)
{
   int c = a;
   a = b;
   b = c;
}

xj (int *a, int *b)
{
   int c = *a;
   *a = *b;
   *b = c;
}
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...

Последний раз редактировалось jura_k; 15.10.2017 в 18:57.
jura_k вне форума Ответить с цитированием
Старый 15.10.2017, 19:02   #109
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
Видимо вы пользуетесь давно устаревшим стандартом. Нынешние программисты не страдают от маразма и делают так:
Мимоходом замечу: скорее всего, в "Turbo C" такая вещь не работает. Банально лень проверять.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 15.10.2017, 19:11   #110
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
скорее всего, в "Turbo C" такая вещь не работает.
Turbo C уже никому не нужен лет эдак двадцать.
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C под DOS jura_k Общие вопросы C/C++ 26 01.08.2015 09:03
Из Dos под Win Nozema Фриланс 3 30.10.2009 17:34
C++ под DOS. Функции Xeon332 Общие вопросы C/C++ 34 29.11.2008 18:01
borland C++под DOS Xeon332 Помощь студентам 9 20.09.2008 20:50