Учитывая не малое число откликов и отсутствие возражний по теме простейшей программы продолжаем, с учётом замечаний и идей…
Задание к следующему конкурсу звучит примерно так:
Написать на любимом языке программу, которая демонстрирует использование массива данных и применяет по ней цикл.
Условия:
- ясность, наглядность, понимаемость и простота восприятия
- минимализм, краткость не в ущерб наглядности и пункту выше
Начну со своего любимого Си , опять-таки с учётом полученного опыта и «набитых шишек».
Почему многие преподаватели и авторы книг, постов в блогах демонстрируют в качестве «пробы пера» дополнительные вводные переменные из массива и переменных цикла по нему, когда это загромождает код и усложняем новичком его восприятие.
Все рассказывают, про функцию main
в Си, но молчат (видимо, откладывая на потом), что в её заголовке уже есть в качестве параметров и скалярная переменная argc
и, логически связанный с ней, массив строк argv
. Их ведь сразу можно использовать! Но почему же эти педагоги от программирования сразу не объясняют назначение и смысл этих переменных? Ведь всё равно придётся это проходить. Не проще ли их сразу начать использовать для демонстрации возможностей языка?
И по ходу дела рассказать про циклы, логические выражения и условия в операторах…
У меня получилось всего 5 строчек простого и наглядного кода на Си. Вот текст файла arr_cycl.c:
#include <stdio.h>
void main(int argc, char* argv[]){
for(argc-- ; argc>=0 ; argc--)
printf("argv[%i]=%s\n" , argc, argv[argc]);
}
Компиляция и демонстрационный прогон:
gcc arr_cycl.c && ./a.out раз два три
argv[3]=три
argv[2]=два
argv[1]=раз
argv[0]=./a.out
Итерационный цикл с уменьшением переменной, которая и определяет фактически крайний наибольший по индексу элемент, использован чтобы не вводить дополнительных переменных, а нижняя граница массива argv строго табулирована нулём.
Тут можно многое рассказывать новичку в программировании про его нюансы: например, что наибольший индекс (крайний элемент) - это размер массива за вычетом 1, потому, что наименьший индекс - это нуль (нулевое смещение в Си).
И это условие выполняется в первой части оператора for
…
Жду нечта аналогичного на других языках с разъяснениями. Даёшь простые и понятные альтернативы набившим оскомину заскорузлым подходам к изучению программирования (пробам пера)!
P.S.:
Кстати, наш насущный bash - тоже интересен тем, что там, в отличие от классического Bourne Shell - есть массивы.