You can manipulate the coordinates of any texture. The coordinates are like gradients going from 0 to infinity in x, y and z axis in positive and negative(from 0 to negative infinity) directions. You can separate them and then you can repeat a part of each one using maths - modulo operation in this case and compensating for the 'intensity' apropriatley. You can then draw a circle by taking a section of a spcherical gradiant with 'greater than' maths operation. This might make more sense if you have a look at the nodes:
Here is the .blend file:
Other shapes get more complicated, however you can construct whatever shapes you imagine using math and existing nodes. If you are interested, you can have a look at this other example with pentagons. Obviously, there are many ways to make patterns with pentagons and since you have not specified what you want exactly, this is just an example that might help you come up with a way to achieve what you need:
It might be a lot easier to draw shapes in an image editor or render them out with Blender to use as image textures instead of choosing the procedural way. It is possible to mix bitmap images with procedural textures any way you wish as well.