Lumaktaw sa pangunahing content

EP 3. Strings and Images in Racket

Part 3. Strings and Images

Racket allows us to build strings, which are just a sequence of characters, and images, which are images. No new evaluation techniques are needed here as it works the same way as primitive calls. 

a typical string looks like this, as it is represented in any major programming language

"I am a string"

the value of the strings are the strings themselves, they can be considered expressions.

To append or combine a string together, we use the string-append primitive.

Of course since we deal with names, we just need to add a space string operand.

string-append takes some number of string operands to combine.

Now let us look at the limitations of certain primitives, lets look at these 2 values there.

The string "123" and the number 123 are different, "123" has a double quote which indicates a string, while 123 is obviously a number.

We can use the addition primitive to add 2 numbers, as we have learned in the beginning.

But if we attempt to add the string and the number, see what happens.

See the error message? It expects a number but we gave it a string. The error is also highlighted which will help us a lot when we learn lisp language dialects like racket which relies on parenthesis to evaluate values.

Here are some things we can do on strings in racket

The string-length returns the length of the string, you are familiar with this function if you have worked in major programming languages

we can also use substrings in strings, they allow us to extract parts of a string.

The way that substring works is that it starts with 0-index like most languages, starts a 2 which is the second operand and ends at index 4, which is not included.

Images


We can generate images using racket, to do that, we need to include the functions from the how to design programs book.

some functions define shapes to draw just like the circle primitive.


The first one is a circle primitive which take 3 operands, the first is an integer which takes the radius in pixels, the form of the circle in string, and the color of the circle in string.

We also have a rectangle primitive

It takes 4 operands. Width, height, form and color and there are many more.

You can also make text images with racket, by using a text primitive.

The text primitive takes 3 operands, the text to be rendered, font size and color. Note that this is not a string but an image.

There is a primitive that modifies the position of shapes, lets take the primitive "above"
it takes the images as operands and stacks them together from top to bottom.

It can be like string-append of images.

Let's look at the "beside" primitive.

It takes the images from left to right. 

The overlay primitive stacks images to top of each other.

You can create interesting things with this.

Mga Komento

Mga sikat na post sa blog na ito

Problem Solving using HtDF method

Problem Solving In this problem, we will use the HtDF method to create a function. Problem:  Design a function that pluralizes a given word. (Pluralize means to convert the word to its plural form.) For simplicity you may assume that just adding s is enough to pluralize a word. Here is the problem that we need to convert into a function. We need to do it systematically using the HtDF method. First we need the signature, recall that the signature will tell us what is the input and expected output. A word is the input and output of the function, and we can represent words, which is just a sequence of characters if you think about it, like a String. So the signature of the function is ;;String -> String Then we will need to know what is the function's purpose, we can look at the specifications to know the purpose. It says that the word is pluralized in the process "assumption that adding s at the end is the pluralized form of the word". Ther...

EP: 18 - HtDF with Itemization

Part 18. HtDF with Itemization From the Countdown Display definition that we have made earlier, we are going to make a function out of it. We have to output an image depending on the state of the countdown.  Here is the Signature, Purpose and Stub. It is recommended to run the code often, the earlier we detect bugs, the better. We need some examples. For tests on itemizations, we need to have as many tests as there are cases. Also, if we have an interval, we have to test points of variance. For the Interval, there is not much variance in the seconds before midnight so it is okay to have only one test for that. There is a primitive called text which converts text to an image, we can also use number->string to convert a number into a string datatype. Note that when we are devising tests, we are already working out the behavior of the function before we start coding. Now we get the template and start creating the function body.  ...

EP: 19 - big-bang Mechanism

Part 19. big-bang We are using Dr. Racket to design interactive programs, from this day forward, this is going to be very complicated. Imagine we have 2 interactive programs, one that counts down from 10 to 0 and some animation of a cat walking in the screen. These programs are interactive by just pressing the space key, the program restarts. These interactive programs change state and it affects the program behavior. On the countdown program, it generates a number from 10 to 0 every 1 second. It is also the same with the cat program, it just changes the x coordinate of the cat every miliseconds. These are 2 different functions, now how can we combine these 2 functions. We combine them by using Dr. Rackets big-bang primitive. (big-bang 0           (on-tick next-cat)           (to-draw render-cat)) We use 0 as the initial world state, then on every tick, we get the next x coordinate, we pass it to the render c...