Apostila de Java Php Vbscript e ASP

Embed Size (px)

Citation preview

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 1

    This is a tutorial for anyone who wants to start learning how to program games in Java. I

    have written it so it can be easy for anyone but it is rather long. If you would like to see

    this tutorial in its two sections rather than one page please check out my website www.jcroucher.com

    Terms of Agreement: By using this article, you agree to the following terms... 1) You may use this article in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge. 2) You MAY NOT redistribute this article (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws. 3) You may link to this article from another website, but ONLY if it is not wrapped in a frame. 4) You will abide by any additional copyright restrictions which the author may have placed in the article or article's description.

    Java Game Tutorial - Part 1

    In this and following tutorials you will learn about Applets, Threads, Graphics and a few other things. By the end of this tutorial you should have the skills to make basic games in Java. For this tutorial you will be making a simple space invaders type game. I assume that you have basic knowledge of Java as I wont be going into the basic details of how some things work.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 2

    First we will be starting by creating an applet and drawing a circle to the applet area. 1. Create a file called Game.java. 2. Open the file. The next step is to import the necessary packages. For now we will only be requiring 2 packages: import java.applet.*; import java.awt.*; Now that the importing has been taken care of we will need to set up the Java applet by the following: public class Game extends Applet implements Runnable { } This basically gives access to the Applet class and the Runnable makes it so we can implement threads. The variables come next as we wish to make these ones global: Thread gameThread; int width=400, height=400, MAX=1; int currentX[] = new int[MAX]; int currentY[] = new int[MAX]; I have decided to use arrays for the X and Y cords now because they will be used at a later stage. It makes it easier to set it up now rather than changing it later. Next comes the methods. I have included methods that are currently not used at this stage but they are used later. Start() is used for starting a new thread for the class. public void start() { Thread gameThread = new Thread(this); gameThread.start(); } init() is used for setting the initial values public void init() { currentX[0]=0;

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 3

    currentY[0]=0; } run() is the main method we will use later. It is initialised after a new thread is started. public void run() { } paint() calls update(). public void paint(Graphics g) { update(g); } update () is where all the actual drawing is done. public void update(Graphics g) { Graphics2D g2 = (Graphics2D)g; // Set the background color. g2.setBackground(Color.black); // Clear the applet. g2.clearRect(0, 0, width, height); // Set the drawing color to green. g2.setColor(Color.green); //(X pos, Y pos, Width, Height) g2.fillOval(currentX[0], currentY[0], 20,20); } * Note this is an applet which means you must run it from a HTML file. The HTML code to run this applet is as follows and I will use the same code throughout this series of tutorials.

    As you will see if you compile and run this applet it will draw a green circle on a black background. This is pretty simple and pretty boring but it sets the basis up for doing things later. At this stage you do not even need the Thread but I thought I would put it in now to make it more easy later.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 4

    Now I will go into something more interesting but still rather useless. We will now make the circle bounce around the screen. In this version I have added more global variables: int speed=10; // Speed at which we will move the objects // Which direction to move the object int directionX[] = new int[MAX]; int directionY[] = new int[MAX]; These variables are used for making sure the applet doesnt go psycho fast on very fast computers and also to make sure it doesnt run to slow on slow computers. long start=0; long tick_end_time; long tick_duration; long sleep_duration; static final int MIN_SLEEP_TIME = 10; static final int MAX_FPS = 20; static final int MAX_MS_PER_FRAME = 1000 / MAX_FPS; float fps=0; Only two functions are modified in this version. The first modification is a simple one. All it does is sets the value in directionX[0] to 1 which means that it will travel to the left first, and directionY[0] to 0 which means it will travel to the top first: public void init() { currentX[0]=100; currentY[0]=0; directionX[0]=1; directionY[0]=0; } This module as I said earlier this is the main function and as you will notice this one has the biggest amount of code in it now, so this may take a bit to explain. First here is the run() code in full.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 5

    public void run() { while(true){ start = System.currentTimeMillis(); for(int i=0; i < MAX; i++){ if(directionX[i]==1) currentX[i]+=speed; if(directionX[i]==0) currentX[i]-=speed; if(currentX[i] = width) directionX[i]=0; if(directionY[i]==1) currentY[i]+=speed; if(directionY[i]==0) currentY[i]-=speed; if(currentY[i] = height) directionY[i]=0; } repaint(); tick_end_time = System.currentTimeMillis(); tick_duration = tick_end_time - start; sleep_duration = MAX_MS_PER_FRAME - tick_duration; if (sleep_duration < MIN_SLEEP_TIME) { sleep_duration = MIN_SLEEP_TIME; } fps = 1000 / (sleep_duration + tick_duration); try{ Thread.sleep(sleep_duration); } catch(InterruptedException e) {}

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 6

    } } Now onto explaining the function. First this function will continually loop. This is what gives our game moving objects. The next line is: start = System.currentTimeMillis(); This line is part of our frame rate calculations. It will set the start time to the system time at the start of the frame. The next section is a for loop containing the code for calculating the objects position and where to move it to next. The X and Y cords are similar so I will only explain the X cord: These first two if statements are used for calculating the new position in relation to its current X value: if(directionX[i]==1) currentX[i]+=speed; This says if the current object is moving right then add speed to the current position of the object. Basically if the object is at X:0 and the speed is 10, then the new X position will be 10 (0 + 10). if(directionX[i]==0) currentX[i]-=speed; This section does the opposite to the previous if statement (moves to left). These last two detect if the object has hit the side of the applet and if so change the direction: if(currentX[i] = width) directionX[i]=0; Again this one does similar but it detects if the object has hit the right side of the applet. This one has a small variation in the checking tho. You will notice it has: currentX[i]+20

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 7

    The current X value of the object is at cord 0 of the object (its left most side). This means that X will only be greater than or equal to the width after all of the right hand size has gone out of the applet. So we must add 20 which is the width of the object. Feel free to remove the +20 or change it to higher and smaller values to observe the effects it has. That concludes the collision detection section. Next you will see: repaint(); Basically all this line does is calls the functions for painting on the screen paint() and update(). I think it does some internal calculations before going to those functions first tho. You are probably thinking this is all a bit much right now, but dont worry, only 2 more sections to go. tick_end_time = System.currentTimeMillis(); tick_duration = tick_end_time - start; sleep_duration = MAX_MS_PER_FRAME - tick_duration; if (sleep_duration < MIN_SLEEP_TIME) { sleep_duration = MIN_SLEEP_TIME; } fps = 1000 / (sleep_duration + tick_duration); This code is pretty simple and self explanatory so I wont go into details. But basically it works out how long it has taken to draw the current frame. If the system is lagging it will sleep_duration reduce sleep_duration and if its going to fast it will increase sleep_duration. The sleep time is done in this final section: try{ Thread.sleep(sleep_duration); } catch(InterruptedException e) {} This will simply pause the thread for the value in sleep_duration. This is all done to make sure the game runs at its best on all systems. If you want you can display the current frame rate by placing this line of code in your paint(Graphics g) function: g.drawString("FPS: "+fps,1,400); Also be aware that that calculation doesnt always give the correct frame rate. It is simply to regulate the speed of the app. Well if you compile all that and run it you should get a green circle bouncing around your screen.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 8

    You will also notice that it flickers a lot especially if you increase the frame rate. This is because you can actually see the computer drawing the objects to the screen. In the next tutorial I will explain how to do frame buffering which will make your objects run smooth, and more. Thanks for reading, Feel free to send any comments.

    Java Game Tutorial - Part 2

    Welcome back. In this tutorial I will show you how to implement buffering into your app. First here are some details on how buffering works. The current app you have flickers. This is because you can actually see the computer drawing the images to the screen. If you use buffering the computer draws it to one area and then only once it has finished drawing the objects it displays it on the screen. There are different ways of doing buffering, but for now I will stick with the easiest so you can get an idea of how it all works. If you have trouble understanding that example this way may help. I like to think of buffering like someone drawing on a piece of paper. If you are watching someone draw on a piece of paper you can see every movement the person makes. But if say the person has 2 pieces of paper it could make things better. The person gives you one to look at. While you are looking at that piece of paper the person goes on and draws on the blank one. Once the person has finished drawing that one, the person will switch pages with you, and start drawing again. I know its a lame way of putting it but its simple. Now that all the background is out of the way we will now get to modifying the code from the first tutorial. First you will need to import: java.awt.image.*; We also have two new variables to add: BufferedImage bufferdImg; Graphics2D bufferdImgSurface; Scroll down until you find the function init() and add the following code: bufferdImg = (BufferedImage)createImage(width, height); bufferdImgSurface = bufferdImg.createGraphics();

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 9

    These two lines of code will set up the area to be drawn to. The last step is to modify the update(Graphics g) function. The code is as follows: public void update(Graphics g) { Graphics2D g2 = (Graphics2D)g; // Set the background color. bufferdImgSurface.setBackground(Color.black); // Clear the applet. bufferdImgSurface.clearRect(0, 0, width, height); bufferdImgSurface.setColor(Color.green); //(X pos, Y pos, Width, Height) bufferdImgSurface.fillOval(currentX[0], currentY[0], 20,20); g2.drawImage(bufferdImg, 0, 0, this); } As you see we have changed it from drawing to g2 to bufferedImgSurface, and only at the very end drawing the whole frame to the screen: g2.drawImage(bufferdImg, 0, 0, this); Now its ready to go. You should now have a reduction in the flickering. As I said its not the best way to do it but it works and its easy so it is fine for now. This next section is to show you how collision detection will be working in the game. You will notice that there is already some collision detection with the circle bouncing around the screen, but we will now expand on this. Please note most of this code will not be needed in our game so you may want to make a copy of your current file. Also you can skip this section if you wish but I recommend at least reading through it. Again we will start in the variables section. Locate the integer variable called MAX. The current value of this is 1 (one circle). We want to have 2 circles bouncing around the screen so we will change MAX to 2. Next we need to add two new variables: boolean collided=false; float dist; collided is only true if the distance between the two points is less than the specified amount. dist is the distance between the two points. In the init() function add: currentX[1]=0;

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 10

    currentY[1]=100; directionX[1]=0; directionY[1]=1; This code is just the same as previous code so it shouldnt need explaining. This next section of code should go in the run() function just after the two circles have been moved: dist = (int)(Math.sqrt(Math.pow((currentX[0]+20)-(currentX[1]+20),2) + Math.pow((currentY[1]+20)-(currentY[1]+20),2))); if(dist < 20) collided = true; else collided = false; The first line of code is the distance formula: sqrt(pow((X1)-(X2),2) + pow((Y1)-(Y2),2))) This formula just calculates the distance between two points when given the X and Y cords. The next section is just an if statement that says if the distance between the two points is less than 20 then they must be touching so set collided to true. Just a note. You may notice that in the distance formula I have the current position +20. This is because I am adding the diameter of the circle or you would only get the absolute X/Y cord. The last thing to add is to the update(Graphics g) function: bufferdImgSurface.fillOval(currentX[1], currentY[1], 20,20); if(collided==true) bufferdImgSurface.drawString("Collided",10,10); Add those two lines just b4: g2.drawImage(bufferdImg, 0, 0, this); Compile and run. You should notice that the two circles both bounce around the screen. When the two circles are touching the word Collided is displayed in the top left hand corner. This is one of the simplest methods of collision detection and the method we will be using to detect a collision between the bullets, player and the enemy(s). Its been a long time but now all the basics are now out of the way and its now time for us to

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 11

    start working on the actual game. This will require many modifications and additions to the code. Just to give you an idea of the size of the game, its around 7 pages. In this game we will be using the mouse for input we must do a few things to set up the mouse for input. First you must import the following package: java.awt.event.*; You must also add to the class line: public class Game extends Applet implements Runnable, MouseMotionListener, MouseListener That is all to the mouse section for now. We will be dealing with the mouse listener more throughout the code, but for now we will move onto the variables. First you can go and delete these variables as they are no longer needed: int directionX[] = new int[MAX]; int directionY[] = new int[MAX]; There are a lot of new variables to add so I am just going to give you the whole list that we will be using to make yours and my life easier. Some of these you will already have, some you wont. Also the comments next to them should explain them pretty well: BufferedImage bufferdImg; Graphics2D bufferdImgSurface; Thread gameThread; int width=400, height=400, MAX=50, speed=10; int currentX[] = new int[MAX]; int currentY[] = new int[MAX]; int step=0, // Number of movements left/right direction=1, // Current left/right direction (0=left, 1=right) shipX=width/2-10, // Current player X possition shipY=height-45, // Current player Y possition mbx=-10, // The mouse position after mouse down, sets the_ mby=-10, // enemy bullet position to this. randomShoot=0, // Used to work out which enemy is shooting health=50, // The players health BNUM=10, // Number of bullets playing=0; // Are is the game playing (0=Playing, 1=Paused, 2=Game Over, 3=Win) int bX[] = new int[BNUM]; // Bullet X pos. int bY[] = new int[BNUM]; // Bullet Y pos.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 12

    int ebX[] = new int[BNUM]; // Enemy Bullet X pos. int ebY[] = new int[BNUM]; // Enemy Bullet Y pos. long start=0, // Frame start time tick_end_time, // End frame time tick_duration, // Time taken to display the frame sleep_duration; // How long to sleep for static final int MIN_SLEEP_TIME = 10, // Min time to sleep for MAX_FPS = 20, // Max frame rate. MAX_MS_PER_FRAME = 1000 / MAX_FPS; // MS per frame float fps=0, // Current frame rate dist; // Distance between 2 points The first function in our code is start() this has no changes so lets move to the next one. Next is init(). As you remember this function sets our initial values. This has a few additions as follows: This section of code is for drawing a grid of circles 10 by 5. Set up local integer variables for keeping track of what we have drawn. int row=10, // Current Y position col=10, // Current X position count=0; // How many circles have been drawn We will set the first circle to the initial values of row and col so we have a starting point to work from: currentX[0]=col; currentY[0]=row; This section actually sets the coordinates for each circle: for(int i=0; i < 50; i++) { count++; currentX[i]=col; col+=25; currentY[i]=row; if(count==10){ row+=25; col=10; count=0; }

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 13

    } This works by looping through each circle position. This in effect draws 10 circles with the Y value of 10. After it has looped through 10 times count will = 10. It will then add 25 to the row value and draw another 10 circles with the Y value of 35. Each loop the X position is also moved across 25 points. It will keep doing this until 50 circles have been given values. The following two lines of code are used to start the mouse listener listening on the applet: addMouseMotionListener(this); addMouseListener(this); MouseMotionListener is used for picking up the motion of the mouse. Things such as the X,Y cords and if the mouse is on the applet or not. MouseListener is used for detecting mouse clicks. The last section in the init() function is just simply to give all the bullets a position off of the screen so they are hidden and ready to be fired. for(int i=0; i < BNUM; i++){ bX[i]=-10; bY[i]=-10; ebX[i]=0; ebY[i]=height+10; } The next function is run(). So many changes have been made to this function that you can basically delete it and I will go through it. while(true){ // Starts the game loop start = System.currentTimeMillis(); // Sets the current time if(playing==0){ // Are we playing or is the game over? Next section we will move the aliens left and right. It will first move them to the right by adding 1 to step until step is greater then 15. When this occurs it will then set step to 0 and change the direction to 0 which means move them to the left. After it moves 15 positions it will also move down one row. step++; for(int i=0; i < MAX; i++){ if(step > 15) { if(direction==1){ direction=0; } else { direction=1; } step=0; for(int j=0; j < MAX; j++)

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 14

    currentY[j]+=speed; } if(direction==1) currentX[i]+=speed; else currentX[i]-=speed; } This next for loop is used to tell if the user has fired a bullet. If they have and there is a free bullet (set so only 10 bullets can be fired at once) then to set it to the current ship position. Also if the bullets are visible on the screen then move them up. for(int i=0; i < BNUM; i++){ if(bY[i]

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 15

    for(int i=0; i < BNUM; i++){ if(ebY[i] >= height) { ebX[i]=currentX[randomShoot]; ebY[i]=currentY[randomShoot]; break; } } } } This is the collision detection section between the alien bullets and the players ship. Again it is similar to the previous section. for(int j=0; j < BNUM; j++) { if(!(ebY[j]>=height)){ dist = (int)(Math.sqrt(Math.pow((shipX+10)-ebX[j],2) + Math.pow((shipY+10)-ebY[j],2))); if(dist

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 16

    if(currentY[j]=340) playing=2; } if(count==MAX) playing=3; } else { } repaint(); // Redraw the screen As explained this section calculates the frame rate and how long to sleep for. Please refer to the first tutorial for an explanation. tick_end_time = System.currentTimeMillis(); tick_duration = tick_end_time - start; sleep_duration = MAX_MS_PER_FRAME - tick_duration; if (sleep_duration < MIN_SLEEP_TIME) { sleep_duration = MIN_SLEEP_TIME; } fps = 1000 / (sleep_duration + tick_duration); try{ Thread.sleep(sleep_duration); } catch(InterruptedException e) {} } } Thats the end of our run() function. The next section for us to look at is the drawing section. Its all a lot to take in but dont worry we are on the home stretch, only one more section after this. As I mentioned these functions are for drawing to the screen. I will go through most of the code again as I dont want to miss anything out: public void paint(Graphics g) { update(g); }

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 17

    public void update(Graphics g) { Graphics2D g2 = (Graphics2D)g; // Set the background color. bufferdImgSurface.setBackground(Color.black); // Clear the applet. bufferdImgSurface.clearRect(0, 0, width, height); bufferdImgSurface.setColor(Color.green); //(X pos, Y pos, Width, Height) for(int i=0; i < MAX; i++) bufferdImgSurface.fillOval(currentX[i], currentY[i], 20,20); // Draw the read ship (a square) bufferdImgSurface.setColor(Color.red); bufferdImgSurface.fillRect(shipX, shipY, 20, 20); This is a for loop that will draw all the bullets on the screen. I made it easy by having 10 bullets for the aliens and the player but if you change one of these numbers please be aware that it will cause problems in one place such as this. You would need to split the bullet drawing section into 2 for loops. for(int j=0; j < BNUM; j++){ bufferdImgSurface.setColor(Color.yellow); bufferdImgSurface.fillOval(bX[j], bY[j], 5,5); bufferdImgSurface.setColor(Color.blue); bufferdImgSurface.fillOval(ebX[j], ebY[j], 5,10); } // Draw a bottom line to our window bufferdImgSurface.setColor(Color.red); bufferdImgSurface.drawString("_________________________________________________________",0,375); These if statements display the game status, such as if the player looses it will display "****Game Over****". if(playing==1) bufferdImgSurface.drawString("PAUSED", width/2-10, 390); else if(playing==2) bufferdImgSurface.drawString("****Game Over****", width/2-10, 390); else if(playing==3) bufferdImgSurface.drawString("****You Win!****", width/2-10, 390);

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 18

    A simple way of displaying a health bar is to loop while the loop value is less than the value in health. On every loop draw a |. Set the X position to the current i value multiplied by 2 to give some spacing: for(int i=0; i < health; i++) bufferdImgSurface.drawString(" |", (2*i), 390); // Draw the buffered image to the screen. g2.drawImage(bufferdImg, 0, 0, this); } Thats the last of our graphics section and now we are onto out last section! This section is used for detecting mouse clicks and detecting the mouse position. Move the ship to the current mouse X position: public void mouseMoved(MouseEvent e) { shipX=e.getX()-5; } public void mouseDragged(MouseEvent e) { shipX=e.getX()-5; } The user clicked a button so start firing a bullet from the current mouse X position and the current ship Y position: public void mouseClicked(MouseEvent e) { mbx=e.getX(); mby=shipY; } public void mousePressed(MouseEvent e) { mbx=e.getX(); mby=shipY; } The mouse has entered the applet area so set playing to 0 (start the game) public void mouseEntered(MouseEvent e) { playing=0; } The mouse has exited the applet area so set playing to 1 (pause the game) public void mouseExited(MouseEvent e) { playing=1; } We dont use this function but you still must include it in your code or you will have errors: public void mouseReleased(MouseEvent e) { } You should now be able to compile the code and play the game. Its basic I know but it should help

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 19

    with understanding of applets, threads and event handling. I hope you like my tutorial. If you find any errors please email me, also if you have any comments please email me

    Title: A TicTac Game Description: A colorful tictac game applet with good computer moves. The source code is so much self-explainatory that you would be able to make this game of ur own after reading the source code once This file came from Planet-Source-Code.com...the home millions of lines of source code You can view comments on this code/and or vote on it at: http://www.Planet-Source-Code.com/vb/scripts/ShowCode.asp?txtCodeId=2644&lngWId=2 The author may have retained certain copyrights to this code...please observe their request and the law by reviewing all copyright conditions at the above URL. import java.awt.*; import java.awt.event.*; /**********************************************/ /*USING 'X' FOR HUMAN AND '0' FOR COMPUTER*/ /**********************************************/ public class TicTacMine extends java.applet.Applet implements ActionListener{ static Button squares[],nGameB; static Label label,aboutL; static int squaresRemaining=9; static String forAbout="",difLevel=""; public void init(){ setSize(500,500); setLayout(new BorderLayout()); setFont(new Font("TimesRoman",Font.BOLD,30)); Panel p1=new Panel(); p1.setLayout(new GridLayout(3,3)); add(p1,BorderLayout.CENTER); label=new Label("TIC TAC",1); label.setBackground(Color.black); label.setForeground(Color.white); add(label,BorderLayout.SOUTH); Panel p2=new Panel(); p2.setLayout(new FlowLayout()); p2.setBackground(Color.black);

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 20

    // NEW GAME BUTTON nGameB=new Button("New Game"); nGameB.setBackground(Color.black); nGameB.setForeground(Color.white); nGameB.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ for(int i=0;i

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 21

    } nGameB.setEnabled(false); }//end init public void actionPerformed(ActionEvent e) { for ( int i=0; i

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 22

    String theWinner = ""; if ( squares[0].getLabel().equals(squares[1].getLabel()) && squares[0].getLabel().equals(squares[2].getLabel()) && ! squares[0].getLabel().equals("") ) { theWinner = squares[0].getLabel(); colorLine(0,1,2,theWinner); } else if ( squares[3].getLabel().equals(squares[4].getLabel()) && squares[3].getLabel().equals(squares[5].getLabel()) && ! squares[3].getLabel().equals("") ) { theWinner = squares[3].getLabel(); colorLine(3,4,5,theWinner); } else if ( squares[6].getLabel().equals(squares[7].getLabel()) && squares[6].getLabel().equals(squares[8].getLabel()) && ! squares[6].getLabel().equals("") ) { theWinner = squares[6].getLabel(); colorLine(6,7,8,theWinner); } else if ( squares[0].getLabel().equals(squares[3].getLabel()) && squares[0].getLabel().equals(squares[6].getLabel()) && ! squares[0].getLabel().equals("") ) { theWinner = squares[0].getLabel(); colorLine(0,3,6,theWinner); } else if ( squares[1].getLabel().equals(squares[4].getLabel()) && squares[1].getLabel().equals(squares[7].getLabel()) && ! squares[1].getLabel().equals("") ) { theWinner = squares[1].getLabel(); colorLine(1,4,7,theWinner); } else if ( squares[2].getLabel().equals(squares[5].getLabel()) && squares[2].getLabel().equals(squares[8].getLabel()) && ! squares[2].getLabel().equals("") ) { theWinner = squares[2].getLabel(); colorLine(2,5,8,theWinner); } else if ( squares[0].getLabel().equals(squares[4].getLabel()) && squares[0].getLabel().equals(squares[8].getLabel()) && ! squares[0].getLabel().equals("") ) { theWinner = squares[0].getLabel(); colorLine(0,4,8,theWinner); } else if ( squares[2].getLabel().equals(squares[4].getLabel()) && squares[2].getLabel().equals(squares[6].getLabel()) && ! squares[2].getLabel().equals("") ) { theWinner = squares[2].getLabel(); colorLine(2,4,6,theWinner);

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 23

    } return theWinner; } void computerMove() { int pickedSquare; pickedSquare = tryToWin(); if ( pickedSquare == -1 ) pickedSquare = makeBlock(); if ( (pickedSquare == -1)&&(squares[4].getLabel().equals("")) ) pickedSquare=4; if ( pickedSquare == -1 ) pickedSquare = pickRandom(); squares[pickedSquare].setLabel("O"); return; } int tryToWin() { // Since computer plays "O", find empty square that is in line with return EmptySquare("O"); } int makeBlock() { // Since human plays "X", find empty square that is in line with return EmptySquare("X"); } int EmptySquare(String player) { int a[] = new int[9];

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 24

    for ( int i = 0; i < 9; i++ ) { if ( squares[i].getLabel().equals("O") ) a[i] = -1; else if ( squares[i].getLabel().equals("X") ) a[i] = 1; else a[i] = 0; } int sum = player.equals("O") ? -2 : 2; // Top Row if ( a[0] + a[1] + a[2] == sum ) { if ( a[0] == 0 ) return 0; else if ( a[1] == 0 ) return 1; else return 2; } // Middle Row if ( a[3] +a[4] + a[5] == sum ) { if ( a[3] == 0 ) return 3; else if ( a[4] == 0 ) return 4; else return 5; } // Bottom Row if ( a[6] + a[7] +a[8] == sum ) { if ( a[6] == 0 ) return 6; else if ( a[7] == 0 ) return 7; else return 8; } // Left column if ( a[0] + a[3] + a[6] == sum ) { if ( a[0] == 0 ) return 0; else if ( a[3] == 0 ) return 3; else return 6; } // Middle column if ( a[1] +a[4] + a[7] == sum ) { if ( a[1] == 0 ) return 1; else if ( a[4] == 0 ) return 4;

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 25

    else return 7; } // right column if ( a[2] + a[5] + a[8] == sum ) { if ( a[2] == 0 ) return 2; else if ( a[5] == 0 ) return 5; else return 8; } // diagonal upper-left to lower-right if ( a[0] + a[4] + a[8] == sum ) { if ( a[0] == 0 ) return 0; else if ( a[4] == 0 ) return 4; else return 8; } // diagonal upper-right to lower-left if ( a[2] + a[4] + a[6] == sum ) { if ( a[2] == 0 ) return 2; else if ( a[4] == 0 ) return 4; else return 6; } // not able to find return -1; } int pickRandom() { boolean found = false; int pickedSquare = -1; do { pickedSquare = (int) (Math.random() * 9 ); // 0 to 8 if ( ! squares[pickedSquare].getLabel().equals("X") && ! squares[pickedSquare].getLabel().equals("O") ) { found = true; } } while ( ! found ); return pickedSquare; } // end pickRandom()

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 26

    void colorLine(int a, int b, int c,String win) { // mark line red if user (X) wins // mark line blue if computer (O) wins if ( win.equals("X") ) { squares[a].setBackground(Color.black); squares[b].setBackground(Color.black); squares[c].setBackground(Color.black); label.setText("HUMAN WINS"); label.setForeground(Color.white); label.setAlignment(1); } else { squares[a].setBackground(Color.black); squares[b].setBackground(Color.black); squares[c].setBackground(Color.black); label.setText(" COMPUTER WINS"); label.setForeground(Color.white); label.setAlignment(1); } } void endGame(){ for(int i=0;i

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 27

    da famlia da lnguagem de programao Visual Basic, traz scripting ativo para uma vasta variedade de ambientes, incluindo o scripting de cliente com o Microsoft Internet Explorer e o scripting de servidor com o Microsoft Internet Information Server. Fcil de Usar e Aprender Se voc j programa em Visual Basic ou Visual Basic for Applications, voc estar muito avontade em desenvolver aplicaes com o VBScript. Mesmo que voc no saiba programar em Visual Basic, uma vez aprendido o VBScript, voc estar no caminho certo para comear a programar com toda a famlia da linguagem Visual Basic. Embora voc possa aprender VBScript neste Tutorial, programao ir requerer um estudo mais aprofundado no disponvel neste Tutorial. Um bom conselho para os que desejam iniciar a programar na linguagem Visual Basic, so os livros disponveis no mercado que trazem exemplos didticos, ilustrativos e simples. ActiveX & Scripting O ActiveX Scripting oferece muito mais do que apenas uma linguagem de scripting para navegadores da Web. ActiveX uma plataforma para desenvolvimento de qualquer quantidade de linguagens de scripting para qualquer finalidade que os desenvolvedores da Web exijam. Usando os servios de scripting do ActiveX, uma linguagem de scripting pode ser implementada em qualquer plataforma. O ActiveX Scripting construdo a partir de dois componentes principais bsicos: Hosts de Scripting do ActiveX - Os aplicativos em que um scripting executado. Mecanismos de Scripting do ActiveX - A linguagem em que o scripting escrito. O ActiveX Scripting pode ser hospedado em diversos aplicativos. O melhor exemplo de um host do ActiveX MSIE 3.0. MSIE 3.0 aceita o VBScript. Alm disso, o ActiveX Scripting oferece um ambiente para dar suporte ao scripting em servidores da Web, ferramentas de autoria da Internet ou outros aplicativos, em diversas linguagens de scripting. VBScript em outras Aplicaes e Browsers Como um desenvolvedor, voc tem licena para usar seus cdigos fontes em VBScript em suas aplicaes. A Microsoft fornece implementaes binrias do VBScript em Windows 16-bits e 32-bits, e para o Macintosh. VBScript integrado com browsers da World Wide Web. VBScript e ActiveX Scripting pode tambm ser usuados como uma lnguagem geral em outras aplicaes. Adicionando Cdigos do VBScript para uma Pgina HTML Voc pode usar os elementos de SCRIPT, para adicionar cdigos do VBScript em uma pgina HTML. A Tag Os cdigo do VBScript so escritos dentro da tag . Por Exemplo, um procedimento para testar uma data de entrega pde aparecer como se segue:

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 28

    End Function --> Inicia e conclui com a tag . O atributo LANGUAGE indica a linguagem de scripting. Voc deve especificar a lnguagem porque os browsers podem usar outros tipos linguagens de scripting. Note que a funo CanDeliver embutida nas tags de comentrio (). Isto previne browsers que no compreende a tag de exibir o cdigo. Voc pode incluir o Script na seo HEAD da pgina: Place Your Order ... Voc pode usar blocos de SCRIPT em qualquer parte de uma pgina HTML. Voc pode coloc-lo na seo BODY e ou HEAD. Entretanto, voc provavelmente desejar colocar todo o cdigo de scripting na seo HEAD, com o intuito de organiz-lo. Guardando seu cdigo na seo HEAD voc assegura que todo o cdigo est sendo lendo e decodificado antes de qualquer chamadas da seo BODY da pgina HTML. Um exceo notvel para esta regra que voc pode desejar fornecer cdigo do inline scripting ao responder os eventos de objetos em seu formulrio. Por Exemplo, voc pode embutir cdigo do scripting para responder a um clique no boto em um formulrio: Test Button Events MsgBox "Button Pressed!" A maior parte de seu cdigo aparecer em procedimentos Sub ou Function, sendo executadas apenas quando forem chamadas. Entretanto, voc pode escrever cdigos em VBScript fora dos procedimentos, mas ainda dentro um bloco de SCRIPT. Este cdigo executado apenas uma vez, quando a pgina HTML for carregada. Isto permite a voc iniciar dados ou criar um dinamismo na forma de exibir sua pgina, enquanto ela carregada. Tipos de Dados do VBScript

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 29

    O que Tipos de Dados do VBScript? O VBScript tem unicamente um tipo de dado chamado Variant. Um dado Variant uma espcie especial de tipo de dados que pode conter espcies diferentes de informao, dependendo de como seja usado. Como Variant o nico tipo de dados do VBScript, este ser tambm o tipo de dado retornado pelas funes do VBScript. Uma varivel declarada como Variant pode conter um valor numrico, ou uma cadeia de caracter. Se voc est trabalhando com dados que compare nmeros iguais, o VBScript assume que seu tipo de dado nmerico. Parecidamente, se voc est comparando caracteres literais, o VBScript trata seus dados como string. Voc pode usar nmeros como strings simplesmente cercando-os com aspas (" "). Subtipos Variant Alm do tipo numrico ou string, uma Variant podem fazer distines sobre uma natureza especfica de informao numrica. Por Exemplo, voc pode ter informao numrica que representa uma data ou um tempo. Certamente, voc pode tambm ter uma variedade rica de informao numrica, essas categorias diferentes de informao que pode ser contida em uma Variant so chamadas subtipos. A seguinte tabela mostra os subtipos de dados que uma Variant pode conter: Subtipo Descrio Empty (Vazio) Valor igual a 0 para variveis numricas ou ("") zero-comprimento para variveis string. Null (Nulo) Variant contm intencionalmente nenhum valor vlido. Boolean Contm False (falso) ou True (Verdadeiro) um ou outro. Byte Contm inteiro de 0 a 255. Integer Contm inteiro de -32,768 a 32,767. Currency 922,337,203,685,477.5808 a 922,337,203,685,477.5807. Long Contm inteiro de -2,147,483,648 a 2,147,483,647. Single 3.402823E38 a -1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos. Double Contm um duplicar-exatido, boiado-ponto nmero na srie 1.79769313486232E308 para 4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 para 1.79769313486232E308 para valores positivos. Data (Tempo) Contm um nmero que representa uma data entre 1 de Janeiro de 100

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 30

    at 31 de Dezembro de 9999. String Variveis alfanumricas, que podem ter um comprimento de 0 at aproximadamente 2 bilhes de caracteres. Object Qualquer referncia de Objeto. Error Contm um nmero de erro. Voc pode usar funes de converso para converter dados de um subtipo para o outro. A funo VarType retorna informao sobre seus dados, e armazena dentro de uma Variant. Variveis do VBScript O que uma Varivel? Uma varivel um nome conveniente que se refere a uma localizao de memria do computador, onde voc pode armazenar informaes de um programa sendo possvel alterar seu valor durante o processamento. Por exemplo, voc pde cria uma varivel chamada ClickCount para armazenar o nmero de vezes que um usurio pressionou um objeto em uma pgina da Web. A forma com que a varivel armazenada na memria do computador sem importncia. O que importante que para alterar ou atribuir um valor para essa varivel voc deve referenci-la pelo seu nome. No VBScript, as variveis so sempre tipos de dados Variant. Declarando Variveis Voc declara variveis explicitamente em seu script usando a declarao Dim, a declarao Public, e a declarao Private. Por exemplo: Dim DegreesFahrenheit Voc pode declarar variveis mltiplas separando-as por vrgula. Por exemplo: Dim Top, Bottom, Left, Right Voc pode tambm declarar uma varivel implicitamente simplesmente usando seu nome no script. O que geralmente no uma boa prtica causando resultados inesperados no decorrer de seu script. Uma tima alternativa usar a declarao Option Explicit com a finalidade de forar todas as declaraes de variveis. A declarao Option Explicit deve ser a primeira declarao em seu script. Especificando Restries Os nomes de variveis seguem as regras padronizadas para serem identificadas pelo VBScript. Um nome de varivel deve: Ter o primeiro caracter do nome da varivel sendo uma letra No deve exceder 255 caracteres. Escopo e Existncia de Variveis O escopo de uma varivel determinado quando voc a declara. Quando voc declara uma varivel dentro de um procedimento, apenas o cdigo dentro daquele procedimento pode acessar ou muda o valor daquela varivel. Isto um escopo local e chamado de varivel a nvel-procedimento. Se voc declara uma varivel exteriomente a um procedimento, voc faz com que todos os

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 31

    procedimentos reconheam aquela varivel, isto uma varivel a nvel-escrita. Uma varivel pblica apenas destruda quando ocorre o trmino do script. No caso da varivel privada, ou seja declarada dentro de um procedimento, sua destruio ocorre com o trmino da execuo do procedimento. As variveis locais so usadas para uma determinada tarefa temporria, liberando assim espao de memria. Voc pode declarar variveis locais com o mesmo nome em vrios procedimentos diferentes pois, elas so apenas visveis no momento da execuo do procedimento. Designando Valores para Variveis Valores so designados para variveis criando uma expresso do tipo: a varivel encontra-se do lado esquerdo da expresso, e o valor que voc deseja atribuir no lado direito. Por exemplo: B = 200 Variveis Scalar e Variveis de Array Em alguns casos voc apenas necessita designar um nico valor para uma varivel. Uma varivel contendo um nico valor chamada de scalar. Entretanto conveniente designar mais de um valor relacionado apenas a uma varivel. Neste caso voc pode criar uma varivel que contenha uma srie de valores. Essa varivel chamada de array. A declarao de uma varivel de array feita dando-se um nome seguindo os parntesis ( ). No seguinte exemplo, declarado um array contendo 11 elementos: Dim Vetor(10) Embora o nmero mostrado nos parntesis seja 10, todos os arrays no VBScript so iniciados com base zero, assim este array realmente contm 11 elementos. Em um array de base zero, o nmero de elementos ser sempre o nmero mostrado entre parntesis acrecido de um Voc referencia cada dado de um elemento de array usando um ndice. Comeando com o zero e finalizando em 10, os dados podem ser atribuidos aos elementos de um array como se segue: A(0) = 256 A(1) = 324 A(2) = 100 . . . A(10) = 55 Os dados podem ser recuperados de qualquer elemento usando um ndice dentro do elemento de array. Por exemplo: . . . SomeVariable = A(8) . . . Arrays no so limitados para uma nica dimenso. Voc pode ter 60 dimenses, embora a maioria das pessoas no compreendem mais que trs ou quatro dimenses. Dimenses mltiplas so declaradas com nmeros relativos a sua dimenso, separados por vrgula entre parntesis. No seguinte exemplo, a varivel MyTable possui duas dimenses consistindo de 6 filas e 11 colunas: Dim MyTable(5, 10) Em um array de duas dimenses, o primeiro nmero ser sempre o nmero de linhas; e o segundo nmero, o nmero de colunas. Voc pode tambm declarar um array cujo tamanho alterado durante o processamento do script. Este array chamado de array dinmico. O array

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 32

    inicialmente declarado dentro de um procedimento usando a declarao Dim ou ReDim. Entretanto, para um array dinmico, nenhum tamanho ou dimenso colocado no interior dos parntesis. Por exemplo: Dim MyArray() ReDim AnotherArray() Para usar um array dinmico, voc deve subseqentemente usar a declarao ReDim para determinar o nmero de dimenses e o tamanho de cada dimenso. No seguinte exemplo, ReDim atribue 25 ao tamanho inicial do array dinmico. Com a declarao ReDim feito um redimencionamento do array para 30, usando a palavra-chave Preserve para preservar o contedo do array. ReDim MyArray(25) . . . ReDim Preserve MyArray(30) No h limite para o nmero de vezes que voc pode redimensionar um array dinmico, mas voc deve saber que se o array for redimensionado com uma dimenso menor que a anterior, o contedo dos elementos eliminados sero perdidos. Constantes Do VBScript O que uma Constante? Uma constante um nome significativo que recebe um valor nmerico ou caracter. O VBScript define um nmero de constantes intrnsecas. Voc pode obter informao sobre essas constantes intrnsecas na Referncia da Linguagem VBScript. Criando Constantes Voc pode criar constantes definidas pelo usurio no VBScript usando a declarao Const. Usando a declarao Const, voc pode criar constantes strings ou numricas com nomes significativos que designam seus valores literais. Por exemplo: Const MinhaString = "Isto meu minha cadeia de caracter." Const MinhaIdade = 49 Note que a string literal cercada entre aspas ou marcas de citao (" "). As aspas so caminho bvio para diferenciar valores de string de valores numricos. Datas e valores do tempo so representados tendo o sinal (#) cercando o valor. Por Exemplo: Const MeuAniversario = #23-8-76# Voc pode desejar adotar um esquema especfico para diferenciar constantes de variveis. Este procedimento evita durante a execuo do script, ocorrer um engano e usar constantes como variveis e vice-versa. Por exemplo, voc pde usar prefixos "vb" ou "con" nos nomes de suas constantes, ou criar sua prpria nomeclatura. Diferenciando constantes de variveis, voc elimina a possibilidade de ocorrer um erro ao desenvolver scripts mais complexos. Operadores do VBScript O VBScript tem uma srie de operadores, incluindo operadores de aritmtica, operadores de comparao, operadores de concatenao, e , operadores lgicos. Precedncia do Operador Quando vrias operaes ocorrem em uma expresso, cada parte avaliada e resolvida em uma ordem predeterminada chamada precedncia do operador. Voc pode usar parntesis para alterar a ordem de precedncia e forar a avaliao de algumas partes de uma expresso. Operaes dentro de

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 33

    parntesis so sempre resolvidas primeiro independendo da ordem de resoluo dos operadores. Dentro dos parntesis, entretanto, a ordem de resoluo dos operadores mantida. Quando expresses contm operadores de mais de uma categoria, os operadores aritmticos so avaliados primeiros, depois os operadores de comparao, e os operadores lgicos so avaliados por ltimo. Todos os operadores de comparao tem precedncias iguais; estes, so avaliados da esquerda-para-direita. Os operadores Lgicos e de Aritmtica so avaliados na seguinte ordem. Aritmtica Comparao Lgico Descrio Smbolo Descrio Smbolo Descrio Smbolo Exponenciao ^ Igualdade = Negao Lgica Not Negao do Unary - Desigualdade Conjuno Lgica And Multiplicao * Menor que < Disjunction Lgico Or Diviso / Maior que > Excluso Lgica Xor Diviso Inteira \ Menor que ou igual a

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 34

    Mod Maior que ou igual a >= Implicao Lgica Imp Adio + Equivalencia de Objeto Is Subtrao - Concatenao de String & Quando ocorrer a multiplicao e a diviso juntamente em uma expresso, cada operao avaliada da esquerda para direita. Igualmente, quando ocorre a adio e a subtrao juntamente em uma expresso, cada operao avaliada em ordem da esquerda para direita. O operador de concatenao de string (&) no um operador aritmtico, mas por conveno tornou-se e na ordem de resoluo, ele est acima de todos os operadores de comparao. O operador Is um operador de comparao de objetos. Ele no compara objetos ou seus valores; ele apenas checa e determina se duas referncias de objeto, referem-se ao mesmo objeto. Usando Declaraes Condicionais Controlando a Execuo do Programa Voc pode controlar o fluxo de seu script com declaraes condicionais e declaraes do looping. Usando declaraes condicionais, voc pode escrever cdigo no VBScript que faz decises e repete aes. As seguintes declaraes condicionais so disponveis no VBScript: Declarao If...Then...Else Declarao Select Case Fazendo Decises Usando If...Then...Else O If...Then...Else uma declarao usada para avaliar uma condio seja ela Falsa (False) ou Verdadeira (True) e, contando com o resultado, para executar um ou mais comandos. Usualmente a condio uma expresso que usa um operador de comparao para comparar um valor ou varivel com outra. Para informao sobre operadores de comparao, ver Operadores de

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 35

    Comparao. If...Then...Else pode estar identadas em muitos nveis dependendo de sua necessidade. Executando uma Declaraes se a Condio for Verdadeira Para executar unicamente um declarao quando uma condio Verdadeira, use uma nica linha com a sintaxe If...Then...Else. Note que neste exemplo foi omitido a palavra chave Else. Sub FixDate() Dim myDate myDate = #2/13/95# If myDate < Now Then myDate = Now End Sub Para executar mais de uma linha de cdigo, voc deve usar mltiplas-linhas (ou bloco). Esta sintaxe inclue a declarao End If, como mostra o exemplo a seguir: Sub AlertUser(value) If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True End If End Sub Executa um Conjunto de Instrues se a Condio for Verdadeira e um Outro Conjunto de Instrues se a Condio for Falsa. Voc pode usar um If...Then...Else para definir dois blocos de instrues: um bloco para executar se a condio for Verdadeira, e um outro bloco para executar se a condio for Falsa. Sub AlertUser(value) If value = 0 Then AlertLabel.ForeColor = vbRed AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True Else AlertLabel.Forecolor = vbBlack AlertLabel.Font.Bold = False AlertLabel.Font.Italic = False End If End Sub Decidindo Entre Vrias Alternativas Uma variao na declarao If...Then...Else permite a voc escolher vrias alternativas. Somando-se clusulas ElseIf voc tem a possibilidade de expandir a funcionalidade da declarao If...Then...Else controlando o fluxo do programa baseado em difentes possibilidades. Por Exemplo: Sub ReportValue(value) If value = 0 Then MsgBox value ElseIf value = 1 Then MsgBox value ElseIf value = 2 then Msgbox value Else Msgbox "Value out of range!" End If Voc pode adicionar muitas clusulas ElseIf dependendo da sua necessidade durante o fluxo do algortimo. Uso extenso das clusulas ElseIf

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 36

    freqentemente torna-se incmodo. Um melhor caminho para escolher entre vrias alternativas a declarao Select Case. Fazendo Decises com Select Case A estrutura Select Case fornece uma alternativa para If...Then...ElseIf durante a execuo seletiva de um bloco de cdigo dentre vrios blocos de cdigo. Uma declarao Select Case fornece funcionalidade semelhante If...Then...Else, porm, o cdigo torna-se mais legvel e eficiente. Uma estrutura Select Case avalia uma nica expresso no topo da estrutura. O resultado da expresso ento comparada com os valores para cada Case da estrutura. Se h uma afirmao verdadeira, o bloco de declaraes associadas com aquele Case executado: Select Case Document.Form1.CardType.Options(SelectedIndex).Text Case "MasterCard" DisplayMCLogo ValidateMCAccount Case "Visa" DisplayVisaLogo ValidateVisaAccount Case "American Express" DisplayAMEXCOLogo ValidateAMEXCOAccount Case Else DisplayUnknownImage PromptAgain End Select Note que a estrutura Select Case avalia a expresso uma nica vez no topo da estrutura. Em contraste, a estrutura If...Then...ElseIf pode avaliar diferentes expresses para cada declarao ElseIf. Voc pode substituir uma estrurura If...Then...ElseIf pr uma nica estrutura Select Case se cada declarao do ElseIf avalia a mesma expresso. Looping Atravs de Cdigo Usando Laos para repetir Cdigos O Looping permite a voc executar uma seqncia de declaraes dependendo de uma condio. Alguns laos repetem as declaraes at uma condio ser Falsa; outros repetem declaraes at uma condio ser Verdadeira. H tambm laos que repetem declaraes num nmero especfico de vezes. As seguintes declaraes de looping so disponveis no VBScript: Do...Loop: Permanece no lao, enquanto ou at uma condio ser Verdadeira. While...Wend: Permanece no laos enquanto uma condio Verdadeira. For...Next: Usa um contador para executar as declaraes num nmero especfico de vezes. For Each...Next: Repete um grupo de declaraes para cada item de uma coleo ou cada elemento de um array. Usando Do Loops Voc pode usar a declarao Do...Loop para executar um bloco de declaraes num nmero indeterminado de vezes. As declaraes so repetidas enquanto a condio for Verdadeira ou at uma condio torna-se Verdadeira. Repetindo Declaraes Enquanto uma Condio Verdadeira Use a palvra-chave While para checar a condio em uma declarao Do...Loop. Voc pode checar a condio antes de entra no lao (como mostrado no exemplo ChkFirstWhile), ou voc pode checar depois de ter entrado no lao no mnimo uma vez (como mostrado no exemplo ChkLastWhile). No procedimento ChkFirstWhile, se myNum recebe o valor igual a 9 em vez de 20, o cdigo no interior do lao nunca ser executado.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 37

    No procedimento ChkLastWhile, o cdigo no interior do lao executado apenas uma vez porque a condio j Falsa. Sub ChkFirstWhile() Dim counter, myNum counter = 0 myNum = 20 Do While myNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "The loop made " & counter & " repetitions." End Sub Sub ChkLastWhile() Dim counter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 Loop While myNum > 10 MsgBox "The loop made " & counter & " repetitions." End Sub Repetindo uma Declarao At uma Condio Torna-se Verdadeira Voc pode usar a palavra-chave Until de duas maneiras para checar uma condio da declarao Do...Loop. Voc pode checar a condio antes de entrar no lao (como mostrado no exemplo ChkFirstUntil), ou voc pode checar depois de ter entrado no lao no mnimo uma vez (como mostrado no exemplo ChkLastUntil). Enquanto a condio Falsa, o looping ocorre. Sub ChkFirstUntil() Dim counter, myNum counter = 0 myNum = 20 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "The loop made " & counter & " repetitions." End Sub Sub ChkLastUntil() Dim counter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 Loop Until myNum = 10 MsgBox "The loop made " & counter & " repetitions." End Sub Saindo do Interior de um lao Do...Loop Voc pode sair de um lao Do...Loop usando a declarao Exit Do Ocorrer casos em que voc desejar sair do lao em certas situaes. No seguinte exemplo, myNum designado um valor que cria um lao infinito. A declarao If...Then...Else checa a condio, prevenindo a repetio infinita Sub ExitExample()

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 38

    Dim counter, myNum counter = 0 myNum = 9 Do Until myNum = 10 myNum = myNum - 1 counter = counter + 1 If myNum < 10 Then Exit Do Loop MsgBox "The loop made " & counter & " repetitions." End Sub Usando While...Wend A declarao While...Wend fornecida no VBScript para familiarizar a linguagem. Entretanto, por falta de flexibilidade na declarao While...Wend, recomendado que voc use a declarao Do...Loop. Usando For...Next Voc pode usar a declarao For...Next para executar um bloco de declaraes num nmero especfico de vezes. usado uma varivel de contador cujo valor aumentado ou decrescido com cada repetio do lao. Por exemplo, o seguinte procedimento executa 50 vezes um chamado no procedimento MyProc. A declarao For especifica um contador, uma varivel x que recebe um valor inicial, precedida de uma palavra-chave To e depois de um valor final. A declarao Next incrementa a varivel contador de 1 unidade. Sub DoMyProc50Times() Dim x For x = 1 To 50 MyProc Next End Sub Usando a palavra-chave Step, voc pode aumentar ou decresce a varivel contador pelo valor especificado na declarao Step. No seguinte exemplo, o contador uma varivel j incrementado de 2 unidades. Quando o lao terminado, a varivel total ter a soma de 2, 4, 6, 8, e 10. Sub TwosTotal() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox "The total is " & total End Sub Para decrescer a varivel contador, deve-se atribuir um valor negativo para a declarao Step. Voc deve especificar um valor final que menor que o valor inicial. No seguinte exemplo, o contador a varivel myNum decrescido der 2 unidades. Quando o lao terminado, a varivel total ter a soma de 16, 14, 12, 10, 8, 6, 4, e 2. Sub NewTotal() Dim myNum, total For myNum = 16 To 2 Step -2 total = total + myNum Next MsgBox "The total is " & total End Sub Voc pode sair da declarao For...Next antes do contador alcanar seu valor final usando a declarao Exit For. Ocorrer casos em que voc desejar sair do lao em certas situaes. Usando For Each...Next

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 39

    Um lao For Each...Next parecido com um lao For...Next. Em vez de de repetir as declaraes num nmero especfico de vezes, um lao For Each...Next repete um grupo de declaraes para cada item em uma coleo de objetos ou para cada elemento de um array. Este lao muito til quando voc fazer no sabe quantos elementos esto em uma coleo. No seguinte exemplo de cdigo HTML, os contedos de um objeto Dicionrio usado para colocar texto em vrias caixas de texto: Forms and Elements

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 40

    MsgBox "The temperature is " & Celsius(temp) & " degrees C." End Sub Procedimentos Function Um procedimento Function uma srie de declaraes do VBScript dentro das declaraes Function e End Function. Um procedimento Function parecido com um procedimento Sub, com a diferena de voc poder retornar um valor. Um procedimento Function pode tomar argumentos (constantes, variveis, ou expresses que so passadas pelo procedimento de chamada). Se um procedimento Function no tem argumentos, sua declarao deve incluir um conjunto vazio de parntesis. Uma Function retorna um valor que ser atribuido ao nome da funo no procedimento de chamada. O tipo do valor retornado por uma Function ser sempre Variant. No seguinte exemplo, a funo Celsius calcula a temperatura em graus Celsius do grau Fahrenheit. Quando a funo chamada do procedimento Sub ConvertTemp, uma varivel contendo o valor do argumento passado funo. O resultado do clculo voltado ao procedimento chamado e exibido em uma caixa de mensagem. Sub ConvertTemp() temp = InputBox("Please enter the temperature in degrees F.", 1) MsgBox "The temperature is " & Celsius(temp) & " degrees C." End Sub Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function Obtendo dados dentro de um Procedimento Cada valor passado dentro de seus procedimentos usando um argumentos. Argumentos servem como "pontes de valor" dos dados que voc deseja passar dentro de seu procedimento. Voc pode especificar seus argumentos com um nome de uma varivel. Quando voc cria um procedimento usando uma declarao Sub ou uma declarao Function, os parntesis devem incluir os nomes dos argumentos. Quaisquer argumentos so colocados no interior desses parntesis, separados por vrgulas. No seguinte exemplo, fDegrees uma "ponte de valor" que passa o valor da temperatura a ser calculada na funo: Function Celsius(fDegrees) Celsius = (fDegrees - 32) * 5 / 9 End Function Para obter o valor dos dados de um procedimento, voc deve usar uma Function. Lembre-se, que um procedimento Function pode retornar um valor; e um procedimento Sub no pode. Usando Procedimentos Sub e Function em seu Cdigo Voc deve usar um procedimento Function em seu cdigo do lado direito a uma expresso. Por Exemplo: Temp = Celsius(fDegrees) ou MsgBox "A temperatura do Celsius est " & Celsius(fDegrees) & " graus." Para chamar um procedimento Sub de outro procedimento, voc deve apenas referenciar o nome da procedure passando ou no argumentos. A declarao Call no requerida, mas se voc us-la, deve colocar os argumentos entre parntesis. O seguinte exemplo mostra duas chamadas ao procedimento MyProc. Um usa a declarao Call no cdigo; o outro no. Ambos fazer exatamente a mesma coisa. Call MyProc(firstarg, secondarg) MyProc firstarg, secondarg

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 41

    Note que os parntesis so omitidos na chamada quando a declarao Call no usada. Convenes do Coding do VBScript O que Convenes de Cdigo ? Convenes do Coding so sugestes que podem ajud-lo a escreve seus cdigos usando Microsoft Visual Basic Scripting Edition. As convenes do Coding podem inclui os seguintes tens: Especificando convenes para objetos, variveis, e procedimentos Comentando as convenes Formatando textos e indentando diretrizes A principal razo para usar um conjunto consistente de convenes do coding padronizar a estrutura e estilo do cdigo de um script, ou atribuir um modo de escrever seus cdigos de forma que voc e outros possam facilmente ler e compreendem o algortimo. Usando boas convenes do coding o resultado legvel, preciso, com um cdigo consistente com outras convenes da lnguagem. Constante Convenes de Nomes Verses mais antecipadas de VBScript no tem nenhum mecnismo para criar constantes definidas pelo usurio. Constantes, se forem implementadas como variveis se distinguem de outras variveis usando todos caracteres maisculos. Palavras mltiplas foram separadas usando o caracter sublinhado (_). Por Exemplo: USER_LIST_MAX NEW_LINE Enquanto isto ainda um caminho aceitvel para indentificar suas constantes, voc pode usar uma alternativa especificando agora um esquema verdadeiro na declarao das constantes usando o Const. Esta conveno usa uma mescla de formato em que os nomes das constantes tm um prefixo "con". Por Exemplo: conYourOwnConstant Conveno dos Nomes das Variceis Com o propsitos de consistncia, use os seguintes prefixos com nomes descritivos para variveis em seu cdigo do VBScript. Subtype Prefixo Exemplo Boolean bln blnFound Byte byt bytRasterData Date (Time) dtm dtmStart Double dbl dblTolerance Error err errOrderNum

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 42

    Integer int intQuantity Long lng lngDistance Object obj objCurrent Single sng sngAverage String str strFirstName Escopo Varivel Variveis deveriam sempre ser definidas com o menor escopo possvel. Variveis do VBScript podem ter o seguinte escopo. Escopo Onde Varivel Declarada Visibilidade Nvel-Procedure Eventos, Funo, ou procedures Sub Visvel na procedure em que foi declarada Nvel-Script Seo HEAD de uma pgina HTML, exteriormente em qualquer procedure Visvel em todas as procedures do Script Prefixos de Escopo de Variveis Como o tamanho do Script cresce, assim faz o valor de existncia capaz para rapidamente diferencia o escopo de variveis. Um um-letra prefixo de escopo precedendo o prefixo de tipo fornece este, sem o unduly aumentando o tamanho de nomes variveis. Escopo Prefixo Exemplo Nvel-Procedure None dblVelocity Nvel-Script s sblnCalcInProgress Varivel Descritiva e Nomes De Procedimento

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 43

    O corpo de uma varivel ou nome de uma procedurce deve ser usada para descrever a necessidade de seu propsito. Em resumo, os nomes de procedures deveriam comear com um verbo, tal como IniciarVariveis ou FecharJanela. Para termos freqentes e longos, abreviaes padronizadas so recomendadas para minimizar o comprimento do nome. No geral, nomes de variveis maiores que 32 caracteres podem ser de difceis leituras. Quando usar abreviaes, certifique-se que elas sero consistentes para todo o Script. Por Exemplo, aleatoriamente mudando de Cnt para Conta dentro de um Script pode gerar um erro no seu cdigo. Objeto Especificando Convenes As seguintes listas da tabela so convenes recomendadas para objetos que voc pode encontrar enquanto programa em VBScript. Tipo Objeto Prefixo Exemplo 3D Panel pnl pnlGroup Animated Button ani aniMailBox Check Box chk chkReadOnly Combo Box, drop-down list box cbo cboEnglish Command Button cmd cmdExit Common Dialog dlg dlgFileOpen Frame fra fraLanguage Horizontal Scroll Bar hsb hsbVolume Image img imgIcon Label lbl lblHelpMessage Line lin linVertical List Box lst lstPolicyCodes Spin spn spnPages

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 44

    Text Box txt txtLastName Vertical Scroll Bar vsb vsbRate Slider sld sldScale Comentando Convenes de Cdigos Todos os procedimentos deveriam comear com um breve comentrio descrevendo o que eles fazem. Este comentrio no deveria descrever os detalhes de implementao (como: isto faz isto) porque os cdigos mudam freqentemente, resultando num enorme trabalho e perca de tempo ne manuteno de comentrios desnecessrios, ou comentrios errneos, pior. O cdigo por si mesmo e quaisquer breves comentrios necessrios descrevem a implementao. Argumentos passados para um procedimento devem ser descritos quando seu propsito no est bvio no cdigo. Valores que voltam para funes e variveis que so mudadas por um procedimento, especialmente atravs de argumentos por referncia, devem ser descritos no comeo de cada procedure. Comentrios no cabealho da Procedure devem incluir os seguintes ttulos. Por Exemplo: Ttulo De Seo Comentrio do Contedo Propsito Que o procedimento faz (no como). Suposies Lista de qualquer varivel externa, controle, ou outro elemento que declare aes nesta procedimento. Efeitos Lista de efeito do procedimento em cada varivel externa, controle, ou outro elemento. Entradas Explicao de cada argumento que no esteja bvio. Cada argumento deve ter uma linha separada com os comentrios. Valores Retornados Explicao do valor voltado. Recorde os seguintes pontos: Toda declarao de uma importante varivel deve incluir um comentrio descrevendo o uso e a existncia da varivel declarada. Variveis, controles, e procedimentos devem ter comentrios claros e especficos pois, deles resulta a complexidade da implementao. No comeo de seu script, voc deve incluir um resumo que descreva, enumerando objetos, procedimentos, algortimos, caixas de dilogo, e outras dependncias do sistema. s vezes um pedao de pseudocdigo, descrevendo o algortimo pode ser bastande prestativo. Formatando Seu Cdigo O espao da tela dever ser conservado, enquanto ainda permita formatar seu cdigo refletindo a estrutura lgica do algortimo. Estes so uns pontos bsicos: Blocos identados padronizados devem ser indentados com quatro espaos. O resumo do comentrio de um procedimento dever ser indentar com um espao.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 45

    '********************************************************* ' Purpose: Locates the first occurrence of a specified user ' in the UserList array. ' Inputs: strUserList(): the list of users to be searched. ' strTargetUser: the name of the user to search for. ' Returns: The index of the first occurrence of the strTargetUser ' in the strUserList array. ' If the target user is not found, return -1. '********************************************************* Function intFindUser (strUserList(), strTargetUser) Dim i ' Loop counter. Dim blnFound ' Target found flag intFindUser = -1 i = 0 ' Initialize loop counter Do While i

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 46

    por um nmero (ndice). Mudanas feitas para um elemento de um array, no afeta os demais elementos. Conjunto de Caracter ASCII American Standard Code for Information Interchange (ASCII) 7-bit caracter atribudos amplamente para representar letras e smbolos encontrados em um teclado padro U.S. O conjunto de caracter ASCII o mesmo dos primeiros 128 caracteres (0127) do conjunto de caracter ANSI. Objeto de Automao Um objeto que exibido para outros aplicaes ou programado atravs de ferramentas de interfaces de Automao. Comparao bitwise Uma comparao idntica de bit-a-bit bits posicionando o bit nas duas expresses numricas. Expresso do Boolean Uma expresso que avalia a condio Falso (False) ou Verdadeiro (True). Por Referncia Um meio de passar um argumento para um procedimento, usando o endereo, em vez do valor. Isto permite ao procedimento acessar a varivel real. Como resultado, o valor real da varivel pode ser alterado dentro do procedimento que ela foi passada. Por Valor Um meio de passar um argumento para um procedimento, usando o valor, em vez do endereo de memria da varivel. Isto permite ao procedimento acessar uma cpia da varivel. Como um resultado, o valor real da varivel no pode ser alterado dentro do procedimento que ela foi passada. Cdigo de Caracter Um nmero que representa um caracter especfico dm um conjunto, tal como o conjunto de caracter da tabela ASCII. Classe A definio formal de um objeto. A classe define as propriedades do objeto e os mtodos usados para controlar o comportamento do objeto. possvel criar uma classe para um objeto. Mdulo de classe Um mdulo contendo a definio de uma classe (sua propriedade e definies de mtodo). Coleo Um objeto que contem um conjunto de objetos relacionados. A posio de um objeto na coleo pode ser alterada, sempre que uma alterao ocorrer na coleo; portanto, a posio de qualquer objeto especifico na coleo pode variar. Comentrio Texto que contribue na explicao do cdigo facilitando o trabalho do programador. No Visual Basic Scripting Edition, um comentrio pode ser feito usando uma apstofe ('), ou uma palvra chave Rem seguido por um espao.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 47

    Operador de Comparao Um caracter ou smbolo indicando um relacionamento entre dois ou mais valores ou expresses. Esses operadores incluem menor que (=), diferentel (), e igual (=). Constante Um nome especfico que contm um valor constante para toda a execuo de um programa. Constantes podem ser usadas em qualquer parte de seu cdigo. Uma constante pode ser uma string ou nmero literal, outra constante, ou qualquer combinao que inclua aritmtica ou operadores lgicos exceto Is e exponenciao. Por Exemplo: Const A = "MyString" Tipos de Dados Cada subtipo do tipo Variant tem uma srie especifica de valores: Subtype Srie Byte 0 a 255. Boolean False ou True. Integer 32,768 a 32,767. Long 2,147,483,648 a 2,147,483,647. Single 3.402823E38 a -1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos. Double 1.79769313486232E308 a 4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos. Currency 922,337,203,685,477.5808 a 922,337,203,685,477.5807. Date Janeiro 1, 100 a Dezembro 31, 9999, inclusive. Object Qualquer referncia de Objeto. String Variveis alfanumricas, que podem ter um comprimento de 0 at aproximadamente 2 bilhes de caracteres. Expresso de Data Qualquer expresso que pode ser interpretada como uma data. Isto inclue qualquer combinao literal de data, nmeros que comparem datas iguais, strings que comparem datas iguais, e datas voltadas de funes. Uma expresso de data limitada pelo nmero ou string, em qualquer combinao, limitada 1 Janeiro de 100 at 31 Dezembro de 9999.

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 48

    Datas so armazenadas como partes de um nmero real. Valores esquerda do decimal representa a data; valores direita do decimal representa o tempo. Nmeros negativos representam datas anterior a 30 Dezembro 1899. Data Literal Qualquer seqncia de caracteres com um formato vlido que circundado por sinais de nmero (#). Formatos vlidos incluem o formato de data especificado pelos valores localis, ou o formato universal de data. Por Exemplo, #12/31/99# a data literal que representa Dezembro 31, 1999, onde English-U.S. o valor da localidade para seu requerimento. No VBScript, o unico formato reconhecido o US-ENGLISH, apesar da localidade real do usurio. O formato interpretado mm/dd/yyyy. Separadores de Data Caracteres usados para separar o dia, ms, e ano quando o valore da data formatado. Vazio (Empty) Um valor que indica o primeiro valor designado para uma varivel. Variveis Vazias so 0 num contexto numrico, ou zero-comprimento ("") num contexto de string. fio. Nmero de Erro Um nmero que abrange toda a srie de 0 a 65,535, que corresponde ao nmero do erro refenciado pelo objeto Err. Este nmero representa uma mensagem de erro particular. Expresso Uma combinao de palavras-chave, operadores, variveis, constantes, nmero, ou objeto. Uma expresso pode desempenhar um clculo, manipular caracteres, ou testar dados. Constante Intrnseca Uma constante fornecida por uma aplicao. Voc no pode desabilitar constantes intrnsecas, e no pode criar uma constante com o mesmo nome da instrseca. Palavra-Chave Uma palavra ou smbolo reconhecida pela linguagem VBScript; por exemplo, uma declarao, nome de funco, ou operador. Localidade O conjunto de informaes que corresponde a lngua de um pas. Uma localidade afeta a funcionalidade de uma aplicao nos itens de valores, converses, formatos, datas dos locais especficos. H dois contextos onde a informao da localidade importante: A localidade de cdigo afeta a linguagem de termos tais como as palavras-chaves, as definies de valores locais como o decimal, formatos de data, e caracteres que classificam pedidos. A localidade do sistema afeta a funcionalidade da aplicao, quando voc exibe nmeros ou converte caracteres em data. Voc pode modificar a localidade do sistema usando os utilitrios do Painel de Controle fornecidos pelo sistema operacional. Nada (Nothing)

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 49

    Um valor especial que indica que uma varivel de objeto no mais longa associada com qualquer objeto real. Nulo (Null) Um valor indicando que uma varivel no contm dados vlidos. Nulo o resultado de: Uma designao explcita de Nula para uma varivel. Qualquer operao entre expresses que contm valores Nulos. Expresso Numrica Qualquer expresso que pode ser avaliada como um nmero. Elementos da expresso pode incluir qualquer combinao de palavras-chave, variveis, constantes, e operadores que resultam em um nmero. Tipo de Objeto Um tipo de objeto exposto por uma aplicao, por exemplo, Requerimento, Arquivo. Consulte a documentao das aplicaes (Microsoft Excel, Microsoft Project, Microsoft Word) para uma listagem completa dos objetos disponveis. Pi Pi um valor igual a constante matemtica aproximadamente de 3.1415926535897932. Private Variveis que so visveis apenas ao Script em que elas so declaradas. Procedimento Uma seqncia especfica de declaraes executadas em uma unidade. Por Exemplo, Function e Sub so tipos de procedimentos. Nvel de Procedimento Descreve declaraes localizadas dentro de um procedimento Function ou Sub. Declaraes so realizadas primeiro, seguido por designaes e outro cdigo do executvel. Por Exemplo: Sub MySub() ' This statement declares a sub procedure block. Dim A ' This statement starts the procedure block. A = "My variable" ' Procedure-level code. Debug.Print A ' Procedure-level code. End Sub ' This statement ends a sub procedure block. Propriedade Um atributo especfico de um objeto. Propriedades definem as caractersticas do objeto tais como tamanho, cor, localizao na tela, ou o estado de um objeto, tal como habilitado (Enabled) ou desabilitado (Disabled). Public Variveis declaradas Public so visveis para todos procedimentos em todos mdulos de uma aplicao. Tempo Execuo (Run Time) momento em que o cdigo est sendo executado. Durante o tempo de execuo, voc no pode editar o cdigo. Erro Tempo de Execuo

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 50

    Um erro que ocorre quando cdigo est sendo executado. Um erro em tempo de execuo resulta quando uma declarao efetua uma operao invlida. Escopo Define a visibilidade de uma varivel, procedimento, ou objeto. Por Exemplo, uma varivel declarada como Public visvel para todos os procedimentos em todos os mdulos. Variveis declaradas em procedimentos so visveis unicamente dentro do procedimento que a declarou, perdendo seu valor ao trmino deste procedimento. SCODE Um valor inteiro longo (Long Integer) que usado para passar informaes detalhadas a funo API. Os cdigos de condio para interfaces de OLE e APIs so definidas no FACILITY_ITF. Nvel de Escrita Qualquer cdigo exterior a um procedimento referido como um nvel de cdigo. Seed Um valor inicial usado para gerar nmeros do pseudo aleatrios. Por exemplo, a declarao Randomize cria um nmero usado pela funo Rnd para criar seqncias de nmero do pseudo aleatrios. Comparando Strings Uma comparao de duas seqncias de caracteres. A menos que especificado na funo que far a comparao, todas comparaes de string so do tipo binrio. Expresso com String Qualquer expresso que avalia para seqncia de caracteres contguos. Elementos de uma expresso de string podem incluir uma funo que retorne uma string, uma string literal, uma constante de string, ou uma varivel de string. Varivel Uma posio de memria para armazenamento de dados que podem ser modificados durante execuo do programa. Cada varivel tem um nome que a identifica dentro do seu nvel de escopo.

    PHP ndice geral

    01. INTRODUO ................................................................................................................................. 8

    CLIENT-SIDE SCRIPTS 8 SERVER-SIDE SCRIPTS 8 O QUE PHP? 9 O QUE PODE SER FEITO COM PHP? 9 COMO SURGIU A LINGUAGEM PHP? 9

    02. ENVIANDO DADOS PARA O SERVIDOR HTTP ......................................................................... 10

    O MTODO GET 10 HEADERS 11

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 51

    O MTODO POST 11 UTILIZANDO GET E POST 12

    03. FORMULRIOS HTML.................................................................................................................. 12

    DEFININDO UM FORMULRIO 12 A TAG 13 CAMPO DE TEXTO 13

    Parmetros: 13 CAMPO DE TEXTO COM MSCARA 13

    Parmetros: 14 CHECKBOX 14

    Parmetros: 14 RADIO BUTTON 14

    Parmetros: 14 SUBMIT BUTTON 14

    Parmetros: 14 RESET BUTTON 15

    Parmetros: 15 BUTTON 15

    Parmetros: 15 TEXTAREA 15

    Parmetros: 15 SELECT 15

    Parmetros: 16 UPLOAD DE ARQUIVOS 16

    Parmetros: 16

    04. INSTALAO E CONFIGURAO EM AMBIENTE WINDOWS ................................................ 16

    SERVIDOR APACHE 16 PHP 17 MYSQL 18

    05. INSTALAO E CONFIGURAO EM AMBIENTE LINUX REDHAT ....................................... 18

    (DISPONVEL NA PRXIMA VERSO) 18

    06. SINTAXE BSICA ......................................................................................................................... 19

    DELIMITANDO O CDIGO PHP 19 SEPARADOR DE INSTRUES 19 NOMES DE VARIVEIS 19 COMENTRIOS 19

    Comentrios de uma linha: 20 Comentrios de mais de uma linha: 20

    IMPRIMINDO CDIGO HTML 20

    07. TIPOS ............................................................................................................................................. 21

    TIPOS SUPORTADOS 21 Inteiros (integer ou long) 21 Nmeros em Ponto Flutuante (double ou float) 21 Strings 22

    Significado 22 Arrays 22

    Listas 23 Objetos 24 Booleanos 24

    TRANSFORMAO DE TIPOS 24 Coeres 24

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 52

    Transformao explcita de tipos 25 Com a funo settype 25

    08. OPERADORES .............................................................................................................................. 26

    ARITMTICOS 26 DE STRINGS 26 DE ATRIBUIO 26 BIT A BIT 27 LGICOS 27 COMPARAO 27 EXPRESSO CONDICIONAL 27 DE INCREMENTO E DECREMENTO 28

    09. ESTRUTURAS DE CONTROLE.................................................................................................... 28

    BLOCOS 28 COMANDOS DE SELEO 29

    if 29 switch 30

    COMANDOS DE REPETIO 32 while 32 do... while 32 for 33

    QUEBRA DE FLUXO 33 Break 33 Continue 34

    10. FUNES ...................................................................................................................................... 34

    DEFININDO FUNES 34 VALOR DE RETORNO 36 ARGUMENTOS 36

    Passagem de parmetros por referncia 36 Argumentos com valores pr-definidos (default) 37

    CONTEXTO 37 ESCOPO 38

    11. VARIVEIS E CONSTANTES ....................................................................................................... 39

    DECLARAO DE UMA VARIVEL 39 O MODIFICADOR STATIC 39 VARIVEIS VARIVEIS 40 VARIVEIS ENVIADAS PELO NAVEGADOR 40

    URLencode 40 Utilizando arrays 41

    VARIVEIS DE AMBIENTE 41 VERIFICANDO O TIPO DE UMA VARIVEL 41

    Funo que retorna o tipo da varivel 41 Funes que testam o tipo da varivel 42

    DESTRUINDO UMA VARIVEL 42 VERIFICANDO SE UMA VARIVEL POSSUI UM VALOR 42

    A funo isset 42 A funo empty 43

    CONSTANTES PR-DEFINIDAS 43 DEFININDO CONSTANTES 43

    12. CLASSES E OBJETOS ................................................................................................................. 43

    CLASSE 43 OBJETO 44

  • JAVA, PHP, VBSCRIPT E ASP

    Grupo PET - Informtica

    PGINA 53

    A VARIVEL $THIS 44 SUBCLASSES 45 CONSTRUTORES 45

    13. NOES DE SQL.......................................................................................................................... 46

    INTRODUO 46 ESTRUTURA DAS TABELAS 46