Você está na página 1de 7

Tcnico de Gesto e Programao de Sistemas Informticos

Caderno de Correces Introduo Programao e Algotmia Verso 2.0

Disciplina: Programao e Sistemas de Informao Mdulo I: Introduo Programao e Algoritmia


Lisboa, Jorge Carvalho (2011)

Este trabalho est licenciado sob uma Licena Creative Commons Atribuio-Uso No-Comercial-Compartilhamento.

ndice
Motivao ............................................................................................................................ ii I Iniciao aos programas em C ....................................................................................1 1 rea e permetro de circunferncias (Ficha 1 Exerccio 1)......................................1 2 rea e volume de esferas (Ficha 1 Exerccio 2).....................................................1 3 Troca de valores (Ficha 1 Exerccio 3)....................................................................2 4 Coverso de segundos (Ficha 1 Exerccio 4)..........................................................2 5 Converso de horas (Ficha 1 Exerccio 5) ..............................................................3 6 Distncia da trovoada (Ficha 1 Exerccio 6)............................................................3 7 Altura de precipcios (Ficha 1 Exerccio 7) ..............................................................4

INETE Instituto de Educao Tcnica

ii

Motivao

Edsger Wybe Dijkstra.


Foto 2002 Hamilton Richards

Edsger Wybe Dijkstra (1930 2002) foi um dos mais influentes membros da sua gerao nas cincias informticas, tendo sido fundamental a sua contribuio cientfica em algumas reas, como seja: Desenho de algoritmos; Linguagens de programao; Sistemas operativos; Processamento distribudo.

Dijkstra sempre se envolveu na problemtica do ensino e nas relaes entre a cincia informtica e a indstria de software, sendo uma referncia para quem procura ensinar com qualidade, tcnica e profissionalmente, temas abrangidos pelas cincias informticas. O excerto seguinte foi retirado da aula de apresentao de um curso leccionado por Dijkstra, e reflecte o meu pensamento enquanto professor de Linguagens de Programao (os destaques so meus).
[] I think it wise, and only honest, to warn you that my goal is immodest. It is not my purpose to transfer knowledge to you that, subsequently, you can forget again. My purpose is no less than to effectuate in each of you a noticeable, irreversible change. [] I want you to gain, for the rest of your lives, the insight that beautiful proofs are not found by trial and error but are the result of a consciously applied design discipline. I want to inspire you to raise your quality standards. I mean, if 10 years from now, when you are doing something quick and dirty, you suddenly visualize that I am looking over your shoulders and say yourself Dijkstra would not have liked this, well, that would be enough immortality for me. Your obligation is that of active participation. You should not act as knowledge-absorving sponges, but as whetstones on witch we can all sharpen our wits. If you dont understand me, ask for clarification; if I am going too fas, slow me down. [] Austin, Texas, 30 August 1995

INETE Instituto de Educao Tcnica

TGPSI PSI: Introduo Programao e Algoritmia

I Iniciao aos programas em C


1 rea e permetro de circunferncias (Ficha 1 Exerccio 1)
#include <stdio.h> #include <math.h> // para a funo pow - potncias #define PI 3.141592653 // variveis globais double raio; double area, perim; // corpo do programa int main() { // input do raio printf("Introduza o valor do raio: "); scanf("%lf", &raio); // calculos area = PI * pow(raio, 2); perim = 2 * PI * raio; //output de resultados printf("Raio da circunferencia: %6.3lf\n", raio); printf(" Area = %8.3lf\n Perimetro = %8.3lf\n", area, perim); // terminar o programa return 0; }

2 rea e volume de esferas (Ficha 1 Exerccio 2)


#include <stdio.h> #include <math.h> // para a funo pow - potncias #define PI 3.141592653 // variveis globais double raio; double area, vol; // corpo do programa int main() { // input do raio printf("Introduza o valor do raio: "); scanf("%lf", &raio); // calculos area = 4 * PI * pow(raio, 2); vol = 4 * PI * pow(raio, 3) / 3; //output de resultados printf("Raio da esfera: %6.3lf\n", raio); printf(" Area = %8.3lf\n Volume = %8.3lf\n", area, vol); INETE Instituto de Educao Tcnica

