{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### ICS 104 - Introduction to Programming in Python and C\n", "# Programming with numbers and Strings 1" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Lab Learning Outcomes" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Apply problem solving in program development\n", "- Comprehend variables and types\n", "- Write python expressions" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Problem Solving" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- One technique to apply problem solving is to do the following\n", " - Read the problem statement and understand it fully.\n", " - Determine **what** needs to be done\n", " - The available **`input`** and the requested result (**`output`**).\n", " - The sequence of **steps** to be carried out before we can produce the **`output`**.\n", " - Don't worry about how to do it for now.\n", " - Develop and describe the **algorithm** in pseudo-code (**how** to carry out the above **steps**).\n", " - An algorithm is a **sequence** of steps that is **unambiguous**, **executable**, and **terminating**. \n", " - Test the algorithm with simple inputs\n", " - to have more confidence that it is correct.\n", " - Translate the pseudo code into a Python program.\n", " - Compile and test your program." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Example (Section 2.3 from the textbook)\n", "- A row of black and white tiles needs to be placed along a wall. For aesthetic reasons, the architect has specified that the first and last tile shall be black." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Your task is to compute the number of tiles needed and the gap at each end, given the space available and the width of each tile." ] }, { "attachments": { "ch02LabFig1.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi0AAADkCAYAAABUkRQnAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACxXSURBVHhe7d2HexRV28fx9z8JSugdQg09IE1AxEIRBUWqoJQgCApIEQV8EBVEihXBAqH3onSkdwlISUAIIElIITEJ97v3ydnNJmxggSXMJN/Pdd3Pk8zsrpmQ7Pwy55x7/k8AAABcgNACAABcgdACAABcgdACAABcgdACAABcgdACAABcgdACAABcgdACAABcgdACAABcgdACAABc4bGGlhXx8fYjAACAR/PYQsuqS5ek7PIVcuDff+0WAACAh/dYQsuppCSpumq1CS0D9v5ptwIAADy8kIeWtKwsab5xowksWuU8dS4lxe7NdTs7234EAAAQnJCHlvi0NF9g8daYw4fNvpw7d+T9w0fk0L83zecAAADBKpLQUnnlKrmani5D9u83nxNaAADAgyqS0KJVb+0638eEFgAAipeU//6zHz0+RRZa/IvQAgBA8XElPV1abdosKVlZdsvjQWgBAAAPLSM7Wzr/sc2c3+efPWu3Ph6EFgAA8FDu3Lkjow4e8p3fG6/fIP/l5Ni9oUdoAQAAD+V8Sspd5/hlcXnd8A/++69cSEm1nz06QgsAAHgoZ2/duusc337rVnMFZkfCNdNo9mRSkn30oyO0AACAhxIotGhNPnZcKq1YaT4mtAAAgCeusNDiX4QWAADwxBFaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAACAKxBaAOSTlRwnR39fLou+nilTx0bLO727S5fOvWXq2njJtI953HJubpdPenWRAR8ulIM3s+3WJyM7YY281/01GTblVzmZnGO33kfqIZnZq6N0GThHjqQE+RwA90VoAeAJCbvli8FdpH39ShIeFha46o2Tg2n2CY9ZZuxMecb+d1t9EWu3hlhOmsTt3Sx7/k6Re8WKjGMfSzPztVSRIduT7dZ7y7owV9qZ50TKlMPpdiuAR0VoASA5CTHySrgNJ4VUnUFr5VoRXfTIOPWptLD/3dazztitoZW2/32J1P9G5T6yJqHw2JJ2YKw0NF9L8KEl88xsaW2eU0tG7U61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" } }, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The problem can be depicted as follows:\n", "![ch02LabFig1.png](attachment:ch02LabFig1.png)\n", "- What is the input and what is the output?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "attachments": { "ch02LabFig2.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![ch02LabFig2.png](attachment:ch02LabFig2.png)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#totalWidth=10\n", "#tileWidth=1\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Input\n", " - Total width\n", " - Tile width\n", "- Output\n", " - Number of tiles\n", " - Gap between the first/last tile and the wall" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- What do we need to do to find the output?" ] }, { "attachments": { "ch02LabFig3.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "![ch02LabFig3.png](attachment:ch02LabFig3.png)" ] }, { "cell_type": "markdown", "metadata": { "cell_style": "split", "slideshow": { "slide_type": "fragment" } }, "source": [ "- Since we know that the first tile is always black, the number of tiles left is a multiple of 2 (white and black). Hence, we need to do the following\n", " - Find the total width after removing the length of the black tile.\n", " - Find how many tiles (in pairs) that can fit the remaining space.\n", " - The number of tiles needed is one plus the number of tiles in the previous step.\n", " - Find the wall gap after using the number of tiles found." ] }, { "cell_type": "markdown", "metadata": { "cell_style": "split", "slideshow": { "slide_type": "fragment" } }, "source": [ "- Following is the pseudo code for the above steps\n", " - widthWithoutBlackTile = Total Width - Tile Width\n", " - Number of white-black tile pairs = the integer part of $$\\frac{widthWithoutBlackTile}{(2*TileWidth)}$$\n", " - Number of Tiles = 1 + 2 * Number of white-black tile pairs\n", " - Length of used tiles = Number of Tiles * Tile width\n", " - Total gap = Total Width - Length of used tiles\n", " - Gap at each end = Total gap / 2" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "- Apply the steps on a wall of width 10 and a tile of width 1." ] }, { "cell_type": "markdown", "metadata": { "cell_style": "split", "slideshow": { "slide_type": "fragment" } }, "source": [ "- widthWithoutBlackTile = Total Width - Tile Width\n", "- Number of white-black tile pairs = the integer part of $$\\frac{widthWithoutBlackTile}{(2*TileWidth)}$$\n", "- Number of Tiles = 1 + 2 * Number of white-black tile pairs\n", "- Length of used tiles = Number of Tiles * Tile width\n", "- Total gap = Total Width - Length of used tiles\n", "- Gap at each end = Total gap / 2" ] }, { "cell_type": "markdown", "metadata": { "cell_style": "split", "slideshow": { "slide_type": "fragment" } }, "source": [ "- widthWithoutBlackTile = 10 - 1 = 9\n", "- Number of whilte-black tile pairs = the integer part of $$(9/2)=4$$\n", "- Number of Tiles = $$1+(2*4)=9$$\n", "- Length of used tiles = $$9*1=9$$\n", "- Total gap = $$10-9=1$$\n", "- Gap at each end = $$1/2=0.5$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Exercises\n", "### Exercise 1\n", "- Convert the following pseudo code into python. Run your program for different input values.\n", " - widthWithoutBlackTile = Total Width - Tile Width\n", " - Number of white-black tile pairs = the integer part of $$\\frac{widthWithoutBlackTile}{(2*TileWidth)}$$\n", " - Number of Tiles = 1 + 2 * Number of white-black tile pairs\n", " - Length of used tiles = Number of Tiles * Tile width\n", " - Total gap = Total Width - Length of used tiles\n", " - Gap at each end = Total gap / 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sample run when:
\n", "TotalWidth = 23
\n", "TileWidth = 2
\n", "Number of tiles = 11
\n", "Gap on two sides = 0.5
\n", "Number of Black Tiles 6
\n", "Number of White Tiles 5
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "##%%writefile lab02Ex1_YourID.py\n", "# NOTE: uncomment the above line after you finish writing, running and testing your code.\n", "\n" ] }, { "attachments": { "ch02LabFig4.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Exercise 2\n", "- Suppose the architect specifies a pattern with black, gray, and white tiles, like this:\n", "![ch02LabFig4.png](attachment:ch02LabFig4.png)\n", "Again, the first and last tile should be black. Solve this problem by modifying the pseudo code of the previous exercise." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Include your pseudo-code here\n", " - Step 1\n", " - Step 2\n", " - ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Sample run when:
\n", "TotalWidth = 26
\n", "TileWidth = 1
\n", "Number of tiles = 25
\n", "Gap on two sides = 0.5
\n", "Nuber of Black Tiles 7
\n", "Nuber of White Tiles 6
\n", "Nuber of Gray Tiles 12" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "##%%writefile lab02Ex2_YourID.py\n", "# NOTE: uncomment the above line after you finish writing, running and testing your code.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Exercise 3\n", "- Write a python code that calculates and prints the dot product of two vectors in the xy-plane.\n", "- Initialize x1, y1, x2, and y2 with some values, representing the two vectors : and \n", "- Then Calculate and print the dot product.\n", "- dot product= x1\\*x2+y1\\*y2\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "##%%writefile lab02Ex3_YourID.py\n", "# NOTE: uncomment the above line after you finish writing, running and testing your code." ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }