This document discusses lists, dictionaries, arrays, and control flow statements like loops and conditionals in programming. It provides examples of lists, dictionaries, and arrays, explaining the differences between them. Lists are ordered and allow indexed retrieval, while dictionaries store key-value pairs. Arrays can use numeric or string indices. The document also discusses loops like for, while, and foreach loops used to repeat actions, and conditions used to control program flow. Students are assigned to identify examples of lists, arrays, and looping logic in code samples.
2. Lists and Dictionaries
• In computer science, a list (or sequence) is an abstract
data type that implements an ordered collection of values.
Each instance of a value on a list is usually called an item,
entry or element of the list, and if the same value appears
multiple times in the list, each is considered a distinct item
of the list.
• An associative array (or dictionary) is an abstract data
type composed of a collection of key/value pairs, such
that each key appears at most once in the collection.
Pairs can be added or removed, and values can be
modified or retrieved based on the associated key.
3. What's The Difference?
• A list is always ordered, can usually return elements or items by numeric
index(starting at zero), and might not allow modification of values. A
decent implementation of a list should provide specific operations for
adding and removing elements to enable them to be used:
• push - append to the end(or tail) of the list
• pop - remove from the tail of the list
• queue(unshift) - append to the beginning(or head) of the list
• dequeue(shift) - remove from the head of the list
• A hash is usually not immutable and may be indeterminately ordered.
Values can usually be altered.
4. Arrays
• An array type is a data type that is meant to describe a collection of values
or variables, each selected by one or more indices(keys) that can be
computed at run-time of the program.
• By default, the array type in PHP generates computed, numerical indices,
starting with zero, to make a list:
var_dump(array( 'one', 'two', 3, 4, 4.1, 4.2 ));
$list = array(); $list[] = 'one'; $list[] = 'two';
• The value for the key can also be specified as any scalar literal (neither
array, object nor resource), often a string
var_dump(array( 'one' => 1, 2 => 'two' )):
$list[4] = 'four'; $list['five dot one'] = 5.1;
5. Array Tricks
• PHP relies heavily on arrays, so there are a lot of array-specific
functions, like to use an array as a queue or stack
• array_unshift(), array_shift() - append to and remove from head
• array_push(), array_pop() - append to and remove from tail
• PHP arrays have an "internal position" pointer that can be used as an
iterator:
• current(), key() - return the current element or key
• next(), prev(), end(), reset() - advance forward or back
• each() - return the current key and value and advance the pointer
6. Even More Array Tricks
• array_merge() - merge two or more arrays
• array_slice() - remove an array section
• array_splice() - insert or replace a section
• count(), sizeof() - calculate length
• array_fill(), array_pad(), range() - generate values
• str_split(), explode(), implode(), join() - array to string
8. Lists of Lists
• Open Github
• Look through your forked projects for examples of lists
and dictionary definitions and methods
• Copy and paste your examples into a file named
"homework-5.1.md" with code delimiters as needed
• Write comments identifying the lists, keys, indexes and
other list and dictionary pieces discussed
• Save, add and commit, then push to Github when done
10. Control Flow Statements
• Control Flow - refers to the order in which the individual statements,
instructions or function calls of an imperative or declarative program
are executed or evaluated. Execution results in a choice being made
as to which of two or more paths should be followed.
• Types of Control Flow statements:
• continuation at a different statement (unconditional branch or jump)
• execute statements only if some condition is met (conditional branch)
• execute statements until some conditional is met(loop, conditional branch)
• execute defined statements and return (sub/co-routines, continuations)s
• stop executing statements (unconditional halt)
11. Loops
• A loop is a sequence of statements which is specified once but which may be carried out several times in
succession, a specified number of times or indefinitely
• Specific number of times:
for ( $count = 0; $count < $max; $count++ ) do_something();
• Once per each item in a collection(array):
foreach ( $collection as $item ) do_something();
foreach ($collection as $key => $value ) do_something();
• Until some condition is met:
while ( $condition == true ) do_something();
do something(); while ( $condition );
• Indefinitely(infinitely):
while ( true ) do_something();
do something(); while ( true);
12. Infinite Loops
• An unconditional(or infinite)
loop returns to a fixed point in
the diagram, usually the top of
the workflow. Without a
breaking statement or escape
clause, it executes forever.
13. Conditional Loops
• A conditional loop (while, do-while,
for, foreach) returns to a
condition check
($count < $max)
Until the condition evaluates
FALSE, the loop will continue
to execute
14. Diagramming Part Two
• In your pair, find a section of a project that has some significant looping
and conditional logic (at least three branches)
• Individually, sketch a simple workflow diagram of the logic; assemble a
truth table if needed
• Discuss differences in your diagrams and make a new diagram and truth
table for the logic to demonstrate
16. • Create a file called "homework-5.2.md" in your “assignments" folder
• Find a section in your projects that has some decent looping and branching code: at
least five branches that you can diagram.
• Copy and paste your example into your file and attempt to identify the loop conditions
with comments:
while ( $count < $max ) {
// while $count is less than $max
foreach ( $collection as $item ) {
// until there are no more $items in the $collection
• Save your file, then git add, git commit -m "explain why" and git push