diff --git a/Dockerfile b/Dockerfile index b641abe..1da6979 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,9 @@ FROM hexletbasics/base-image:latest -# TODO: replace exercises-template with "exercises-" -WORKDIR /exercises-template +RUN apt-get update && apt-get install -y fpc -# https://github.com/pgrange/bash_unit -RUN cd /usr/local/bin && curl -s https://raw.githubusercontent.com/pgrange/bash_unit/master/install.sh | bash +WORKDIR /exercises-pascal COPY . . -# TODO: replace -ENV PATH=/exercises-template/bin:$PATH +ENV PATH=/exercises-pascal/bin:$PATH diff --git a/Makefile b/Makefile index 924b1ab..8703495 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,6 @@ compose-code-lint: docker-compose run exercises make code-lint code-lint: - # TODO: add linter echo "code-lint" compose-description-lint: diff --git a/README.md b/README.md index fbeca93..3a7fc78 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Description -The template repository contains the exercise `Hello, World!` and the basic structure for all exercise repos. Use the `make find-todo` command to find a template code to replace for your language +Free introductory Pascal course. It starts with the classic `Hello, World!` exercise and covers the basics of the language. ## How to contribute diff --git a/bin/test.sh b/bin/test.sh index be420f9..3885933 100755 --- a/bin/test.sh +++ b/bin/test.sh @@ -1,3 +1,11 @@ -#!/bin/env bash -# TODO: add test run -bash_unit test_index.sh +#!/usr/bin/env bash + +fpc -v0 index.pas >/dev/null 2>&1 || { echo "Compilation failed"; exit 1; } + +actual=$(./index) +expected="Hello, World!" + +if [ "$actual" != "$expected" ]; then + echo "Expected '$expected', but got '$actual'" + exit 1 +fi diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 2dd48e2..9ab3c35 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -5,5 +5,4 @@ version: '3' services: exercises: volumes: - # TODO: replace exercises-template with "exercises-" - - ".:/exercises-template" + - ".:/exercises-pascal" diff --git a/modules/10-basics/10-hello-world/description.ru.yml b/modules/10-basics/10-hello-world/description.ru.yml index 5b98ac7..9768203 100644 --- a/modules/10-basics/10-hello-world/description.ru.yml +++ b/modules/10-basics/10-hello-world/description.ru.yml @@ -1,19 +1,31 @@ --- -# TODO: replace -name: Привет, Мир! + +name: Первая программа на Pascal theory: | - По традиции начнем с написания программы 'Hello, World!'. Эта программа будет выводить на экран текст: + Изучать язык программирования, по традиции, начинают с программы 'Hello, World!'. - ```sh - echo 'Hello, World!' + ```text + Hello, World! ``` -instructions: | + В языке Pascal эта программа будет выглядеть так: + + ```pascal + begin + writeln('Hello, World!'); + end. + ``` + Текст `Hello, World!` появится на экране благодаря процедуре `writeln`. + +instructions: | Наберите в редакторе код из задания символ в символ и нажмите «Проверить». - ```sh - echo 'Hello, World!' + ```pascal + writeln('Hello, World!'); ``` -tips: [] + > Внимание: если вы напишете `heLLo, woRld!` вместо `Hello, World!`, то это будет считаться другим текстом, потому что заглавные и строчные буквы — это разные символы. Размер буквы называют *регистром*, и говорят: **регистр — важен!** Это касается почти всего в коде, поэтому привыкайте всегда обращать внимание на регистр. + +tips: + - "Если в редакторе есть запись `// BEGIN` и `// END`, то код нужно писать между этими строчками." diff --git a/modules/10-basics/10-hello-world/index.pas b/modules/10-basics/10-hello-world/index.pas new file mode 100644 index 0000000..d1f815b --- /dev/null +++ b/modules/10-basics/10-hello-world/index.pas @@ -0,0 +1,7 @@ +program HelloWorld; + +begin + // BEGIN + writeln('Hello, World!'); + // END +end. diff --git a/modules/10-basics/10-hello-world/index.sh b/modules/10-basics/10-hello-world/index.sh deleted file mode 100644 index 246d6d8..0000000 --- a/modules/10-basics/10-hello-world/index.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/env bash - -# BEGIN -echo 'Hello, World!' -# END diff --git a/modules/10-basics/10-hello-world/ru/EXERCISE.md b/modules/10-basics/10-hello-world/ru/EXERCISE.md index aa286c5..cc56b16 100644 --- a/modules/10-basics/10-hello-world/ru/EXERCISE.md +++ b/modules/10-basics/10-hello-world/ru/EXERCISE.md @@ -1,6 +1,7 @@ - Наберите в редакторе код из задания символ в символ и нажмите «Проверить». -```sh -echo 'Hello, World!' +```pascal +writeln('Hello, World!'); ``` + +> Внимание: если вы напишете `heLLo, woRld!` вместо `Hello, World!`, то это будет считаться другим текстом, потому что заглавные и строчные буквы — это разные символы. Размер буквы называют *регистром*, и говорят: **регистр — важен!** Это касается почти всего в коде, поэтому привыкайте всегда обращать внимание на регистр. diff --git a/modules/10-basics/10-hello-world/ru/README.md b/modules/10-basics/10-hello-world/ru/README.md index da6862f..a7b4689 100644 --- a/modules/10-basics/10-hello-world/ru/README.md +++ b/modules/10-basics/10-hello-world/ru/README.md @@ -1,5 +1,15 @@ -По традиции начнем с написания программы 'Hello, World!'. Эта программа будет выводить на экран текст: +Изучать язык программирования, по традиции, начинают с программы 'Hello, World!'. -```sh -echo 'Hello, World!' +```text +Hello, World! ``` + +В языке Pascal эта программа будет выглядеть так: + +```pascal +begin + writeln('Hello, World!'); +end. +``` + +Текст `Hello, World!` появится на экране благодаря процедуре `writeln`. diff --git a/modules/10-basics/10-hello-world/ru/data.yml b/modules/10-basics/10-hello-world/ru/data.yml index 7640b7e..2040d10 100644 --- a/modules/10-basics/10-hello-world/ru/data.yml +++ b/modules/10-basics/10-hello-world/ru/data.yml @@ -1,2 +1,5 @@ -name: Привет, Мир! -tips: [] +name: Первая программа на Pascal +tips: + - >- + Если в редакторе есть запись `// BEGIN` и `// END`, то код нужно писать между + этими строчками. diff --git a/modules/10-basics/10-hello-world/test.pas b/modules/10-basics/10-hello-world/test.pas new file mode 100644 index 0000000..9ac504e --- /dev/null +++ b/modules/10-basics/10-hello-world/test.pas @@ -0,0 +1,5 @@ +program HelloWorld; + +begin + writeln('Hello, World!'); +end. diff --git a/modules/10-basics/10-hello-world/test_index.sh b/modules/10-basics/10-hello-world/test_index.sh deleted file mode 100644 index ccbdf35..0000000 --- a/modules/10-basics/10-hello-world/test_index.sh +++ /dev/null @@ -1,9 +0,0 @@ -test_hello_world() { - echo - echo - . index.sh || exit 1 - result=`. index.sh` - assert_equals "Hello, World!" "$result" - echo - echo -} diff --git a/modules/10-basics/description.ru.yml b/modules/10-basics/description.ru.yml index 572243a..58e45ad 100644 --- a/modules/10-basics/description.ru.yml +++ b/modules/10-basics/description.ru.yml @@ -1,5 +1,5 @@ --- -# TODO: replace -name: Основы Bash + +name: Основы Pascal description: | - Описание + Pascal — процедурный язык программирования со строгой типизацией, созданный для обучения структурному программированию. Простой и наглядный синтаксис делает его удобным для знакомства с азами разработки. В первом модуле познакомимся с основами языка. diff --git a/spec.yml b/spec.yml index 9621d3e..e740b00 100644 --- a/spec.yml +++ b/spec.yml @@ -1,6 +1,10 @@ +--- + language: - # TODO: replace exercises-template with "exercises-" - docker_image: "ghcr.io/hexlet-basics/exercises-template" - extension: sh # TODO: replace - exercise_filename: index.sh # TODO: replace - exercise_test_filename: test_index.sh # TODO: replace + docker_image: "ghcr.io/hexlet-basics/exercises-pascal" + extension: pas + exercise_filename: index.pas + exercise_test_filename: test.pas + learn_as: first_language + progress: in_development + name: Pascal