TGPSI PSI: Introduo Programao e Algoritmia // terminar o programa return 0; }

3 Troca de valores (Ficha 1 Exerccio 3)


#include <stdio.h> #define PI 3.141592653 // variveis globais int num1, num2; int temp; // corpo do programa int main() { // input dos nmeros printf("Introduza o 1o. valor: "); scanf("%d", &num1); printf("Introduza o 2o. valor: "); scanf("%d", &num2); printf("\n---------------------------------\n"); printf("Valores antes da troca:\n"); printf("Num1 = %8d Num2 = %8d\n", num1, num2); // troca dos valores temp = num1; num1 = num2; num2 = temp; //output depois da troca printf("\n---------------------------------\n"); printf("Valores depois da troca:\n"); printf("Num1 = %8d Num2 = %8d\n", num1, num2); // terminar o programa return 0; }

4 Coverso de segundos (Ficha 1 Exerccio 4)


#include <stdio.h> // variveis globais long int qtdSegs; int qtdDias, qtdHrs, qtdMins; // corpo do programa int main() { // input da qtd. de segundos printf("Introduza a quantidade de segundos: "); scanf("%ld", &qtdSegs); // inicio do output (para usar o valor de qtdSegs inicial) printf("\n%10ld segundos correspondem a ", qtdSegs); //converso em mins qtdMins = qtdSegs / 60;

INETE Instituto de Educao Tcnica

TGPSI PSI: Introduo Programao e Algoritmia // segs que sobram qtdSegs = qtdSegs % 60; // converso em horas qtdHrs = qtdMins / 60; // mins que sobram qtdMins = qtdMins % 60; // converso em dias qtdDias = qtdHrs / 24; // horas que sobram qtdHrs = qtdHrs % 24; //output da converso printf("%d dias, %02d horas, %02d mins e %02d segs", qtdDias, qtdHrs, qtdMins, qtdSegs); // terminar o programa return 0; }

5 Converso de horas (Ficha 1 Exerccio 5)


#include <stdio.h> // variveis globais int hrs, mins, segs; long int qtdSegs; // corpo do programa int main() { // input da hora:min:seg printf("Introduza a hora (HH:MM:SS) -> "); scanf("%d:%d:%d", &hrs, &mins, &segs); // inicio do output (para usar os valores iniciais) printf("\n%02d:%02d:%02d corresponde a ", hrs, mins, segs); //converso de horas em mins mins = hrs * 60; //converso em secs qtdSegs = segs + mins * 60; //output da converso printf("%6d segs\n", qtdSegs); // terminar o programa return 0; }

6 Distncia da trovoada (Ficha 1 Exerccio 6)


#include <stdio.h> #define SPEED_SOUND 340 // variveis globais int qtdSegs; int dist, distKm, distM; // em [m/s]

INETE Instituto de Educao Tcnica

TGPSI PSI: Introduo Programao e Algoritmia // corpo do programa int main() { // input dos segs printf("Indique quantos segundos passaram desde o relampago: "); scanf("%d", &qtdSegs); // calculo da distancia em [m] dist = SPEED_SOUND * qtdSegs; // converso para Km e m distKm = dist / 1000; distM = dist % 1000; //output da distancia printf("A trovoada esta a %d Km e %03d m\n", distKm, distM); // terminar o programa return 0; }

7 Altura de precipcios (Ficha 1 Exerccio 7)


#include <stdio.h> #include <math.h> #define ACELERA 9.8 // variveis globais int qtdSegs; double dist; // corpo do programa int main() { // input dos segs printf("Indique quantos segundos demora a pedra a cair: "); scanf("%d", &qtdSegs); // calculo da distancia em [m] dist = 0.5 * ACELERA * pow(qtdSegs, 2); //output da distancia printf("Altura do precipicio: %.2lf m\n", dist); // terminar o programa return 0; } // em [m/s2]

INETE Instituto de Educao Tcnica

Você também pode gostar