Institute of Computer Science
  1. Courses
  2. 2017/18 spring
  3. Automata, Languages and Compilers (LTAT.03.006)
ET
Log in

Automata, Languages and Compilers 2017/18 spring

  • Üldinfo
  1. Õppekorraldus
  2. Eksam
  3. Reeglid
  4. Töövahendid
  5. Projekt
  • Kava
  1. Soojendus
    1. Java
    2. Kordamisülesanded
    3. Kahendpuu
    4. Eeltest
    5. Kodutöö
  2. Regulaaravaldised
  3. Olekumasinad
  4. Lõplikud automaadid
  5. Avaldise struktuur
  6. Grammatikad ja lekser
  7. Käsitsi parsimine
  8. ANTLR intro
  9. AST loomine
  10. Interpretaator
  11. Semantiline analüüs
  12. Kompilaator
  • Moodle
  • Bitbucket
  • Fleep!

Eeltest

Selle testiga üritame diagnoosida sinu oskust defineerida omad klassid vastavalt nende kasutamise spetsifikatsioonile. Me toome näited, kuidas peaks saama klassi kasutama, aga sinu ülesandeks jääb defineerida nõuetele vastav klass.

1. Ping-pong

Defineeri ja esita klass pretest.PingPong, mida saaks kasutada nii:

import pretest.PingPong;

public class PingPongDemo {
	public static void main(String[] args) {
		PingPong.playPingPong(10, 16);
	}
}

PingPong.playPingPong võtab kaks täisarvulist argumenti, mis tähistavad vahemikku ja väljastab eraldi ridadele arvud sellest vahemikust. Erandiks on 3- ja 5-ga jaguvad arvud:

  • kui arv jagub 3- ja 5-ga, siis tuleb arvu asemel väljastada PingPong;
  • kui arv jagub 3-ga, siis tuleb arvu asemel väljastada Ping;
  • kui arv jagub 5-ga, siis tuleb arvu asemel väljastada Pong.

Antud näiteprogrammi käivitamisel peab ekraanile ilmuma:

Pong
11
Ping
13
14
PingPong
16

Esitamine: https://moodle.ut.ee/mod/vpl/view.php?id=227948

2. Tervitamine

Defineeri ja esita klass pretest.Person, mida saaks kasutada sedasi:

import java.util.ArrayList;
import java.util.List;

import pretest.Person;

public class PersonDemo {
	public static void main(String[] args) {
		List<Person> inimesed = new ArrayList<>();
		inimesed.add(new Person("Juhan"));
		inimesed.add(new Person("Maris"));
		inimesed.add(new Person("Hannes"));
		inimesed.add(new Person("Teele"));
		inimesed.add(new Person("Peeter"));
		inimesed.get(2).printGreetings();
	}
}

inimene.printGreetings() peab tervitama kõik ülejäänud inimesi nende loomise järjekorras. Võib eeldada, et kõik inimesed luuakse erinevate nimedega.

Antud näiteprogrammi käivitamisel peab ekraanile ilmuma

Tere, Juhan!
Tere, Maris!
Tere, Teele!
Tere, Peeter!

Esitamine: https://moodle.ut.ee/mod/vpl/view.php?id=227947

3. Puu

Defineeri ja esita klass pretest.Tree, mida saaks kasutada nii:

import java.util.Arrays;
import java.util.List;

import pretest.Tree;

public class TreeDemo {
    public static void main(String[] args) {
        Tree tree1 = Tree.node(Tree.leaf(3), Tree.node(Tree.leaf(7), Tree.leaf(2)));
        System.out.println(tree1.toList()); 

        // Proovime nüüd listist moodustada puu
        List<Integer> list = Arrays.asList(8, 19, 20, 200, 120, 9, 10);
        Tree tree2 = Tree.fromList(list);

        // Moodustatud puu peab saama tasandada samaks listiks:
        System.out.println(tree2.toList()); 


        // Boonus: Puude kõrgus võiks ka olla võimalikult madal.
        System.out.println(tree1.height()); 
        System.out.println(tree2.height()); 
    }
}

Antud näiteprogrammi käivitamisel peab ekraanile ilmuma

[3, 7, 2]
[8, 19, 20, 200, 120, 9, 10]
2
3

Esitamine: https://moodle.ut.ee/mod/vpl/view.php?id=227923

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment